diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..f3c5c7ac3 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +livecode.demozoo.org diff --git a/README.md b/README.md new file mode 100644 index 000000000..c6eb65631 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Website + +Files in this path will be published as part of the website. diff --git a/assets/css/grids-responsive-min.css b/assets/css/grids-responsive-min.css new file mode 100644 index 000000000..b0b190f0f --- /dev/null +++ b/assets/css/grids-responsive-min.css @@ -0,0 +1,7 @@ +/*! +Pure v3.0.0 +Copyright 2013 Yahoo! +Licensed under the BSD License. +https://github.com/pure-css/pure/blob/master/LICENSE +*/ +@media screen and (min-width:35.5em){.pure-u-sm-1,.pure-u-sm-1-1,.pure-u-sm-1-12,.pure-u-sm-1-2,.pure-u-sm-1-24,.pure-u-sm-1-3,.pure-u-sm-1-4,.pure-u-sm-1-5,.pure-u-sm-1-6,.pure-u-sm-1-8,.pure-u-sm-10-24,.pure-u-sm-11-12,.pure-u-sm-11-24,.pure-u-sm-12-24,.pure-u-sm-13-24,.pure-u-sm-14-24,.pure-u-sm-15-24,.pure-u-sm-16-24,.pure-u-sm-17-24,.pure-u-sm-18-24,.pure-u-sm-19-24,.pure-u-sm-2-24,.pure-u-sm-2-3,.pure-u-sm-2-5,.pure-u-sm-20-24,.pure-u-sm-21-24,.pure-u-sm-22-24,.pure-u-sm-23-24,.pure-u-sm-24-24,.pure-u-sm-3-24,.pure-u-sm-3-4,.pure-u-sm-3-5,.pure-u-sm-3-8,.pure-u-sm-4-24,.pure-u-sm-4-5,.pure-u-sm-5-12,.pure-u-sm-5-24,.pure-u-sm-5-5,.pure-u-sm-5-6,.pure-u-sm-5-8,.pure-u-sm-6-24,.pure-u-sm-7-12,.pure-u-sm-7-24,.pure-u-sm-7-8,.pure-u-sm-8-24,.pure-u-sm-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-sm-1-24{width:4.1667%}.pure-u-sm-1-12,.pure-u-sm-2-24{width:8.3333%}.pure-u-sm-1-8,.pure-u-sm-3-24{width:12.5%}.pure-u-sm-1-6,.pure-u-sm-4-24{width:16.6667%}.pure-u-sm-1-5{width:20%}.pure-u-sm-5-24{width:20.8333%}.pure-u-sm-1-4,.pure-u-sm-6-24{width:25%}.pure-u-sm-7-24{width:29.1667%}.pure-u-sm-1-3,.pure-u-sm-8-24{width:33.3333%}.pure-u-sm-3-8,.pure-u-sm-9-24{width:37.5%}.pure-u-sm-2-5{width:40%}.pure-u-sm-10-24,.pure-u-sm-5-12{width:41.6667%}.pure-u-sm-11-24{width:45.8333%}.pure-u-sm-1-2,.pure-u-sm-12-24{width:50%}.pure-u-sm-13-24{width:54.1667%}.pure-u-sm-14-24,.pure-u-sm-7-12{width:58.3333%}.pure-u-sm-3-5{width:60%}.pure-u-sm-15-24,.pure-u-sm-5-8{width:62.5%}.pure-u-sm-16-24,.pure-u-sm-2-3{width:66.6667%}.pure-u-sm-17-24{width:70.8333%}.pure-u-sm-18-24,.pure-u-sm-3-4{width:75%}.pure-u-sm-19-24{width:79.1667%}.pure-u-sm-4-5{width:80%}.pure-u-sm-20-24,.pure-u-sm-5-6{width:83.3333%}.pure-u-sm-21-24,.pure-u-sm-7-8{width:87.5%}.pure-u-sm-11-12,.pure-u-sm-22-24{width:91.6667%}.pure-u-sm-23-24{width:95.8333%}.pure-u-sm-1,.pure-u-sm-1-1,.pure-u-sm-24-24,.pure-u-sm-5-5{width:100%}}@media screen and (min-width:48em){.pure-u-md-1,.pure-u-md-1-1,.pure-u-md-1-12,.pure-u-md-1-2,.pure-u-md-1-24,.pure-u-md-1-3,.pure-u-md-1-4,.pure-u-md-1-5,.pure-u-md-1-6,.pure-u-md-1-8,.pure-u-md-10-24,.pure-u-md-11-12,.pure-u-md-11-24,.pure-u-md-12-24,.pure-u-md-13-24,.pure-u-md-14-24,.pure-u-md-15-24,.pure-u-md-16-24,.pure-u-md-17-24,.pure-u-md-18-24,.pure-u-md-19-24,.pure-u-md-2-24,.pure-u-md-2-3,.pure-u-md-2-5,.pure-u-md-20-24,.pure-u-md-21-24,.pure-u-md-22-24,.pure-u-md-23-24,.pure-u-md-24-24,.pure-u-md-3-24,.pure-u-md-3-4,.pure-u-md-3-5,.pure-u-md-3-8,.pure-u-md-4-24,.pure-u-md-4-5,.pure-u-md-5-12,.pure-u-md-5-24,.pure-u-md-5-5,.pure-u-md-5-6,.pure-u-md-5-8,.pure-u-md-6-24,.pure-u-md-7-12,.pure-u-md-7-24,.pure-u-md-7-8,.pure-u-md-8-24,.pure-u-md-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-md-1-24{width:4.1667%}.pure-u-md-1-12,.pure-u-md-2-24{width:8.3333%}.pure-u-md-1-8,.pure-u-md-3-24{width:12.5%}.pure-u-md-1-6,.pure-u-md-4-24{width:16.6667%}.pure-u-md-1-5{width:20%}.pure-u-md-5-24{width:20.8333%}.pure-u-md-1-4,.pure-u-md-6-24{width:25%}.pure-u-md-7-24{width:29.1667%}.pure-u-md-1-3,.pure-u-md-8-24{width:33.3333%}.pure-u-md-3-8,.pure-u-md-9-24{width:37.5%}.pure-u-md-2-5{width:40%}.pure-u-md-10-24,.pure-u-md-5-12{width:41.6667%}.pure-u-md-11-24{width:45.8333%}.pure-u-md-1-2,.pure-u-md-12-24{width:50%}.pure-u-md-13-24{width:54.1667%}.pure-u-md-14-24,.pure-u-md-7-12{width:58.3333%}.pure-u-md-3-5{width:60%}.pure-u-md-15-24,.pure-u-md-5-8{width:62.5%}.pure-u-md-16-24,.pure-u-md-2-3{width:66.6667%}.pure-u-md-17-24{width:70.8333%}.pure-u-md-18-24,.pure-u-md-3-4{width:75%}.pure-u-md-19-24{width:79.1667%}.pure-u-md-4-5{width:80%}.pure-u-md-20-24,.pure-u-md-5-6{width:83.3333%}.pure-u-md-21-24,.pure-u-md-7-8{width:87.5%}.pure-u-md-11-12,.pure-u-md-22-24{width:91.6667%}.pure-u-md-23-24{width:95.8333%}.pure-u-md-1,.pure-u-md-1-1,.pure-u-md-24-24,.pure-u-md-5-5{width:100%}}@media screen and (min-width:64em){.pure-u-lg-1,.pure-u-lg-1-1,.pure-u-lg-1-12,.pure-u-lg-1-2,.pure-u-lg-1-24,.pure-u-lg-1-3,.pure-u-lg-1-4,.pure-u-lg-1-5,.pure-u-lg-1-6,.pure-u-lg-1-8,.pure-u-lg-10-24,.pure-u-lg-11-12,.pure-u-lg-11-24,.pure-u-lg-12-24,.pure-u-lg-13-24,.pure-u-lg-14-24,.pure-u-lg-15-24,.pure-u-lg-16-24,.pure-u-lg-17-24,.pure-u-lg-18-24,.pure-u-lg-19-24,.pure-u-lg-2-24,.pure-u-lg-2-3,.pure-u-lg-2-5,.pure-u-lg-20-24,.pure-u-lg-21-24,.pure-u-lg-22-24,.pure-u-lg-23-24,.pure-u-lg-24-24,.pure-u-lg-3-24,.pure-u-lg-3-4,.pure-u-lg-3-5,.pure-u-lg-3-8,.pure-u-lg-4-24,.pure-u-lg-4-5,.pure-u-lg-5-12,.pure-u-lg-5-24,.pure-u-lg-5-5,.pure-u-lg-5-6,.pure-u-lg-5-8,.pure-u-lg-6-24,.pure-u-lg-7-12,.pure-u-lg-7-24,.pure-u-lg-7-8,.pure-u-lg-8-24,.pure-u-lg-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-lg-1-24{width:4.1667%}.pure-u-lg-1-12,.pure-u-lg-2-24{width:8.3333%}.pure-u-lg-1-8,.pure-u-lg-3-24{width:12.5%}.pure-u-lg-1-6,.pure-u-lg-4-24{width:16.6667%}.pure-u-lg-1-5{width:20%}.pure-u-lg-5-24{width:20.8333%}.pure-u-lg-1-4,.pure-u-lg-6-24{width:25%}.pure-u-lg-7-24{width:29.1667%}.pure-u-lg-1-3,.pure-u-lg-8-24{width:33.3333%}.pure-u-lg-3-8,.pure-u-lg-9-24{width:37.5%}.pure-u-lg-2-5{width:40%}.pure-u-lg-10-24,.pure-u-lg-5-12{width:41.6667%}.pure-u-lg-11-24{width:45.8333%}.pure-u-lg-1-2,.pure-u-lg-12-24{width:50%}.pure-u-lg-13-24{width:54.1667%}.pure-u-lg-14-24,.pure-u-lg-7-12{width:58.3333%}.pure-u-lg-3-5{width:60%}.pure-u-lg-15-24,.pure-u-lg-5-8{width:62.5%}.pure-u-lg-16-24,.pure-u-lg-2-3{width:66.6667%}.pure-u-lg-17-24{width:70.8333%}.pure-u-lg-18-24,.pure-u-lg-3-4{width:75%}.pure-u-lg-19-24{width:79.1667%}.pure-u-lg-4-5{width:80%}.pure-u-lg-20-24,.pure-u-lg-5-6{width:83.3333%}.pure-u-lg-21-24,.pure-u-lg-7-8{width:87.5%}.pure-u-lg-11-12,.pure-u-lg-22-24{width:91.6667%}.pure-u-lg-23-24{width:95.8333%}.pure-u-lg-1,.pure-u-lg-1-1,.pure-u-lg-24-24,.pure-u-lg-5-5{width:100%}}@media screen and (min-width:80em){.pure-u-xl-1,.pure-u-xl-1-1,.pure-u-xl-1-12,.pure-u-xl-1-2,.pure-u-xl-1-24,.pure-u-xl-1-3,.pure-u-xl-1-4,.pure-u-xl-1-5,.pure-u-xl-1-6,.pure-u-xl-1-8,.pure-u-xl-10-24,.pure-u-xl-11-12,.pure-u-xl-11-24,.pure-u-xl-12-24,.pure-u-xl-13-24,.pure-u-xl-14-24,.pure-u-xl-15-24,.pure-u-xl-16-24,.pure-u-xl-17-24,.pure-u-xl-18-24,.pure-u-xl-19-24,.pure-u-xl-2-24,.pure-u-xl-2-3,.pure-u-xl-2-5,.pure-u-xl-20-24,.pure-u-xl-21-24,.pure-u-xl-22-24,.pure-u-xl-23-24,.pure-u-xl-24-24,.pure-u-xl-3-24,.pure-u-xl-3-4,.pure-u-xl-3-5,.pure-u-xl-3-8,.pure-u-xl-4-24,.pure-u-xl-4-5,.pure-u-xl-5-12,.pure-u-xl-5-24,.pure-u-xl-5-5,.pure-u-xl-5-6,.pure-u-xl-5-8,.pure-u-xl-6-24,.pure-u-xl-7-12,.pure-u-xl-7-24,.pure-u-xl-7-8,.pure-u-xl-8-24,.pure-u-xl-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-xl-1-24{width:4.1667%}.pure-u-xl-1-12,.pure-u-xl-2-24{width:8.3333%}.pure-u-xl-1-8,.pure-u-xl-3-24{width:12.5%}.pure-u-xl-1-6,.pure-u-xl-4-24{width:16.6667%}.pure-u-xl-1-5{width:20%}.pure-u-xl-5-24{width:20.8333%}.pure-u-xl-1-4,.pure-u-xl-6-24{width:25%}.pure-u-xl-7-24{width:29.1667%}.pure-u-xl-1-3,.pure-u-xl-8-24{width:33.3333%}.pure-u-xl-3-8,.pure-u-xl-9-24{width:37.5%}.pure-u-xl-2-5{width:40%}.pure-u-xl-10-24,.pure-u-xl-5-12{width:41.6667%}.pure-u-xl-11-24{width:45.8333%}.pure-u-xl-1-2,.pure-u-xl-12-24{width:50%}.pure-u-xl-13-24{width:54.1667%}.pure-u-xl-14-24,.pure-u-xl-7-12{width:58.3333%}.pure-u-xl-3-5{width:60%}.pure-u-xl-15-24,.pure-u-xl-5-8{width:62.5%}.pure-u-xl-16-24,.pure-u-xl-2-3{width:66.6667%}.pure-u-xl-17-24{width:70.8333%}.pure-u-xl-18-24,.pure-u-xl-3-4{width:75%}.pure-u-xl-19-24{width:79.1667%}.pure-u-xl-4-5{width:80%}.pure-u-xl-20-24,.pure-u-xl-5-6{width:83.3333%}.pure-u-xl-21-24,.pure-u-xl-7-8{width:87.5%}.pure-u-xl-11-12,.pure-u-xl-22-24{width:91.6667%}.pure-u-xl-23-24{width:95.8333%}.pure-u-xl-1,.pure-u-xl-1-1,.pure-u-xl-24-24,.pure-u-xl-5-5{width:100%}}@media screen and (min-width:120em){.pure-u-xxl-1,.pure-u-xxl-1-1,.pure-u-xxl-1-12,.pure-u-xxl-1-2,.pure-u-xxl-1-24,.pure-u-xxl-1-3,.pure-u-xxl-1-4,.pure-u-xxl-1-5,.pure-u-xxl-1-6,.pure-u-xxl-1-8,.pure-u-xxl-10-24,.pure-u-xxl-11-12,.pure-u-xxl-11-24,.pure-u-xxl-12-24,.pure-u-xxl-13-24,.pure-u-xxl-14-24,.pure-u-xxl-15-24,.pure-u-xxl-16-24,.pure-u-xxl-17-24,.pure-u-xxl-18-24,.pure-u-xxl-19-24,.pure-u-xxl-2-24,.pure-u-xxl-2-3,.pure-u-xxl-2-5,.pure-u-xxl-20-24,.pure-u-xxl-21-24,.pure-u-xxl-22-24,.pure-u-xxl-23-24,.pure-u-xxl-24-24,.pure-u-xxl-3-24,.pure-u-xxl-3-4,.pure-u-xxl-3-5,.pure-u-xxl-3-8,.pure-u-xxl-4-24,.pure-u-xxl-4-5,.pure-u-xxl-5-12,.pure-u-xxl-5-24,.pure-u-xxl-5-5,.pure-u-xxl-5-6,.pure-u-xxl-5-8,.pure-u-xxl-6-24,.pure-u-xxl-7-12,.pure-u-xxl-7-24,.pure-u-xxl-7-8,.pure-u-xxl-8-24,.pure-u-xxl-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-xxl-1-24{width:4.1667%}.pure-u-xxl-1-12,.pure-u-xxl-2-24{width:8.3333%}.pure-u-xxl-1-8,.pure-u-xxl-3-24{width:12.5%}.pure-u-xxl-1-6,.pure-u-xxl-4-24{width:16.6667%}.pure-u-xxl-1-5{width:20%}.pure-u-xxl-5-24{width:20.8333%}.pure-u-xxl-1-4,.pure-u-xxl-6-24{width:25%}.pure-u-xxl-7-24{width:29.1667%}.pure-u-xxl-1-3,.pure-u-xxl-8-24{width:33.3333%}.pure-u-xxl-3-8,.pure-u-xxl-9-24{width:37.5%}.pure-u-xxl-2-5{width:40%}.pure-u-xxl-10-24,.pure-u-xxl-5-12{width:41.6667%}.pure-u-xxl-11-24{width:45.8333%}.pure-u-xxl-1-2,.pure-u-xxl-12-24{width:50%}.pure-u-xxl-13-24{width:54.1667%}.pure-u-xxl-14-24,.pure-u-xxl-7-12{width:58.3333%}.pure-u-xxl-3-5{width:60%}.pure-u-xxl-15-24,.pure-u-xxl-5-8{width:62.5%}.pure-u-xxl-16-24,.pure-u-xxl-2-3{width:66.6667%}.pure-u-xxl-17-24{width:70.8333%}.pure-u-xxl-18-24,.pure-u-xxl-3-4{width:75%}.pure-u-xxl-19-24{width:79.1667%}.pure-u-xxl-4-5{width:80%}.pure-u-xxl-20-24,.pure-u-xxl-5-6{width:83.3333%}.pure-u-xxl-21-24,.pure-u-xxl-7-8{width:87.5%}.pure-u-xxl-11-12,.pure-u-xxl-22-24{width:91.6667%}.pure-u-xxl-23-24{width:95.8333%}.pure-u-xxl-1,.pure-u-xxl-1-1,.pure-u-xxl-24-24,.pure-u-xxl-5-5{width:100%}}@media screen and (min-width:160em){.pure-u-xxxl-1,.pure-u-xxxl-1-1,.pure-u-xxxl-1-12,.pure-u-xxxl-1-2,.pure-u-xxxl-1-24,.pure-u-xxxl-1-3,.pure-u-xxxl-1-4,.pure-u-xxxl-1-5,.pure-u-xxxl-1-6,.pure-u-xxxl-1-8,.pure-u-xxxl-10-24,.pure-u-xxxl-11-12,.pure-u-xxxl-11-24,.pure-u-xxxl-12-24,.pure-u-xxxl-13-24,.pure-u-xxxl-14-24,.pure-u-xxxl-15-24,.pure-u-xxxl-16-24,.pure-u-xxxl-17-24,.pure-u-xxxl-18-24,.pure-u-xxxl-19-24,.pure-u-xxxl-2-24,.pure-u-xxxl-2-3,.pure-u-xxxl-2-5,.pure-u-xxxl-20-24,.pure-u-xxxl-21-24,.pure-u-xxxl-22-24,.pure-u-xxxl-23-24,.pure-u-xxxl-24-24,.pure-u-xxxl-3-24,.pure-u-xxxl-3-4,.pure-u-xxxl-3-5,.pure-u-xxxl-3-8,.pure-u-xxxl-4-24,.pure-u-xxxl-4-5,.pure-u-xxxl-5-12,.pure-u-xxxl-5-24,.pure-u-xxxl-5-5,.pure-u-xxxl-5-6,.pure-u-xxxl-5-8,.pure-u-xxxl-6-24,.pure-u-xxxl-7-12,.pure-u-xxxl-7-24,.pure-u-xxxl-7-8,.pure-u-xxxl-8-24,.pure-u-xxxl-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-xxxl-1-24{width:4.1667%}.pure-u-xxxl-1-12,.pure-u-xxxl-2-24{width:8.3333%}.pure-u-xxxl-1-8,.pure-u-xxxl-3-24{width:12.5%}.pure-u-xxxl-1-6,.pure-u-xxxl-4-24{width:16.6667%}.pure-u-xxxl-1-5{width:20%}.pure-u-xxxl-5-24{width:20.8333%}.pure-u-xxxl-1-4,.pure-u-xxxl-6-24{width:25%}.pure-u-xxxl-7-24{width:29.1667%}.pure-u-xxxl-1-3,.pure-u-xxxl-8-24{width:33.3333%}.pure-u-xxxl-3-8,.pure-u-xxxl-9-24{width:37.5%}.pure-u-xxxl-2-5{width:40%}.pure-u-xxxl-10-24,.pure-u-xxxl-5-12{width:41.6667%}.pure-u-xxxl-11-24{width:45.8333%}.pure-u-xxxl-1-2,.pure-u-xxxl-12-24{width:50%}.pure-u-xxxl-13-24{width:54.1667%}.pure-u-xxxl-14-24,.pure-u-xxxl-7-12{width:58.3333%}.pure-u-xxxl-3-5{width:60%}.pure-u-xxxl-15-24,.pure-u-xxxl-5-8{width:62.5%}.pure-u-xxxl-16-24,.pure-u-xxxl-2-3{width:66.6667%}.pure-u-xxxl-17-24{width:70.8333%}.pure-u-xxxl-18-24,.pure-u-xxxl-3-4{width:75%}.pure-u-xxxl-19-24{width:79.1667%}.pure-u-xxxl-4-5{width:80%}.pure-u-xxxl-20-24,.pure-u-xxxl-5-6{width:83.3333%}.pure-u-xxxl-21-24,.pure-u-xxxl-7-8{width:87.5%}.pure-u-xxxl-11-12,.pure-u-xxxl-22-24{width:91.6667%}.pure-u-xxxl-23-24{width:95.8333%}.pure-u-xxxl-1,.pure-u-xxxl-1-1,.pure-u-xxxl-24-24,.pure-u-xxxl-5-5{width:100%}}@media screen and (min-width:240em){.pure-u-x4k-1,.pure-u-x4k-1-1,.pure-u-x4k-1-12,.pure-u-x4k-1-2,.pure-u-x4k-1-24,.pure-u-x4k-1-3,.pure-u-x4k-1-4,.pure-u-x4k-1-5,.pure-u-x4k-1-6,.pure-u-x4k-1-8,.pure-u-x4k-10-24,.pure-u-x4k-11-12,.pure-u-x4k-11-24,.pure-u-x4k-12-24,.pure-u-x4k-13-24,.pure-u-x4k-14-24,.pure-u-x4k-15-24,.pure-u-x4k-16-24,.pure-u-x4k-17-24,.pure-u-x4k-18-24,.pure-u-x4k-19-24,.pure-u-x4k-2-24,.pure-u-x4k-2-3,.pure-u-x4k-2-5,.pure-u-x4k-20-24,.pure-u-x4k-21-24,.pure-u-x4k-22-24,.pure-u-x4k-23-24,.pure-u-x4k-24-24,.pure-u-x4k-3-24,.pure-u-x4k-3-4,.pure-u-x4k-3-5,.pure-u-x4k-3-8,.pure-u-x4k-4-24,.pure-u-x4k-4-5,.pure-u-x4k-5-12,.pure-u-x4k-5-24,.pure-u-x4k-5-5,.pure-u-x4k-5-6,.pure-u-x4k-5-8,.pure-u-x4k-6-24,.pure-u-x4k-7-12,.pure-u-x4k-7-24,.pure-u-x4k-7-8,.pure-u-x4k-8-24,.pure-u-x4k-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-x4k-1-24{width:4.1667%}.pure-u-x4k-1-12,.pure-u-x4k-2-24{width:8.3333%}.pure-u-x4k-1-8,.pure-u-x4k-3-24{width:12.5%}.pure-u-x4k-1-6,.pure-u-x4k-4-24{width:16.6667%}.pure-u-x4k-1-5{width:20%}.pure-u-x4k-5-24{width:20.8333%}.pure-u-x4k-1-4,.pure-u-x4k-6-24{width:25%}.pure-u-x4k-7-24{width:29.1667%}.pure-u-x4k-1-3,.pure-u-x4k-8-24{width:33.3333%}.pure-u-x4k-3-8,.pure-u-x4k-9-24{width:37.5%}.pure-u-x4k-2-5{width:40%}.pure-u-x4k-10-24,.pure-u-x4k-5-12{width:41.6667%}.pure-u-x4k-11-24{width:45.8333%}.pure-u-x4k-1-2,.pure-u-x4k-12-24{width:50%}.pure-u-x4k-13-24{width:54.1667%}.pure-u-x4k-14-24,.pure-u-x4k-7-12{width:58.3333%}.pure-u-x4k-3-5{width:60%}.pure-u-x4k-15-24,.pure-u-x4k-5-8{width:62.5%}.pure-u-x4k-16-24,.pure-u-x4k-2-3{width:66.6667%}.pure-u-x4k-17-24{width:70.8333%}.pure-u-x4k-18-24,.pure-u-x4k-3-4{width:75%}.pure-u-x4k-19-24{width:79.1667%}.pure-u-x4k-4-5{width:80%}.pure-u-x4k-20-24,.pure-u-x4k-5-6{width:83.3333%}.pure-u-x4k-21-24,.pure-u-x4k-7-8{width:87.5%}.pure-u-x4k-11-12,.pure-u-x4k-22-24{width:91.6667%}.pure-u-x4k-23-24{width:95.8333%}.pure-u-x4k-1,.pure-u-x4k-1-1,.pure-u-x4k-24-24,.pure-u-x4k-5-5{width:100%}} \ No newline at end of file diff --git a/assets/css/pure-min.css b/assets/css/pure-min.css new file mode 100644 index 000000000..acdc4311f --- /dev/null +++ b/assets/css/pure-min.css @@ -0,0 +1,11 @@ +/*! +Pure v3.0.0 +Copyright 2013 Yahoo! +Licensed under the BSD License. +https://github.com/pure-css/pure/blob/master/LICENSE +*/ +/*! +normalize.css v | MIT License | https://necolas.github.io/normalize.css/ +Copyright (c) Nicolas Gallagher and Jonathan Neal +*/ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:sans-serif}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto;display:block}.pure-g{display:flex;flex-flow:row wrap;align-content:flex-start}.pure-u{display:inline-block;vertical-align:top}.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-5-5{width:100%}.pure-button{display:inline-block;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;user-select:none;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-.31em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-0.43em}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:rgba(0,0,0,.8);border:none transparent;background-color:#e6e6e6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:focus,.pure-button:hover{background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000}.pure-button-disabled,.pure-button-disabled:active,.pure-button-disabled:focus,.pure-button-disabled:hover,.pure-button[disabled]{border:none;background-image:none;opacity:.4;cursor:not-allowed;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{margin:0;border-radius:0;border-right:1px solid rgba(0,0,0,.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=color]:focus,.pure-form input[type=date]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=email]:focus,.pure-form input[type=month]:focus,.pure-form input[type=number]:focus,.pure-form input[type=password]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=text]:focus,.pure-form input[type=time]:focus,.pure-form input[type=url]:focus,.pure-form input[type=week]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129fea}.pure-form input:not([type]):focus{outline:0;border-color:#129fea}.pure-form input[type=checkbox]:focus,.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus{outline:thin solid #129FEA;outline:1px auto #129FEA}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=color][disabled],.pure-form input[type=date][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=email][disabled],.pure-form input[type=month][disabled],.pure-form input[type=number][disabled],.pure-form input[type=password][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=text][disabled],.pure-form input[type=time][disabled],.pure-form input[type=url][disabled],.pure-form input[type=week][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form select:focus:invalid,.pure-form textarea:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=checkbox]:focus:invalid:focus,.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=color],.pure-form-stacked input[type=date],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=email],.pure-form-stacked input[type=file],.pure-form-stacked input[type=month],.pure-form-stacked input[type=number],.pure-form-stacked input[type=password],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=text],.pure-form-stacked input[type=time],.pure-form-stacked input[type=url],.pure-form-stacked input[type=week],.pure-form-stacked label,.pure-form-stacked select,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned select,.pure-form-aligned textarea,.pure-form-message-inline{display:inline-block;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form .pure-input-rounded,.pure-form input.pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=color],.pure-group input[type=date],.pure-group input[type=datetime-local],.pure-group input[type=datetime],.pure-group input[type=email],.pure-group input[type=month],.pure-group input[type=number],.pure-group input[type=password],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=text],.pure-group input[type=time],.pure-group input[type=url],.pure-group input[type=week]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0 0}.pure-form-message,.pure-form-message-inline{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-active>.pure-menu-children,.pure-menu-allow-hover:hover>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;padding:.5em 0}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent;cursor:default}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#eee}.pure-menu-selected>.pure-menu-link,.pure-menu-selected>.pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0} \ No newline at end of file diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 000000000..75035b9b9 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,530 @@ +:root { + --primary-text-color: rgba(238,238,238, 1.0); + --secondary-text-color: rgba(128,128,128, 1.0); + --third-text-color: rgba(128,128,128, 1.0); + + --secondary-background-color: rgba(30,30,30, 1.0); + --primary-background-color: rgba(34,34,34, 1.0); + + --primary-link-color: rgba(60, 144, 200,1.0); + + --primary-type-byte-jam:rgba(61, 146, 201, 1.0); + --primary-type-shader-royale:rgba(61, 201, 73, 1.0); + --primary-type-shader-jam:rgba(228, 231, 38, 1.0); + + --primary-border-color: rgba(51, 51, 51, 1.0); + + --event-type-color: rgb(255, 205, 144); + --event-serie-color: rgb(144, 255, 144); +} + +@font-face { + font-family: "B612"; + src: url("../font/B612-Regular.ttf") format("truetype"); + +} +@font-face { + font-family: "AmigaTopaz"; + src: url("../font/AmigaTopazUnicodeRus.ttf") format("truetype"); + +} + +@font-face { + font-family: "Gidole"; + src: url("../font/Gidole-Regular.ttf") format("truetype"); + +} + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + font-family: "Gidole"; +} + +.event-header, .data-info-container, .data-info-container .data-info-content { + align-items: center; +} +.event-header .event-header-serie { + font-size: .6em; + color: var(--event-serie-color); +} +summary:hover .event-header-serie, summary:hover .event-type { + color: #000000; +} +.pure-button{ + font-family: "B612"; +} +summary { + font-size: 2em; + cursor: pointer; + background-color: var(--secondary-background-color); + border-radius: 4.8px; + padding: 10px; + color: var(--primary-text-color) +} +summary:hover { + background-color: var(--primary-text-color); + color: var(--primary-background-color); + +} +a { + text-decoration: none; + color: var(--primary-link-color); +} + +details { + border: 1px var(--primary-border-color) solid; +} +.perfomer-list-main { + display: flex; + justify-content: center; + text-align: center; + font-size: 1.5em; +} +details .event-body, .perfomer-list-main { + background-color: var(--primary-background-color); + padding: 20px; + margin-top: 0px; + margin-bottom: 0px; + color: var(--primary-text-color); +} +.event { + background-color: #111111; + border-radius: 4.8px; +} +details > summary { + list-style-position:outside; + list-style-type: ''; + +} +details > summary:hover { + list-style-type: '◥'; + transition-property: font-size; + transition-timing-function: ease-in-out; + transition-duration: .2s; + font-size: 2.2em; +} +details[open] > summary:hover { + list-style-type: '◤'; + transition-property: font-size; + transition-timing-function: ease-in-out; + transition-duration: .2s; + font-size: 2.3em; +} +details[open] > summary { + list-style-type: '◣'; + transition-property: font-size; + transition-timing-function: ease-in-out; + transition-duration: .2s; + font-size: 2.3em; +} +details .fa-chevron-up, details[open] .fa-chevron-down { + display: none; +} +details summary:hover .fa-chevron-down, +details summary:hover .fa-chevron-up { + animation: colorMagic 1s linear infinite; +} +details[open] .fa-chevron-up, details .fa-chevron-down { + display: inline; +} +summary::marker { + position: absolute; + margin: auto; + margin-right: 50px;; + width: 5px; + display:inline-block; + font-size: .8em; + background-color: #111111; + animation: colorMagic 1s ease-in-out infinite; +} + +summary .event-header * { + vertical-align: middle; +} +summary .event-header-type{ + color: cornflowerblue; + font-size: 0.6em; +} +summary .event-header-title,summary .event-header-title::first-line { + font-size: 1.1em; +} + +summary .event-header-date{ + color: var(--third-text-color); + font-size: 0.6em; +} +summary div { + font-size: .8em; + display: inline; + width: 20px;; + margin: 0; +} +.asciilogo { + height: 20vh; + margin-bottom: 2vh; +} +.asciilogo pre { + color: aliceblue; + margin: 0px; + padding: 0px; + display: inline-block; + animation: colorMagic 6s linear infinite; + font-family: 'AmigaTopaz'; + +} +.fa-solid * { + color: var(--primary-link-color); +} +.asciilogo pre:nth-child(0n+2) { + animation: colorMagic 6s linear infinite; + animation-delay: -1100ms; +} +.asciilogo pre:nth-child(0n+3) { + animation: colorMagic 6s linear infinite; + animation-delay: -200ms; +} +.asciilogo pre:nth-child(0n+4) { + animation: colorMagic 6s linear infinite; + animation-delay: -1300ms; +} +.asciilogo pre:nth-child(0n+5) { + animation: colorMagic 6s linear infinite; + animation-delay: -400ms; +} +.asciilogo pre:nth-child(0n+6) { + animation: colorMagic 6s linear infinite; + animation-delay: -1500ms; +} +.asciilogo pre:nth-child(0n+7) { + animation: colorMagic 6s linear infinite; + animation-delay: -600ms; +} +.asciilogo pre:nth-child(0n+8) { + animation: colorMagic 6s linear infinite; + animation-delay: -1700ms; +} +.banner.asciilogo { + height: 12rem; + margin-bottom: 2rem; +} +body { + background: rgb(32, 32, 32); +} +.banner { + width: 80vw; + max-width: 80vw; + top: 0px; + margin: auto; + margin-bottom: 5px; + font-size: 1.0em; + display: flex; + justify-content:center; + align-items:center; + align-content:space-between; + gap:5px 5px; + flex-wrap: wrap; +} +.banner h1 { + font-size: 4.5em; +} +.banner h2{ + font-size: 1.5em;; +} +.banner svg { + width: 50vw; +} +.demozoo-link img, .shadertoy-link img, .poshbrolly-link img { + max-width: 1.0em; +} +.demozoo-link * { + vertical-align:middle; +} + +.main-container { + width: 80vw; + margin: auto; + margin-top: 20px; + margin-bottom: 150px; +} +#myVideo { + position: fixed; + right: 0; + bottom: 0; + min-width: 100%; + min-height: 100%; + justify-content: center; + z-index: -10; + opacity: .1; +} + +.pure-button { + font-size: 85%; + padding: 8px; + background-color: transparent; + border: 1px solid rgba(125,125,125,1.0); + border-radius: 4.8px; + color: #EEEEEE; + vertical-align: middle; + font-weight: bolder; +} +.pure-button:hover { + background-color: rgb(200,200,200); + border: 1px solid rgba(125,125,125,1.0); + color: #111111; +} + +.colorcycle { + animation: colorMagic 6s linear infinite; +} +.entry-card img { +width: 100%; +margin: 0px; +padding: 0px; +margin: auto; +} + +.entry-card { +padding: 5px; +margin: 0px; +border: 1px solid #444444; +} + +.event-header { +display: flex; +width: 100%; +} + + +.entry-name { +font-weight: bolder; +font-size: 1.5em; +padding-left: 2%; +} +table, tbody, tr, td { +border: 0px; +margin: 5px; +padding: 5px; +border-collapse:collapse; +text-align: left; +} +.entry-info { +width: 100%;; +} +.entry-info-label { + font-weight: 600; + color: #999999; + width: 33%; + text-align: right; +} +.event-type { + color: var(--event-type-color); +} +.button-keyword { + background-color:rgba(0,0,0,1); + color: rgba(255, 255, 255, 1.0); + border: 0px; +} +.button-year-selected { + background-color:rgb(144, 233, 255); + color: rgba(32,32,32, 1.0); +} +.button-type-selected { + background-color:var(--event-type-color); + color: rgba(32,32,32, 1.0); +} +.button-serie-selected { + background-color:var(--event-serie-color); + color: rgba(32,32,32, 1.0); +} +.button-performer-selected { + background-color:rgb(177, 144, 255); + color: rgba(32,32,32, 1.0); +} + +.button-rank { + background-color:rgb(0, 0, 0); + color: rgb(248, 219, 59); + font-size: 60%; + padding: 3px; +} +.button-nav-label { + background-color: var(--primary-text-color); + color: var(--primary-background-color); +} +.performer-event summary { + pointer-events: none; /* prevents click events */ +} +.performer-event details[open] summary{ + pointer-events: none; /* prevents click events */ +} +.performer-event summary a { + pointer-events: initial; /* prevents click events */ +} +.page-header h1 { + color: var(--primary-text-color); + font-size: 4em; + margin: 0px; + margin-bottom: 2px; +} +.page-header { + text-align: center; + background-color: var(--primary-background-color); + padding: 25px 0px 25px 0px +} +.about-page { + background-color: var(--primary-background-color); + color: var(--primary-text-color); +} +.about-page div { + font-size: 1.1em; + text-align:justify; + padding-left: 15vw; + padding-right: 15vw; + padding-bottom: 1vh; +} +.event-body { + justify-content: center; +} + +:target summary {background-color:#19557D;} + +.i-link, .e-link { + margin: 0px; + font-size: .7em; + color: var(--primary-link-color); +} +h2 .pure-button { + font-size: .5em; +} +.upcoming .i-link, .upcoming .e-link { + font-size: 1.0em; +} +.staff-performer-list li{ + list-style-type: '├ '; +} +.staff-performer-list li:nth-child(2n){ + color: #BBBBBB; +} +.staff-performer-list li:first-child { + list-style-type: '┌ '; +} +.staff-performer-list li:last-child { + list-style-type: '└ '; +} +details[open] summary ~ * { + animation: sweep .25s ease-in-out; + } + + @keyframes sweep { + 0% {opacity: 0; margin-top: -10px} + 100% {opacity: 1; margin-top: 0px} + } + +.pure-phase-main { + margin-top: 50px; +} +@keyframes colorMagic { + 0% { color: rgba(76, 99, 254, 1);} + 1% { color: rgba(65, 112, 252, 1); } + 2% { color: rgba(55, 124, 249, 1); } + 3% { color: rgba(45, 136, 245, 1); } + 4% { color: rgba(36, 148, 240, 1); } + 5% { color: rgba(28, 160, 234, 1); } + 6% { color: rgba(20, 172, 226, 1);} + 7% { color: rgba(14, 183, 218, 1); } + 8% { color: rgba(9, 194, 209, 1); } + 9% { color: rgba(5, 204, 200, 1); } + 10% { color: rgba(2, 213, 189, 1); } + 11% { color: rgba(0, 222, 179, 1); } + 12% { color: rgba(0, 230, 167, 1); } + 13% { color: rgba(0, 236, 156, 1); } + 14% { color: rgba(2, 242, 144, 1); } + 15% { color: rgba(4, 247, 132, 1); } + 16% { color: rgba(8, 250, 120, 1); } + 17% { color: rgba(13, 253, 108, 1); } + 18% { color: rgba(19, 254, 97, 1); } + 19% { color: rgba(25, 254, 85, 1); } + 20% { color: rgba(33, 254, 74, 1); } + 21% { color: rgba(41, 252, 64, 1); } + 22% { color: rgba(50, 249, 54, 1); } + 23% { color: rgba(60, 245, 45, 1); } + 24% { color: rgba(70, 240, 37, 1); } + 25% { color: rgba(80, 235, 29, 1); } + 26% { color: rgba(91, 228, 22, 1); } + 27% { color: rgba(102, 221, 16, 1); } + 28% { color: rgba(113, 213, 11, 1); } + 29% { color: rgba(124, 205, 7, 1); } + 30% { color: rgba(135, 196, 4, 1); } + 31% { color: rgba(145, 186, 1, 1); } + 32% { color: rgba(156, 176, 0, 1); } + 33% { color: rgba(166, 166, 0, 1); } + 34% { color: rgba(176, 156, 0, 1); } + 35% { color: rgba(186, 146, 1, 1); } + 36% { color: rgba(195, 135, 3, 1); } + 37% { color: rgba(203, 125, 6, 1); } + 38% { color: rgba(211, 115, 10, 1); } + 39% { color: rgba(219, 105, 14, 1); } + 40% { color: rgba(225, 95, 19, 1); } + 41% { color: rgba(231, 86, 25, 1); } + 42% { color: rgba(237, 76, 31, 1); } + 43% { color: rgba(241, 68, 38, 1); } + 44% { color: rgba(245, 59, 45, 1); } + 45% { color: rgba(248, 52, 52, 1); } + 46% { color: rgba(251, 44, 60, 1); } + 47% { color: rgba(253, 38, 68, 1); } + 48% { color: rgba(254, 31, 76, 1); } + 49% { color: rgba(254, 26, 85, 1); } + 50% { color: rgba(254, 21, 93, 1); } + 51% { color: rgba(254, 16, 101, 1);} + 52% { color: rgba(252, 12, 110, 1); } + 53% { color: rgba(251, 9, 118, 1); } + 54% { color: rgba(248, 6, 126, 1); } + 55% { color: rgba(246, 4, 135, 1); } + 56% { color: rgba(243, 2, 142, 1); } + 57% { color: rgba(239, 1, 150, 1); } + 58% { color: rgba(235, 0, 158, 1); } + 59% { color: rgba(231, 0, 165, 1); } + 60% { color: rgba(227, 0, 172, 1); } + 61% { color: rgba(222, 0, 179, 1); } + 62% { color: rgba(217, 1, 185, 1); } + 63% { color: rgba(212, 2, 191, 1); } + 64% { color: rgba(207, 4, 197, 1); } + 65% { color: rgba(202, 6, 202, 1); } + 66% { color: rgba(197, 8, 207, 1); } + 67% { color: rgba(191, 10, 212, 1); } + 68% { color: rgba(186, 13, 216, 1); } + 69% { color: rgba(181, 16, 220, 1); } + 70% { color: rgba(175, 19, 224, 1); } + 71% { color: rgba(170, 22, 228, 1); } + 72% { color: rgba(165, 25, 231, 1); } + 73% { color: rgba(160, 28, 234, 1); } + 74% { color: rgba(155, 31, 237, 1); } + 75% { color: rgba(150, 35, 239, 1); } + 76% { color: rgba(146, 38, 241, 1); } + 77% { color: rgba(141, 41, 243, 1); } + 78% { color: rgba(137, 44, 245, 1); } + 79% { color: rgba(132, 48, 246, 1); } + 80% { color: rgba(128, 51, 248, 1); } + 81% { color: rgba(125, 54, 249, 1); } + 82% { color: rgba(121, 57, 250, 1); } + 83% { color: rgba(118, 60, 251, 1); } + 84% { color: rgba(114, 63, 252, 1); } + 85% { color: rgba(111, 65, 252, 1); } + 86% { color: rgba(108, 68, 253, 1); } + 87% { color: rgba(106, 70, 253, 1); } + 88% { color: rgba(103, 73, 253, 1); } + 89% { color: rgba(101, 75, 254, 1); } + 90% { color: rgba(99, 77, 254, 1); } + 91% { color: rgba(97, 79, 254, 1); } + 92% { color: rgba(95, 80, 254, 1); } + 93% { color: rgba(93, 82, 254, 1); } + 94% { color: rgba(92, 83, 254, 1); } + 95% { color: rgba(91, 84, 254, 1); } + 96% { color: rgba(90, 85, 254, 1); } + 97% { color: rgba(89, 86, 254, 1); } + 98% { color: rgba(88, 87, 254, 1); } + 99% { color: rgba(88, 87, 254, 1); } + 100% { color: rgba(88, 88, 254, 1); } + } diff --git a/assets/fa-6.2.1/LICENSE.txt b/assets/fa-6.2.1/LICENSE.txt new file mode 100644 index 000000000..cc557ece4 --- /dev/null +++ b/assets/fa-6.2.1/LICENSE.txt @@ -0,0 +1,165 @@ +Fonticons, Inc. (https://fontawesome.com) + +-------------------------------------------------------------------------------- + +Font Awesome Free License + +Font Awesome Free is free, open source, and GPL friendly. You can use it for +commercial projects, open source projects, or really almost whatever you want. +Full Font Awesome Free license: https://fontawesome.com/license/free. + +-------------------------------------------------------------------------------- + +# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) + +The Font Awesome Free download is licensed under a Creative Commons +Attribution 4.0 International License and applies to all icons packaged +as SVG and JS file types. + +-------------------------------------------------------------------------------- + +# Fonts: SIL OFL 1.1 License + +In the Font Awesome Free download, the SIL OFL license applies to all icons +packaged as web and desktop font files. + +Copyright (c) 2022 Fonticons, Inc. (https://fontawesome.com) +with Reserved Font Name: "Font Awesome". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +SIL OPEN FONT LICENSE +Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting — in part or in whole — any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +-------------------------------------------------------------------------------- + +# Code: MIT License (https://opensource.org/licenses/MIT) + +In the Font Awesome Free download, the MIT license applies to all non-font and +non-icon files. + +Copyright 2022 Fonticons, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------------------- + +# Attribution + +Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font +Awesome Free files already contain embedded comments with sufficient +attribution, so you shouldn't need to do anything additional when using these +files normally. + +We've kept attribution comments terse, so we ask that you do not actively work +to remove them from files, especially code. They're a great way for folks to +learn about Font Awesome. + +-------------------------------------------------------------------------------- + +# Brand Icons + +All brand icons are trademarks of their respective owners. The use of these +trademarks does not indicate endorsement of the trademark holder by Font +Awesome, nor vice versa. **Please do not use brand logos for any purpose except +to represent the company, product, or service to which they refer.** diff --git a/assets/fa-6.2.1/css/all.min.css b/assets/fa-6.2.1/css/all.min.css new file mode 100644 index 000000000..84dbeb861 --- /dev/null +++ b/assets/fa-6.2.1/css/all.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} \ No newline at end of file diff --git a/assets/fa-6.2.1/js/all.min.js b/assets/fa-6.2.1/js/all.min.js new file mode 100644 index 000000000..fde7131b4 --- /dev/null +++ b/assets/fa-6.2.1/js/all.min.js @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +!function(){"use strict";var c={},s={};try{"undefined"!=typeof window&&(c=window),"undefined"!=typeof document&&(s=document)}catch(c){}var l=(c.navigator||{}).userAgent,z=void 0===l?"":l,a=c,e=s;a.document,e.documentElement&&e.head&&"function"==typeof e.addEventListener&&e.createElement,~z.indexOf("MSIE")||z.indexOf("Trident/");function C(s,c){var l,z=Object.keys(s);return Object.getOwnPropertySymbols&&(l=Object.getOwnPropertySymbols(s),c&&(l=l.filter(function(c){return Object.getOwnPropertyDescriptor(s,c).enumerable})),z.push.apply(z,l)),z}function H(s){for(var c=1;cc.length)&&(s=c.length);for(var l=0,z=new Array(s);lc.length)&&(s=c.length);for(var l=0,z=new Array(s);lc.length)&&(s=c.length);for(var l=0,z=new Array(s);lc.length)&&(s=c.length);for(var l=0,z=new Array(s);l>>0;l--;)s[l]=c[l];return s}function z1(c){return c.classList?l1(c.classList):(c.getAttribute("class")||"").split(" ").filter(function(c){return c})}function a1(c){return"".concat(c).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function e1(l){return Object.keys(l||{}).reduce(function(c,s){return c+"".concat(s,": ").concat(l[s].trim(),";")},"")}function C1(c){return c.size!==J.size||c.x!==J.x||c.y!==J.y||c.rotate!==J.rotate||c.flipX||c.flipY}function H1(){var c,s,l=b,z=G.cssPrefix,a=G.replacementClass,e=':host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 6 Sharp";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible;box-sizing:content-box}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.0714285705em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-counter-scale,.25));transform:scale(var(--fa-counter-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top left;transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width,2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;vertical-align:middle;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fa-sr-only-focusable:not(:focus),.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)}';return"fa"===z&&a===l||(c=new RegExp("\\.".concat("fa","\\-"),"g"),s=new RegExp("\\--".concat("fa","\\-"),"g"),l=new RegExp("\\.".concat(l),"g"),e=e.replace(c,".".concat(z,"-")).replace(s,"--".concat(z,"-")).replace(l,".".concat(a))),e}var t1=!1;function V1(){G.autoAddCss&&!t1&&(function(c){if(c&&L){var s=v.createElement("style");s.setAttribute("type","text/css"),s.innerHTML=c;for(var l=v.head.childNodes,z=null,a=l.length-1;-1").concat(z.map(o1).join(""),"")}function m1(c,s,l){if(c&&c[s]&&c[s][l])return{prefix:s,iconName:l,icon:c[s][l]}}L&&((n1=(v.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(v.readyState))||v.addEventListener("DOMContentLoaded",r1));function f1(c,s,l,z){for(var a,e,C=Object.keys(c),H=C.length,t=void 0!==z?v1(s,z):s,V=void 0===l?(a=1,c[C[0]]):(a=0,l);a + + + + diff --git a/assets/img/bg.mp4 b/assets/img/bg.mp4 new file mode 100644 index 000000000..d4b6d1420 Binary files /dev/null and b/assets/img/bg.mp4 differ diff --git a/assets/img/demozoo.png b/assets/img/demozoo.png new file mode 100644 index 000000000..b72d7b15e Binary files /dev/null and b/assets/img/demozoo.png differ diff --git a/assets/img/image-not-found.png b/assets/img/image-not-found.png new file mode 100644 index 000000000..c172ec471 Binary files /dev/null and b/assets/img/image-not-found.png differ diff --git a/assets/img/ogp_default_img_1280x720.jpg b/assets/img/ogp_default_img_1280x720.jpg new file mode 100644 index 000000000..9ab5dcb8d Binary files /dev/null and b/assets/img/ogp_default_img_1280x720.jpg differ diff --git a/assets/img/poshbrolly.png b/assets/img/poshbrolly.png new file mode 100644 index 000000000..a6366bc2a Binary files /dev/null and b/assets/img/poshbrolly.png differ diff --git a/assets/img/shadertoy.png b/assets/img/shadertoy.png new file mode 100644 index 000000000..034eb8660 Binary files /dev/null and b/assets/img/shadertoy.png differ diff --git a/assets/js/konami.js b/assets/js/konami.js new file mode 100644 index 000000000..e0028445a --- /dev/null +++ b/assets/js/konami.js @@ -0,0 +1,151 @@ +/* + * Konami-JS ~ + * :: Now with support for touch events and multiple instances for + * :: those situations that call for multiple easter eggs! + * Code: https://github.com/snaptortoise/konami-js + * Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com) + * Version: 1.6.2 (7/17/2018) + * Licensed under the MIT License (http://opensource.org/licenses/MIT) + * Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1+ and Android + */ + +var Konami = function (callback) { + var konami = { + addEvent: function (obj, type, fn, ref_obj) { + if (obj.addEventListener) + obj.addEventListener(type, fn, false); + else if (obj.attachEvent) { + // IE + obj["e" + type + fn] = fn; + obj[type + fn] = function () { + obj["e" + type + fn](window.event, ref_obj); + } + obj.attachEvent("on" + type, obj[type + fn]); + } + }, + removeEvent: function (obj, eventName, eventCallback) { + if (obj.removeEventListener) { + obj.removeEventListener(eventName, eventCallback); + } else if (obj.attachEvent) { + obj.detachEvent(eventName); + } + }, + input: "", + pattern: "38384040373937396665", + keydownHandler: function (e, ref_obj) { + if (ref_obj) { + konami = ref_obj; + } // IE + konami.input += e ? e.keyCode : event.keyCode; + if (konami.input.length > konami.pattern.length) { + konami.input = konami.input.substr((konami.input.length - konami.pattern.length)); + } + if (konami.input === konami.pattern) { + konami.code(konami._currentLink); + konami.input = ''; + e.preventDefault(); + return false; + } + }, + load: function (link) { + this._currentLink = link; + this.addEvent(document, "keydown", this.keydownHandler, this); + this.iphone.load(link); + }, + unload: function () { + this.removeEvent(document, 'keydown', this.keydownHandler); + this.iphone.unload(); + }, + code: function (link) { + window.location = link + }, + iphone: { + start_x: 0, + start_y: 0, + stop_x: 0, + stop_y: 0, + tap: false, + capture: false, + orig_keys: "", + keys: ["UP", "UP", "DOWN", "DOWN", "LEFT", "RIGHT", "LEFT", "RIGHT", "TAP", "TAP"], + input: [], + code: function (link) { + konami.code(link); + }, + touchmoveHandler: function (e) { + if (e.touches.length === 1 && konami.iphone.capture === true) { + var touch = e.touches[0]; + konami.iphone.stop_x = touch.pageX; + konami.iphone.stop_y = touch.pageY; + konami.iphone.tap = false; + konami.iphone.capture = false; + konami.iphone.check_direction(); + } + }, + touchendHandler: function () { + konami.iphone.input.push(konami.iphone.check_direction()); + + if (konami.iphone.input.length > konami.iphone.keys.length) konami.iphone.input.shift(); + + if (konami.iphone.input.length === konami.iphone.keys.length) { + var match = true; + for (var i = 0; i < konami.iphone.keys.length; i++) { + if (konami.iphone.input[i] !== konami.iphone.keys[i]) { + match = false; + } + } + if (match) { + konami.iphone.code(konami._currentLink); + } + } + }, + touchstartHandler: function (e) { + konami.iphone.start_x = e.changedTouches[0].pageX; + konami.iphone.start_y = e.changedTouches[0].pageY; + konami.iphone.tap = true; + konami.iphone.capture = true; + }, + load: function (link) { + this.orig_keys = this.keys; + konami.addEvent(document, "touchmove", this.touchmoveHandler); + konami.addEvent(document, "touchend", this.touchendHandler, false); + konami.addEvent(document, "touchstart", this.touchstartHandler); + }, + unload: function () { + konami.removeEvent(document, 'touchmove', this.touchmoveHandler); + konami.removeEvent(document, 'touchend', this.touchendHandler); + konami.removeEvent(document, 'touchstart', this.touchstartHandler); + }, + check_direction: function () { + x_magnitude = Math.abs(this.start_x - this.stop_x); + y_magnitude = Math.abs(this.start_y - this.stop_y); + x = ((this.start_x - this.stop_x) < 0) ? "RIGHT" : "LEFT"; + y = ((this.start_y - this.stop_y) < 0) ? "DOWN" : "UP"; + result = (x_magnitude > y_magnitude) ? x : y; + result = (this.tap === true) ? "TAP" : result; + return result; + } + } + } + + typeof callback === "string" && konami.load(callback); + if (typeof callback === "function") { + konami.code = callback; + konami.load(); + } + + return konami; +}; + + +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = Konami; +} else { + if (typeof define === 'function' && define.amd) { + define([], function() { + return Konami; + }); + } else { + window.Konami = Konami; + } +} diff --git a/assets/video/bg.mp4 b/assets/video/bg.mp4 new file mode 100644 index 000000000..d4b6d1420 Binary files /dev/null and b/assets/video/bg.mp4 differ diff --git a/assets/video/bg_bk.mp4 b/assets/video/bg_bk.mp4 new file mode 100644 index 000000000..87fb77d66 Binary files /dev/null and b/assets/video/bg_bk.mp4 differ diff --git a/assets/video/bg_ue.mp4 b/assets/video/bg_ue.mp4 new file mode 100644 index 000000000..ce115e35d Binary files /dev/null and b/assets/video/bg_ue.mp4 differ diff --git a/data/2013_09_20_shader_showdown_wecan.json b/data/2013_09_20_shader_showdown_wecan.json new file mode 100644 index 000000000..2445f7b99 --- /dev/null +++ b/data/2013_09_20_shader_showdown_wecan.json @@ -0,0 +1,70 @@ +{ + "title": "WeCan", + "started": "2013-09-20", + "date": "20 - 22 September 2013", + "type": "Shader Showdown", + "vod": null, + "software_used": null, + "phases": [ + { + "title": "Quarter Final ?", + "vod": "https://www.youtube.com/watch?v=njec22FHkpA", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Maq", + "demozoo_id": 3833 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "w23", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": null, + "entries": [ + { + "id": 1, + "rank": 2, + "points": 127, + "handle": { + "name": "KK", + "demozoo_id": 1027 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": 131, + "handle": { + "name": "w23", + "demozoo_id": 24024 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ldl3W2", + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [], + "demozoo_party_id": 1834 +} diff --git a/data/2014_04_18_shader_showdown_revision.json b/data/2014_04_18_shader_showdown_revision.json new file mode 100644 index 000000000..6a915af8c --- /dev/null +++ b/data/2014_04_18_shader_showdown_revision.json @@ -0,0 +1,415 @@ +{ + "title": "The Incredible Live-Coder-Mayhem 5000 @ Revision", + "started": "2014-04-18", + "date": "18 - 21 April 2014", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "ScintillaGL", + "url": "https://files.scene.org/view/parties/2014/revision14/livecoding/livecodingtool.zip", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Quarter #1", + "vod": "https://youtu.be/T6JH5j1-TQg?t=206", + "entries": [ + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "crypt", + "demozoo_id": 63756 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/01_quarterfinals/01_crypt.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/01_quarterfinals/01_crypt.fs" + }, + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "skomp", + "demozoo_id": 21373 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/01_quarterfinals/01_skomp.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/01_quarterfinals/01_skomp.fs" + } + ], + "staffs": [ + { + "handle": { + "name": "rp", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "gargaj", + "demozoo_id": 306 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter #2", + "vod": "https://youtu.be/T6JH5j1-TQg?t=1821", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/01_quarterfinals/02_blueberry.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/01_quarterfinals/02_blueberry.fs" + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "kabuto", + "demozoo_id": 6492 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/01_quarterfinals/02_kabuto.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/01_quarterfinals/02_kabuto.fs" + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "gargaj", + "demozoo_id": 306 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter #3", + "vod": "https://youtu.be/T6JH5j1-TQg?t=4098", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "miku", + "demozoo_id": 67567 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/01_quarterfinals/03_miku.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/01_quarterfinals/03_miku.fs" + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/01_quarterfinals/03_musk.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/01_quarterfinals/03_musk.fs" + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "gargaj", + "demozoo_id": 306 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi #1", + "vod": "https://youtu.be/aYlMjIVm1F4?t=105", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "kabuto", + "demozoo_id": 6492 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/02_semifinals/01_kabuto.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/02_semifinals/01_kabuto.fs" + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/02_semifinals/01_musk.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/02_semifinals/01_musk.fs" + } + ], + "staffs": [ + { + "handle": { + "name": "rp", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "gargaj", + "demozoo_id": 306 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi #2", + "vod": "https://youtu.be/aYlMjIVm1F4?t=1927", + "entries": [ + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "skomp", + "demozoo_id": 21373 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/02_semifinals/02_skomp.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/02_semifinals/02_skomp.fs" + }, + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "xtrium", + "demozoo_id": 3695 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/02_semifinals/02_xtrium.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/02_semifinals/02_xtrium.fs" + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "gargaj", + "demozoo_id": 306 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://youtu.be/aYlMjIVm1F4?t=3813", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/03_final/musk.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/03_final/musk.fs" + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "skomp", + "demozoo_id": 21373 + }, + "shadertoy_url": null, + "preview_image": "2014_04_18_shader_showdown_revision/03_final/skomp.jpg", + "source_file": "https://files.scene.org/view/parties/2014/revision14/livecoding/03_final/skomp.fs" + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "gargaj", + "demozoo_id": 306 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "D.Fox", + "demozoo_id": 903 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "gargaj", + "demozoo_id": 306 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 2029 +} diff --git a/data/2015_04_03_shader_showdown_revision.json b/data/2015_04_03_shader_showdown_revision.json new file mode 100644 index 000000000..4f6714b3f --- /dev/null +++ b/data/2015_04_03_shader_showdown_revision.json @@ -0,0 +1,228 @@ +{ + "title": "Revision", + "started": "2015-04-03", + "date": "03 - 06 April 2015", + "type": "Shader Showdown", + "vod": null, + "software_used": null, + "phases": [ + { + "title": "Quarter #1", + "vod": "https://youtu.be/j4baExLqNoI?t=290", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "hardy", + "demozoo_id": 913 + }, + "shadertoy_url": null, + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/01a-hardy.hlsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "mu6k", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/01a-musk.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/01a-musk.glsl" + } + ], + "staffs": [] + }, + { + "title": "Quarter #2", + "vod": "https://youtu.be/j4baExLqNoI?t=2417", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Eybor", + "demozoo_id": 27241 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/01b-eybor.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/01b-eybor.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Ren Hoek", + "demozoo_id": 25277 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/01b-renhoek.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/01b-renhoek.glsl" + } + ], + "staffs": [] + }, + { + "title": "Quarter #3", + "vod": "https://youtu.be/j4baExLqNoI?t=4431", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/01c-lj.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/01c-lj.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "XT95", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/01c-xt95.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/01c-xt95.glsl" + } + ], + "staffs": [] + }, + { + "title": "Quarter #4", + "vod": "https://youtu.be/j4baExLqNoI?t=6330", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Kabuto", + "demozoo_id": 6492 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/01d-kabuto.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/01d-kabuto.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "wsmind", + "demozoo_id": 34845 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/01d-wsmind.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/01d-wsmind.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #1", + "vod": "https://youtu.be/0Xi_exoOXjw?t=203", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "mu6k", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/02a-musk.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/02a-musk.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Eybor", + "demozoo_id": 27241 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/02a-eybor.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/02a-eybor.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #2", + "vod": "https://youtu.be/0Xi_exoOXjw?t=2180", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "XT95", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/02b-xt95.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/02b-xt95.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Kabuto", + "demozoo_id": 6492 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/02b-kabuto.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/02b-kabuto.glsl" + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": "https://youtu.be/0Xi_exoOXjw?t=6119", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "mu6k", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/03-musk.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/03-musk.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Kabuto", + "demozoo_id": 6492 + }, + "shadertoy_url": null, + "preview_image": "2015_04_03_shader_showdown_revision/03-kabuto.jpg", + "source_file": "https://files.scene.org/view/parties/2015/revision15/shadershowdown/03-kabuto.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [], + "demozoo_party_id": 2444 +} \ No newline at end of file diff --git a/data/2015_07_10_shader_showdown_solskogen.json b/data/2015_07_10_shader_showdown_solskogen.json new file mode 100644 index 000000000..99f3259a5 --- /dev/null +++ b/data/2015_07_10_shader_showdown_solskogen.json @@ -0,0 +1,112 @@ +{ + "title": "Solskogen", + "started": "2015-07-10", + "date": "10 - 12 July 2015", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic/releases/tag/2015-07-07", + "version": "2015-07-07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": 2, + "points": 13, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2015_07_10_shader_showdown_solskogen/01a-musk.jpg", + "source_file": "https://files.scene.org/view/parties/2015/solskogen15/livecoding/01a-musk.glsl" + }, + { + "id": null, + "rank": 1, + "points": 20, + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "preview_image": "2015_07_10_shader_showdown_solskogen/01a-ferris.jpg", + "source_file": "https://files.scene.org/view/parties/2015/solskogen15/livecoding/01a-ferris.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": 2, + "points": 7, + "handle": { + "name": "Emil", + "demozoo_id": 21271 + }, + "shadertoy_url": null, + "preview_image": "2015_07_10_shader_showdown_solskogen/01b-emil.jpg", + "source_file": "https://files.scene.org/view/parties/2015/solskogen15/livecoding/01b-emil.glsl" + }, + { + "id": null, + "rank": 1, + "points": 22, + "handle": { + "name": "urs", + "demozoo_id": 3960 + }, + "shadertoy_url": null, + "preview_image": "2015_07_10_shader_showdown_solskogen/01b-urs.jpg", + "source_file": "https://files.scene.org/view/parties/2015/solskogen15/livecoding/01b-urs.glsl" + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": 24, + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "preview_image": "2015_07_10_shader_showdown_solskogen/02-ferris.jpg", + "source_file": "https://files.scene.org/view/parties/2015/solskogen15/livecoding/02-ferris.glsl" + }, + { + "id": null, + "rank": 2, + "points": 3, + "handle": { + "name": "urs", + "demozoo_id": 3960 + }, + "shadertoy_url": null, + "preview_image": "2015_07_10_shader_showdown_solskogen/02-urs.jpg", + "source_file": "https://files.scene.org/view/parties/2015/solskogen15/livecoding/02-urs.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [], + "demozoo_party_id": 2086 +} \ No newline at end of file diff --git a/data/2016_03_25_shader_showdown_revision.json b/data/2016_03_25_shader_showdown_revision.json new file mode 100644 index 000000000..fbb8a972a --- /dev/null +++ b/data/2016_03_25_shader_showdown_revision.json @@ -0,0 +1,433 @@ +{ + "title": "Revision", + "started": "2016-03-25", + "date": "25 - 28 March 2016", + "type": "Shader Showdown", + "vod": null, + "software_used": null, + "phases": [ + { + "title": "Qualifiers #1", + "vod": "https://www.youtube.com/watch?v=n7eoUklvA6k", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "archee", + "demozoo_id": 3718 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "abductee", + "demozoo_id": 10657 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifiers #2", + "vod": "https://www.youtube.com/watch?v=n7eoUklvA6k", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "mankeli", + "demozoo_id": 14296 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "abductee", + "demozoo_id": 10657 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifiers #3", + "vod": "https://www.youtube.com/watch?v=n7eoUklvA6k", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "medo", + "demozoo_id": 6424 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "abductee", + "demozoo_id": 10657 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifiers #4", + "vod": "https://www.youtube.com/watch?v=n7eoUklvA6k", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "kabuto", + "demozoo_id": 6492 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "abductee", + "demozoo_id": 10657 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinals #1", + "vod": "https://www.youtube.com/watch?v=Oa0BlHkYynU", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "archee", + "demozoo_id": 3718 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "abductee", + "demozoo_id": 10657 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinals #2", + "vod": "https://www.youtube.com/watch?v=Oa0BlHkYynU", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "abductee", + "demozoo_id": 10657 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=slSmOqdL-rw", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "archee", + "demozoo_id": 3718 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "moqui", + "demozoo_id": 11347 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "abductee", + "demozoo_id": 10657 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "random", + "demozoo_id": 15652 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 2811 +} \ No newline at end of file diff --git a/data/2016_07_15_shader_showdown_solskogen.json b/data/2016_07_15_shader_showdown_solskogen.json new file mode 100644 index 000000000..de607247b --- /dev/null +++ b/data/2016_07_15_shader_showdown_solskogen.json @@ -0,0 +1,112 @@ +{ + "title": "Solskogen", + "started": "2016-07-15", + "date": "15 - 16 July 2016", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://files.scene.org/view/parties/2016/solskogen16/livecoding/livecoding-bonzomatic-setup.zip", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi #1", + "vod": "https://youtu.be/1KxkiKK4EBc?t=3", + "entries": [ + { + "id": null, + "rank": 2, + "points": 4, + "handle": { + "name": "urs", + "demozoo_id": 3960 + }, + "shadertoy_url": null, + "preview_image": "2016_07_15_shader_showdown_solskogen/semifinal1-urs.jpg", + "source_file": "https://files.scene.org/view/parties/2016/solskogen16/livecoding/semifinal1-urs.glsl" + }, + { + "id": null, + "rank": 1, + "points": 36, + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "preview_image": "2016_07_15_shader_showdown_solskogen/semifinal1-ferris.jpg", + "source_file": "https://files.scene.org/view/parties/2016/solskogen16/livecoding/semifinal1-ferris.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #2", + "vod": "https://www.youtube.com/watch?v=FwhfnaiUNhA", + "entries": [ + { + "id": null, + "rank": 1, + "points": 25, + "handle": { + "name": "Tapped", + "demozoo_id": 21271 + }, + "shadertoy_url": null, + "preview_image": "2016_07_15_shader_showdown_solskogen/semifinal2-tapped.jpg", + "source_file": "https://files.scene.org/view/parties/2016/solskogen16/livecoding/semifinal2-tapped.glsl" + }, + { + "id": null, + "rank": 2, + "points": 23, + "handle": { + "name": "Blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "preview_image": "2016_07_15_shader_showdown_solskogen/semifinal2-blueberry.jpg", + "source_file": "https://files.scene.org/view/parties/2016/solskogen16/livecoding/semifinal2-blueberry.glsl" + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=C81wsETr3Pc", + "entries": [ + { + "id": null, + "rank": 2, + "points": 16, + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "preview_image": "2016_07_15_shader_showdown_solskogen/final-ferris.jpg", + "source_file": "https://files.scene.org/view/parties/2016/solskogen16/livecoding/final-ferris.glsl" + }, + { + "id": null, + "rank": 1, + "points": 31, + "handle": { + "name": "Tapped", + "demozoo_id": 21271 + }, + "shadertoy_url": null, + "preview_image": "2016_07_15_shader_showdown_solskogen/final-tapped.jpg", + "source_file": "https://files.scene.org/view/parties/2016/solskogen16/livecoding/final-tapped.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [], + "demozoo_party_id": 2822 +} \ No newline at end of file diff --git a/data/2017_04_14_shader_showdown_revision.json b/data/2017_04_14_shader_showdown_revision.json new file mode 100644 index 000000000..8a152812f --- /dev/null +++ b/data/2017_04_14_shader_showdown_revision.json @@ -0,0 +1,376 @@ +{ + "title": "Revision", + "started": "2017-04-14", + "date": "14 - 17 April 2017", + "type": "Shader Showdown", + "vod": null, + "software_used": null, + "phases": [ + { + "title": "Qualifiers #1", + "vod": "https://www.youtube.com/watch?v=Oa_zCThLXRw", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "fizzer", + "demozoo_id": 27471 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "lovely hannibal", + "demozoo_id": 26514 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifiers #2", + "vod": "https://www.youtube.com/watch?v=Oa_zCThLXRw", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "cupe", + "demozoo_id": 15276 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifiers #3", + "vod": "https://www.youtube.com/watch?v=Oa_zCThLXRw", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "eybor", + "demozoo_id": 27241 + }, + "shadertoy_url": "https://www.shadertoy.com/view/XdByzy", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "ren ho\u00ebk", + "demozoo_id": 25277 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifiers #4", + "vod": "https://www.youtube.com/watch?v=Oa_zCThLXRw", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "branch", + "demozoo_id": 44254 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinals #1", + "vod": "https://www.youtube.com/watch?v=m6xWreYb3zM", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "cupe", + "demozoo_id": 15276 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "fizzer", + "demozoo_id": 27471 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinals #2", + "vod": "https://www.youtube.com/watch?v=m6xWreYb3zM", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "eybor", + "demozoo_id": 27241 + }, + "shadertoy_url": "https://www.shadertoy.com/view/MdScRy", + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=ZwR0zFe57Y4", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "cupe", + "demozoo_id": 15276 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 2949 +} \ No newline at end of file diff --git a/data/2017_06_22_shader_showdown_paris_cc_1.json b/data/2017_06_22_shader_showdown_paris_cc_1.json new file mode 100644 index 000000000..554c5c2c3 --- /dev/null +++ b/data/2017_06_22_shader_showdown_paris_cc_1.json @@ -0,0 +1,244 @@ +{ + "title": "Cookie Showdown #1 @ Kawaii Caf\u00e9", + "started": "2017-06-22", + "date": "22 June 2017", + "type": "Shader Showdown", + "vod": "https://youtu.be/TZeZ3Mmi4VY", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic/releases/tag/2017-04-08", + "version": "2017-04-08", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/01-anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/01-anton.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Eybor", + "demozoo_id": 27241 + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/01-eybor.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/01-eybor.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/02-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/02-flopine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wsmind", + "demozoo_id": 34845 + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/02-wsmind.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/02-wsmind.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #3", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/03-lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/03-lamogui.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Sicarde", + "demozoo_id": 75328 + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/03-sicarde.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/03-sicarde.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #4", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/04-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/04-ponk.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Semtoraap", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/04-semtoraap.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/04-semtoraap.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #5", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/05-anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/05-Anton.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Pasta", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/05-pasta.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/05-pasta.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #6", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/06-koltes.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/06-koltes.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Poulet Vert", + "demozoo_id": 78480 + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/06-pouletvert.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/06-pouletvert.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #7", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/07-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/07-flopine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wsmind", + "demozoo_id": 34845 + }, + "shadertoy_url": null, + "preview_image": "2017_06_22_shader_showdown_paris_cc_1/07-wsmind.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-06-22/07-wsmind.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2017_07_14_shader_showdown_solskogen.json b/data/2017_07_14_shader_showdown_solskogen.json new file mode 100644 index 000000000..fbbb54dc1 --- /dev/null +++ b/data/2017_07_14_shader_showdown_solskogen.json @@ -0,0 +1,193 @@ +{ + "title": "Solskogen", + "started": "2017-07-14", + "date": "14 - 16 July 2017", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic/releases/tag/2017-04-08", + "version": "2017-04-08", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi #1", + "vod": "https://www.youtube.com/watch?v=NvS3aNyw3K4", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 45, + "handle": { + "name": "Rohtie", + "demozoo_id": 4456 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": 10, + "handle": { + "name": "Tapped", + "demozoo_id": 21271 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "duckers", + "demozoo_id": 72 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Sesse", + "demozoo_id": 4212 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Phobium", + "demozoo_id": 4220 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Semi #2", + "vod": "https://www.youtube.com/watch?v=5Xi9setFM_s", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 38, + "handle": { + "name": "Blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": 23, + "handle": { + "name": "Ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "duckers", + "demozoo_id": 72 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Sesse", + "demozoo_id": 4212 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Phobium", + "demozoo_id": 4220 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=UiASfPUhxNQ", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 23, + "handle": { + "name": "Blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": 34, + "handle": { + "name": "Rohtie", + "demozoo_id": 4456 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "duckers", + "demozoo_id": 72 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Sesse", + "demozoo_id": 4212 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Phobium", + "demozoo_id": 4220 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3172 +} \ No newline at end of file diff --git a/data/2017_07_21_shader_jam_nordlicht.json b/data/2017_07_21_shader_jam_nordlicht.json new file mode 100644 index 000000000..fbe690a41 --- /dev/null +++ b/data/2017_07_21_shader_jam_nordlicht.json @@ -0,0 +1,38 @@ +{ + "title": "Nordlicht", + "started": "2017-07-21", + "date": "21 - 23 July 2017", + "type": "Shader Showdown", + "vod": "https://scenesat.com/videoarchive/250b389f-b90e-11ea-b68e-00505685775e?t=20172", + "software_used": null, + "phases": [ + { + "title": "??", + "vod": "https://scenesat.com/videoarchive/250b389f-b90e-11ea-b68e-00505685775e?t=20172", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "??", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "??", + "demozoo_id": null + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3096 +} \ No newline at end of file diff --git a/data/2017_10_26_shader_showdown_paris_cc_2.json b/data/2017_10_26_shader_showdown_paris_cc_2.json new file mode 100644 index 000000000..82ebab203 --- /dev/null +++ b/data/2017_10_26_shader_showdown_paris_cc_2.json @@ -0,0 +1,244 @@ +{ + "title": "Cookie Showdown #2 @ Nogozon", + "started": "2017-10-26", + "date": "26 October 2017", + "type": "Shader Showdown", + "vod": "https://youtu.be/w_VUkax9nGs", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Eybor", + "demozoo_id": 27241 + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/01-eybor.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/01-eybor.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wsmind", + "demozoo_id": 34845 + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/01-wsmind.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/01-wsmind.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/02-anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/02-anton.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/02-lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/02-lamogui.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #3", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/03-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/03-flopine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Poulet Vert", + "demozoo_id": 78480 + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/03-pouletvert.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/03-pouletvert.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #4", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/04-lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/04-lamogui.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Omar", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/04-omar.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/04-omar.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #5", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lock0", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/05-lock0.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/05-lock0.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "XT95", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/05-xt95.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/05-xt95.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #6", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/06-koltes.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/06-koltes.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/06-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/06-ponk.glsl" + } + ], + "staffs": [] + }, + { + "title": "Extra", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Shader exquis", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/extra-shex-1.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/extra-shex-1.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Shader exquis", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_10_26_shader_showdown_paris_cc_2/extra-shex-2.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-10-26/extra-shex-2.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2017_11_25_shader_showdown_paris_cc_3.json b/data/2017_11_25_shader_showdown_paris_cc_3.json new file mode 100644 index 000000000..79a443036 --- /dev/null +++ b/data/2017_11_25_shader_showdown_paris_cc_3.json @@ -0,0 +1,194 @@ +{ + "title": "Cookie Showdown #3 @ Nogozon", + "started": "2017-11-25", + "date": "25 November 2017", + "type": "Shader Showdown", + "vod": "https://youtu.be/55ayUl_07-E", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/01-lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/01-lamogui.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/01-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/01-ponk.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/02-anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/02-anton.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/02-koltes.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/02-koltes.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #3", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/03-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/03-ponk.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Remi", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/03-remi.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/03-remi.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #4", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/04-anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/04-anton.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/04-lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/04-lamogui.glsl" + } + ], + "staffs": [] + }, + { + "title": "Extra", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/extra-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/extra-flopine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Shader exquis", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/extra-shex-1.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/extra-shex-1.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Shader exquis", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_11_25_shader_showdown_paris_cc_3/extra-shex-2.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-11-25/extra-shex-2.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2017_12_08_shader_showdown_paris_cc_4.json b/data/2017_12_08_shader_showdown_paris_cc_4.json new file mode 100644 index 000000000..22b106e47 --- /dev/null +++ b/data/2017_12_08_shader_showdown_paris_cc_4.json @@ -0,0 +1,310 @@ +{ + "title": "Cookie Demoparty / Showdown #4 @ Jardin d'Alice", + "started": "2017-12-08", + "date": "08 December 2017", + "type": "Shader Showdown", + "vod": "https://youtu.be/ugs3-B3Tng0", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Quarter #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/01-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/01-flopine.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Eybor", + "demozoo_id": 27241 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/01-eybor.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/01-eybor.glsl" + } + ], + "staffs": [] + }, + { + "title": "Quarter #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Theotime", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/02-theotime.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/02-theotime.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/02-anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/02-anton.glsl" + } + ], + "staffs": [] + }, + { + "title": "Quarter #3", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "XT95", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/03-xt95.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/03-xt95.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/03-lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/03-lamogui.glsl" + } + ], + "staffs": [] + }, + { + "title": "Quarter #4", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "CoyHot", + "demozoo_id": 43553 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/04-coyhot.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/04-coyhot.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Xtrium", + "demozoo_id": 3695 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/04-xtrium.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/04-xtrium.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/05-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/05-flopine.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Theotime", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/05-theotime.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/05-theotime.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "XT95", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/06-xt95-xmen-edit.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/06-xt95-xmen-edit.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "CoyHot", + "demozoo_id": 43553 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/06-coyhot.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/06-coyhot.glsl" + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "XT95", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/07-xt95.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/07-xt95.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/07-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/07-flopine.glsl" + } + ], + "staffs": [] + }, + { + "title": "Extra", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Extra #1", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/extra-01.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/extra-01.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Extra #2", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/extra-02.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/extra-02.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Extra #3", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/extra-03.dx9.hlsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Extra #4", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/extra-04.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/extra-04.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Extra #5", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2017_12_08_shader_showdown_paris_cc_4/extra-05.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2017-12-08/extra-05.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2018_02_07_shader_showdown_paris_cc_5.json b/data/2018_02_07_shader_showdown_paris_cc_5.json new file mode 100644 index 000000000..8399d2ec1 --- /dev/null +++ b/data/2018_02_07_shader_showdown_paris_cc_5.json @@ -0,0 +1,165 @@ +{ + "title": "Cookie Showdown #5 @ Jardin d'Alice", + "started": "2018-02-07", + "date": "07 February 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + }, + { + "name": "Veda", + "url": "https://veda.gl/", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "XT95", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/01-xt95.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Theotime", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/02-theotime1.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Theotime", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/02-theotime2.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Theotime", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/02-theotime3.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Theotime", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/02-theotime4.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2018_02_07_shader_showdown_paris_cc_5/03-anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/03-anton.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/04-ponk.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/05-elie.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2018_02_07_shader_showdown_paris_cc_5/07-anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/07-anton.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "XT95", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "preview_image": "2018_02_07_shader_showdown_paris_cc_5/08-xt95.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/08-xt95.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wsmind", + "demozoo_id": 34845 + }, + "shadertoy_url": null, + "preview_image": "2018_02_07_shader_showdown_paris_cc_5/09-wsmind.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-02-07/09-wsmind.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2018_03_07_shader_showdown_paris_cc_6.json b/data/2018_03_07_shader_showdown_paris_cc_6.json new file mode 100644 index 000000000..c3b16f2c8 --- /dev/null +++ b/data/2018_03_07_shader_showdown_paris_cc_6.json @@ -0,0 +1,172 @@ +{ + "title": "Cookie Showdown #6 @ Nogozon", + "started": "2018-03-07", + "date": "07 March 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Veda", + "url": "https://veda.gl/", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-03-07/01-anton.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-03-07/01-lamogui.frag" + } + ], + "staffs": [] + }, + { + "title": "Round #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Eybor", + "demozoo_id": 27241 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-03-07/02-eybor.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-03-07/02-flopine.frag" + } + ], + "staffs": [] + }, + { + "title": "Round #3", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-03-07/03-elie.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nicoptere", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-03-07/03-nicoptere.frag" + } + ], + "staffs": [] + }, + { + "title": "Round #4", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-03-07/04-anton.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Leon", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-03-07/04-leon.frag" + } + ], + "staffs": [] + }, + { + "title": "Round #5", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-03-07/05-flopine.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mon Blaz", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-03-07/05-monblaz.frag" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2018_03_30_shader_showdown_revision.json b/data/2018_03_30_shader_showdown_revision.json new file mode 100644 index 000000000..f0364c54d --- /dev/null +++ b/data/2018_03_30_shader_showdown_revision.json @@ -0,0 +1,397 @@ +{ + "title": "Revision", + "started": "2018-03-30", + "date": "30 March - 02 April 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic", + "version": "2018-03-06", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Qualifiers #1", + "vod": "https://www.youtube.com/watch?v=KG_2q4OEhKc", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "fizzer", + "demozoo_id": 27471 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "urs", + "demozoo_id": 3960 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifiers #2", + "vod": "https://www.youtube.com/watch?v=KG_2q4OEhKc", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/4syyzK", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "ken", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "urs", + "demozoo_id": 3960 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifiers #3", + "vod": "https://www.youtube.com/watch?v=KG_2q4OEhKc", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "urs", + "demozoo_id": 3960 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifiers #4", + "vod": "https://www.youtube.com/watch?v=KG_2q4OEhKc", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "cupe", + "demozoo_id": 15276 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "urs", + "demozoo_id": 3960 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinals #1", + "vod": "https://www.youtube.com/watch?v=KTduo6rsTpY", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "fizzer", + "demozoo_id": 27471 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "urs", + "demozoo_id": 3960 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinals #2", + "vod": "https://www.youtube.com/watch?v=KTduo6rsTpY", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/XdGczK", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "cupe", + "demozoo_id": 15276 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "urs", + "demozoo_id": 3960 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=ZwR0zFe57Y4", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "urs", + "demozoo_id": 3960 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3537 +} \ No newline at end of file diff --git a/data/2018_04_07_shader_showdown_paris_cc_7.json b/data/2018_04_07_shader_showdown_paris_cc_7.json new file mode 100644 index 000000000..f81984710 --- /dev/null +++ b/data/2018_04_07_shader_showdown_paris_cc_7.json @@ -0,0 +1,111 @@ +{ + "title": "Laval Virtual / Cookie Showdown #7", + "started": "2018-04-07", + "date": "07 April 2018", + "type": "Shader Showdown", + "vod": "https://www.youtube.com/watch?v=6ul-jeLTQbM", + "software_used": [ + { + "name": "Veda", + "url": "https://veda.gl/", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Exquisite Shader", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-04-07/01-elie.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-04-07/02-koltes.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-04-07/03-elie.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-04-07/04-elie.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Adrian", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-04-07/05-adrian.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Jean Michel", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-04-07/06-jeanmichel.frag" + }, + { + "id": null, + "rank": null, + "point": null, + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-04-07/07-koltes.frag" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2018_05_10_shader_showdown_outline.json b/data/2018_05_10_shader_showdown_outline.json new file mode 100644 index 000000000..751b67eb2 --- /dev/null +++ b/data/2018_05_10_shader_showdown_outline.json @@ -0,0 +1,176 @@ +{ + "title": "Outline", + "started": "2018-05-10", + "date": "10 - 13 May 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": null, + "phases": [ + { + "title": "Semifinal #1", + "vod": "https://www.youtube.com/watch?v=q8iFI1-v5n8", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": "https://www.shadertoy.com/view/MscBRs", + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "TropicalTrevor", + "demozoo_id": 44283 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "andro", + "demozoo_id": 67079 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinals #2", + "vod": "https://youtu.be/q8iFI1-v5n8?t=1618", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/MdcBzf", + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "andro", + "demozoo_id": 67079 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://youtu.be/q8iFI1-v5n8?t=3344", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": "https://www.shadertoy.com/view/MscBzs", + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "klandox", + "demozoo_id": 77179 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "andro", + "demozoo_id": 67079 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3373 +} diff --git a/data/2018_05_25_shader_showdown_paris_cc_8.json b/data/2018_05_25_shader_showdown_paris_cc_8.json new file mode 100644 index 000000000..e756e3c65 --- /dev/null +++ b/data/2018_05_25_shader_showdown_paris_cc_8.json @@ -0,0 +1,130 @@ +{ + "title": "Cookie Showdown #8", + "started": "2018-05-25", + "date": "25 May 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + }, + { + "name": "Veda", + "url": "https://veda.gl/", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-05-25/01-anton.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Leon", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-05-25/01-leon.frag" + } + ], + "staffs": [] + }, + { + "title": "Round #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Antoine", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2018_05_25_shader_showdown_paris_cc_8/02-antoine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-05-25/02-antoine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2018_05_25_shader_showdown_paris_cc_8/02-lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-05-25/02-lamogui.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #3", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": null, + "preview_image": "2018_05_25_shader_showdown_paris_cc_8/03-lsdlive.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-05-25/03-lsdlive.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #4", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gwi", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-05-25/04-gwi.frag" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2018_06_01_shader_showdown_vip.json b/data/2018_06_01_shader_showdown_vip.json new file mode 100644 index 000000000..bd9f200fe --- /dev/null +++ b/data/2018_06_01_shader_showdown_vip.json @@ -0,0 +1,207 @@ +{ + "title": "Very Important Party", + "started": "2018-06-01", + "date": "01 - 03 June 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Qualification #1", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/01-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/01-ponk.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "xtrium", + "demozoo_id": 3695 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/01-xtrium.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/01-xtrium.glsl" + } + ], + "staffs": [] + }, + { + "title": "Qualification #2", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "CoyHot", + "demozoo_id": 43553 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/02-coyhot.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/02-coyhot.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/02-lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/02-lamogui.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #1", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/03-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/03-ponk.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/03-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/03-flopine.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #2", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/04-lsdlive.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/04-lsdlive.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "CoyHot", + "demozoo_id": 43553 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/04-coyhot.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/04-coyhot.glsl" + } + ], + "staffs": [] + }, + { + "title": "Little Final", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "CoyHot", + "demozoo_id": 43553 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/05-coyhot.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/05-coyhot.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/05-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/05-ponk.glsl" + } + ], + "staffs": [] + }, + { + "title": "Great Final", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/06_flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/06_flopine.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": null, + "preview_image": "2018_06_01_shader_showdown_vip/06-lsdlive.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-06-02/06-lsdlive.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3583 +} \ No newline at end of file diff --git a/data/2018_06_22_shader_showdown_nova.json b/data/2018_06_22_shader_showdown_nova.json new file mode 100644 index 000000000..3bfc380a2 --- /dev/null +++ b/data/2018_06_22_shader_showdown_nova.json @@ -0,0 +1,179 @@ +{ + "title": "NOVA", + "started": "2018-06-22", + "date": "22 - 24 June 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic", + "version": "2018-03-06", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi Final 1", + "vod": "https://www.youtube.com/watch?v=a68wTEF-9io", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 117, + "handle": { + "name": "yx", + "demozoo_id": 77056 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ldyfzc", + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": 91, + "handle": { + "name": "Insomniac", + "demozoo_id": 74206 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "subi", + "demozoo_id": 21306 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 2", + "vod": "https://www.youtube.com/watch?v=CcYyWklS2aQ", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "psonice", + "demozoo_id": 9807 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "subi", + "demozoo_id": 21306 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=u2saD44omjU", + "entries": [ + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "yx", + "demozoo_id": 77056 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Mdyfzc", + "source_file": null + }, + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "psonice", + "demozoo_id": 9807 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "rc55", + "demozoo_id": 6412 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3334 +} \ No newline at end of file diff --git a/data/2018_07_13_shader_showdown_solskogen.json b/data/2018_07_13_shader_showdown_solskogen.json new file mode 100644 index 000000000..91250a9f2 --- /dev/null +++ b/data/2018_07_13_shader_showdown_solskogen.json @@ -0,0 +1,106 @@ +{ + "title": "Solskogen", + "started": "2018-07-13", + "date": "13 - 15 July 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic/releases/tag/2018-04-22", + "version": "2018-04-22", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi #1", + "vod": "https://www.youtube.com/watch?v=DceKqJJ2l94", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 51, + "handle": { + "name": "Rohtie", + "demozoo_id": 4456 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": 28, + "handle": { + "name": "Sebbert", + "demozoo_id": 58198 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Semi #2", + "vod": "https://www.youtube.com/watch?v=WHw13C4-b-M", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 38, + "handle": { + "name": "Blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": 47, + "handle": { + "name": "Ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=u517aj_JzVg", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 41, + "handle": { + "name": "Rohtie", + "demozoo_id": 4456 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": 32, + "handle": { + "name": "Ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [], + "demozoo_party_id": 3453 +} \ No newline at end of file diff --git a/data/2018_07_20_shader_showdown_nordlicht.json b/data/2018_07_20_shader_showdown_nordlicht.json new file mode 100644 index 000000000..d8d12374f --- /dev/null +++ b/data/2018_07_20_shader_showdown_nordlicht.json @@ -0,0 +1,57 @@ +{ + "title": "Nordlicht", + "started": "2018-07-20", + "date": "20 - 22 July 2018", + "type": "Shader Showdown", + "vod": "https://scenesat.com/videoarchive/250b8522-b90e-11ea-b68e-00505685775e?t=17655", + "software_used": null, + "phases": [ + { + "title": "Single Round", + "vod": "https://scenesat.com/videoarchive/250b8522-b90e-11ea-b68e-00505685775e?t=17655", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "fizzer", + "demozoo_id": 27471 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "hardy", + "demozoo_id": 913 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3551 +} \ No newline at end of file diff --git a/data/2018_08_17_shader_showdown_evoke.json b/data/2018_08_17_shader_showdown_evoke.json new file mode 100644 index 000000000..8480ea2cb --- /dev/null +++ b/data/2018_08_17_shader_showdown_evoke.json @@ -0,0 +1,201 @@ +{ + "title": "Evoke", + "started": "2018-08-17", + "date": "17 - 19 August 2018", + "type": "Shader Showdown", + "vod": "https://www.twitch.tv/videos/298540965", + "software_used": null, + "phases": [ + { + "title": "Semi Final 1", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/llKyRz", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Leon Denise", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 2", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "hardy", + "demozoo_id": 913 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.twitch.tv/videos/298540965?t=02h02m37s", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "hardy", + "demozoo_id": 913 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "random", + "demozoo_id": 15652 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3464 +} \ No newline at end of file diff --git a/data/2018_10_05_shader_showdown_deadline.json b/data/2018_10_05_shader_showdown_deadline.json new file mode 100644 index 000000000..da33c2963 --- /dev/null +++ b/data/2018_10_05_shader_showdown_deadline.json @@ -0,0 +1,152 @@ +{ + "title": "Deadline", + "started": "2018-10-05", + "date": "05 - 07 October 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": null, + "phases": [ + { + "title": "Semifinals #1", + "vod": "https://www.youtube.com/watch?v=gnOBOoyAouQ", + "entries": [ + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "KeyJ", + "demozoo_id": 5896 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "messy", + "demozoo_id": 11924 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kebby", + "demozoo_id": 557 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinals #2", + "vod": "https://www.youtube.com/watch?v=gnOBOoyAouQ", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "cupe", + "demozoo_id": 15276 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "messy", + "demozoo_id": 11924 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kebby", + "demozoo_id": 557 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=84DlrXXFNhc", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "cupe", + "demozoo_id": 15276 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "messy", + "demozoo_id": 11924 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kebby", + "demozoo_id": 557 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3554 +} \ No newline at end of file diff --git a/data/2018_10_20_shader_showdown_paris_cc_9.json b/data/2018_10_20_shader_showdown_paris_cc_9.json new file mode 100644 index 000000000..c81fc2a30 --- /dev/null +++ b/data/2018_10_20_shader_showdown_paris_cc_9.json @@ -0,0 +1,67 @@ +{ + "title": "Blue /x80 @ Bar Galia", + "started": "2018-10-20", + "date": "20 October 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Veda", + "url": "https://veda.gl/", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anatol", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-10-20/anatol.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Leon", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-10-20/leon.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Theo", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-10-20/theo.frag" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2018_11_02_shader_showdown_demosplash.json b/data/2018_11_02_shader_showdown_demosplash.json new file mode 100644 index 000000000..fb002613d --- /dev/null +++ b/data/2018_11_02_shader_showdown_demosplash.json @@ -0,0 +1,43 @@ +{ + "title": "Demosplash", + "started": "2018-11-02", + "date": "02 November 2018", + "type": "Shader Showdown", + "vod": "https://scenesat.com/videoarchive/250b96a5-b90e-11ea-b68e-00505685775e?t=10770", + "software_used": null, + "phases": [ + { + "title": "Live Shader", + "vod": "https://scenesat.com/videoarchive/250b96a5-b90e-11ea-b68e-00505685775e?t=10770", + "entries": [ + { + "id": 2, + "rank": 1, + "points": 185, + "handle": { + "name": "CharStiles", + "demozoo_id": 82875 + }, + "shadertoy_url": null, + "preview_image": "2018_11_02_shader_showdown_demosplash/charstiles.jpg", + "source_file": "https://files.scene.org/view/parties/2018/demosplash18/live_shader/charstiles.glsl" + }, + { + "id": 1, + "rank": 2, + "points": 159, + "handle": { + "name": "lsh", + "demozoo_id": 82874 + }, + "shadertoy_url": null, + "preview_image": "2018_11_02_shader_showdown_demosplash/lsh.jpg", + "source_file": "https://files.scene.org/view/parties/2018/demosplash18/live_shader/lsh.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [], + "demozoo_party_id": 3716 +} \ No newline at end of file diff --git a/data/2018_11_30_shader_showdown_paris_cc_10.json b/data/2018_11_30_shader_showdown_paris_cc_10.json new file mode 100644 index 000000000..e8d3dd4ba --- /dev/null +++ b/data/2018_11_30_shader_showdown_paris_cc_10.json @@ -0,0 +1,251 @@ +{ + "title": "Cookie Demoparty @ La Folie Num\u00e9rique", + "started": "2018-11-30", + "date": "30 November - 01 December 2018", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Quarter #1", + "vod": "https://www.youtube.com/watch?v=p4MakgvYtGg", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Wsmind", + "demozoo_id": 34845 + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/01-wsmind.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/01-wsmind.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/01-elie.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/01-elie.glsl" + } + ], + "staffs": [] + }, + { + "title": "Quarter #2", + "vod": "https://www.youtube.com/watch?v=n7eoUklvA6k", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/02-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/02-ponk.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/02-evvvvil.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/02-evvvvil.glsl" + } + ], + "staffs": [] + }, + { + "title": "Quarter #3", + "vod": "https://www.youtube.com/watch?v=m4dznEOk6pw", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/03-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/03-flopine.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/03-lsdlive.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/03-lsdlive.glsl" + } + ], + "staffs": [] + }, + { + "title": "Quarter #4", + "vod": "https://www.youtube.com/watch?v=n7eoUklvA6k", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Nusan", + "demozoo_id": 88839 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ltVfWG", + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/04-nusan.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/04-nusan.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Eybor", + "demozoo_id": 27241 + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/04-eybor.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/04-eybor.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/05-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/05-ponk.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Wsmind", + "demozoo_id": 34845 + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/05-wsmind.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/05-wsmind.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Nusan", + "demozoo_id": 88839 + }, + "shadertoy_url": "https://www.shadertoy.com/view/llVfWG", + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/06-nusan.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/06-nusan.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/06-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/06-flopine.glsl" + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Nusan", + "demozoo_id": 88839 + }, + "shadertoy_url": "https://www.shadertoy.com/view/MlVfWG", + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/07-nusan.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/07-nusan.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2018_11_30_shader_showdown_paris_cc_10/07-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2018-12-01/07-ponk.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2018_12_01_shader_jam_tokyo_demo_fest.json b/data/2018_12_01_shader_jam_tokyo_demo_fest.json new file mode 100644 index 000000000..393e5fcf5 --- /dev/null +++ b/data/2018_12_01_shader_jam_tokyo_demo_fest.json @@ -0,0 +1,74 @@ +{ + "title": "Tokyo Demo Fest", + "started": "2018-12-01", + "date": "01 - 02 December 2018", + "type": "Shader Jam", + "vod": "https://www.youtube.com/watch?v=6rKaNi5yUOQ", + "software_used": [ + { + "name": "GLSLFan", + "url": "https://glslfan.com/", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Shader Jam", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "notargs", + "demozoo_id": 63871 + }, + "shadertoy_url": null, + "preview_image": "2018_12_01_shader_jam_tokyo_demo_fest/notargs.jpg", + "source_file": "http://glslsandbox.com/e#50670.0" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gyabo", + "demozoo_id": 17562 + }, + "shadertoy_url": null, + "preview_image": "2018_12_01_shader_jam_tokyo_demo_fest/gyabo.jpg", + "source_file": "https://scrapbox.io/sayachang/TDF2018_Shader_Coding_Battle" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "FMS_Cat", + "demozoo_id": 57112 + }, + "shadertoy_url": null, + "preview_image": "2018_12_01_shader_jam_tokyo_demo_fest/FMS_Cat.jpg", + "source_file": "https://scrapbox.io/sayachang/TDF2018_Shader_Coding_Battle" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gam0022", + "demozoo_id": 63869 + }, + "shadertoy_url": null, + "preview_image": "2018_12_01_shader_jam_tokyo_demo_fest/gam0022.jpg", + "source_file": "https://glslfan.com/?channel=-LScZ1gHbc02G7PgZnus&viewer=true" + } + ], + "staffs": [] + } + ], + "staffs": [], + "demozoo_party_id": 3596 +} \ No newline at end of file diff --git a/data/2018_12_01_shader_seminar_tokyo_demo_fest.json b/data/2018_12_01_shader_seminar_tokyo_demo_fest.json new file mode 100644 index 000000000..a3a17742e --- /dev/null +++ b/data/2018_12_01_shader_seminar_tokyo_demo_fest.json @@ -0,0 +1,37 @@ +{ + "title": "Tokyo Demo Fest", + "started": "2018-12-01", + "date": "01 - 02 December 2018", + "type": "Shader Code Seminar", + "vod": "https://www.youtube.com/watch?v=UEMk4kDcpGQ", + "software_used": [ + { + "name": "GLSLFan", + "url": "https://glslfan.com/", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "amagitakayosi", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [], + "demozoo_party_id": 3596 +} \ No newline at end of file diff --git a/data/2019_01_30_shader_showdown_paris_cc_11.json b/data/2019_01_30_shader_showdown_paris_cc_11.json new file mode 100644 index 000000000..f9d2af345 --- /dev/null +++ b/data/2019_01_30_shader_showdown_paris_cc_11.json @@ -0,0 +1,178 @@ +{ + "title": "Unnamed Cookie Shadershowdown #11", + "started": "2019-01-30", + "date": "30 January 2019", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/Nusan_300119.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/Nusan_300119.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anatole", + "demozoo_id": 101702 + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/anatole 1.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/anatole 1.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anatole", + "demozoo_id": 101702 + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/anatole 2.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/anatole 2.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Antoine", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/antoine1.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/antoine1.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/anton1.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/anton1.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/anton2.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/anton2.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gregory", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/gregory 1.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/gregory 1.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/lamogui 1.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/lamogui 1.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/lamogui3.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/lamogui3.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Leon", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/leon2.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/leon2.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Momo", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/momo1.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/momo1.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Volumetric light scattering", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_01_30_shader_showdown_paris_cc_11/shader - volumetric light scattering.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-01-30/shader - volumetric light scattering.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2019_02_02_amos_showdown_gerp.json b/data/2019_02_02_amos_showdown_gerp.json new file mode 100644 index 000000000..15f92052d --- /dev/null +++ b/data/2019_02_02_amos_showdown_gerp.json @@ -0,0 +1,114 @@ +{ + "title": "Amos Professional Showdown", + "started": "2019-02-02", + "date": "02 January 2019", + "type": "Amos Showdown", + "vod": null, + "software_used": [ + ], + "phases": [ + { + "title": "Semi Final 1", + "vod": "https://www.youtube.com/watch?v=rHh--TfZOFk", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "Malmix", + "demozoo_id": 3186 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "Todi", + "demozoo_id": 3193 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Semi Final 2", + "vod": "https://www.youtube.com/watch?v=WQL9qVQs9Qk", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Bonkers", + "demozoo_id": 3863 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Highpuff", + "demozoo_id": 76192 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=hCtDPojVUvQ", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Malmix", + "demozoo_id": 3186 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Highpuff", + "demozoo_id": 76192 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Pumbaa", + "demozoo_id": 14992 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "3720" +} diff --git a/data/2019_04_19_shader_seminar_revision.json b/data/2019_04_19_shader_seminar_revision.json new file mode 100644 index 000000000..92249edec --- /dev/null +++ b/data/2019_04_19_shader_seminar_revision.json @@ -0,0 +1,41 @@ +{ + "title": "Revision", + "started": "2019-04-19", + "date": "19 - 22 April 2019", + "type": "Shader Code Seminar", + "vod": "https://www.youtube.com/watch?v=uFFR31t1WMM", + "software_used": null, + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [], + "demozoo_party_id": 3770 +} \ No newline at end of file diff --git a/data/2019_04_19_shader_showdown_revision.json b/data/2019_04_19_shader_showdown_revision.json new file mode 100644 index 000000000..5145f1f7c --- /dev/null +++ b/data/2019_04_19_shader_showdown_revision.json @@ -0,0 +1,631 @@ +{ + "title": "Revision", + "started": "2019-04-19", + "date": "19 - 22 April 2019", + "type": "Shader Showdown", + "vod": null, + "software_used": null, + "phases": [ + { + "title": "Opening round #1", + "vod": "https://www.youtube.com/watch?v=YKtvYAn-v2Y", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WtsSWN", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "maq?", + "demozoo_id": null + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Opening round #2", + "vod": "https://www.youtube.com/watch?v=YKtvYAn-v2Y", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "noby", + "demozoo_id": 6849 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "bod", + "demozoo_id": null + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 1", + "vod": "https://www.youtube.com/watch?v=uifMBMt9ASU", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "noby", + "demozoo_id": 6849 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 2", + "vod": "https://www.youtube.com/watch?v=uifMBMt9ASU", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": "https://www.shadertoy.com/view/wtsGzl", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "yx", + "demozoo_id": 77056 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 3", + "vod": "https://www.youtube.com/watch?v=uifMBMt9ASU", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3stGRH", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "hardy", + "demozoo_id": 913 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 4", + "vod": "https://www.youtube.com/watch?v=uifMBMt9ASU", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 1", + "vod": "https://www.youtube.com/watch?v=jNhQUksZYkY", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WlX3Rj", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 2", + "vod": "https://www.youtube.com/watch?v=jNhQUksZYkY", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=gmMPvUwyMxA", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualification for 2020 semifinals #1", + "vod": "https://www.youtube.com/watch?v=tYU2DrI1sGM", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "branch", + "demozoo_id": 44254 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "lj", + "demozoo_id": 57948 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualification for 2020 semifinals #2", + "vod": "https://www.youtube.com/watch?v=tYU2DrI1sGM", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "fizzer", + "demozoo_id": 27471 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "rohtie", + "demozoo_id": 4456 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "chaos", + "demozoo_id": 348 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Shader Showdown Showmatch", + "vod": "https://www.youtube.com/watch?v=6D6nayoqYjs", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "xernobyl", + "demozoo_id": 6394 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3770 +} \ No newline at end of file diff --git a/data/2019_05_04_shader_showdown_woot_devices.json b/data/2019_05_04_shader_showdown_woot_devices.json new file mode 100644 index 000000000..539965867 --- /dev/null +++ b/data/2019_05_04_shader_showdown_woot_devices.json @@ -0,0 +1,89 @@ +{ + "title": "Woot Devices 4", + "started": "2019-05-04", + "date": "04 May 2019", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Veda", + "url": "https://veda.gl/", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-05-04/elie1.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-05-04/elie2.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-05-04/elie3.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-05-04/elie4.frag" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-05-04/elie5.frag" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2019_05_30_shader_gp_outline.json b/data/2019_05_30_shader_gp_outline.json new file mode 100644 index 000000000..cbe495c86 --- /dev/null +++ b/data/2019_05_30_shader_gp_outline.json @@ -0,0 +1,63 @@ +{ + "title": "Shader Grand Prix @ Outline", + "started": "2019-05-30", + "date": "30 May - 02 June 2019", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic", + "version": "2019-03-26", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Match 1", + "vod": null, + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "superplek", + "demozoo_id": 10577 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "superplek", + "demozoo_id": 10577 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3824 +} diff --git a/data/2019_06_21_shader_showdown_nova.json b/data/2019_06_21_shader_showdown_nova.json new file mode 100644 index 000000000..c3ac6cbf8 --- /dev/null +++ b/data/2019_06_21_shader_showdown_nova.json @@ -0,0 +1,179 @@ +{ + "title": "NOVA", + "started": "2019-06-21", + "date": "21 - 23 June 2019", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic", + "version": "2019-03-26", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round 1", + "vod": "https://www.youtube.com/watch?v=xegAFqulK8I", + "entries": [ + { + "id": 2, + "rank": 1, + "points": 173, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WscGzf", + "source_file": null + }, + { + "id": 1, + "rank": 2, + "points": 150, + "handle": { + "name": "lovely hannibal", + "demozoo_id": 26514 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3l2GDK", + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "subi", + "demozoo_id": 21306 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "psonice", + "demozoo_id": 9807 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "kris sum", + "demozoo_id": null + }, + "job": "Commentators" + } + ] + }, + { + "title": "Round 2", + "vod": "https://www.youtube.com/watch?v=xmbZY8dpbLo", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 154, + "handle": { + "name": "lovely hannibal", + "demozoo_id": 26514 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": 141, + "handle": { + "name": "psonice", + "demozoo_id": 9807 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "subi", + "demozoo_id": 21306 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "crypt", + "demozoo_id": 63756 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Round 3", + "vod": "https://www.youtube.com/watch?v=leD1bIsBMRg", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 188, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3d33zs", + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": 134, + "handle": { + "name": "psonice", + "demozoo_id": 9807 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "subi", + "demozoo_id": 21306 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "crypt", + "demozoo_id": 63756 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3657 +} \ No newline at end of file diff --git a/data/2019_06_28_shader_showdown_vip.json b/data/2019_06_28_shader_showdown_vip.json new file mode 100644 index 000000000..ced92739f --- /dev/null +++ b/data/2019_06_28_shader_showdown_vip.json @@ -0,0 +1,172 @@ +{ + "title": "Very Important Party", + "started": "2019-06-28", + "date": "28 - 30 June 2019", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic", + "version": "2019-03-26", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round 1", + "vod": "https://www.youtube.com/watch?v=QkQy094kUpU", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Elie", + "demozoo_id": 99490 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + + ] + },{ + "title": "Round 2", + "vod": "https://www.youtube.com/watch?v=YzSULETYwig", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + + ] + },{ + "title": "Round 3", + "vod": "https://www.youtube.com/watch?v=3mb5N-z8AXc", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Klems", + "demozoo_id": 90488 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + + ] + }, + { + "title": "Round 4", + "vod": "https://www.youtube.com/watch?v=DaBRISFHf0s", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + + ] + }, + { + "title": "Round 5", + "vod": "https://www.youtube.com/watch?v=l9RjkzNdBXg", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Klems", + "demozoo_id": 90488 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + + ] + } + ], + "staffs": [], + "demozoo_party_id": 3784 +} \ No newline at end of file diff --git a/data/2019_07_12_shader_showdown_solskogen.json b/data/2019_07_12_shader_showdown_solskogen.json new file mode 100644 index 000000000..8509b0b4f --- /dev/null +++ b/data/2019_07_12_shader_showdown_solskogen.json @@ -0,0 +1,172 @@ +{ + "title": "Solskogen", + "started": "2019-07-12", + "date": "12 - 14 July 2019", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic/releases/tag/2019-03-26", + "version": "2019-03-26", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi #1", + "vod": "https://www.youtube.com/watch?v=XF1na_7YSo8", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 17, + "handle": { + "name": "Ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": 20, + "handle": { + "name": "tapped", + "demozoo_id": 21271 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "gloom", + "demozoo_id": 227 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Semi #2", + "vod": "https://www.youtube.com/watch?v=C9aQmfTqkdE", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 44, + "handle": { + "name": "Julien", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": 6, + "handle": { + "name": "Sebbert", + "demozoo_id": 58198 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "gloom", + "demozoo_id": 227 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=u517aj_JzVg", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 16, + "handle": { + "name": "Julien", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": 33, + "handle": { + "name": "tapped", + "demozoo_id": 21271 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "gloom", + "demozoo_id": 227 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3679 +} \ No newline at end of file diff --git a/data/2019_08_01_shader_showdown_assembly.json b/data/2019_08_01_shader_showdown_assembly.json new file mode 100644 index 000000000..f3e2d012e --- /dev/null +++ b/data/2019_08_01_shader_showdown_assembly.json @@ -0,0 +1,165 @@ +{ + "title": "Assembly", + "started": "2019-08-01", + "date": "01 - 04 August 2019", + "type": "Shader Showdown", + "vod": null, + "software_used": null, + "phases": [ + { + "title": "Semifinal 1", + "vod": "https://www.youtube.com/watch?v=3q7abaqoc9I", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "cce", + "demozoo_id": 6293 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "waffle", + "demozoo_id": 70 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinal 2", + "vod": "https://www.youtube.com/watch?v=JAh4HYtHh9M", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "noby", + "demozoo_id": 6849 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "mayor", + "demozoo_id": 12895 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "waffle", + "demozoo_id": 70 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=vv71jDAwTbM", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "noby", + "demozoo_id": 6849 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WsGyDW", + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "waffle", + "demozoo_id": 70 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3791 +} \ No newline at end of file diff --git a/data/2019_08_02_amos_showdown_datastorm.json b/data/2019_08_02_amos_showdown_datastorm.json new file mode 100644 index 000000000..3beef6e56 --- /dev/null +++ b/data/2019_08_02_amos_showdown_datastorm.json @@ -0,0 +1,114 @@ +{ + "title": "Amos Professional Showdown", + "started": "2019-08-02", + "date": "02 - 04 August 2019", + "type": "Amos Showdown", + "vod": "https://www.youtube.com/watch?v=pzcDoxWfJ1k", + "software_used": [ + ], + "phases": [ + { + "title": "Semi Final 1", + "vod": "", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Magnar", + "demozoo_id": 47 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Semi Final 2", + "vod": "", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "Dalton", + "demozoo_id": 3181 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "Highpuff", + "demozoo_id": 76192 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": "", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "Dalton", + "demozoo_id": 3181 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "Blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Pumbaa", + "demozoo_id": 14992 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "3790" +} diff --git a/data/2019_08_16_shader_showdown_evoke.json b/data/2019_08_16_shader_showdown_evoke.json new file mode 100644 index 000000000..34d305385 --- /dev/null +++ b/data/2019_08_16_shader_showdown_evoke.json @@ -0,0 +1,180 @@ +{ + "title": "Evoke", + "started": "2019-08-16", + "date": "16 - 18 August 2019", + "type": "Shader Showdown", + "vod": "https://www.twitch.tv/videos/468044887", + "software_used": null, + "phases": [ + { + "title": "Semi Final 1", + "vod": "https://www.twitch.tv/videos/468044887?t=1h5m38s", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": "https://www.shadertoy.com/view/wtSXDw", + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "andro", + "demozoo_id": 67079 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 2", + "vod": "https://www.twitch.tv/videos/468044887?t=01h57m03s", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Nusan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "andro", + "demozoo_id": 67079 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.twitch.tv/videos/468044887?t=01h57m03s", + "entries": [ + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": "https://www.shadertoy.com/view/wsV3DG", + "source_file": null + }, + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "andro", + "demozoo_id": 67079 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3680 +} \ No newline at end of file diff --git a/data/2019_09_14_shader_showdown_uitfeest.json b/data/2019_09_14_shader_showdown_uitfeest.json new file mode 100644 index 000000000..091ea30a3 --- /dev/null +++ b/data/2019_09_14_shader_showdown_uitfeest.json @@ -0,0 +1,155 @@ +{ + "title": "Uitfeest", + "started": "2019-09-14", + "date": "14 September 2019", + "type": "Shader Showdown", + "vod": "https://www.pouet.net/topic.php?which=11779", + "software_used": null, + "phases": [ + { + "title": "Semifinal #1", + "vod": null, + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "Sasj", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": null, + "points": null, + "handle": { + "name": "lucidlien", + "demozoo_id": null + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "LynnDrum", + "demozoo_id": 77648 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinal #2", + "vod": null, + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "LynnDrum", + "demozoo_id": 77648 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": null, + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "Sasj", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "LynnDrum", + "demozoo_id": 77648 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} \ No newline at end of file diff --git a/data/2019_10_25_shader_showdown_cafe.json b/data/2019_10_25_shader_showdown_cafe.json new file mode 100644 index 000000000..4ce7bd835 --- /dev/null +++ b/data/2019_10_25_shader_showdown_cafe.json @@ -0,0 +1,173 @@ +{ + "title": "CAFe", + "started": "2019-10-25", + "date": "25 - 27 October 2019", + "type": "Shader Showdown", + "website": "http://cafeparty.org.ru/2019", + "flyer": "", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic/releases/tag/2019-03-26", + "version": "2019-03-26", + "purpose": "Graphic" + } + ], + "vod": null, + "alternate_vods": [ + "https://www.youtube.com/watch?v=iBfw3eFGOE4", + "https://www.youtube.com/watch?v=z-Hh8hj1dUE", + "https://www.youtube.com/watch?v=9bQcZ4w1coI" + ], + "phases": [ + { + "title": "Round #1", + "vod": "https://youtu.be/iBfw3eFGOE4?t=36564", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Dart", + "demozoo_id": 9610 + }, + "shadertoy_url": null, + "preview_image": "2019_10_25_shader_showdown_cafe/shadershow_tour1_dart.jpg", + "source_file": "/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour1_dart.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "shadertoy_url": null, + "preview_image": "2019_10_25_shader_showdown_cafe/shadershow_tour1_wbcbz7.jpg", + "source_file": "/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour1_wbcbz7.glsl" + } + ], + "staffs": [] + }, + { + "title": "Round #2", + "vod": "https://youtu.be/z-Hh8hj1dUE?t=16900", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "kotsoft", + "demozoo_id": 9274 + }, + "shadertoy_url": null, + "preview_image": "2019_10_25_shader_showdown_cafe/shadershow_tour2_kotsoft.jpg", + "source_file": "/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour2_kotsoft.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "f0x", + "demozoo_id": 6043 + }, + "shadertoy_url": null, + "preview_image": "2019_10_25_shader_showdown_cafe/shadershow_tour2_f0x.jpg", + "source_file": "/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour2_f0x.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semifinal (3rd place Round)", + "vod": "https://youtu.be/z-Hh8hj1dUE?t=19614", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "kotsoft", + "demozoo_id": 9274 + }, + "shadertoy_url": null, + "preview_image": "2019_10_25_shader_showdown_cafe/shadershow_semifinal_kotsoft.jpg", + "source_file": "/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_semifinal_kotsoft.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Dart", + "demozoo_id": 9610 + }, + "shadertoy_url": null, + "preview_image": "2019_10_25_shader_showdown_cafe/shadershow_semifinal_dart.jpg", + "source_file": "/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_semifinal_dart.glsl" + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": "https://youtu.be/9bQcZ4w1coI?t=14831", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "shadertoy_url": null, + "preview_image": "2019_10_25_shader_showdown_cafe/shadershow_final_wbcbz7.jpg", + "source_file": "/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_final_wbcbz7.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "f0x", + "demozoo_id": 6043 + }, + "shadertoy_url": null, + "preview_image": "2019_10_25_shader_showdown_cafe/shadershow_final_f0x.jpg", + "source_file": "/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_final_f0x.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Kubik\u00e1mi", + "demozoo_id": 63068 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Adam Bazaroff", + "demozoo_id": 33155 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "bfox", + "demozoo_id": 9743 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3727 +} \ No newline at end of file diff --git a/data/2019_10_26_shader_showdown_paris_cc_12.json b/data/2019_10_26_shader_showdown_paris_cc_12.json new file mode 100644 index 000000000..fb38aa44e --- /dev/null +++ b/data/2019_10_26_shader_showdown_paris_cc_12.json @@ -0,0 +1,158 @@ +{ + "title": "Cookie Demoparty @ Au Landi Sauvage", + "started": "2019-10-26", + "date": "26 October 2019", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2019_10_26_shader_showdown_paris_cc_12/01-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-10-26/01-flopine.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Anat", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "preview_image": "2019_10_26_shader_showdown_paris_cc_12/01-anat.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-10-26/01-anat.glsl" + } + ], + "staffs": [] + }, + { + "title": "Semi #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3sdXWB", + "preview_image": "2019_10_26_shader_showdown_paris_cc_12/02-evvvvil.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-10-26/02-evvvvil.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "LJ", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "preview_image": "2019_10_26_shader_showdown_paris_cc_12/02-LJ.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-10-26/02-LJ.glsl" + } + ], + "staffs": [] + }, + { + "title": "Third place playoff", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "LJ", + "demozoo_id": 57948 + }, + "shadertoy_url": null, + "preview_image": "2019_10_26_shader_showdown_paris_cc_12/03-LJ.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-10-26/03-LJ.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Anat", + "demozoo_id": 3848 + }, + "shadertoy_url": null, + "preview_image": "2019_10_26_shader_showdown_paris_cc_12/03-anat.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-10-26/03-anat.glsl" + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3sGSR3", + "preview_image": "2019_10_26_shader_showdown_paris_cc_12/04-evvvvil.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-10-26/04-evvvvil.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2019_10_26_shader_showdown_paris_cc_12/04-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-10-26/04-flopine.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Jury" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2019_11_08_shader_showdown_demosplash.json b/data/2019_11_08_shader_showdown_demosplash.json new file mode 100644 index 000000000..ff0c31938 --- /dev/null +++ b/data/2019_11_08_shader_showdown_demosplash.json @@ -0,0 +1,42 @@ +{ + "title": "Demosplash", + "started": "2019-11-08", + "date": "08 November 2019", + "type": "Shader Showdown", + "vod": "https://www.youtube.com/watch?v=ik3T37fCydo", + "software_used": null, + "phases": [ + { + "title": "Live Shader", + "vod": "https://www.youtube.com/watch?v=ik3T37fCydo", + "entries": [ + { + "id": null, + "rank": 1, + "points": 144, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3dGXRW", + "source_file": "https://files.scene.org/view/parties/2019/demosplash19/live_shader/blackle.glsl" + }, + { + "id": null, + "rank": 2, + "points": 123, + "handle": { + "name": "CharStiles", + "demozoo_id": 82875 + }, + "shadertoy_url": null, + "preview_image": "2019_11_08_shader_showdown_demosplash/charstiles.jpg", + "source_file": "https://files.scene.org/view/parties/2019/demosplash19/live_shader/charstiles.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [], + "demozoo_party_id": 3865 +} \ No newline at end of file diff --git a/data/2019_11_30_shader_showdown_paris_grow_festival.json b/data/2019_11_30_shader_showdown_paris_grow_festival.json new file mode 100644 index 000000000..986384faf --- /dev/null +++ b/data/2019_11_30_shader_showdown_paris_grow_festival.json @@ -0,0 +1,304 @@ +{ + "title": "GROW Festival / Cookie Shader Showdown @ Le Tank", + "started": "2019-11-30", + "date": "30 November 2019", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Friendly Showdown Round #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/01-anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/01-anton.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/01-lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/01-lamogui.glsl" + } + ], + "staffs": [] + }, + { + "title": "Friendly Showdown Round #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Kidou & Greckow", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/02-kidou_greckow.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/02-kidou_greckow.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/02-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/02-ponk.glsl" + } + ], + "staffs": [] + }, + { + "title": "Friendly Showdown Round #3", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nicoptere", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/03-nicoptere.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/03-nicoptere.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Franzybily", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/03-franzybily.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/03-franzybily.glsl" + } + ], + "staffs": [] + }, + { + "title": "Friendly Showdown Round #4", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "SixClone", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/04-sixclone.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/04-sixclone.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "col1", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/04-col1.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/04-col1.glsl" + } + ], + "staffs": [] + }, + { + "title": "Friendly Showdown Round #5", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/05-flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/05-flopine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gaxil", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/05-gaxil.dx11.hlsl" + } + ], + "staffs": [] + }, + { + "title": "Friendly Showdown Round #6", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/06-nusan.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/06-nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lsdlive", + "demozoo_id": 83579 + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/06-lsdlive.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/06-lsdlive.glsl" + } + ], + "staffs": [] + }, + { + "title": "Friendly Showdown Round #7", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "novac", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/07-novac.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/07-novac.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monollonom & bg", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/07-monollonom-bg.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/07-monollonom-bg.glsl" + } + ], + "staffs": [] + }, + { + "title": "Friendly Showdown Round #8", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/08-anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/08-anton.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "hotdogstudio", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/08-hotdogstudio.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/08-hotdogstudio.glsl" + } + ], + "staffs": [] + }, + { + "title": "Friendly Showdown Round #9", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2019_11_30_shader_showdown_paris_grow_festival/09-ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/09-ponk.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "balec", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-11-30/09-balec-aldwin.dx11.hlsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} diff --git a/data/2019_12_19_shader_showdown_recondu_stream.json b/data/2019_12_19_shader_showdown_recondu_stream.json new file mode 100644 index 000000000..e03dfee28 --- /dev/null +++ b/data/2019_12_19_shader_showdown_recondu_stream.json @@ -0,0 +1,119 @@ +{ + "title": "Recondu Stream", + "started": "2019-12-19", + "date": "19 December 2019", + "type": "Live Performance", + "vod": "https://www.youtube.com/watch?v=PLqdbWWyxzk", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + }, + { + "name": "Veda", + "url": "https://veda.gl/", + "version": "", + "purpose": "Graphic" + }, + { + "name": "TidalCycles", + "url": "https://tidalcycles.org/", + "version": "", + "purpose": "Music" + } + ], + "phases": [ + { + "title": "Slot #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2019_12_19_shader_showdown_recondu_stream/Flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-12-19/Flopine.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Psych Out", + "demozoo_id": null + }, + "job": "Live Music" + } + ] + }, + { + "title": "Slot #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2019_12_19_shader_showdown_recondu_stream/Nusan.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-12-19/Nusan.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "job": "Live Music" + } + ] + }, + { + "title": "Slot #3", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "shadertoy_url": null, + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2019-12-19/Koltes.frag" + } + ], + "staffs": [ + { + "handle": { + "name": "Cyanide Dansen", + "demozoo_id": null + }, + "job": "Live Music" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2020_02_07_amos_showdown_gerp.json b/data/2020_02_07_amos_showdown_gerp.json new file mode 100644 index 000000000..02e0f2edd --- /dev/null +++ b/data/2020_02_07_amos_showdown_gerp.json @@ -0,0 +1,238 @@ +{ + "title": "Amos Professional Showdown", + "started": "2020-02-07", + "date": "07 - 09 February 2020", + "type": "Amos Showdown", + "vod": "https://www.youtube.com/watch?v=4YRYuqM0a6A", + "software_used": [ + ], + "phases": [ + { + "title": "Quarter Final 1", + "vod": "", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "Highpuff", + "demozoo_id": 76192 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "Blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Quarter Final 2", + "vod": "", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Lisardman", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Dalton", + "demozoo_id": 3181 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Quarter Final 3", + "vod": "", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Pipe", + "demozoo_id": 4469 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Malmix", + "demozoo_id": 3186 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Quarter Final 4", + "vod": "", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "Deadguy", + "demozoo_id": 8862 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "Blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Semi Final 1", + "vod": "", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Dalton", + "demozoo_id": 3181 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Highpuff", + "demozoo_id": 76192 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Semi Final 2", + "vod": "https://www.youtube.com/watch?v=hCtDPojVUvQ", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "Malmix", + "demozoo_id": 3186 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "Deadguy", + "demozoo_id": 8862 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=hCtDPojVUvQ", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Malmix", + "demozoo_id": 3186 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Highpuff", + "demozoo_id": 76192 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Pumbaa", + "demozoo_id": 14992 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3942 +} diff --git a/data/2020_02_21_shader_showdown_chaos_construction_winter.json b/data/2020_02_21_shader_showdown_chaos_construction_winter.json new file mode 100644 index 000000000..ca404eb46 --- /dev/null +++ b/data/2020_02_21_shader_showdown_chaos_construction_winter.json @@ -0,0 +1,82 @@ +{ + "title": "Chaos Construction Winter", + "started": "2020-02-21", + "date": "21 - 23 February 2020", + "type": "Shader Showdown", + "vod":null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic", + "version": "2018-03-06", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round #1", + "vod": "https://www.youtube.com/watch?v=uqRehUDNiUM", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "leavittx", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dart", + "demozoo_id": 9610 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Round #2", + "vod": "https://www.youtube.com/watch?v=pzmLnfN5lq8", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "leavittx", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dart", + "demozoo_id": 9610 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [ + ], + "demozoo_party_id": 3970 +} diff --git a/data/2020_03_19_shader_showdown_paris_cc_streaming_1.json b/data/2020_03_19_shader_showdown_paris_cc_streaming_1.json new file mode 100644 index 000000000..8c19ec9ce --- /dev/null +++ b/data/2020_03_19_shader_showdown_paris_cc_streaming_1.json @@ -0,0 +1,148 @@ +{ + "title": "Cookie Collective Twitch Stream #1", + "started": "2020-03-19", + "date": "19 March 2020", + "type": "Live Performance", + "vod": "https://www.twitch.tv/videos/570598632", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + }, + { + "name": "TidalCycles", + "url": "https://tidalcycles.org/", + "version": "", + "purpose": "Music" + } + ], + "phases": [ + { + "title": "", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "shadertoy_url": null, + "preview_image": "2020_03_19_shader_showdown_paris_cc_streaming_1/alkama.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-19/alkama.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_03_19_shader_showdown_paris_cc_streaming_1/anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-19/anton.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "bruce", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_03_19_shader_showdown_paris_cc_streaming_1/bruce.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-19/bruce.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cookie", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_03_19_shader_showdown_paris_cc_streaming_1/cookie.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-19/cookie.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2020_03_19_shader_showdown_paris_cc_streaming_1/evvvvil.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-19/evvvvil.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2020_03_19_shader_showdown_paris_cc_streaming_1/Flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-19/Flopine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2020_03_19_shader_showdown_paris_cc_streaming_1/lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-19/lamogui.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2020_03_19_shader_showdown_paris_cc_streaming_1/nusan.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-19/nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2020_03_19_shader_showdown_paris_cc_streaming_1/ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-19/ponk.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} diff --git a/data/2020_03_26_shader_showdown_paris_cc_streaming_2.json b/data/2020_03_26_shader_showdown_paris_cc_streaming_2.json new file mode 100644 index 000000000..5c0d3b828 --- /dev/null +++ b/data/2020_03_26_shader_showdown_paris_cc_streaming_2.json @@ -0,0 +1,148 @@ +{ + "title": "Cookie Collective Twitch Stream #2", + "started": "2020-03-26", + "date": "26 March 2020", + "type": "Live Performance", + "vod": "https://www.twitch.tv/videos/576039130", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + }, + { + "name": "TidalCycles", + "url": "https://tidalcycles.org/", + "version": "", + "purpose": "Music" + } + ], + "phases": [ + { + "title": "", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "shadertoy_url": null, + "preview_image": "2020_03_26_shader_showdown_paris_cc_streaming_2/alkama.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-26/alkama.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anton", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_03_26_shader_showdown_paris_cc_streaming_2/anton.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-26/anton.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "bruce", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_03_26_shader_showdown_paris_cc_streaming_2/bruce.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-26/bruce.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cookie", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_03_26_shader_showdown_paris_cc_streaming_2/cookie.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-26/cookie.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2020_03_26_shader_showdown_paris_cc_streaming_2/flopine.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-26/flopine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2020_03_26_shader_showdown_paris_cc_streaming_2/lamogui.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-26/lamogui.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2020_03_26_shader_showdown_paris_cc_streaming_2/nusan.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-26/nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2020_03_26_shader_showdown_paris_cc_streaming_2/ponk.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-26/ponk.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2020_03_26_shader_showdown_paris_cc_streaming_2/Wrighter.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2020-03-26/Wrighter.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} diff --git a/data/2020_04_10_shader_jam_revision_online.json b/data/2020_04_10_shader_jam_revision_online.json new file mode 100644 index 000000000..25f758368 --- /dev/null +++ b/data/2020_04_10_shader_jam_revision_online.json @@ -0,0 +1,68 @@ +{ + "title": "Revision Online", + "started": "2020-04-10", + "date": "10 - 13 April 2020", + "type": "Shader Jam", + "vod": "https://www.youtube.com/watch?v=rhH__Ge4s6Q", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": "https://www.youtube.com/watch?v=rhH__Ge4s6Q", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "iq", + "demozoo_id": 644 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gargaj", + "demozoo_id": 306 + }, + "shadertoy_url": null, + "preview_image": "2020_04_10_shader_jam_revision_online/revision2020_threewayshowdown_gargaj.jpg", + "source_file": "https://gist.github.com/Gargaj/03dd4f559129943dbc13950d8060780b" + } + ], + "staffs": [ + { + "handle": { + "name": "Bullet", + "demozoo_id": 633 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3862 +} \ No newline at end of file diff --git a/data/2020_04_10_shader_showdown_revision_online.json b/data/2020_04_10_shader_showdown_revision_online.json new file mode 100644 index 000000000..7e36c4327 --- /dev/null +++ b/data/2020_04_10_shader_showdown_revision_online.json @@ -0,0 +1,383 @@ +{ + "title": "Revision Online", + "started": "2020-04-10", + "date": "10 - 13 April 2020", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Quarter Final 1", + "vod": "https://www.youtube.com/watch?v=4GRD1gCX7fk", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 2", + "vod": "https://www.youtube.com/watch?v=4GRD1gCX7fk", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "branch", + "demozoo_id": 44254 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 3", + "vod": "https://www.youtube.com/watch?v=4GRD1gCX7fk", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 4", + "vod": "https://www.youtube.com/watch?v=4GRD1gCX7fk", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": "https://www.shadertoy.com/view/tdjcWz", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 1", + "vod": "https://www.youtube.com/watch?v=xZ5lepZ3LcE", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 2", + "vod": "https://www.youtube.com/watch?v=xZ5lepZ3LcE", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3dffz4", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=2-0tpXlJLBM", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3862 +} \ No newline at end of file diff --git a/data/2020_05_22_shader_jam_outline_online.json b/data/2020_05_22_shader_jam_outline_online.json new file mode 100644 index 000000000..07826355a --- /dev/null +++ b/data/2020_05_22_shader_jam_outline_online.json @@ -0,0 +1,127 @@ +{ + "title": "Outline Online", + "started": "2020-05-22", + "date": "22 - 23 May 2020", + "type": "Shader Jam", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Shader Jam #1", + "vod": "https://www.youtube.com/watch?v=vKbmQFKiWYQ", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Shader Jam #2", + "vod": "https://www.youtube.com/watch?v=dTTMgjRgoyg", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "LynnDrum", + "demozoo_id": 77648 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4065 +} \ No newline at end of file diff --git a/data/2020_05_22_shader_showdown_outline_online.json b/data/2020_05_22_shader_showdown_outline_online.json new file mode 100644 index 000000000..8a2fee28a --- /dev/null +++ b/data/2020_05_22_shader_showdown_outline_online.json @@ -0,0 +1,183 @@ +{ + "title": "Outline Online", + "started": "2020-05-22", + "date": "22 - 23 May 2020", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round 1", + "vod": "https://www.youtube.com/watch?v=XPUS4x6jopY", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "LovelyHanibal", + "demozoo_id": 26514 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3djfzG", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/3s2fzV", + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Round 2", + "vod": "https://www.youtube.com/watch?v=WhY2G7cdfSw", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=55CdkqgCTgk", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "LovelyHanibal", + "demozoo_id": 26514 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WsjBzG", + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "bossman", + "demozoo_id": 32053 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4065 +} \ No newline at end of file diff --git a/data/2020_06_19_shader_showdown_nova.json b/data/2020_06_19_shader_showdown_nova.json new file mode 100644 index 000000000..5911d640b --- /dev/null +++ b/data/2020_06_19_shader_showdown_nova.json @@ -0,0 +1,211 @@ +{ + "title": "NOVA Online", + "started": "2020-06-19", + "date": "19 - 21 June 2020", + "type": "Shader Showdown", + "vod": null, + "software_used": null, + "phases": [ + { + "title": "Round 1", + "vod": "https://www.youtube.com/watch?v=k_SSkZjlUgE", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "vod": null, + "preview_image": "2020_06_19_shader_showdown_nova/sender_nova_wrighter.jpg", + "source_file": "/shader_file_sources/2020_06_19_shader_showdown_nova/sender_nova_wrighter.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "rc55", + "demozoo_id": 6412 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "d0pefish", + "demozoo_id": 29929 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "polynomial", + "demozoo_id": 60607 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "rc55", + "demozoo_id": 6412 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Round 2", + "vod": "https://www.youtube.com/watch?v=PF8yuOTqX4k", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Insomniac", + "demozoo_id": 74206 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "LovelyHanibal", + "demozoo_id": 26514 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "d0pefish", + "demozoo_id": 29929 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "d0pefish", + "demozoo_id": 29929 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "polynomial", + "demozoo_id": 60607 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "rc55", + "demozoo_id": 6412 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=-n_TnBn01Ew", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Insomniac", + "demozoo_id": 74206 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "d0pefish", + "demozoo_id": 29929 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "polynomial", + "demozoo_id": 60607 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "rc55", + "demozoo_id": 6412 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3895 +} \ No newline at end of file diff --git a/data/2020_06_24_shader_jam_pancake_conference.json b/data/2020_06_24_shader_jam_pancake_conference.json new file mode 100644 index 000000000..0dee2bf58 --- /dev/null +++ b/data/2020_06_24_shader_jam_pancake_conference.json @@ -0,0 +1,67 @@ +{ + "title": "Pancake Conference", + "started": "2020-06-24", + "date": "24 June 2020", + "type": "Shader Jam", + "vod": "https://youtu.be/g0Jymrc1XqM?t=2819", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alkama", + "demozoo_id": 1382 + }, + "shadertoy_url": "https://www.shadertoy.com/view/wtXcW2", + "preview_image": "2020_06_24_shader_jam_pancake_conference/grabber_pancakeftw_alkama.jpg", + "source_file": "https://files.scene.org/view/parties/2020/pancake_conference20/livecoding/grabber_pancakeftw_alkama.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4079 +} diff --git a/data/2020_07_11_shader_showdown_solskogen.json b/data/2020_07_11_shader_showdown_solskogen.json new file mode 100644 index 000000000..60b3df15e --- /dev/null +++ b/data/2020_07_11_shader_showdown_solskogen.json @@ -0,0 +1,384 @@ +{ + "title": "Solskogen", + "started": "2020-07-11", + "date": "11 July 2020", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Qualifier 1", + "vod": "https://www.youtube.com/watch?v=g9saEPw5Fg8", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "tapped", + "demozoo_id": 21271 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "phobium", + "demozoo_id": 4220 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Christian", + "demozoo_id": null + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifier 2", + "vod": "https://www.youtube.com/watch?v=UWFVrHXz8UI", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WlScWy", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "phobium", + "demozoo_id": 4220 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Christian", + "demozoo_id": null + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifier 3", + "vod": "https://www.youtube.com/watch?v=5rjNcG7ioaU", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3tBcWm", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "vod": null, + "preview_image": "2020_07_11_shader_showdown_solskogen/sender_solskogen2020_wrighter.jpg", + "source_file": "/shader_file_sources/2020_07_11_shader_showdown_solskogen/sender_solskogen2020_wrighter.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "phobium", + "demozoo_id": 4220 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Christian", + "demozoo_id": null + }, + "job": "Commentators" + } + ] + }, + { + "title": "Qualifier 4", + "vod": "https://www.youtube.com/watch?v=7NtxP62lAhE", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "rohtie", + "demozoo_id": 4456 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "phobium", + "demozoo_id": 4220 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Christian", + "demozoo_id": null + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinal 1", + "vod": "https://www.youtube.com/watch?v=gO1V2mCKqOk", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3lBcWy", + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "phobium", + "demozoo_id": 4220 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Christian", + "demozoo_id": null + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinal 2", + "vod": "https://www.youtube.com/watch?v=LasL3OGKR_I", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "phobium", + "demozoo_id": 4220 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Christian", + "demozoo_id": null + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=9Nk-cvlonwE", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": null, + "vod": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "phobium", + "demozoo_id": 4220 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Christian", + "demozoo_id": null + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 3964 +} \ No newline at end of file diff --git a/data/2020_07_24_shader_showdown_fieldfx.json b/data/2020_07_24_shader_showdown_fieldfx.json new file mode 100644 index 000000000..aa6288276 --- /dev/null +++ b/data/2020_07_24_shader_showdown_fieldfx.json @@ -0,0 +1,194 @@ +{ + "title": "Field-FX Online", + "started": "2020-07-24", + "date": "24 - 26 July 2020", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semifinals #1", + "vod": "https://www.youtube.com/watch?v=Jt0cvOIoHWQ", + "entries": [ + { + "id": 2, + "rank": 1, + "points": 59, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 1, + "rank": 2, + "points": 55, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinals #2", + "vod": "https://www.youtube.com/watch?v=Jt0cvOIoHWQ", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 67, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WtsfWr", + "source_file": null + }, + { + "id": 2, + "rank": 2, + "points": 66, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=f3JGkVQcuX0", + "entries": [ + { + "id": 2, + "rank": 1, + "points": 90, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": 1, + "rank": 2, + "points": 71, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3906 +} \ No newline at end of file diff --git a/data/2020_08_07_shader_jam_assembly_summer.json b/data/2020_08_07_shader_jam_assembly_summer.json new file mode 100644 index 000000000..cd2993917 --- /dev/null +++ b/data/2020_08_07_shader_jam_assembly_summer.json @@ -0,0 +1,115 @@ +{ + "title": "Assembly Summer Online", + "started": "2020-08-07", + "date": "07 - 08 August 2020", + "type": "Shader Jam", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round 1", + "vod": "https://www.youtube.com/watch?v=m7b1lIHiZc8", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "branch", + "demozoo_id": 44254 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3tsBD7", + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Round 2", + "vod": "https://www.youtube.com/watch?v=3-jwyYfI7Q8", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Leon Denise", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "mayor", + "demozoo_id": 12895 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 4096 +} \ No newline at end of file diff --git a/data/2020_09_11_shader_royale_inercia_test.json b/data/2020_09_11_shader_royale_inercia_test.json new file mode 100644 index 000000000..6894b7c4f --- /dev/null +++ b/data/2020_09_11_shader_royale_inercia_test.json @@ -0,0 +1,105 @@ +{ + "title": "Shader Royale Test", + "started": "2020-09-11", + "date": "11 September 2020", + "type": "Shader Royale", + "vod": "https://www.youtube.com/watch?v=KV0QSSx5eRI", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v10", + "version": "NuSan - v10", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WljBWc", + "preview_image": "2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_blackle.jpg", + "source_file": "/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_blackle.glsl" + }, + { + "id": 2, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_evvvvil.jpg", + "source_file": "/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_evvvvil.glsl" + }, + { + "id": 3, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_flopine.jpg", + "source_file": "/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_flopine.glsl" + }, + { + "id": 4, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_visy.jpg", + "source_file": "/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_visy.glsl" + }, + { + "id": 5, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_wrighter.jpg", + "source_file": "/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_wrighter.glsl" + }, + { + "id": 6, + "rank": null, + "points": null, + "handle": { + "name": "yx", + "demozoo_id": 77056 + }, + "shadertoy_url": "https://www.shadertoy.com/view/tlSfDV", + "preview_image": "2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_yx.jpg", + "source_file": "/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_yx.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} diff --git a/data/2020_10_02_shader_royale_inercia.json b/data/2020_10_02_shader_royale_inercia.json new file mode 100644 index 000000000..02cade301 --- /dev/null +++ b/data/2020_10_02_shader_royale_inercia.json @@ -0,0 +1,162 @@ +{ + "title": "In\u00e9rcia", + "started": "2020-10-02", + "date": "02 - 03 October 2020", + "type": "Shader Royale", + "vod": "https://www.youtube.com/watch?v=08Ll9OkMmOI", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v10", + "version": "NuSan - v10", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": 4, + "rank": 1, + "points": 141, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3syyzm", + "preview_image": "2020_10_02_shader_royale_inercia/grabber_inerciaroyale_nusan.jpg", + "source_file": "/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_nusan.glsl" + }, + { + "id": 6, + "rank": 2, + "points": 140, + "handle": { + "name": "FMS_Cat", + "demozoo_id": 57112 + }, + "shadertoy_url": "https://www.shadertoy.com/view/wsccWj", + "preview_image": "2020_10_02_shader_royale_inercia/grabber_inerciaroyale_FMS_Cat.jpg", + "source_file": "/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_FMS_Cat.glsl" + }, + { + "id": 1, + "rank": 3, + "points": 99, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2020_10_02_shader_royale_inercia/grabber_inerciaroyale_wrighter.jpg", + "source_file": "/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_wrighter.glsl" + }, + { + "id": 8, + "rank": 4, + "points": 94, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2020_10_02_shader_royale_inercia/grabber_inerciaroyale_evvvvil.jpg", + "source_file": "/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_evvvvil.glsl" + }, + { + "id": 5, + "rank": 5, + "points": 73, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_10_02_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg", + "source_file": "/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.glsl" + }, + { + "id": 7, + "rank": 6, + "points": 71, + "handle": { + "name": "fizzer", + "demozoo_id": 27471 + }, + "shadertoy_url": null, + "preview_image": "2020_10_02_shader_royale_inercia/grabber_inerciaroyale_fizzer.jpg", + "source_file": "/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_fizzer.glsl" + }, + { + "id": 2, + "rank": 7, + "points": 70, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2020_10_02_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg", + "source_file": "/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_rimina.glsl" + }, + { + "id": 3, + "rank": 8, + "points": 56, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2020_10_02_shader_royale_inercia/grabber_inerciaroyale_provod.jpg", + "source_file": "/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_provod.glsl" + }, + { + "id": 9, + "rank": 9, + "points": 11, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "alien01", + "demozoo_id": 108887 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 3984 +} diff --git a/data/2020_10_07_shader_jam_node.json b/data/2020_10_07_shader_jam_node.json new file mode 100644 index 000000000..5dde6f8cf --- /dev/null +++ b/data/2020_10_07_shader_jam_node.json @@ -0,0 +1,63 @@ +{ + "title": "NODE20 \u2013 Second Nature ", + "started": "2020-10-07", + "date": "07 October 2020", + "type": "Shader Jam", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Live Coding Session Part I", + "vod": "https://www.youtube.com/watch?v=ebF2oK1yvO8&t=23123s", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Live Coding Session Part II", + "vod": "https://youtu.be/ebF2oK1yvO8?t=25387", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Cai Shashracai", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "Derek Kwan", + "demozoo_id": null + }, + "job": "Live Music" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": null +} \ No newline at end of file diff --git a/data/2020_10_14_shader_showdown_assembly.json b/data/2020_10_14_shader_showdown_assembly.json new file mode 100644 index 000000000..8925d928c --- /dev/null +++ b/data/2020_10_14_shader_showdown_assembly.json @@ -0,0 +1,173 @@ +{ + "title": "Assembly Autumn Online", + "started": "2020-10-14", + "date": "14 - 18 October 2020", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semifinal 1", + "vod": "https://www.youtube.com/watch?v=UV7JBHUckiY", + "entries": [ + { + "id": null, + "rank": 1, + "points": 196, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": 178, + "handle": { + "name": "Provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "vod": "https://www.youtube.com/watch?v=MH7NuNXrxt0", + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semifinal 2", + "vod": "https://youtu.be/UV7JBHUckiY?t=2040", + "entries": [ + { + "id": null, + "rank": 1, + "points": 336, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/WsyyD1", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": 323, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=MrN4-JC88ME", + "entries": [ + { + "id": null, + "rank": 1, + "points": 469, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/tdKcWh", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": 421, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WsGyDW", + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "mayor", + "demozoo_id": 12895 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 4027 +} \ No newline at end of file diff --git a/data/2020_12_04_shader_royale_shader_royale2.json b/data/2020_12_04_shader_royale_shader_royale2.json new file mode 100644 index 000000000..0e69c57bd --- /dev/null +++ b/data/2020_12_04_shader_royale_shader_royale2.json @@ -0,0 +1,211 @@ +{ + "title": "Shader Royale #2", + "started": "2020-12-04", + "date": "04 December 2020", + "type": "Shader Royale", + "vod": "https://www.youtube.com/watch?v=wwN5vRXKAl8", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v10", + "version": "NuSan - v10", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": 333, + "handle": { + "name": "FMS_Cat", + "demozoo_id": 57112 + }, + "shadertoy_url": "https://www.shadertoy.com/view/tsyBWD", + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_FMS_Cat.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_FMS_Cat.glsl" + }, + { + "id": null, + "rank": 2, + "points": 326, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_cosamentale.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_cosamentale.glsl" + }, + { + "id": null, + "rank": 3, + "points": 279, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WdVBWD", + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_nusan.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_nusan.glsl" + }, + { + "id": null, + "rank": 4, + "points": 221, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_monsieursoleil.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_monsieursoleil.glsl" + }, + { + "id": null, + "rank": 5, + "points": 208, + "handle": { + "name": "anticore", + "demozoo_id": 117325 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WdKBWD", + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_anticore.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_anticore.glsl" + }, + { + "id": null, + "rank": 6, + "points": 154, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_LechugaFeliz.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_LechugaFeliz.glsl" + }, + { + "id": null, + "rank": 7, + "points": 151, + "handle": { + "name": "branch", + "demozoo_id": 44254 + }, + "shadertoy_url": null, + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_branch.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_branch.glsl" + }, + { + "id": null, + "rank": 8, + "points": 150, + "handle": { + "name": "dok", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/wsGBWw", + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_dok.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_dok.glsl" + }, + { + "id": null, + "rank": 9, + "points": 150, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_visy.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_vizy.glsl" + }, + { + "id": null, + "rank": 10, + "points": 149, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_wrighter.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_wrighter.glsl" + }, + { + "id": null, + "rank": 11, + "points": 131, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_provod.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_provod.glsl" + }, + { + "id": null, + "rank": 12, + "points": 130, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": null, + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_Exca.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_Exca.glsl" + }, + { + "id": null, + "rank": 13, + "points": 103, + "handle": { + "name": "NR4", + "demozoo_id": 76970 + }, + "shadertoy_url": null, + "preview_image": "2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_NR4.jpg", + "source_file": "/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_NR4.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "alien01", + "demozoo_id": 108887 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} \ No newline at end of file diff --git a/data/2020_12_06_shader_jam_overkill_festival.json b/data/2020_12_06_shader_jam_overkill_festival.json new file mode 100644 index 000000000..3c2074ce7 --- /dev/null +++ b/data/2020_12_06_shader_jam_overkill_festival.json @@ -0,0 +1,85 @@ +{ + "title": "The Overkill Festival / SickhouseTV ", + "started": "2020-12-06", + "date": "06 December 2020", + "type": "Shader Jam", + "vod": "https://www.youtube.com/watch?v=ZYBsQBqViG4", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v09", + "version": "NuSan - v09", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3syfRV", + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/fs2Szh", + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "LynnDrum", + "demozoo_id": 77648 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} \ No newline at end of file diff --git a/data/2020_12_31_shader_royale_hogmanay.json b/data/2020_12_31_shader_royale_hogmanay.json new file mode 100644 index 000000000..c52e5d433 --- /dev/null +++ b/data/2020_12_31_shader_royale_hogmanay.json @@ -0,0 +1,187 @@ +{ + "title": "Hogmanay Party", + "started": "2020-12-31", + "date": "31 December 2020", + "type": "Shader Royale", + "vod": "https://www.youtube.com/watch?v=jxU8s4kukw8", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v10", + "version": "NuSan - v10", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": 317, + "handle": { + "name": "FMS_Cat", + "demozoo_id": 57112 + }, + "shadertoy_url": "https://www.shadertoy.com/view/tl3yRj", + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_FMS_Cat.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_FMS_Cat.glsl" + }, + { + "id": null, + "rank": 2, + "points": 298, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/ttcyzl", + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_LechugaFeliz.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_LechugaFeliz.glsl" + }, + { + "id": null, + "rank": 3, + "points": 279, + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/tt3yRj", + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_sp4ghet.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_sp4ghet.glsl" + }, + { + "id": null, + "rank": 4, + "points": 242, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_evvvvil.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_evvvvil.glsl" + }, + { + "id": null, + "rank": 5, + "points": 228, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_provod.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_provod.glsl" + }, + { + "id": null, + "rank": 6, + "points": 215, + "handle": { + "name": "hArDy", + "demozoo_id": 913 + }, + "shadertoy_url": null, + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_hArDy.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_hArDy.glsl" + }, + { + "id": null, + "rank": 7, + "points": 199, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_wrighter.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_wrighter.glsl" + }, + { + "id": null, + "rank": 8, + "points": 192, + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WtVyWy", + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_alkama.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_alkama.glsl" + }, + { + "id": null, + "rank": 9, + "points": 170, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_monsieursoleil.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_monsieursoleil.glsl" + }, + { + "id": null, + "rank": 10, + "points": 167, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_visy.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_visy.glsl" + }, + { + "id": null, + "rank": 11, + "points": 141, + "handle": { + "name": "NR4", + "demozoo_id": 76970 + }, + "shadertoy_url": null, + "preview_image": "2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_NR4.jpg", + "source_file": "/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_NR4.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "LynnDrum", + "demozoo_id": 77648 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "alien01", + "demozoo_id": 108887 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4196 +} \ No newline at end of file diff --git a/data/2021_02_12_shader_royale_omzg.json b/data/2021_02_12_shader_royale_omzg.json new file mode 100644 index 000000000..d81a5a524 --- /dev/null +++ b/data/2021_02_12_shader_royale_omzg.json @@ -0,0 +1,229 @@ +{ + "title": "OMZG", + "started": "2021-02-12", + "date": "12 February 2021", + "type": "Shader Royale", + "website": "https://omzg.online", + "flyer": "", + "vod": "https://www.youtube.com/watch?v=Dc5laRa09WY&t=4460s", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": 144, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3l3Bzl", + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_NuSan.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_NuSan.glsl" + }, + { + "id": null, + "rank": 2, + "points": 117, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_cosamentale.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_cosamentale.glsl" + }, + { + "id": null, + "rank": 3, + "points": 113, + "handle": { + "name": "hArDy", + "demozoo_id": 913 + }, + "shadertoy_url": null, + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_hArDy.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_hArDy.glsl" + }, + { + "id": null, + "rank": 4, + "points": 103, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WltBRs", + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_provod.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_provod.glsl", + "vod": "https://www.youtube.com/watch?v=F_gKGohc9WA" + }, + { + "id": null, + "rank": 5, + "points": 98, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Flopine.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Flopine.glsl" + }, + { + "id": null, + "rank": 6, + "points": 89, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_rimina.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_rimina.glsl" + }, + { + "id": null, + "rank": 7, + "points": 88, + "handle": { + "name": "anticore", + "demozoo_id": 117325 + }, + "shadertoy_url": null, + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_anticore.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_anticore.glsl" + }, + { + "id": null, + "rank": 8, + "points": 86, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WtcBzl", + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_totetmatt.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_totetmatt.glsl" + }, + { + "id": null, + "rank": 9, + "points": 80, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/NljGzV", + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Exca.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Exca.glsl" + }, + { + "id": null, + "rank": 10, + "points": 77, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/NsjSzh", + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_monsieursoleil.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_monsieursoleil.glsl" + }, + { + "id": null, + "rank": 11, + "points": 64, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": "https://www.shadertoy.com/view/3ttfRX", + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.glsl" + }, + { + "id": null, + "rank": 12, + "points": 59, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_LechugaFeliz.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_LechugaFeliz.glsl" + }, + { + "id": null, + "rank": 13, + "points": 44, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2021_02_12_shader_royale_omzg/grabber_inerciaroyale_visy.jpg", + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_visy.glsl" + }, + { + "id": null, + "rank": 14, + "points": 8, + "handle": { + "name": "branch", + "demozoo_id": 44254 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_branch.glsl" + }, + { + "id": null, + "rank": 15, + "points": 8, + "handle": { + "name": "NR4", + "demozoo_id": 76970 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_NR4.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "djh0ffman", + "demozoo_id": 1525 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "alien01", + "demozoo_id": 108887 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4219 +} diff --git a/data/2021_02_21_shader_jam_chaos_constructions.json b/data/2021_02_21_shader_jam_chaos_constructions.json new file mode 100644 index 000000000..5da7cdca6 --- /dev/null +++ b/data/2021_02_21_shader_jam_chaos_constructions.json @@ -0,0 +1,86 @@ +{ + "title": "Chaos Constructions Winter", + "started": "2021-02-21", + "date": "21 February 2021", + "type": "Shader Jam", + "vod": "https://www.youtube.com/watch?v=vWWlE5sc-WY", + "software_used": null, + "phases": [ + { + "title": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/wlGczK", + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": "https://www.shadertoy.com/view/WlyfzV", + "source_file": null, + "vod": "https://www.youtube.com/watch?v=qJHWzyXCUtw" + } + ], + "staffs": [ + { + "handle": { + "name": "dipswitch", + "demozoo_id": 5806 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "random", + "demozoo_id": 15652 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4114 +} \ No newline at end of file diff --git a/data/2021_02_27_shader_jam_challenge.json b/data/2021_02_27_shader_jam_challenge.json new file mode 100644 index 000000000..fbaf98454 --- /dev/null +++ b/data/2021_02_27_shader_jam_challenge.json @@ -0,0 +1,75 @@ +{ + "title": "Shader Cha\u03bb\u03bbenge", + "started": "2021-02-27", + "date": "27 February 2021", + "type": "Shader Jam", + "vod": "https://www.youtube.com/watch?v=2NJrpOFxSSo", + "software_used": null, + "phases": [ + { + "title": "Shader Cha\u03bb\u03bbenge", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "FMS_Cat", + "demozoo_id": 57112 + }, + "shadertoy_url": "https://www.shadertoy.com/view/tlyBWw", + "source_file": "/shader_file_sources/2021_02_27_shader_jam_challenge/shaderchallenge_fms_cat.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "butadiene", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/wtGfWw", + "source_file": "/shader_file_sources/2021_02_27_shader_jam_challenge/shaderchallenge_butadiene.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "shadertoy_url": null, + "preview_image": "2021_02_27_shader_jam_challenge/shaderchallenge_sp4ghet.jpg", + "source_file": "/shader_file_sources/2021_02_27_shader_jam_challenge/shaderchallenge_sp4ghet.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "\u3089\u304f\u3068\u3042\u3044\u3059 (lactoice)", + "demozoo_id": null + }, + "job": "Live Music" + }, + { + "handle": { + "name": "phi16", + "demozoo_id": null + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "phi16", + "demozoo_id": null + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} \ No newline at end of file diff --git a/data/2021_03_12_byte_battle_lovebyte.json b/data/2021_03_12_byte_battle_lovebyte.json new file mode 100644 index 000000000..39ec815f1 --- /dev/null +++ b/data/2021_03_12_byte_battle_lovebyte.json @@ -0,0 +1,365 @@ +{ + "title": "Lovebyte", + "started": "2021-03-12", + "date": "12 - 14 March 2021", + "type": "Byte Battle", + "vod": null, + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v062b", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Quarter Final #1", + "vod": "https://www.youtube.com/watch?v=diy4CJpFItY", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 2020, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_qf_superogue.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/qf_superogue.gif" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_qf_blueberry.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/qf_blueberry.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final #2", + "vod": "https://www.youtube.com/watch?v=_JQm46HuDEE", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_qf_flopine.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/qf_flopine.gif" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_qf_gasman.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/qf_gasman.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final #3", + "vod": "https://www.youtube.com/watch?v=BEepOI7EWMo", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_qf_mantratronic.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/qf_mantratronic.gif" + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Nusan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_qf_nusan.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/qf_nusan.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final #4", + "vod": "https://www.youtube.com/watch?v=VP0wOxSAH38", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_qf_wrighter.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/qf_wrighter.gif" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_qf_orbitaldecay.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/qf_orbitaldecay.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final #1", + "vod": "https://www.youtube.com/watch?v=zAy6VR8gPc4&t=5s", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 2021, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_semifinal_superogue.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/semifinal_superogue.gif" + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_semifinal_orbitaldecay.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/semifinal_orbitaldecay.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final #2", + "vod": "https://www.youtube.com/watch?v=sjQ5vr05-yQ&t=3s", + "entries": [ + { + "id": 1, + "rank": 2, + "points": null, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_semifinal_flopine.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/semifinal_flopine.gif" + }, + { + "id": 2, + "rank": 1, + "points": null, + "handle": { + "name": "Nusan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_semifinal_nusan.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/semifinal_nusan.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=kZaOC2T6kXs", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "Nusan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_final_nusan.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/final_nusan.gif" + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/lovebyte2021/bytebattle_lovebyte2021_final_orbitaldecay.lua", + "preview_image": "2021_03_12_byte_battle_lovebyte/final_orbitaldecay.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "rho", + "demozoo_id": 45 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4197 +} diff --git a/data/2021_04_02_shader_jam_revision_online.json b/data/2021_04_02_shader_jam_revision_online.json new file mode 100644 index 000000000..4d56814bf --- /dev/null +++ b/data/2021_04_02_shader_jam_revision_online.json @@ -0,0 +1,169 @@ +{ + "title": "Revision Online", + "started": "2021-04-02", + "date": "02 - 05 April 2021", + "type": "Shader Jam", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Shader Jam #1", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2021_04_02_shader_jam_revision_online/jam_with_lynn/nusan.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_04_02_shader_jam_revision_online/jam_with_lynn/lechugafeliz.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/lechugafeliz.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "shadertoy_url": "https://www.shadertoy.com/view/fsjGDD", + "preview_image": "2021_04_02_shader_jam_revision_online/jam_with_lynn/eimink.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/eimink.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "LynnDrum", + "demozoo_id": 77648 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Shader Jam #2", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "plek", + "demozoo_id": 10577 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/superplek.glsl", + "preview_image": "2021_04_02_shader_jam_revision_online/jam_with_messy/superplek.jpg" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/evvvvil.glsl", + "preview_image": "2021_04_02_shader_jam_revision_online/jam_with_messy/evvvvil.jpg" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Ndj3Wm", + "source_file": "/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/sp4ghet.glsl", + "preview_image": "2021_04_02_shader_jam_revision_online/jam_with_messy/sp4ghet.jpg" + } + ], + "staffs": [ + { + "handle": { + "name": "messy", + "demozoo_id": 11924 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Shader Jam #3", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "exca", + "demozoo_id": 35897 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_ghost/exca.glsl", + "preview_image": "2021_04_02_shader_jam_revision_online/jam_with_ghost/exca.jpg" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_ghost/rimina.glsl", + "preview_image": "2021_04_02_shader_jam_revision_online/jam_with_ghost/rimina.jpg" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_ghost/visy.glsl", + "preview_image": "2021_04_02_shader_jam_revision_online/jam_with_ghost/visy.jpg" + } + ], + "staffs": [ + { + "handle": { + "name": "ghost", + "demozoo_id": null + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 4191 +} \ No newline at end of file diff --git a/data/2021_04_02_shader_showdown_revision_online.json b/data/2021_04_02_shader_showdown_revision_online.json new file mode 100644 index 000000000..e33c8eab4 --- /dev/null +++ b/data/2021_04_02_shader_showdown_revision_online.json @@ -0,0 +1,510 @@ +{ + "title": "Revision Online", + "started": "2021-04-02", + "date": "02 - 05 April 2021", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Quarter Final 1", + "vod": "https://www.youtube.com/watch?v=gKmHg5Y9arM", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "anticore", + "demozoo_id": 117325 + }, + "shadertoy_url": "https://www.shadertoy.com/view/sdjGWm", + "preview_image": "2021_04_02_shader_showdown_revision_online/qf_anticore.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/anticore.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_04_02_shader_showdown_revision_online/qf_lechugafeliz.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/lechugafeliz.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 2", + "vod": "https://www.youtube.com/watch?v=gKmHg5Y9arM", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7sS3WD", + "preview_image": "2021_04_02_shader_showdown_revision_online/qf_blackle.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/blackle.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/ss2GDw", + "preview_image": "2021_04_02_shader_showdown_revision_online/qf_cosamentale.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/cosamentale.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 3", + "vod": "https://www.youtube.com/watch?v=gKmHg5Y9arM", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "poshbrolly_url":"https://www.poshbrolly.net/shader/6ceIHFLMaJHE2ogyGcbD", + "shadertoy_url": "https://www.shadertoy.com/view/7dBGRc", + "preview_image": "2021_04_02_shader_showdown_revision_online/qf_evvvvil.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/evvvvil.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_04_02_shader_showdown_revision_online/qf_monsieursoleil.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/monsieursoleil.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 4", + "vod": "https://www.youtube.com/watch?v=gKmHg5Y9arM", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2021_04_02_shader_showdown_revision_online/qf_flopine.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/flopine.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2021_04_02_shader_showdown_revision_online/qf_wrighter.jpg", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/wrighter.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 1", + "vod": "https://www.youtube.com/watch?v=NBdRfFwuP40", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": "https://www.shadertoy.com/view/NdjGDm", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/blackle.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "anticore", + "demozoo_id": 117325 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/anticore.glsl", + "preview_image": "2021_04_02_shader_showdown_revision_online/sf_anticore.jpg" + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 2", + "vod": "https://www.youtube.com/watch?v=NBdRfFwuP40", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + + "poshbrolly_url":"https://www.poshbrolly.net/shader/PwKaiF5tj9Hzh6BrSWIh", + "shadertoy_url": "https://www.shadertoy.com/view/fdSGWw", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/evvvvil.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/flopine.glsl", + "preview_image": "2021_04_02_shader_showdown_revision_online/sf_flopine.jpg" + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=6dZDmlciEas", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7s23DD", + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_final/blackle.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_final/evvvvil.glsl", + "preview_image": "2021_04_02_shader_showdown_revision_online/f_evvvvil.jpg" + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4191 +} \ No newline at end of file diff --git a/data/2021_04_16_shader_showdown_recto_vrso.json b/data/2021_04_16_shader_showdown_recto_vrso.json new file mode 100644 index 000000000..8ead3aba2 --- /dev/null +++ b/data/2021_04_16_shader_showdown_recto_vrso.json @@ -0,0 +1,217 @@ +{ + "title": "Recto VRso Exhibition", + "started": "2021-04-16", + "date": "16 April 2021", + "type": "Shader Showdown", + "vod": "https://youtu.be/UIGlDjnuUIY", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + }, + { + "name": "TidalCycles", + "url": "https://tidalcycles.org/", + "version": "", + "purpose": "Music" + } + ], + "phases": [ + { + "title": "Round #1", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2021_04_16_shader_showdown_recto_vrso/01-nusan.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2021-04-16/01-nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": null, + "preview_image": "2021_04_16_shader_showdown_recto_vrso/01-z0rg.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2021-04-16/01-z0rg.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Joseph", + "demozoo_id": null + }, + "job": "Live Music" + }, + { + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "job": "Live Music" + } + ] + }, + { + "title": "Round #2", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_04_16_shader_showdown_recto_vrso/02-lechugafeliz.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2021-04-16/02-lechugafeliz.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": "https://www.shadertoy.com/view/NsfXRf", + "preview_image": "2021_04_16_shader_showdown_recto_vrso/02-wrighter.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2021-04-16/02-wrighter.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Joseph", + "demozoo_id": null + }, + "job": "Live Music" + }, + { + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "job": "Live Music" + } + ] + }, + { + "title": "Round #3", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Tater", + "demozoo_id": 130920 + }, + "shadertoy_url": null, + "preview_image": "2021_04_16_shader_showdown_recto_vrso/03-tater.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2021-04-16/03-tater.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": null, + "preview_image": "2021_04_16_shader_showdown_recto_vrso/03-z0rg.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2021-04-16/03-z0rg.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Joseph", + "demozoo_id": null + }, + "job": "Live Music" + }, + { + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "job": "Live Music" + } + ] + }, + { + "title": "Round #4", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_04_16_shader_showdown_recto_vrso/04-lechugafeliz.jpg", + "source_file": "https://github.com/CookieCollective/Live-Coding-Sources/blob/master/2021-04-16/04-lechugafeliz.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Joseph", + "demozoo_id": null + }, + "job": "Live Music" + }, + { + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "job": "Live Music" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZCOOKIE" +} \ No newline at end of file diff --git a/data/2021_05_13_byte_battle_outline.json b/data/2021_05_13_byte_battle_outline.json new file mode 100644 index 000000000..9f98db746 --- /dev/null +++ b/data/2021_05_13_byte_battle_outline.json @@ -0,0 +1,419 @@ +{ + "title": "Outline", + "started": "2021-05-13", + "date": "13 - 16 May 2021", + "type": "Byte Battle", + "vod": null, + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v062b", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Quarter Final #1", + "vod": "https://www.youtube.com/watch?v=uYBZ8pRWwgo", + "entries": [ + { + "id": 1, + "rank": 1, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_qf_aldroid.lua", + "preview_image": "2021_05_13_byte_battle_outline/qf_aldroid.gif" + }, + { + "id": 2, + "rank": 2, + "points": null, + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "shadertoy_url": null, + "tic80_cart_id": 1913, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_qf_ps.lua", + "preview_image": "2021_05_13_byte_battle_outline/qf_ps.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Numtek", + "demozoo_id": 6428 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Quarter Final #2", + "vod": "https://youtu.be/uYBZ8pRWwgo?t=1930", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "killedbyapixel", + "demozoo_id": 89333 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_qf_killedbyapixel.lua", + "preview_image": "2021_05_13_byte_battle_outline/qf_killedbyapixel.gif" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "exoticorn", + "demozoo_id": 5849 + }, + "shadertoy_url": null, + "tic80_cart_id": 1873, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_qf_exoticorn.lua", + "preview_image": "2021_05_13_byte_battle_outline/qf_exoticorn.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Numtek", + "demozoo_id": 6428 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Quarter Final #3", + "vod": "https://youtu.be/uYBZ8pRWwgo?t=3798", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_qf_gopher.lua", + "preview_image": "2021_05_13_byte_battle_outline/qf_gopher.gif" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "tomcat", + "demozoo_id": 8556 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_qf_tomcat.lua", + "preview_image": "2021_05_13_byte_battle_outline/qf_tomcat.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Numtek", + "demozoo_id": 6428 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Quarter Final #4", + "vod": "https://youtu.be/uYBZ8pRWwgo?t=5699", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "popolon", + "demozoo_id": null + }, + "shadertoy_url": null, + "tic80_cart_id": 1874, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_qf_popolon.lua", + "preview_image": "2021_05_13_byte_battle_outline/qf_popolon.gif" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "FMS_cat", + "demozoo_id": 57112 + }, + "shadertoy_url": null, + "tic80_cart_id": 1868, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_qf_fmscat.lua", + "preview_image": "2021_05_13_byte_battle_outline/qf_fmscat.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Orbitaldecay", + "demozoo_id": 53612 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Numtek", + "demozoo_id": 6428 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Semi Final #1", + "vod": "https://www.youtube.com/watch?v=KIv5N-nV_vQ", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_semifinal_aldroid.lua", + "preview_image": "2021_05_13_byte_battle_outline/semifinal_aldroid.gif" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "exoticorn", + "demozoo_id": 5849 + }, + "shadertoy_url": null, + "tic80_cart_id": 1872, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_semifinal_exoticorn.lua", + "preview_image": "2021_05_13_byte_battle_outline/semifinal_exoticorn.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Subi", + "demozoo_id": 21306 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Semi Final #2", + "vod": "https://youtu.be/KIv5N-nV_vQ?t=1915", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_semifinal_gopher.lua", + "preview_image": "2021_05_13_byte_battle_outline/semifinal_gopher.gif" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "FMS_cat", + "demozoo_id": 57112 + }, + "shadertoy_url": null, + "tic80_cart_id": 1869, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_semifinal_fmscat.lua", + "preview_image": "2021_05_13_byte_battle_outline/semifinal_fmscat.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Numtek", + "demozoo_id": 6428 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Final", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "shadertoy_url": null, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_final_gopher.lua", + "preview_image": "2021_05_13_byte_battle_outline/final_gopher.gif" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "exoticorn", + "demozoo_id": 5849 + }, + "shadertoy_url": null, + "tic80_cart_id": 1871, + "source_file": "http://revival-studios.com/bytebattles/outline2021/bytebattle_outline2021_final_exoticorn.lua", + "preview_image": "2021_05_13_byte_battle_outline/final_exoticorn.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Numtek", + "demozoo_id": 6428 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4201 +} \ No newline at end of file diff --git a/data/2021_05_13_shader_jam_outline.json b/data/2021_05_13_shader_jam_outline.json new file mode 100644 index 000000000..d24fdf0cf --- /dev/null +++ b/data/2021_05_13_shader_jam_outline.json @@ -0,0 +1,67 @@ +{ + "title": "Outline", + "started": "2021-05-13", + "date": "13 - 16 May 2021", + "type": "Shader Jam", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Shaderjam 1", + "vod": "https://www.youtube.com/watch?v=148rAO3sods", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/ss2XDd", + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "exca", + "demozoo_id": 35897 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "TurboAnalIsis", + "demozoo_id": 73843 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 4201 +} \ No newline at end of file diff --git a/data/2021_05_13_shader_showdown_outline.json b/data/2021_05_13_shader_showdown_outline.json new file mode 100644 index 000000000..2461d3128 --- /dev/null +++ b/data/2021_05_13_shader_showdown_outline.json @@ -0,0 +1,239 @@ +{ + "title": "Outline", + "started": "2021-05-13", + "date": "13 - 16 May 2021", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Group 1 - Match 1", + "vod": "https://youtu.be/WNxlDgTitZE", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "anticore", + "demozoo_id": 117325 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ssjSDV", + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Group 2 - Match 1", + "vod": "https://youtu.be/WNxlDgTitZE?t=1692", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/NlXGDH", + "source_file": "/shader_file_sources/2021_05_13_shader_showdown_outline/outline_2021_totetmatt_1.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Group 1 - Match 2", + "vod": "https://youtu.be/WNxlDgTitZE?t=3787", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Anticore", + "demozoo_id": 117325 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ssjXWV", + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "Subi", + "demozoo_id": 21306 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Group 2 - Match 2", + "vod": "https://youtu.be/WNxlDgTitZE?t=5652", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/fs2XWc", + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ftfGWH", + "source_file": "/shader_file_sources/2021_05_13_shader_showdown_outline/outline_2021_totetmatt_2.glsl" + } + ], + "staffs": [] + }, + { + "title": "Group 1 - Match 3", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Group 2 - Match 3", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/NsSXWd", + "source_file": null + } + ], + "staffs": [] + }, + { + "title": "Final", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "poshbrolly_url":"https://www.poshbrolly.net/shader/WCCKltsoFfdpkZbSAylR", + "shadertoy_url": "https://www.shadertoy.com/view/sdBSDt", + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/7tf3Rr", + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4201 +} \ No newline at end of file diff --git a/data/2021_05_21_shader_jam_shadow_party.json b/data/2021_05_21_shader_jam_shadow_party.json new file mode 100644 index 000000000..7080dd45d --- /dev/null +++ b/data/2021_05_21_shader_jam_shadow_party.json @@ -0,0 +1,129 @@ +{ + "title": "Shadow Party", + "started": "2021-05-21", + "date": "21 - 23 May 2021", + "type": "Shader Jam", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Shader Jam #1", + "vod": "https://www.youtube.com/watch?v=U4T7HCQekUA", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2021_05_21_shader_jam_shadow_party/sender_shadow_nusan.jpg", + "source_file": "/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7ll3R4", + "preview_image": "2021_05_21_shader_jam_shadow_party/sender_shadow_ponk.jpg", + "source_file": "/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_ponk.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Lime", + "demozoo_id": null + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Shader Jam #2", + "vod": "https://www.youtube.com/watch?v=Rw5Q_laxWZA", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2021_05_21_shader_jam_shadow_party/shadow-evvvvil-shaderjam.jpg", + "source_file": "/shader_file_sources/2021_05_21_shader_jam_shadow_party/shadow-evvvvil-shaderjam.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": "https://www.shadertoy.com/view/NlK3Rc", + "preview_image": "2021_05_21_shader_jam_shadow_party/z0rg.jpg", + "source_file": "/shader_file_sources/2021_05_21_shader_jam_shadow_party/z0rg.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/stl3z4", + "preview_image": "2021_05_21_shader_jam_shadow_party/sender_shadow_totetmatt.jpg", + "source_file": "/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_totetmatt.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "LDream", + "demozoo_id": null + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Cookie Collective", + "demozoo_id": 78435 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4199 +} \ No newline at end of file diff --git a/data/2021_06_26_shader_jam_livecode.json b/data/2021_06_26_shader_jam_livecode.json new file mode 100644 index 000000000..71e938881 --- /dev/null +++ b/data/2021_06_26_shader_jam_livecode.json @@ -0,0 +1,377 @@ +{ + "title": "livecode.demozoo.org Release Party", + "started": "2021-06-26", + "date": "26 June 2021", + "type": "Shader Jam", + "vod": "https://www.youtube.com/watch?v=-1XC1ikDLgI", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Shader Royale Jam", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "shadertoy_url": "https://www.shadertoy.com/view/flj3WV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_alien.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_alien.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "anticore", + "demozoo_id": 117325 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ftjGWV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_anticore.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_anticore.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ft23DK", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_blackle.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_blackle.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "branch", + "demozoo_id": 44254 + }, + "shadertoy_url": null, + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_branch.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_branch.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "VjPyree", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/stjGDV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_VjPyree.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_VjPyree.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/flj3DK", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Exca.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Exca.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_monsieursoleil.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_monsieursoleil.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": "https://www.shadertoy.com/view/fljGWV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NuSan.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NuSan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Ntj3WV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rimina.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rimina.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ftj3WV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_sp4ghet.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_sp4ghet.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Nlj3DK", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_visy.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_visy.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/st23DK", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_totetmatt.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_totetmatt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/7lj3W3", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_cosamentale.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_cosamentale.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dok", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/Nt2GWV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_dok.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_dok.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_evvvvil.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_evvvvil.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/Nl23WV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_LechugaFeliz.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_LechugaFeliz.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7t23DK", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_wrighter.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_wrighter.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "butadiene", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/fl23DK", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_butadiene.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_butadiene.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NR4", + "demozoo_id": 76970 + }, + "shadertoy_url": null, + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NR4.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NR4.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_provod.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_provod.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "bitnenfer", + "demozoo_id": 107277 + }, + "shadertoy_url": null, + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_bitnenfer.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_bitnenfer.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Tater", + "demozoo_id": 130920 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ft2GWV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Tater.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Tater.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7l2GWV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_z0rg.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_z0rg.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "rohtie", + "demozoo_id": 4456 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Nlj3WV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rohtie.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rohtie.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7lj3DV", + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_eimink.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_eimink.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nameless", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Nameless.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Nameless.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "EmmazingGoose", + "demozoo_id": 121827 + }, + "shadertoy_url": null, + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_EmmazingGoose.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_EmmazingGoose.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "yx", + "demozoo_id": 77056 + }, + "shadertoy_url": null, + "preview_image": "2021_06_26_shader_jam_livecode/grabber_inerciaroyale_yx.jpg", + "source_file": "/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_yx.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} \ No newline at end of file diff --git a/data/2021_07_23_shader_coding_party.json b/data/2021_07_23_shader_coding_party.json new file mode 100644 index 000000000..b0f42fb00 --- /dev/null +++ b/data/2021_07_23_shader_coding_party.json @@ -0,0 +1,119 @@ +{ + "title": "Free DJ-Shader Coding Party", + "started": "2021-07-23", + "date": "27 July 2021", + "type": "Shader Jam", + "vod": null, + "website": "https://www.facebook.com/events/1407624289621640/", + "flyer": "", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_cosamentale.jpg", + "source_file": "/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_cosamentale.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "EmmazingGoose", + "demozoo_id": 121827 + }, + "shadertoy_url": null, + "preview_image": "2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_EmmazingGoose.jpg", + "source_file": "/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_EmmazingGoose.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/NljXzh", + "preview_image": "2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Exca.jpg", + "source_file": "/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Exca.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_rimina.jpg", + "source_file": "/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_rimina.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "shadertoy_url": null, + "preview_image": "2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_sp4ghet.jpg", + "source_file": "/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_sp4ghet.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Tater", + "demozoo_id": 130920 + }, + "shadertoy_url": "https://www.shadertoy.com/view/NtjXzh", + "preview_image": "2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Tater.jpg", + "source_file": "/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Tater.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_totetmatt.jpg", + "source_file": "/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_totetmatt.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} \ No newline at end of file diff --git a/data/2021_08_13_shader_jam_prevoke.json b/data/2021_08_13_shader_jam_prevoke.json new file mode 100644 index 000000000..f57ce9c93 --- /dev/null +++ b/data/2021_08_13_shader_jam_prevoke.json @@ -0,0 +1,189 @@ +{ + "title": "Pre N\u00e9voke", + "started": "2021-08-13", + "date": "13 August 2021", + "type": "Shader Jam", + "website": "", + "flyer": "./media/pre_nevoke_jam_2021/prevoke_ps_1.png", + "vod": "https://youtu.be/rwmfyGrDZyw?t=991", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Shader Jam", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "poshbrolly_url":"https://www.poshbrolly.net/shader/0df72jzsgYK6KuNHDQrd", + "shadertoy_url": "https://www.shadertoy.com/view/Nl2XDd", + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alien.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alien.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "shadertoy_url": null, + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alkama.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alkama.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "shadertoy_url": null, + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_eimink.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_eimink.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Nt2XDd", + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_Exca.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_Exca.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/stjSWt", + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_LechugaFeliz.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_LechugaFeliz.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7tjSWt", + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_NuSan.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_NuSan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_provod.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_provod.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_rimina.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_rimina.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Tater", + "demozoo_id": 130920 + }, + "shadertoy_url": "https://www.shadertoy.com/view/fl2XDd", + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_tater.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_tater.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_totetmatt.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_totetmatt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_visy.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_visy.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_wrighter.jpg", + "source_file": "/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_wrighter.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Ronny Pries", + "demozoo_id": 355 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} \ No newline at end of file diff --git a/data/2021_08_14_shader_jam_nevoke.json b/data/2021_08_14_shader_jam_nevoke.json new file mode 100644 index 000000000..2e8f6acb9 --- /dev/null +++ b/data/2021_08_14_shader_jam_nevoke.json @@ -0,0 +1,133 @@ +{ + "title": "N\u00e9voke", + "started": "2021-08-14", + "date": "14 August 2021", + "type": "Shader Jam", + "website": "https://www.xn--nvoke-bsa.eu/", + "flyer": "", + "vod": "https://streaming.media.ccc.de/nevoke2021/relive/110", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2021_08_14_shader_jam_nevoke/Flopine_chibitech_visuals.jpg", + "source_file": "/shader_file_sources/2021_08_14_shader_jam_nevoke/Flopine_chibitech_visuals.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "chibi-tech", + "demozoo_id": 30690 + }, + "job": "Live Music" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Chunna", + "demozoo_id": 11583 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Darya", + "demozoo_id": 107504 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Dipswitch", + "demozoo_id": 5806 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Faxe", + "demozoo_id": 3811 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "KB", + "demozoo_id": 557 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Melkor", + "demozoo_id": 1020 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Nodepond", + "demozoo_id": 45364 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "P\u00c3\u00bcnzli", + "demozoo_id": 11753 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Slider", + "demozoo_id": 118680 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "steam", + "demozoo_id": 11587 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "XXX", + "demozoo_id": 6 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4324 +} \ No newline at end of file diff --git a/data/2021_08_28_shader_jam_chaos_constructions_summer.json b/data/2021_08_28_shader_jam_chaos_constructions_summer.json new file mode 100644 index 000000000..fde0e09e3 --- /dev/null +++ b/data/2021_08_28_shader_jam_chaos_constructions_summer.json @@ -0,0 +1,86 @@ +{ + "title": "Chaos Constructions Summer", + "started": "2021-08-28", + "date": "28 August 2021", + "type": "Shader Jam", + "website": "https://chaosconstructions.ru/en/start", + "flyer": "", + "vod": "https://www.youtube.com/watch?v=gcoDX7bonX0", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Tater", + "demozoo_id": 130920 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7sc3zj", + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/fdtGz2", + "source_file": null + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Random", + "demozoo_id": 15652 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4239 +} \ No newline at end of file diff --git a/data/2021_09_02_byte_jam_pre_lovebyte.json b/data/2021_09_02_byte_jam_pre_lovebyte.json new file mode 100644 index 000000000..2d043fa51 --- /dev/null +++ b/data/2021_09_02_byte_jam_pre_lovebyte.json @@ -0,0 +1,88 @@ +{ + "title": "Pre Lovebyte", + "started": "2021-09-02", + "date": "02 September 2021", + "vod": null, + "type": "Byte Jam", + "website": "http://battle.lovebyte.party/", + "flyer": "", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Byte Jam", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": 2151, + "source_file": null, + "preview_image": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": 2152, + "source_file": null, + "preview_image": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "tic80_cart_id": 2148, + "source_file": null, + "preview_image": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 2154, + "source_file": "/shader_file_sources/2021_09_02_byte_jam_pre_lovebyte/superogue.lua", + "preview_image": "2021_09_02_byte_jam_pre_lovebyte/superogue.gif" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} diff --git a/data/2021_09_25_byte_battle_lovebyte_battlegrounds.json b/data/2021_09_25_byte_battle_lovebyte_battlegrounds.json new file mode 100644 index 000000000..4d203691f --- /dev/null +++ b/data/2021_09_25_byte_battle_lovebyte_battlegrounds.json @@ -0,0 +1,778 @@ +{ + "title": "Lovebyte Battlegrounds", + "started": "2021-09-25", + "date": "25 - 26 September 2021", + "vod": null, + "type": "Byte Battle", + "website": "http://battle.lovebyte.party/", + "flyer": "", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "First Round #1", + "vod": "https://www.youtube.com/watch?v=QdJHXyow8B0", + "keyword": "Baldy Cat", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 154, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_first_round.gif" + }, + { + "id": 2, + "rank": 2, + "points": 123, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/0b5vr_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/0b5vr_first_round.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "First Round #2", + "vod": "https://www.youtube.com/watch?v=dhgeKqY5Lzo", + "keyword": "Bounce", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 188, + "handle": { + "name": "tomcat", + "demozoo_id": 8556 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_first_round.gif" + }, + { + "id": 2, + "rank": 2, + "points": 142, + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/psenough_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/psenough_first_round.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + } + ] + }, + { + "title": "First Round #3", + "vod": "https://www.youtube.com/watch?v=PqW1GOrVMS0", + "keyword": "Dragon", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 152, + "handle": { + "name": "jobe", + "demozoo_id": null + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_first_round.gif" + }, + { + "id": 2, + "rank": 2, + "points": 145, + "handle": { + "name": "dresdenboy", + "demozoo_id": 64936 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/dresdenboy_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/dresdenboy_first_round.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "First Round #4", + "vod": "https://www.youtube.com/watch?v=oeJd53nj7lk", + "keyword": "Waves", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 188, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_first_round.gif" + }, + { + "id": 2, + "rank": 2, + "points": 140, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/blackle_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/blackle_first_round.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + } + ] + }, + { + "title": "First Round #5", + "vod": "https://www.youtube.com/watch?v=IdkYqmWP53U", + "keyword": "Fluid", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 176, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "tic80_cart_id": 2241, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_first_round.gif" + }, + { + "id": 2, + "rank": 2, + "points": 143, + "handle": { + "name": "popolon", + "demozoo_id": null + }, + "shadertoy_url": null, + "tic80_cart_id": 2221, + "source_file": null, + "preview_image": null + } + ], + "staffs": [ + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "First Round #6", + "vod": "https://www.youtube.com/watch?v=SeKTEgI5jvo", + "keyword": "Square", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 200, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 2267, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_first_round.gif" + }, + { + "id": 2, + "rank": 2, + "points": 164, + "handle": { + "name": "exoticorn", + "demozoo_id": 5849 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/exoticorn_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/exoticorn_first_round.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "First Round #7", + "vod": "https://www.youtube.com/watch?v=rznHWTPaxkw", + "keyword": "Garden", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 156, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/aldroid_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/aldroid_first_round.gif" + }, + { + "id": 2, + "rank": 2, + "points": 111, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/visy_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/visy_first_round.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "job": "Commentators" + } + ] + }, + { + "title": "First Round #8", + "vod": "https://www.youtube.com/watch?v=-Esj_g2PNAU", + "keyword": "Tentacles", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 202, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "tic80_cart_id": 3112, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/nusan_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/nusan_first_round.gif" + }, + { + "id": 2, + "rank": 2, + "points": 177, + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gopher_first_round.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/gopher_first_round.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter #1", + "vod": "", + "keyword": "Cubes", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 97, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "tic80_cart_id": 2242, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_quarter.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_quarter.gif" + }, + { + "id": 2, + "rank": 2, + "points": 71, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/aldroid_quarter.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/aldroid_quarter.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter #2", + "vod": "", + "keyword": "Stars", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 114, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_quarter.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_quarter.gif" + }, + { + "id": 2, + "rank": 2, + "points": 111, + "handle": { + "name": "tomcat", + "demozoo_id": 8556 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_quarter.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_quarter.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter #3", + "vod": "", + "keyword": "Rainbow", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 114, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_quarter.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_quarter.gif" + }, + { + "id": 2, + "rank": 2, + "points": 97, + "handle": { + "name": "jobe", + "demozoo_id": null + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_quarter.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_quarter.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter #4", + "vod": "", + "keyword": "Stairs", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 97, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/nusan_quarter.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/nusan_quarter.gif" + }, + { + "id": 2, + "rank": 1, + "points": 118, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 2268, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_quarter.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_quarter.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi #1", + "vod": "", + "keyword": "Duck", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 78, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_semi.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_semi.gif" + }, + { + "id": 2, + "rank": 1, + "points": 126, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_semi.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_semi.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi #2", + "vod": "", + "keyword": "Doom", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 107, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "tic80_cart_id": 2243, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_semi.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_semi.gif" + }, + { + "id": 2, + "rank": 1, + "points": 176, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 2270, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_semi.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_semi.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "", + "keyword": "Fairies", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 183, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 2271, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_final.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_final.gif" + }, + { + "id": 2, + "rank": 2, + "points": 158, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_final.lua", + "preview_image": "2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_final.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4353 +} \ No newline at end of file diff --git a/data/2021_09_25_byte_jam_lovebyte.json b/data/2021_09_25_byte_jam_lovebyte.json new file mode 100644 index 000000000..0239e49ed --- /dev/null +++ b/data/2021_09_25_byte_jam_lovebyte.json @@ -0,0 +1,174 @@ +{ + "title": "Lovebyte Battlegrounds", + "started": "2021-09-25", + "date": "25 - 26 September 2021", + "vod": null, + "type": "Byte Jam", + "website": "http://battle.lovebyte.party/", + "flyer": "", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Byte Jam", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_jam_lovebyte/gasman.lua", + "preview_image": "2021_09_25_byte_jam_lovebyte/gasman.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_jam_lovebyte/pestis_1.lua", + "preview_image": "2021_09_25_byte_jam_lovebyte/pestis_1.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_jam_lovebyte/pestis_2.lua", + "preview_image": "2021_09_25_byte_jam_lovebyte/pestis_2.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Sir Garbagetruck", + "demozoo_id": 3143 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_jam_lovebyte/sir_garbagetruck.lua", + "preview_image": "2021_09_25_byte_jam_lovebyte/sir_garbagetruck.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_jam_lovebyte/mantratronic.lua", + "preview_image": "2021_09_25_byte_jam_lovebyte/mantratronic.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pancelor", + "demozoo_id": null + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_25_byte_jam_lovebyte/pancelor.lua", + "preview_image": "2021_09_25_byte_jam_lovebyte/pancelor.gif" + } + ], + "staffs": [] + }, + { + "title": "Improvised Duck Jam", + "keyword": "Duck", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jobe", + "demozoo_id": 3548 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/jobe.lua", + "preview_image": "2021_09_26_byte_jam_lovebyte_duck/jobe.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/nusan.lua", + "preview_image": "2021_09_26_byte_jam_lovebyte_duck/nusan.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 2269, + "source_file": "/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/superogue.lua", + "preview_image": "2021_09_26_byte_jam_lovebyte_duck/superogue.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gopher", + "demozoo_id": 929 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/gopher.lua", + "preview_image": "2021_09_26_byte_jam_lovebyte_duck/gopher.gif" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4353 +} \ No newline at end of file diff --git a/data/2021_10_30_byte_jam_inercia.json b/data/2021_10_30_byte_jam_inercia.json new file mode 100644 index 000000000..a684f2534 --- /dev/null +++ b/data/2021_10_30_byte_jam_inercia.json @@ -0,0 +1,139 @@ +{ + "title": "In\u00e9rcia", + "started": "2021-10-30", + "date": "30 October 2021", + "type": "Byte Jam", + "website": "http://inercia.pt", + "flyer": "", + "vod": null, + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Sir Garbagetruck", + "demozoo_id": 3143 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null, + "tic80_cart_id": 2308 + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2021_10_30_byte_jam_inercia/mantratronic_inerciajam.gif", + "source_file": "/shader_file_sources/2021_10_30_byte_jam_inercia/mantratronic_inerciajam.lua", + "tic80_cart_id": 2315 + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null, + "tic80_cart_id": 2309 + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null, + "tic80_cart_id": 2319 + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null, + "tic80_cart_id": 2320 + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null, + "tic80_cart_id": 2321 + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Alien01", + "demozoo_id": 108887 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4244 +} \ No newline at end of file diff --git a/data/2021_10_30_shader_royale_inercia.json b/data/2021_10_30_shader_royale_inercia.json new file mode 100644 index 000000000..03897ce08 --- /dev/null +++ b/data/2021_10_30_shader_royale_inercia.json @@ -0,0 +1,220 @@ +{ + "title": "In\u00e9rcia", + "started": "2021-10-30", + "date": "30 October 2021", + "type": "Shader Royale", + "website": "https://inercia.pt", + "flyer": "", + "vod": "https://www.youtube.com/watch?v=6xvZTxv6QYc", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": 4, + "rank": 1, + "points": 86, + "handle": { + "name": "Alkama", + "demozoo_id": 1382 + }, + "shadertoy_url": null, + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_alkama.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_alkama.glsl" + }, + { + "id": 5, + "rank": 2, + "points": 72, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7td3zn", + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_0b5vr.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_0b5vr.glsl" + }, + { + "id": 11, + "rank": 3, + "points": 65, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/Nt33RN", + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_cosamentale.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_cosamentale.glsl" + }, + { + "id": 6, + "rank": 4, + "points": 64, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_rimina.glsl" + }, + { + "id": 3, + "rank": 5, + "points": 63, + "handle": { + "name": "Tater", + "demozoo_id": 130920 + }, + "shadertoy_url": "https://www.shadertoy.com/view/sld3zn", + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Tater.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Tater.glsl" + }, + { + "id": 9, + "rank": 6, + "points": 62, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": null, + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_z0rg.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_z0rg.glsl" + }, + { + "id": 12, + "rank": 6, + "points": 62, + "handle": { + "name": "dok", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/7ttGRr", + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_dok.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_dok.glsl" + }, + { + "id": 7, + "rank": 8, + "points": 62, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7lt3zn", + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Exca.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Exca.glsl" + }, + { + "id": 8, + "rank": 9, + "points": 57, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_msieursoleil.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_msieursoleil.glsl" + }, + { + "id": 10, + "rank": 9, + "points": 57, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/slc3z7", + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_totetmatt.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_totetmatt.glsl" + }, + { + "id": 2, + "rank": 11, + "points": 56, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/sltGRr", + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.glsl" + }, + { + "id": 1, + "rank": 12, + "points": 45, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ftcGz8", + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_provod.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_provod.glsl" + }, + { + "id": 13, + "rank": 13, + "points": 34, + "handle": { + "name": "EmmazingGoose", + "demozoo_id": 121827 + }, + "shadertoy_url": null, + "preview_image": "2021_10_30_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.jpg", + "source_file": "/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "dextrose", + "demozoo_id": 21681 + }, + "job": "Live Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Alien01", + "demozoo_id": 108887 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4244 +} diff --git a/data/2021_11_27_byte_jam_demodulation.json b/data/2021_11_27_byte_jam_demodulation.json new file mode 100644 index 000000000..bab40757d --- /dev/null +++ b/data/2021_11_27_byte_jam_demodulation.json @@ -0,0 +1,92 @@ +{ + "title": "Demodulation", + "started": "2021-11-27", + "date": "27 November 2021", + "type": "Byte Jam", + "website": "https://yandex.ru/museum/yaretrocomp_en", + "flyer": "", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "vod": "https://youtu.be/pPZeKQNWXPs?t=18464", + "phases": [ + { + "vod": null, + "title": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Lynn", + "demozoo_id": 77648 + }, + "shadertoy_url": null, + "preview_image": "2021_11_27_byte_jam_demodulation/lynn.gif", + "source_file": "/shader_file_sources/2021_11_27_byte_jam_demodulation/lynn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "preview_image": "2021_11_27_byte_jam_demodulation/pestis.gif", + "source_file": "/shader_file_sources/2021_11_27_byte_jam_demodulation/pestis.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jobe", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_11_27_byte_jam_demodulation/jobe.gif", + "source_file": "/shader_file_sources/2021_11_27_byte_jam_demodulation/jobe.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "tic80_cart_id": 2404, + "shadertoy_url": null, + "preview_image": "2021_11_27_byte_jam_demodulation/mantratronic.gif", + "source_file": "/shader_file_sources/2021_11_27_byte_jam_demodulation/mantratronic.lua" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "bfox", + "demozoo_id": 9743 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4358 +} \ No newline at end of file diff --git a/data/2021_12_11_shader_jam_tokyo_demofest.json b/data/2021_12_11_shader_jam_tokyo_demofest.json new file mode 100644 index 000000000..ae19802b0 --- /dev/null +++ b/data/2021_12_11_shader_jam_tokyo_demofest.json @@ -0,0 +1,147 @@ +{ + "title": "Tokyo Demo Fest", + "started": "2021-12-11", + "date": "11 - 12 December 2021", + "type": "Shader Jam", + "website": "https://tokyodemofest.jp", + "flyer": "", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + }, + { + "name": "https://glslsandbox.com/", + "url": "https://glslsandbox.com/", + "version": "", + "purpose": "Graphic" + } + ], + "vod": null, + "alternate_vods": [ + "https://www.twitch.tv/videos/1230237336" + ], + "phases": [ + { + "title": "Jam", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "TDF2021 Good luck semifinal", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gyabo", + "demozoo_id": 17562 + }, + "shadertoy_url": null, + "preview_image": "2021_12_11_shader_jam_tokyo_demofest/Good_luck_semifinal.png", + "source_file": "https://gist.github.com/kumaashi/1f3454dac13f0e4090d46ca3d8d71918" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "aonoro", + "demozoo_id": 83577 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Falken", + "demozoo_id": 816 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "gyabo", + "demozoo_id": 17562 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Hole", + "demozoo_id": 24018 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "i-saint", + "demozoo_id": 24019 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Kioku", + "demozoo_id": 13188 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "notargs", + "demozoo_id": 63871 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "FL1NE", + "demozoo_id": 24017 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4357 +} \ No newline at end of file diff --git a/data/2021_12_11_shader_seminar_tokyo_demofest.json b/data/2021_12_11_shader_seminar_tokyo_demofest.json new file mode 100644 index 000000000..98ad04646 --- /dev/null +++ b/data/2021_12_11_shader_seminar_tokyo_demofest.json @@ -0,0 +1,104 @@ +{ + "title": "Tokyo Demo Fest", + "started": "2021-12-11", + "date": "11 - 12 December 2021", + "type": "Shader Code Seminar", + "website": "https://tokyodemofest.jp", + "flyer": "", + "software_used": [], + "vod": "https://youtu.be/2s9KfMn1J9M?t=1483", + "phases": [ + { + "title": "\u30ec\u30a4\u30de\u30fc\u30c1\u30f3\u30b01\u304b\u30895", + "vod": "https://www.youtube.com/watch?v=E0dsqlajCM4", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": null, + "preview_image": "2021_12_11_shader_seminar_tokyo_demofest/2021_tdf_0b5vr.png", + "source_file": "/shader_file_sources/2021_12_11_shader_seminar_tokyo_demofest/2021_TDF_0b5vr.pdf" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "aonoro", + "demozoo_id": 83577 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Falken", + "demozoo_id": 816 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "gyabo", + "demozoo_id": 17562 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Hole", + "demozoo_id": 24018 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "i-saint", + "demozoo_id": 24019 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Kioku", + "demozoo_id": 13188 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "notargs", + "demozoo_id": 63871 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "FL1NE", + "demozoo_id": 24017 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4357 +} \ No newline at end of file diff --git a/data/2021_12_11_shader_showdown_tokyo_demofest.json b/data/2021_12_11_shader_showdown_tokyo_demofest.json new file mode 100644 index 000000000..75dda2ecc --- /dev/null +++ b/data/2021_12_11_shader_showdown_tokyo_demofest.json @@ -0,0 +1,586 @@ +{ + "title": "Tokyo Demo Fest", + "started": "2021-12-11", + "date": "11 - 12 December 2021", + "type": "Shader Showdown", + "website": "https://tokyodemofest.jp", + "flyer": "", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v11", + "version": "NuSan - v11", + "purpose": "Graphic" + } + ], + "vod": null, + "alternate_vods": [ + "https://www.twitch.tv/videos/1230237336", + "https://www.twitch.tv/videos/1231153157" + ], + "phases": [ + { + "title": "Quarter #01", + "vod": "https://youtu.be/2s9KfMn1J9M?t=8071", + "entries": [ + { + "id": null, + "rank": 2, + "points": 151, + "handle": { + "name": "gyabo", + "demozoo_id": 17562 + }, + "shadertoy_url": "https://www.shadertoy.com/view/sl3XDM", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gyabo.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gyabo.glsl" + }, + { + "id": null, + "rank": 1, + "points": 183, + "handle": { + "name": "gam0022", + "demozoo_id": 63869 + }, + "shadertoy_url": "https://www.shadertoy.com/view/sl3XWM", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gam0022.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gam0022.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "amagitakayosi", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "doxas", + "demozoo_id": 57111 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "\u907f\u96f7", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter #02", + "vod": "https://youtu.be/2s9KfMn1J9M?t=9979", + "entries": [ + { + "id": null, + "rank": 2, + "points": 150, + "handle": { + "name": "notargs", + "demozoo_id": 63871 + }, + "shadertoy_url": null, + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_notargs.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_notargs.glsl" + }, + { + "id": null, + "rank": 1, + "points": 226, + "handle": { + "name": "Kamoshika", + "demozoo_id": 128644 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7tcXzS", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_Kamoshika.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_Kamoshika.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "amagitakayosi", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "doxas", + "demozoo_id": 57111 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "\u907f\u96f7", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter #03", + "vod": "https://youtu.be/2s9KfMn1J9M?t=12265", + "entries": [ + { + "id": null, + "rank": 2, + "points": 170, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": "https://www.shadertoy.com/view/stcSW7", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_0b5vr.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_0b5vr.glsl" + }, + { + "id": null, + "rank": 1, + "points": 192, + "handle": { + "name": "phi16", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/flcSRB", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_phi16.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_phi16.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "murasaqi", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "\u907f\u96f7", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter #04", + "vod": "https://youtu.be/2s9KfMn1J9M?t=14123", + "entries": [ + { + "id": null, + "rank": 1, + "points": 173, + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/stcSDM", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_sp4ghet.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_sp4ghet.glsl" + }, + { + "id": null, + "rank": 2, + "points": 83, + "handle": { + "name": "gaz", + "demozoo_id": 63867 + }, + "shadertoy_url": null, + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gaz.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gaz.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "murasaqi", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "\u907f\u96f7", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi #01", + "vod": "https://youtu.be/bp37xTVNRrM?t=6101", + "entries": [ + { + "id": null, + "rank": 2, + "points": 141, + "handle": { + "name": "gam0022", + "demozoo_id": 63869 + }, + "shadertoy_url": null, + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_gam0022.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_gam0022.glsl" + }, + { + "id": null, + "rank": 1, + "points": 165, + "handle": { + "name": "Kamoshika", + "demozoo_id": 128644 + }, + "shadertoy_url": "https://www.shadertoy.com/view/7l3SRB", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_Kamoshika.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_Kamoshika.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "murasaqi", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "doxas", + "demozoo_id": 57111 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Niko_14", + "demozoo_id": null + }, + "job": "Live Set" + } + ] + }, + { + "title": "Semi #02", + "vod": "https://youtu.be/bp37xTVNRrM?t=8375", + "entries": [ + { + "id": null, + "rank": 1, + "points": 141, + "handle": { + "name": "phi16", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/Nl3XRB", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_phi16.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_phi16.glsl" + }, + { + "id": null, + "rank": 2, + "points": 76, + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Nl3SRB", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/semi/sender_sp4ghet_tdf2021.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/sender_sp4ghet_tdf2021.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "gam0022", + "demozoo_id": 63869 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "murasaqi", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "doxas", + "demozoo_id": 57111 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://youtu.be/bp37xTVNRrM?t=16006", + "entries": [ + { + "id": null, + "rank": 2, + "points": 214, + "handle": { + "name": "Kamoshika", + "demozoo_id": 128644 + }, + "shadertoy_url": "https://www.shadertoy.com/view/stcSRB", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_Kamoshika.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_Kamoshika.glsl" + }, + { + "id": null, + "rank": 1, + "points": 222, + "handle": { + "name": "phi16", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/Nl3XzB", + "preview_image": "2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_phi16.jpg", + "source_file": "/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_phi16.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "gaz", + "demozoo_id": 63867 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "gam0022", + "demozoo_id": 63869 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "murasaqi", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "doxas", + "demozoo_id": 57111 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "amagitakayosi", + "demozoo_id": null + }, + "job": "Commentators" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "aonoro", + "demozoo_id": 83577 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Falken", + "demozoo_id": 816 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "gyabo", + "demozoo_id": 17562 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Hole", + "demozoo_id": 24018 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "i-saint", + "demozoo_id": 24019 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Kioku", + "demozoo_id": 13188 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "notargs", + "demozoo_id": 63871 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "FL1NE", + "demozoo_id": 24017 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4357 +} diff --git a/data/2021_12_31_shader_jam_fieldfx.json b/data/2021_12_31_shader_jam_fieldfx.json new file mode 100644 index 000000000..ff3c4540a --- /dev/null +++ b/data/2021_12_31_shader_jam_fieldfx.json @@ -0,0 +1,118 @@ +{ + "title": "Field-FX Silvester", + "started": "2021-12-31", + "date": "31 December 2021", + "type": "Shader Jam", + "website": "https://field-fx.party/", + "flyer": "", + "vod": "https://youtu.be/Lz3z6gQCokY?t=10801", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": null, + "preview_image": "2021_12_31_shader_jam_fieldfx/grabber_silvester_0b5vr.jpg", + "source_file": "/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_0b5vr.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2021_12_31_shader_jam_fieldfx/grabber_silvester_monsieursoleil.jpg", + "source_file": "/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_monsieursoleil.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2021_12_31_shader_jam_fieldfx/grabber_silvester_rimina.jpg", + "source_file": "/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_rimina.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Tater", + "demozoo_id": 130920 + }, + "shadertoy_url": null, + "preview_image": "2021_12_31_shader_jam_fieldfx/grabber_silvester_Tater.jpg", + "source_file": "/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_Tater.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2021_12_31_shader_jam_fieldfx/grabber_silvester_totetmatt.jpg", + "source_file": "/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_totetmatt.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "LynnDrum", + "demozoo_id": 77648 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Crypt", + "demozoo_id": 63756 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4405 +} \ No newline at end of file diff --git a/data/2022_02_11_byte_jam_lovebyte.json b/data/2022_02_11_byte_jam_lovebyte.json new file mode 100644 index 000000000..44fdcdafb --- /dev/null +++ b/data/2022_02_11_byte_jam_lovebyte.json @@ -0,0 +1,88 @@ +{ + "title": "Lovebyte", + "started": "2022-02-11", + "date": "11 - 13 February 2022", + "vod": "https://www.youtube.com/watch?v=DYGI84rPPNs", + "type": "Byte Jam", + "website": "https://lovebyte.party/", + "flyer": "", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Byte Jam", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": 2597, + "source_file": "/shader_file_sources/2022_02_11_byte_jam_lovebyte/gasman_voyager.lua", + "preview_image": "2022_02_11_byte_jam_lovebyte/gasman_voyager.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "borb", + "demozoo_id": 126956 + }, + "shadertoy_url": null, + "tic80_cart_id": 2602, + "source_file": "/shader_file_sources/2022_02_11_byte_jam_lovebyte/borb_frogparty.lua", + "preview_image": "2022_02_11_byte_jam_lovebyte/borb_frogparty.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "tobach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2022_02_11_byte_jam_lovebyte/tobach_bytejam.lua", + "preview_image": "2022_02_11_byte_jam_lovebyte/tobach_bytejam.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "tic80_cart_id": 2600, + "source_file": "/shader_file_sources/2022_02_11_byte_jam_lovebyte/mantratronic_lb22jam.lua", + "preview_image": "2022_02_11_byte_jam_lovebyte/mantratronic_lb22jam.gif" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4378 +} \ No newline at end of file diff --git a/data/2022_02_12_byte_battle_lovebyte.json b/data/2022_02_12_byte_battle_lovebyte.json new file mode 100644 index 000000000..849e831c0 --- /dev/null +++ b/data/2022_02_12_byte_battle_lovebyte.json @@ -0,0 +1,373 @@ +{ + "title": "Lovebyte", + "started": "2022-02-12", + "date": "11 - 13 February 2022", + "type": "Byte Battle", + "vod": null, + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v062b", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Quarter Final #1", + "vod": "https://www.youtube.com/watch?v=lBhDFEGCaEw", + "keyword": "Dumplings", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 208, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "tic80_cart_id": 2610, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_visy.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/quarter_visy.gif" + }, + { + "id": 2, + "rank": 2, + "points": 145, + "handle": { + "name": "lynn", + "demozoo_id": 77648 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_lynn.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/quarter_lynn.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final #2", + "vod": "https://www.youtube.com/watch?v=gU9eyMuoVLQ", + "keyword": "Birds", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 104, + "handle": { + "name": "jobe", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_jobe.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/quarter_jobe.gif" + }, + { + "id": 2, + "rank": 1, + "points": 172, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_pestis.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/quarter_pestis.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final #3", + "vod": "https://www.youtube.com/watch?v=2JkD6JtzTW0", + "keyword": "Rainbows", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 192, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_dave84.lua", + "tic80_cart_id": 2604, + "preview_image": null + }, + { + "id": 2, + "rank": 2, + "points": 188, + "handle": { + "name": "pancelor", + "demozoo_id": null + }, + "shadertoy_url": null, + "source_file": null, + "tic80_cart_id": 2654, + "preview_image": null + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final #4", + "vod": "https://www.youtube.com/watch?v=BRS68kgYOf0", + "keyword": "Psycho Clock", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 193, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_totetmatt.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/quarter_totetmatt.gif" + }, + { + "id": 2, + "rank": 2, + "points": 159, + "handle": { + "name": "dresdenboy", + "demozoo_id": 64936 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_dresdenboy.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/quarter_dresdenboy.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final #1", + "vod": null, + "keyword": "Yurt", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 115, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_visy.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/semi_visy.gif" + }, + { + "id": 2, + "rank": 1, + "points": 171, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_pestis.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/semi_pestis.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final #2", + "vod": null, + "keyword": "Clouds", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 138, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_dave84.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/semi_dave84.gif" + }, + { + "id": 2, + "rank": 2, + "points": 99, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_totetmatt.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/semi_totetmatt.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": null, + "keyword": "Falling", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 272, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/final_pestis.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/final_pestis.gif" + }, + { + "id": 2, + "rank": 2, + "points": 145, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_02_12_byte_battle_lovebyte/final_dave84.lua", + "preview_image": "2022_02_12_byte_battle_lovebyte/final_dave84.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4378 +} \ No newline at end of file diff --git a/data/2022_04_15_shader_jam_revision_online.json b/data/2022_04_15_shader_jam_revision_online.json new file mode 100644 index 000000000..a16921a25 --- /dev/null +++ b/data/2022_04_15_shader_jam_revision_online.json @@ -0,0 +1,265 @@ +{ + "title": "Revision Satellite", + "started": "2022-04-15", + "date": "15 - 18 April 2022", + "type": "Shader Jam", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + }, + { + "name": "Bonzomatic Extra Texture", + "url": "https://livecode.demozoo.org/extra/revision_2022_extra_textures.zip", + "version": "Revision 2022", + "purpose": "Texture" + } + ], + "phases": [ + { + "title": "Shader Jam #1", + "vod": "https://www.youtube.com/watch?v=0KRaUtYpwMY", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "exca", + "demozoo_id": 35897 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_exca.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_exca.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Tater", + "demozoo_id": 130920 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_Tater.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_Tater.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_eimink.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_eimink.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ghost", + "demozoo_id": null + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Shader Jam #2", + "vod": "https://www.youtube.com/watch?v=V0UMPCgIYDk", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "exca", + "demozoo_id": 35897 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_exca.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_exca.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_evvvvil.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_evvvvil.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "kostik", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_kostik.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_kostik.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Shader Jam #3", + "vod": "https://www.youtube.com/watch?v=rOt789_TEiM", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": "https://www.shadertoy.com/view/stBcWy", + "preview_image": "2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_z0rg.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_z0rg.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_monsieursoleil.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_monsieursoleil.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_blackle.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_blackle.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "mack", + "demozoo_id": null + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Shader Jam #4", + "vod": "https://www.youtube.com/watch?v=fAEfWfQ5d5E", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "EmmazingGoose", + "demozoo_id": 121827 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_goose.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_goose.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_lechugafeliz.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_lechugafeliz.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_nusan.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_provod.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_provod.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_totetmatt.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_totetmatt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_wbcbz7.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_wbcbz7.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "wayfinder", + "demozoo_id": null + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 4424 +} \ No newline at end of file diff --git a/data/2022_04_15_shader_showdown_revision_online.json b/data/2022_04_15_shader_showdown_revision_online.json new file mode 100644 index 000000000..2d4b4ecde --- /dev/null +++ b/data/2022_04_15_shader_showdown_revision_online.json @@ -0,0 +1,512 @@ +{ + "title": "Revision Satellite", + "started": "2022-04-15", + "date": "15 - 18 April 2022", + "type": "Shader Showdown", + "vod": "https://www.youtube.com/watch?v=CoOqwPWkL_E", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + }, + { + "name": "Bonzomatic Extra Texture", + "url": "https://livecode.demozoo.org/extra/revision_2022_extra_textures.zip", + "version": "Revision 2022", + "purpose": "Texture" + } + ], + "phases": [ + { + "title": "Quarter Final 1", + "vod": "https://www.youtube.com/watch?v=CoOqwPWkL_E&t=261s", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/NlByzt", + "preview_image": "2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_exca.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_exca.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_monsieursoleil.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_monsieursoleil.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "liqube", + "demozoo_id": 88913 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 2", + "vod": "https://www.youtube.com/watch?v=CoOqwPWkL_E&t=2112s", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "poshbrolly_url":"https://www.poshbrolly.net/shader/4DJCGUFQATcQkmQWjsR8", + "shadertoy_url": "https://www.shadertoy.com/view/7ljcWV", + "preview_image": "2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_evvvvil.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_evvvvil.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_provod.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_provod.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "liqube", + "demozoo_id": 88913 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 3", + "vod": "https://www.youtube.com/watch?v=CoOqwPWkL_E&t=4074s", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Goose Goosington", + "demozoo_id": 121827 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_goose.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_goose.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_z0rg.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_z0rg.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "liqube", + "demozoo_id": 88913 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Quarter Final 4", + "vod": "https://www.youtube.com/watch?v=CoOqwPWkL_E&t=5997s", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": "https://www.shadertoy.com/view/NlBcRd", + "preview_image": "2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_blackle.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_blackle.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/sl2yW3", + "preview_image": "2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_totetmatt.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_totetmatt.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "liqube", + "demozoo_id": 88913 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 1", + "vod": "https://www.youtube.com/watch?v=Yy30yB829c4&t=132s", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Ntjczd", + "preview_image": "2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_exca.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_exca.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Goose Goosington", + "demozoo_id": 121827 + }, + "shadertoy_url": null, + "preview_image": "2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_goose.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_goose.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "liqube", + "demozoo_id": 88913 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 2", + "vod": "https://www.youtube.com/watch?v=Yy30yB829c4&t=1914s", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "poshbrolly_url":"https://www.poshbrolly.net/shader/DNowQUOsn9fMYU2CKvLh", + "shadertoy_url": "https://www.shadertoy.com/view/7l2yDV", + "preview_image": "2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_evvvvil.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_evvvvil.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Nl2yzt", + "preview_image": "2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_blackle.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_blackle.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "liqube", + "demozoo_id": 88913 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=367L1lvLf7U", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ft2czd", + "preview_image": "2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_exca.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_exca.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "poshbrolly_url":"https://www.poshbrolly.net/shader/3c4qvyeWUUKk6pgwtsU2", + "shadertoy_url": "https://www.shadertoy.com/view/NlSyWt", + "preview_image": "2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_evvvvil.jpg", + "source_file": "/shader_file_sources/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_evvvvil.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "liqube", + "demozoo_id": 88913 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4424 +} diff --git a/data/2022_05_02_byte_jam_fieldfx.json b/data/2022_05_02_byte_jam_fieldfx.json new file mode 100644 index 000000000..9dc11bb0a --- /dev/null +++ b/data/2022_05_02_byte_jam_fieldfx.json @@ -0,0 +1,66 @@ +{ + "title": "Field-FX", + "started": "2022-05-02", + "date": "02 - 05 June 2022", + "type": "Byte Jam", + "vod": null, + "website": "https://www.emfcamp.org/schedule/2022/98-shader-showdown-and-byte-battle", + "flyer": "", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_gasman.gif", + "source_file": "/shader_file_sources/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_tobach.gif", + "source_file": "/shader_file_sources/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_tobach.lua" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4301 +} \ No newline at end of file diff --git a/data/2022_05_02_shader_jam_fieldfx.json b/data/2022_05_02_shader_jam_fieldfx.json new file mode 100644 index 000000000..aed026e43 --- /dev/null +++ b/data/2022_05_02_shader_jam_fieldfx.json @@ -0,0 +1,77 @@ +{ + "title": "Field-FX", + "started": "2022-05-02", + "date": "02 - 05 June 2022", + "type": "Shader Jam", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/sdKyzh", + "preview_image": "2022_05_02_shader_jam_fieldfx/shader_MonsieurSoleil.jpg", + "source_file": "/shader_file_sources/2022_05_02_shader_jam_fieldfx/shader_MonsieurSoleil.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/fdGyz1", + "preview_image": "2022_05_02_shader_jam_fieldfx/shader_totetmatt.jpg", + "source_file": "/shader_file_sources/2022_05_02_shader_jam_fieldfx/shader_totetmatt.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4301 +} \ No newline at end of file diff --git a/data/2022_06_10_shader_jam_shadowparty.json b/data/2022_06_10_shader_jam_shadowparty.json new file mode 100644 index 000000000..9f2f03eb3 --- /dev/null +++ b/data/2022_06_10_shader_jam_shadowparty.json @@ -0,0 +1,89 @@ +{ + "title": "Shadow Party", + "started": "2022-06-10", + "date": "10 - 12 June 2022", + "type": "Shader Jam", + "vod": "https://www.youtube.com/watch?v=X04hFspGxKE", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "monsieursoleil", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "zavie", + "demozoo_id": 985 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": null, + "preview_image": "2022_06_10_shader_jam_shadowparty/z0rg.jpg", + "source_file": "/shader_file_sources/2022_06_10_shader_jam_shadowparty/z0rg.glsl" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "zavie", + "demozoo_id": 985 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4380 +} diff --git a/data/2022_07_22_byte_jam_mch.json b/data/2022_07_22_byte_jam_mch.json new file mode 100644 index 000000000..f7adb7e58 --- /dev/null +++ b/data/2022_07_22_byte_jam_mch.json @@ -0,0 +1,106 @@ +{ + "title": "MCH", + "started": "2022-07-22", + "date": "23 July 2022", + "type": "Byte Jam", + "vod": "https://archive.org/details/mch_2022_byte_battles", + "website": "https://wiki.mch2022.org/Projects:Demoparty", + "flyer": "", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Jam #1", + "vod": "https://www.youtube.com/watch?v=NRkNAIYmxqM&t=6s", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lynn", + "demozoo_id": 77648 + }, + "shadertoy_url": null, + "preview_image": "2022_07_22_byte_jam_mch/bytejam_mch_lynn.gif", + "source_file": "/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_lynn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "blinry", + "demozoo_id": 73839 + }, + "shadertoy_url": null, + "preview_image": "2022_07_22_byte_jam_mch/bytejam_mch_blinry.gif", + "source_file": "/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_blinry.lua", + "tic80_cart_id": 2953 + } + ], + "staffs": [] + }, + { + "title": "Jam #2", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2022_07_22_byte_jam_mch/bytejam_mch_superogue.gif", + "source_file": "/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_superogue.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2022_07_22_byte_jam_mch/bytejam_mch_gasman.gif", + "source_file": "/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_gasman.lua", + "tic80_cart_id": 2925 + } + ], + "staffs": [ + { + "handle": { + "name": "IO", + "demozoo_id": null + }, + "job": "DJ" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Dave borghuis", + "demozoo_id": null + }, + "job": "Organizer" + }, + { + "handle": { + "name": "Havoc", + "demozoo_id": 2419 + }, + "job": "Organizer" + } + ] +} \ No newline at end of file diff --git a/data/2022_08_05_shader_showdown_assembly.json b/data/2022_08_05_shader_showdown_assembly.json new file mode 100644 index 000000000..ca9189549 --- /dev/null +++ b/data/2022_08_05_shader_showdown_assembly.json @@ -0,0 +1,206 @@ +{ + "title": "Assembly Summer", + "started": "2022-08-05", + "date": "04 - 07 August 2022", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic/releases/tag/2022-07-08", + "version": "Gargaj - 2022-07-08", + "purpose": "Graphic" + }, + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi Final 1", + "vod": "https://www.twitch.tv/videos/1553049874?t=1h4m52s", + "entries": [ + { + "id": null, + "rank": 1, + "points": 907, + "handle": { + "name": "Rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_assembly/shader_asm_rimina_semifinal1.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_rimina_semifinal1.glsl" + }, + { + "id": null, + "rank": 2, + "points": 651, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_assembly/shader_asm_exca_semifinal1.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_exca_semifinal1.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Waffle", + "demozoo_id": 70 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Keministi", + "demozoo_id": null + }, + "job": "Dj" + } + ] + }, + { + "title": "Semi Final 2", + "vod": "https://www.twitch.tv/videos/1553049874?t=1h44m31s", + "entries": [ + { + "id": null, + "rank": 1, + "points": 1250, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_assembly/shader_asm_provod_semifinal2.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_provod_semifinal2.glsl" + }, + { + "id": null, + "rank": 2, + "points": 796, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_assembly/shader_asm_visy_semifinal2.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_visy_semifinal2.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Waffle", + "demozoo_id": 70 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Keministi", + "demozoo_id": null + }, + "job": "Dj" + } + ] + }, + { + "title": "Final", + "vod": "https://www.twitch.tv/videos/1554181420?t=0h19m15s", + "entries": [ + { + "id": null, + "rank": 1, + "points": 2058, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_assembly/shader_asm_provod_final.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_provod_final.glsl" + }, + { + "id": null, + "rank": 2, + "points": 1728, + "handle": { + "name": "Rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_assembly/shader_asm_rimina_final.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_rimina_final.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Waffle", + "demozoo_id": 70 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Byproduct", + "demozoo_id": 13699 + }, + "job": "Dj" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "job": "Organizer" + }, + { + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "job": "Organizer" + }, + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizer" + } + ], + "demozoo_party_id": 4270 +} \ No newline at end of file diff --git a/data/2022_08_05_shader_showdown_evoke.json b/data/2022_08_05_shader_showdown_evoke.json new file mode 100644 index 000000000..af85b1fc4 --- /dev/null +++ b/data/2022_08_05_shader_showdown_evoke.json @@ -0,0 +1,165 @@ +{ + "title": "Evoke", + "started": "2022-08-05", + "date": "05 - 07 August 2022", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic/releases/tag/2022-07-08", + "version": "Gargaj - 2022-07-08", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi Final 1", + "vod": "https://youtu.be/5woz5w0L6Nk", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_evoke/nusan_semi1.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_evoke/nusan_semi1.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_evoke/totetmatt_semi1.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_evoke/totetmatt_semi1.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Semi Final 2", + "vod": "https://youtu.be/5woz5w0L6Nk?t=1829", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_evoke/z0rg_semi1.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_evoke/z0rg_semi1.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/fl3yRS", + "preview_image": "2022_08_05_shader_showdown_evoke/flopine_semi2.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_evoke/flopine_semi2.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ronny", + "demozoo_id": 355 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Final", + "vod": "https://youtu.be/JZQ2dl4Lj3w", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_evoke/flopine_final.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_evoke/flopine_final.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2022_08_05_shader_showdown_evoke/totetmatt_final.jpg", + "source_file": "/shader_file_sources/2022_08_05_shader_showdown_evoke/totetmatt_final.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4422 +} \ No newline at end of file diff --git a/data/2022_08_06_byte_battle_lovebyte_turbo.json b/data/2022_08_06_byte_battle_lovebyte_turbo.json new file mode 100644 index 000000000..2ff7ac2fd --- /dev/null +++ b/data/2022_08_06_byte_battle_lovebyte_turbo.json @@ -0,0 +1,65 @@ +{ + "title": "Lovebyte Turbo", + "started": "2022-08-06", + "date": "06 August 2022 22h30 - 22h40", + "type": "Byte Battle", + "vod": "https://www.youtube.com/watch?v=RvQwjfax3Gw", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v062b", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Minute Tiny Final", + "vod": "https://files.scene.org/view/parties/2022/evoke22/misc/lovebyte_turbo_final.mp4", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2022_08_06_byte_battle_lovebyte_turbo/superogue.gif", + "source_file": "/shader_file_sources/2022_08_06_byte_battle_lovebyte_turbo/superogue.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "blossom", + "demozoo_id": 89867 + }, + "shadertoy_url": null, + "preview_image": "2022_08_06_byte_battle_lovebyte_turbo/blossom.gif", + "source_file": "/shader_file_sources/2022_08_06_byte_battle_lovebyte_turbo/blossom.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Jeenio", + "demozoo_id": 3048 + }, + "job": "Commenta..." + } + ] + } + ], + "staffs": [], + "demozoo_party_id": 4505 +} \ No newline at end of file diff --git a/data/2022_10_21_shader_seminar_CAFe.json b/data/2022_10_21_shader_seminar_CAFe.json new file mode 100644 index 000000000..81d4c6996 --- /dev/null +++ b/data/2022_10_21_shader_seminar_CAFe.json @@ -0,0 +1,47 @@ +{ + "title": "CAFe", + "started": "2022-10-21", + "date": "21 - 23 October 2022", + "type": "Shader Code Seminar", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Воркшоп: Первый шейдер в bonzomatic", + "vod": "https://www.youtube.com/watch?v=8OoG-l3Wl8c", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ivan Dianov", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [ + ] + } + ], + "staffs": [ + { + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4352 +} \ No newline at end of file diff --git a/data/2022_10_21_shader_showdown_CAFe.json b/data/2022_10_21_shader_showdown_CAFe.json new file mode 100644 index 000000000..a9715de4f --- /dev/null +++ b/data/2022_10_21_shader_showdown_CAFe.json @@ -0,0 +1,183 @@ +{ + "title": "CAFe", + "started": "2022-10-21", + "date": "21 - 23 October 2022", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi Final 1", + "vod": null, + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Jin X", + "demozoo_id": 81083 + }, + "shadertoy_url": null, + "preview_image": "2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_jin_x.jpg", + "source_file": "/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_jin_x.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Ivan Dianov", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_ivan_dianov.jpg", + "source_file": "/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_ivan_dianov.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "fatalsnipe", + "demozoo_id": 48649 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Semi Final 2", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Dart", + "demozoo_id": 9610 + }, + "shadertoy_url": null, + "preview_image": "2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_dart.jpg", + "source_file": "/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_dart.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "f0x", + "demozoo_id": 6043 + }, + "shadertoy_url": null, + "preview_image": "2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_f0x.jpg", + "source_file": "/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_f0x.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "fatalsnipe", + "demozoo_id": 48649 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Small Final (3rd place)", + "vod": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Jin X", + "demozoo_id": 81083 + }, + "shadertoy_url": null, + "preview_image": "2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_jin_x.jpg", + "source_file": "/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_jin_x.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "f0x", + "demozoo_id": 6043 + }, + "shadertoy_url": null, + "preview_image": "2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_f0x.dx11.jpg", + "source_file": "/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_f0x.dx11.hlsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Porno-UZI", + "demozoo_id": 32870 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Final", + "vod": null, + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Ivan Dianov", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_ivan_dianov.jpg", + "source_file": "/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_ivan_dianov.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Dart", + "demozoo_id": 9610 + }, + "shadertoy_url": null, + "preview_image": "2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_dart.jpg", + "source_file": "/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_dart.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Porno-UZI", + "demozoo_id": 32870 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4352 +} \ No newline at end of file diff --git a/data/2022_11_04_shader_royale_inercia.json b/data/2022_11_04_shader_royale_inercia.json new file mode 100644 index 000000000..54d882d42 --- /dev/null +++ b/data/2022_11_04_shader_royale_inercia.json @@ -0,0 +1,397 @@ +{ + "title": "In\u00e9rcia", + "started": "2022-11-04", + "date": "04 - 06 November 2022", + "type": "Shader Royale", + "website": "https://2022.inercia.pt", + "flyer": "", + "vod": "https://www.youtube.com/watch?v=IwseWSezE7U", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v12", + "version": "NuSan - v12", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": 23, + "rank": 1, + "points": 113, + "vod": "https://youtu.be/xAZE95dak04", + "handle": { + "name": "Kamoshika", + "demozoo_id": 128644 + }, + "shadertoy_url": "https://www.shadertoy.com/view/md2GWW", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Kamoshika.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Kamoshika.glsl" + }, + { + "id": 15, + "rank": 2, + "points": 102, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": "https://www.shadertoy.com/view/md23WD", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Nusan.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Nusan.glsl" + }, + { + "id": 13, + "rank": 3, + "points": 100, + "handle": { + "name": "Leon Denise", + "demozoo_id": 61858 + }, + "shadertoy_url": "https://www.shadertoy.com/view/md2GDD", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_leon.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_leon.glsl" + }, + { + "id": 11, + "rank": 4, + "points": 98, + "handle": { + "name": "kali", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/csjGDD", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kali.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kali.glsl" + }, + { + "id": 3, + "rank": 5, + "points": 85, + "handle": { + "name": "blackle", + "demozoo_id": 79215 + }, + "shadertoy_url": "https://www.shadertoy.com/view/DsjGWD", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_blackle.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_blackle.glsl" + }, + { + "id": 1, + "rank": 6, + "points": 81, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/mdS3Dw", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_totetmatt.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_totetmatt.glsl" + }, + { + "id": 22, + "rank": 6, + "points": 81, + "handle": { + "name": "Xor", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/cd23WD", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Xor.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Xor.glsl" + }, + { + "id": 27, + "rank": 8, + "points": 79, + "handle": { + "name": "Ivan Dianov", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/DdSGRG", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_IvanDianov.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_IvanDianov.glsl" + }, + { + "id": 12, + "rank": 9, + "points": 70, + "handle": { + "name": "kostik", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/mdj3DW", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kostik1337.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kostik1337.glsl" + }, + { + "id": 25, + "rank": 9, + "points": 70, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": "https://www.shadertoy.com/view/csBGWm", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_aldroid.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_aldroid.glsl" + }, + { + "id": 16, + "rank": 9, + "points": 70, + "handle": { + "name": "Provod", + "demozoo_id": 24024 + }, + "vod": "https://www.twitch.tv/videos/1643660750", + "shadertoy_url": null, + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_provod.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_provod.glsl" + }, + { + "id": 8, + "rank": 12, + "points": 64, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/cd2GWD", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_cosamentale.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_cosamentale.glsl" + }, + { + "id": 24, + "rank": 12, + "points": 64, + "handle": { + "name": "byt3m3chanic", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/cdSGWz", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_byt3m3chanic.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_byt3m3chanic.glsl" + }, + { + "id": 9, + "rank": 14, + "points": 56, + "handle": { + "name": "Flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/md23Dw", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_flopine.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_flopine.glsl" + }, + { + "id": 20, + "rank": 15, + "points": 55, + "handle": { + "name": "Blueberry", + "demozoo_id": 116 + }, + "shadertoy_url": null, + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Blueberry.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Blueberry.glsl" + }, + { + "id": 17, + "rank": 16, + "points": 54, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_rimina.glsl" + }, + { + "id": 6, + "rank": 17, + "points": 52, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": "https://www.shadertoy.com/view/csB3Dw", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_z0rg.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_z0rg.glsl" + }, + { + "id": 14, + "rank": 18, + "points": 51, + "handle": { + "name": "NR4", + "demozoo_id": 76970 + }, + "shadertoy_url": null, + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_NR4.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_NR4.glsl" + }, + { + "id": 7, + "rank": 19, + "points": 45, + "handle": { + "name": "branch", + "demozoo_id": 44254 + }, + "shadertoy_url": null, + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_branch.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_branch.glsl" + }, + { + "id": 4, + "rank": 20, + "points": 43, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Dd2GWD", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Exca.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Exca.glsl" + }, + { + "id": 18, + "rank": 21, + "points": 42, + "handle": { + "name": "Tater", + "demozoo_id": 130920 + }, + "shadertoy_url": null, + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Tater.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Tater.glsl" + }, + { + "id": 19, + "rank": 22, + "points": 41, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_visy.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_visy.glsl" + }, + { + "id": 21, + "rank": 22, + "points": 41, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": "https://www.shadertoy.com/view/msBGWw", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_musk.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_musk.glsl" + }, + { + "id": 26, + "rank": 24, + "points": 34, + "handle": { + "name": "glowcone", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_glowcone.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_glowcone.glsl" + }, + { + "id": 2, + "rank": 25, + "points": 30, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": "https://www.shadertoy.com/view/cs2GWD", + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_0b5vr.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_0b5vr.glsl" + }, + { + "id": 10, + "rank": 26, + "points": 29, + "handle": { + "name": "EmmazingGoose", + "demozoo_id": 121827 + }, + "shadertoy_url": null, + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.glsl" + }, + { + "id": 5, + "rank": 26, + "points": 29, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2022_11_04_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg", + "source_file": "/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "dextrose", + "demozoo_id": 21681 + }, + "job": "Live Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Alien01", + "demozoo_id": 108887 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4406 +} diff --git a/data/2022_11_05_byte_jam_inercia.json b/data/2022_11_05_byte_jam_inercia.json new file mode 100644 index 000000000..c4c93962c --- /dev/null +++ b/data/2022_11_05_byte_jam_inercia.json @@ -0,0 +1,123 @@ +{ + "title": "In\u00e9rcia", + "started": "2022-11-05", + "date": "05 November 2022", + "type": "Byte Jam", + "website": "http://inercia.pt", + "flyer": "", + "vod": "https://www.youtube.com/watch?v=vXC3minnyxw&ab_channel=In%C3%A9rciaDemoparty", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nico", + "demozoo_id": 131751 + }, + "shadertoy_url": null, + "preview_image": "2022_11_05_byte_jam_inercia/inerciabytejam_nico.gif", + "source_file": "/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_nico.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2022_11_05_byte_jam_inercia/inerciabytejam_gasman.gif", + "source_file": "/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_gasman.lua", + "tic80_cart_id": 3057 + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2022_11_05_byte_jam_inercia/inerciabytejam_tobach.gif", + "source_file": "/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_tobach.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2022_11_05_byte_jam_inercia/inerciabytejam_superogue.gif", + "source_file": "/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_superogue.lua", + "tic80_cart_id": 3072 + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "preview_image": "2022_11_05_byte_jam_inercia/inerciabytejam_dave84_1.gif", + "source_file": "/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_1.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "preview_image": "2022_11_05_byte_jam_inercia/inerciabytejam_dave84_2.gif", + "source_file": "/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_2.lua" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Alien01", + "demozoo_id": 108887 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4406 +} diff --git a/data/2022_11_14_byte_battle_fieldfx_monday_night_jam.json b/data/2022_11_14_byte_battle_fieldfx_monday_night_jam.json new file mode 100644 index 000000000..02a3cc2fc --- /dev/null +++ b/data/2022_11_14_byte_battle_fieldfx_monday_night_jam.json @@ -0,0 +1,58 @@ +{ + "title": "Monday Night Battle #01", + "started": "2022-11-14", + "date": "14 November 2022", + "type": "Byte Battle", + "vod": "https://www.youtube.com/watch?v=hv0qnu_94dc", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Byte Battle", + "keyword": "County Colours (Dublin vs. Limerick)", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 11, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2022_11_14_byte_battle_fieldfx_bbc/bytebattle/mantratronic-bytebattle.gif", + "source_file": "/shader_file_sources/2022_11_14_fieldfx_bbc/bytebattle/mantratronic.lua" + }, + { + "id": 2, + "rank": 1, + "points": 12, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "preview_image": "2022_11_14_byte_battle_fieldfx_bbc/bytebattle/dave84-bytebattle.gif", + "source_file": "/shader_file_sources/2022_11_14_fieldfx_bbc/bytebattle/dave84.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Host" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2022_11_14_byte_jam_fieldfx_monday_night_jam.json b/data/2022_11_14_byte_jam_fieldfx_monday_night_jam.json new file mode 100644 index 000000000..87dec2e48 --- /dev/null +++ b/data/2022_11_14_byte_jam_fieldfx_monday_night_jam.json @@ -0,0 +1,81 @@ +{ + "title": "Monday Night Jam #01", + "started": "2022-11-14", + "date": "14 November 2022", + "type": "Byte Jam", + "vod": "https://youtu.be/hv0qnu_94dc?t=1828", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2022_11_14_byte_jam_fieldfx_bbc/bytejam/mantratronic-jam.gif", + "source_file": "/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/mantratronic.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "preview_image": "2022_11_14_byte_jam_fieldfx_bbc/bytejam/dave84-jam.gif", + "source_file": "/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/dave84.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2022_11_14_byte_jam_fieldfx_bbc/bytejam/tobach-jam.gif", + "source_file": "/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/tobach.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2022_11_14_byte_jam_fieldfx_bbc/bytejam/aldroid-jam.gif", + "source_file": "/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/aldroid.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Host" + } + ] + } + ], + "staffs": [], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2022_11_21_byte_jam_fieldfx_monday_night_jam.json b/data/2022_11_21_byte_jam_fieldfx_monday_night_jam.json new file mode 100644 index 000000000..e155efe57 --- /dev/null +++ b/data/2022_11_21_byte_jam_fieldfx_monday_night_jam.json @@ -0,0 +1,111 @@ +{ + "title": "Monday Night Jam #02", + "started": "2022-11-21", + "date": "21 November 2022", + "type": "Byte Jam", + "vod": "https://www.youtube.com/watch?v=iSdosPfvmiM", + "website": "", + "flyer": "", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "djH0ffman", + "demozoo_id": 1525 + }, + "job": "Dj Set" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/mantratronic.lua", + "preview_image": "2022_11_21_byte_jam_fieldfx_casual/mantratronic.gif" + }, + { + "id": 2, + "rank": null, + "points": null, + "handle": { + "name": "Totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/totetmatt.lua", + "preview_image": "2022_11_21_byte_jam_fieldfx_casual/totetmatt.gif" + }, + { + "id": 3, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/tobach.lua", + "preview_image": "2022_11_21_byte_jam_fieldfx_casual/tobach.gif" + }, + { + "id": 4, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/gasman.lua", + "preview_image": "2022_11_21_byte_jam_fieldfx_casual/gasman.gif" + }, + { + "id": 5, + "rank": null, + "points": null, + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 3073, + "source_file": "/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/superogue.lua", + "preview_image": "2022_11_21_byte_jam_fieldfx_casual/superogue.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2022_11_28_byte_jam_fieldfx_monday_night_jam.json b/data/2022_11_28_byte_jam_fieldfx_monday_night_jam.json new file mode 100644 index 000000000..197ccf5ec --- /dev/null +++ b/data/2022_11_28_byte_jam_fieldfx_monday_night_jam.json @@ -0,0 +1,91 @@ +{ + "title": "Monday Night Jam #03", + "started": "2022-11-28", + "date": "28 November 2022", + "type": "Byte Jam", + "vod": "https://www.youtube.com/watch?v=eFWaYcnJS7c", + "website": "", + "flyer": "", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/mantratronic.lua", + "preview_image": "2022_11_28_byte_jam_fieldfx_casual/mantratronic.gif" + }, + { + "id": 2, + "rank": null, + "points": null, + "handle": { + "name": "Visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/visy.lua", + "preview_image": "2022_11_28_byte_jam_fieldfx_casual/visy.gif" + }, + { + "id": 3, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/tobach.lua", + "preview_image": "2022_11_28_byte_jam_fieldfx_casual/tobach.gif" + }, + { + "id": 4, + "rank": null, + "points": null, + "handle": { + "name": "Sir Garbagetruck", + "demozoo_id": 3143 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/truck.fnl", + "preview_image": "2022_11_28_byte_jam_fieldfx_casual/truck.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2022_12_05_byte_jam_fieldfx_monday_night_jam.json b/data/2022_12_05_byte_jam_fieldfx_monday_night_jam.json new file mode 100644 index 000000000..5b58f025e --- /dev/null +++ b/data/2022_12_05_byte_jam_fieldfx_monday_night_jam.json @@ -0,0 +1,91 @@ +{ + "title": "Monday Night Jam #04", + "started": "2022-12-05", + "date": "05 December 2022", + "type": "Byte Jam", + "vod": "https://www.youtube.com/watch?v=rDNqPRb06rM", + "website": "", + "flyer": "", + "software_used": [ + { + "name": "TIC-80", + "url": "https://tic80.com/", + "version": "tic80showdown v07", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/dave84.lua", + "preview_image": "2022_12_05_byte_jam_fieldfx_casual/dave84.gif" + }, + { + "id": 2, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/gasman.lua", + "preview_image": "2022_12_05_byte_jam_fieldfx_casual/gasman.gif" + }, + { + "id": 3, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/tobach.lua", + "preview_image": "2022_12_05_byte_jam_fieldfx_casual/tobach.gif" + }, + { + "id": 4, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/aldroid.lua", + "preview_image": "2022_12_05_byte_jam_fieldfx_casual/aldroid.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2022_12_12_byte_jam_fieldfx_monday_night_jam.json b/data/2022_12_12_byte_jam_fieldfx_monday_night_jam.json new file mode 100644 index 000000000..f9a676be5 --- /dev/null +++ b/data/2022_12_12_byte_jam_fieldfx_monday_night_jam.json @@ -0,0 +1,99 @@ +{ + "title": "Monday Night Jam #05", + "started": "2022-12-12", + "date": "12 December 2022", + "type": "Byte Jam", + "vod": null, + "website": "", + "flyer": "", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.0", + "version": "tic80showdown FFT Hack", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/mantratronic.lua", + "preview_image": "2022_12_12_byte_jam_fieldfx_casual/mantratronic.gif" + }, + { + "id": 2, + "rank": null, + "points": null, + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 3494, + "source_file": "/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/superogue.lua", + "preview_image": "2022_12_12_byte_jam_fieldfx_casual/superogue.gif" + }, + { + "id": 3, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/tobach.lua", + "preview_image": "2022_12_12_byte_jam_fieldfx_casual/tobach.gif" + }, + { + "id": 4, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/aldroid.lua", + "preview_image": "2022_12_12_byte_jam_fieldfx_casual/aldroid.png" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "DJ Set" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2022_12_19_byte_jam_fieldfx_monday_night_jam.json b/data/2022_12_19_byte_jam_fieldfx_monday_night_jam.json new file mode 100644 index 000000000..ffa7fd2a8 --- /dev/null +++ b/data/2022_12_19_byte_jam_fieldfx_monday_night_jam.json @@ -0,0 +1,92 @@ +{ + "title": "Monday Night Jam #06", + "started": "2022-12-19", + "date": "19 December 2022", + "type": "Byte Jam", + "vod": null, + "website": "", + "flyer": "", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.0", + "version": "tic80showdown FFT Hack", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "Kii Krindar", + "demozoo_id": 135296 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/kiikrindar.lua", + "preview_image": "2022_12_19_byte_jam_fieldfx_casual/kiikrindar.gif" + }, + { + "id": 2, + "rank": null, + "points": null, + "handle": { + "name": "Mr Synackster", + "demozoo_id": 130883 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/mrsynackster.lua", + "preview_image": "2022_12_19_byte_jam_fieldfx_casual/mrsynackster.gif" + }, + { + "id": 3, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/tobach.lua", + "preview_image": "2022_12_19_byte_jam_fieldfx_casual/tobach.gif" + }, + { + "id": 4, + "rank": null, + "points": null, + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 3495, + "source_file": "/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/superogue.lua", + "preview_image": "2022_12_19_byte_jam_fieldfx_casual/superogue.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_01_02_byte_jam_monday_night_bytes.json b/data/2023_01_02_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..7eb79c12f --- /dev/null +++ b/data/2023_01_02_byte_jam_monday_night_bytes.json @@ -0,0 +1,85 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-01-02", + "date": "02 January 2023", + "type": "Byte Jam", + "website": "https://field-fx.party", + "flyer": "", + "vod": "", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/mantratronic.lua", + "preview_image": "2023_01_02_byte_jam_monday_night_bytes/mantratronic.png" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Kii", + "demozoo_id": 135296 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/kiikrindar.lua", + "preview_image": "2023_01_02_byte_jam_monday_night_bytes/kiikrindar.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/tobach.lua", + "preview_image": "2023_01_02_byte_jam_monday_night_bytes/tobach.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/alia.lua", + "preview_image": "2023_01_02_byte_jam_monday_night_bytes/alia.gif" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" + } + diff --git a/data/2023_01_09_byte_jam_monday_night_bytes.json b/data/2023_01_09_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..73125cb60 --- /dev/null +++ b/data/2023_01_09_byte_jam_monday_night_bytes.json @@ -0,0 +1,84 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-01-09", + "date": "09 January 2023", + "type": "Byte Jam", + "website": "https://field-fx.party", + "flyer": "", + "vod": "", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Byte Jam", + "vod": null, + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/mantratronic.lua", + "preview_image": "2023_01_09_byte_jam_monday_night_bytes/mantratronic.gif" + }, + { + "id": 2, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/gasman.lua", + "preview_image": "2023_01_09_byte_jam_monday_night_bytes/gasman.gif" + }, + { + "id": 3, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/tobach.lua", + "preview_image": "2023_01_09_byte_jam_monday_night_bytes/tobach.gif" + }, + { + "id": 4, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/alia.lua", + "preview_image": "2023_01_09_byte_jam_monday_night_bytes/alia.gif" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_01_14_byte_jam_lovebyte_get_ready.json b/data/2023_01_14_byte_jam_lovebyte_get_ready.json new file mode 100644 index 000000000..bc9ff47c8 --- /dev/null +++ b/data/2023_01_14_byte_jam_lovebyte_get_ready.json @@ -0,0 +1,98 @@ +{ + "title": "Get Ready for Lovebyte", + "started": "2023-01-14", + "date": "14 January 2023", + "type": "Byte Jam", + "vod": null, + "website": "https://lovebyte.party", + "flyer": "", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "evilpaul", + "demozoo_id": 548 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/evilpaul.lua", + "preview_image": "2023_01_14_byte_jam_lovebyte_get_ready/evilpaul.gif" + }, + { + "id": 2, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/mantratronic.lua", + "preview_image": "2023_01_14_byte_jam_lovebyte_get_ready/mantratronic.png" + }, + { + "id": 3, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/tobach.lua", + "preview_image": "2023_01_14_byte_jam_lovebyte_get_ready/tobach.gif" + }, + { + "id": 4, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/alia.lua", + "preview_image": "2023_01_14_byte_jam_lovebyte_get_ready/alia.png" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "DJ Set" + } + ] + } + ], + "demozoo_party_id": 4596 +} diff --git a/data/2023_01_23_byte_jam_monday_night_bytes.json b/data/2023_01_23_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..3a759af30 --- /dev/null +++ b/data/2023_01_23_byte_jam_monday_night_bytes.json @@ -0,0 +1,89 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-01-23", + "date": "23 January 2023", + "type": "Byte Jam", + "website": "https://field-fx.party", + "flyer": "", + "vod": "", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/aldroid.lua", + "preview_image": "2023_01_23_byte_jam_monday_night_bytes/aldroid.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "source_file": "/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/gasman.lua", + "preview_image": "2023_01_23_byte_jam_monday_night_bytes/gasman.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Kii", + "demozoo_id": 135296 + }, + "source_file": "/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/kiikrinder.lua", + "preview_image": "2023_01_23_byte_jam_monday_night_bytes/kiikrinder.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nico", + "demozoo_id": 131751 + }, + "source_file": "/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/nico.lua", + "preview_image": "2023_01_23_byte_jam_monday_night_bytes/nico.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2023_01_30_byte_jam_monday_night_bytes.json b/data/2023_01_30_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..443145c56 --- /dev/null +++ b/data/2023_01_30_byte_jam_monday_night_bytes.json @@ -0,0 +1,89 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-01-30", + "date": "30 January 2023", + "type": "Byte Jam", + "website": "https://field-fx.party", + "flyer": "", + "vod": "", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evilpaul", + "demozoo_id": 548 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/evilpaul.lua", + "preview_image": "2023_01_30_byte_jam_monday_night_bytes/evilpaul.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "MrSynAckSter", + "demozoo_id": 130883 + }, + "source_file": "/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/mrsynackster.lua", + "preview_image": "2023_01_30_byte_jam_monday_night_bytes/mrsynackster.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Sir Garbagetruk", + "demozoo_id": 3143 + }, + "source_file": "/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/truck.fennel", + "preview_image": "2023_01_30_byte_jam_monday_night_bytes/truck.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "source_file": "/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/tobach.lua", + "preview_image": "2023_01_30_byte_jam_monday_night_bytes/tobach.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" + } \ No newline at end of file diff --git a/data/2023_02_10_byte_battle_lovebyte.json b/data/2023_02_10_byte_battle_lovebyte.json new file mode 100644 index 000000000..a2acc003e --- /dev/null +++ b/data/2023_02_10_byte_battle_lovebyte.json @@ -0,0 +1,343 @@ +{ + "title": "Lovebyte Byte Battle Extravaganza", + "started": "2023-02-10", + "date": "10 - 12 February 2023", + "type": "Byte Battle", + "vod": null, + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Extravaganza #01 - 512b - 25min", + "vod": "https://www.youtube.com/watch?v=WD_4j0xSJIg", + "keyword": "Picknick", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 155, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/alia.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/alia.gif" + }, + { + "id": 2, + "rank": 2, + "points": 117, + "handle": { + "name": "orby", + "demozoo_id": 53612 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/orby.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/orby.png" + } + ], + "staffs": [ + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Extravaganza #02 - 128b - 15min", + "vod": "https://www.youtube.com/watch?v=E44fcQwgXHI", + "keyword": "Industrial", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 108, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/alia.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/alia.gif" + }, + { + "id": 2, + "rank": 1, + "points": 160, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/pestis.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/pestis.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "orby", + "demozoo_id": 53612 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Extravaganza #03 - 256b - 25min", + "vod": "https://www.youtube.com/watch?v=HlWqR_-X5gc", + "keyword": null, + "entries": [ + { + "id": 1, + "rank": 2, + "points": 86, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/gasman.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/gasman.gif" + }, + { + "id": 2, + "rank": 1, + "points": 103, + "handle": { + "name": "pestis", + "demozoo_id": 44058 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/pestis.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/pestis.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "orby", + "demozoo_id": 53612 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Extravaganza #04 - 512b - 25min", + "vod": "https://www.youtube.com/watch?v=9MYNcKQGsk8", + "keyword": "Clippy", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 103, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/gasman.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/gasman.gif" + }, + { + "id": 2, + "rank": 2, + "points": 90, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/tobach.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/tobach.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "orby", + "demozoo_id": 53612 + }, + "job": "Commentators" + } + ] + }, + { + "title": "Extravaganza #05 - Battle Jam - 25min", + "vod": "https://www.youtube.com/watch?v=kDuvQDmlt_4", + "keyword": null, + "entries": [ + + { + "id": 3, + "rank": 1, + "points": 136, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/mantratronic.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/battle_jam/mantratronic.gif" + }, + { + "id": 1, + "rank": 2, + "points": 127, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/alia.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/battle_jam/alia.gif" + }, + { + "id": 2, + "rank": 3, + "points": 126, + "handle": { + "name": "orby", + "demozoo_id": 53612 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/orby.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/battle_jam/orby.gif" + }, + { + "id": 4, + "rank": 4, + "points": 108, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/tobach.lua", + "preview_image": "2023_02_10_byte_battle_lovebyte/battle_jam/tobach.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "okkie", + "demozoo_id": 3049 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "blossom", + "demozoo_id": 89867 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Main Organizers" + }, + { + "handle": { + "name": "The Watcher", + "demozoo_id": 15853 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4492 +} \ No newline at end of file diff --git a/data/2023_02_10_byte_jam_lovebyte.json b/data/2023_02_10_byte_jam_lovebyte.json new file mode 100644 index 000000000..d57ab5179 --- /dev/null +++ b/data/2023_02_10_byte_jam_lovebyte.json @@ -0,0 +1,144 @@ +{ + "title": "Lovebyte", + "started": "2023-02-10", + "date": "10 - 12 February 2023", + "type": "Byte Jam", + "vod": "https://www.youtube.com/watch?v=7UOLfIKB2OQ", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Byte Jam", + "vod": null, + "keyword": null, + "entries": [ + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "blossom", + "demozoo_id": 89867 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/blossom.lua", + "preview_image": "2023_02_10_byte_jam_lovebyte/byte_jam/blossom.png" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/mantratronic.lua", + "preview_image": "2023_02_10_byte_jam_lovebyte/byte_jam/mantratronic.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/tobach.lua", + "preview_image": "2023_02_10_byte_jam_lovebyte/byte_jam/tobach.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/visy.lua", + "preview_image": "2023_02_10_byte_jam_lovebyte/byte_jam/visy.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "blossom", + "demozoo_id": 89867 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Main Organizers" + }, + { + "handle": { + "name": "The Watcher", + "demozoo_id": 15853 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4492 +} diff --git a/data/2023_02_20_byte_jam_monday_night_bytes.json b/data/2023_02_20_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..305558da2 --- /dev/null +++ b/data/2023_02_20_byte_jam_monday_night_bytes.json @@ -0,0 +1,89 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-02-20", + "date": "20 February 2023", + "type": "Byte Jam", + "website": "https://field-fx.party", + "flyer": "", + "vod": "", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/gasman.lua", + "preview_image": "2023_02_20_byte_jam_monday_night_bytes/gasman.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "source_file": "/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/jtruk.lua", + "preview_image": "2023_02_20_byte_jam_monday_night_bytes/jtruk.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Luchak", + "demozoo_id": 135702 + }, + "source_file": "/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/luchak.lua", + "preview_image": "2023_02_20_byte_jam_monday_night_bytes/luchak.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "source_file": "/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/tobach.lua", + "preview_image": "2023_02_20_byte_jam_monday_night_bytes/tobach.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" + } \ No newline at end of file diff --git a/data/2023_02_27_byte_jam_monday_night_bytes.json b/data/2023_02_27_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..6ddb39aea --- /dev/null +++ b/data/2023_02_27_byte_jam_monday_night_bytes.json @@ -0,0 +1,77 @@ +{ + "title": "Monday Night Bytes", + "type": "Byte Jam", + "website": "https://field-fx.party", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "handle": { + "name": "doop", + "demozoo_id": 141174 + }, + "source_file": "/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/doop.lua", + "preview_image": "2023_02_27_byte_jam_monday_night_bytes/doop.png" + }, + { + "id": 2, + "handle": { + "name": "tobach", + "demozoo_id": 89891 + }, + "source_file": "/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/tobach.lua", + "preview_image": "2023_02_27_byte_jam_monday_night_bytes/tobach.png" + }, + { + "id": 3, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "source_file": "/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/alia.lua", + "preview_image": "2023_02_27_byte_jam_monday_night_bytes/alia.png" + }, + { + "id": 4, + "handle": { + "name": "mrsynackster", + "demozoo_id": 130883 + }, + "source_file": "/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/mrsynackster.lua", + "preview_image": "2023_02_27_byte_jam_monday_night_bytes/mrsynackster.png" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM", + "started": "2023-02-27", + "date": "27 February 2023" +} diff --git a/data/2023_03_02_shader_showdown_instanssi.json b/data/2023_03_02_shader_showdown_instanssi.json new file mode 100644 index 000000000..8fcc21e5c --- /dev/null +++ b/data/2023_03_02_shader_showdown_instanssi.json @@ -0,0 +1,259 @@ +{ + "title": "Instanssi Varjostimien Näytösottelu", + "started": "2023-03-02", + "date": "02 - 05 March 2023", + "type": "Shader Showdown", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic/releases/tag/2022-07-08", + "version": "Gargaj - 2022-07-08", + "purpose": "Graphic" + }, + { + "name": "Texture Pack", + "url": "/shader_file_sources/2023_03_02_shader_showdown_instanssi/textures.zip", + "version": "Instanssi", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round 1.1", + "vod": "https://www.youtube.com/watch?v=E3V8XW_do2A", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2023_03_02_shader_showdown_instanssi/r1_pumpuli.jpg", + "source_file": "/shader_file_sources/2023_03_02_shader_showdown_instanssi/r1_pumpuli.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Kahvi", + "demozoo_id": 30233 + }, + "shadertoy_url": null, + "preview_image": "2023_03_02_shader_showdown_instanssi/r1_Kahvi.jpg", + "source_file": "/shader_file_sources/2023_03_02_shader_showdown_instanssi/r1_Kahvi.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Danacat", + "demozoo_id": null + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Papumaja", + "demozoo_id": 76637 + }, + "job": "Commentators" + } + ] + }, { + "title": "Round 1.2", + "vod": "https://www.youtube.com/watch?v=E3V8XW_do2A&t=1770s", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Papumaja", + "demozoo_id": 76637 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Gemppu", + "demozoo_id": 87308 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "Danacat", + "demozoo_id": null + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Pumpuli", + "demozoo_id": 22208 + }, + "job": "Commentators" + } + ] + }, { + "title": "Round 2.1", + "vod": "https://www.youtube.com/watch?v=E3V8XW_do2A&t=3260s", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Nordic Goat", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Kahvikello", + "demozoo_id": 60491 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "Danacat", + "demozoo_id": null + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Pumpuli", + "demozoo_id": 22208 + }, + "job": "Commentators" + } + ] + }, { + "title": "Round 2.2", + "vod": "https://www.youtube.com/watch?v=E3V8XW_do2A&t=4855s", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Papumaja", + "demozoo_id": 76637 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Kahvikello", + "demozoo_id": 60491 + }, + "shadertoy_url": null, + "preview_image": "2023_03_02_shader_showdown_instanssi/r2.2_Kahvi.jpg", + "source_file": "/shader_file_sources/2023_03_02_shader_showdown_instanssi/r2.2_Kahvi.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Danacat", + "demozoo_id": null + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "Pumpuli", + "demozoo_id": 22208 + }, + "job": "Commentators" + } + ] + }, { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=yxY25wbnFxE", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Papumaja", + "demozoo_id": 76637 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "Nordic Goat", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_03_02_shader_showdown_instanssi/r3_NordicGoat.jpg", + "source_file": "/shader_file_sources/2023_03_02_shader_showdown_instanssi/r3_NordicGoat.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Danacat", + "demozoo_id": null + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "BFlorry", + "demozoo_id": 112769 + }, + "job": "Commentators" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Pumpuli", + "demozoo_id": 22208 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4520 +} diff --git a/data/2023_03_06_byte_jam_monday_night_bytes.json b/data/2023_03_06_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..bc86e0652 --- /dev/null +++ b/data/2023_03_06_byte_jam_monday_night_bytes.json @@ -0,0 +1,77 @@ +{ + "title": "Monday Night Bytes", + "type": "Byte Jam", + "website": "https://field-fx.party", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "source_file": "/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/visy.lua", + "preview_image": "2023_03_06_byte_jam_monday_night_bytes/visy.png" + }, + { + "id": 2, + "handle": { + "name": "kii", + "demozoo_id": 135296 + }, + "source_file": "/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/kii.lua", + "preview_image": "2023_03_06_byte_jam_monday_night_bytes/kii.png" + }, + { + "id": 3, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "source_file": "/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/alia.lua", + "preview_image": "2023_03_06_byte_jam_monday_night_bytes/alia.png" + }, + { + "id": 4, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "source_file": "/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/gasman.lua", + "preview_image": "2023_03_06_byte_jam_monday_night_bytes/gasman.png" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM", + "started": "2023-03-06", + "date": "06 March 2023" +} diff --git a/data/2023_03_13_byte_jam_monday_night_bytes.json b/data/2023_03_13_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..5f7316502 --- /dev/null +++ b/data/2023_03_13_byte_jam_monday_night_bytes.json @@ -0,0 +1,100 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-03-13", + "date": "13 March 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Evilpaul", + "demozoo_id": 548 + }, + "shadertoy_url": null, + "preview_image": "2023_03_13_byte_jam_monday_night_bytes/evilpaul.gif", + "source_file": "/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/evilpaul.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_03_13_byte_jam_monday_night_bytes/jtruk.gif", + "source_file": "/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_03_13_byte_jam_monday_night_bytes/mantratronic.png", + "source_file": "/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/mantratronic.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_03_13_byte_jam_monday_night_bytes/tobach.gif", + "source_file": "/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/tobach.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Synesthesia", + "demozoo_id": 43672 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2023_03_20_byte_jam_monday_night_bytes.json b/data/2023_03_20_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..c3f4f0c42 --- /dev/null +++ b/data/2023_03_20_byte_jam_monday_night_bytes.json @@ -0,0 +1,93 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-03-20", + "date": "20 March 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_03_20_byte_jam_monday_night_bytes/alia.gif", + "source_file": "/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_03_20_byte_jam_monday_night_bytes/mantratronic.gif", + "source_file": "/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/mantratronic.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "MrSynAckSter", + "demozoo_id": 130883 + }, + "shadertoy_url": null, + "preview_image": "2023_03_20_byte_jam_monday_night_bytes/mrsynackster.gif", + "source_file": "/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/mrsynackster.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2023_04_08_shader_jam_revision.json b/data/2023_04_08_shader_jam_revision.json new file mode 100644 index 000000000..60c633d41 --- /dev/null +++ b/data/2023_04_08_shader_jam_revision.json @@ -0,0 +1,287 @@ +{ + "title": "Revision", + "started": "2023-04-08", + "date": "07 - 10 April 2023", + "type": "Shader Jam", + "website": "https://2023.revision-party.net/", + "flyer": "", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": "https://www.youtube.com/watch?v=4PLvWh8-z2M", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": "https://www.shadertoy.com/view/DsGXW1", + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_0b5vr.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_0b5vr.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_aldroid.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_aldroid.glsl" + } + , + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "poshbrolly_url":"https://www.poshbrolly.net/shader/TKSM7upc3kIUFHks8z3m", + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_alien.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_alien.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dok", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_dok.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_dok.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "eimink", + "demozoo_id": 32692 + }, + "shadertoy_url": "https://www.shadertoy.com/view/dsySW1", + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_eimink.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_eimink.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/DdGXW1", + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_exca.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_exca.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "flopin", + "demozoo_id": 88962 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_flopin.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_flopin.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ivan Dianov", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_ivan_dianov.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_ivan_dianov.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "kali", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/ddySWh", + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_kali.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_kali.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "kostik", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/dsyXW1", + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_kostik.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_kostik.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_nusan.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_rimina.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_rimina.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "silvester747", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_silvester747.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_silvester747.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_superogue.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_superogue.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_totetmatt.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_totetmatt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_visy.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_visy.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_wbcbz7.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_wbcbz7.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Xor", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_shader_jam_revision/grabber_revision2023_xor.jpg", + "source_file": "/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_Xor.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Vj" + }, + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "job": "Assistant" + } + ], + "demozoo_party_id":4569 +} diff --git a/data/2023_04_08_shader_showdown_revision.json b/data/2023_04_08_shader_showdown_revision.json new file mode 100644 index 000000000..a2232e2ae --- /dev/null +++ b/data/2023_04_08_shader_showdown_revision.json @@ -0,0 +1,316 @@ +{ + "title": "Revision", + "started": "2023-04-08", + "date": "07 - 10 April 2023", + "type": "Shader Showdown", + "website": "https://2023.revision-party.net/", + "flyer": "", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + }, + { + "name": "Bonzomatic Extra Texture", + "url": "https://livecode.demozoo.org/extra/revision_2023_extra_textures.zip", + "version": "Revision 2023", + "purpose": "Texture" + } + + ], + "phases": [ + { + "title": "Qualifier 1", + "vod": "https://www.youtube.com/watch?v=55ybKWtfKjQ", + "entries": [ + { + "id": 1, + "rank": 2, + "points": 803, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_musk.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_musk.glsl" + }, + { + "id": 2, + "rank": 1, + "points": 1113, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/DdKXWh", + "preview_image": "2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_flopine.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_flopine.glsl" + }, + { + "id": 3, + "rank": 3, + "points": 781, + "handle": { + "name": "molive", + "demozoo_id": 72284 + }, + "shadertoy_url": null, + "preview_image": "2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_molive.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_molive.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "subi", + "demozoo_id": 21306 + }, + "job": "Dj Set" + } + ] + }, + { + "title": "Qualifier 2", + "vod": "https://youtu.be/55ybKWtfKjQ?t=1782", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 1163, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "poshbrolly_url":"https://www.poshbrolly.net/shader/wdh0cfgKU4rLwP9mlqCI", + "shadertoy_url": "https://www.shadertoy.com/view/cltGW8", + "preview_image": "2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_evvvvil.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_evvvvil.glsl" + }, + { + "id": 2, + "rank": 2, + "points": 777, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": null, + "preview_image": "2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_z0rg.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_z0rg.glsl" + }, + { + "id": 3, + "rank": 3, + "points": 624, + "handle": { + "name": "dok", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_dok.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_dok.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "Dj Set" + } + ] + }, { + "title": "Qualifier 3", + "vod": "https://youtu.be/55ybKWtfKjQ?t=3424", + "entries": [ + { + "id": 1, + "rank": 3, + "points": 677, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/DsVSRK", + "preview_image": "2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_cosamentale.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_cosamentale.glsl" + }, + { + "id": 2, + "rank": 1, + "points": 769, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_totetmatt.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_totetmatt.glsl" + }, + { + "id": 3, + "rank": 2, + "points": 696, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_nusan.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_nusan.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Jeenio", + "demozoo_id": 3048 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + } + ] + }, { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=EJ7KAD0NyGw", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 1136, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "poshbrolly_url":"https://www.poshbrolly.net/shader/4eTDcSYGzKdjlFmbBJ6b", + "shadertoy_url": "https://www.shadertoy.com/view/mlc3W7", + "preview_image": "2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_evvvvil.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_evvvvil.glsl" + }, + { + "id": 2, + "rank": 2, + "points": 1027, + "handle": { + "name": "flopine", + "demozoo_id": 65988 + }, + "shadertoy_url": "https://www.shadertoy.com/view/cdKSDh", + "preview_image": "2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_flopine.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_flopine.glsl" + }, + { + "id": 3, + "rank": 3, + "points": 615, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_totetmatt.jpg", + "source_file": "/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_totetmatt.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Commentators" + }, + { + "handle": { + "name": "Alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "job": "Assistant" + } + ], + "demozoo_party_id":4569 +} diff --git a/data/2023_04_08_tic80_jam_revision.json b/data/2023_04_08_tic80_jam_revision.json new file mode 100644 index 000000000..428ccaf0c --- /dev/null +++ b/data/2023_04_08_tic80_jam_revision.json @@ -0,0 +1,142 @@ +{ + "title": "Revision", + "started": "2023-04-08", + "date": "07 - 10 April 2023", + "type": "Byte Jam", + "website": "https://2023.revision-party.net/", + "flyer": "", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": "https://www.youtube.com/watch?v=yF6f_nAQvpc", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_tic80_jam_revision/showdown_musk.gif", + "source_file": "/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_musk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "mrsynackster", + "demozoo_id": 130883 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_tic80_jam_revision/showdown_mrsyn.gif", + "source_file": "/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_mrsyn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_tic80_jam_revision/showdown_nusan.gif", + "source_file": "/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_nusan.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nico", + "demozoo_id": 131751 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_tic80_jam_revision/showdown_nico.gif", + "source_file": "/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_nico.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "speedman", + "demozoo_id": 113574 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_tic80_jam_revision/showdown_speedman.gif", + "source_file": "/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_speedman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": 3496, + "preview_image": "2023_04_08_tic80_jam_revision/showdown_superogue.gif", + "source_file": "/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_superogue.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Tobach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_04_08_tic80_jam_revision/showdown_Tobach.gif", + "source_file": "/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_Tobach.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "cmdr homer", + "demozoo_id": null + }, + "job": "Dj Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id":4569 +} diff --git a/data/2023_04_17_byte_jam_monday_night_bytes.json b/data/2023_04_17_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..9f2b298e0 --- /dev/null +++ b/data/2023_04_17_byte_jam_monday_night_bytes.json @@ -0,0 +1,132 @@ +{ + "title": "Monday Night Bytes", + "type": "Byte Jam", + "website": "https://field-fx.party", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "vod": "https://www.youtube.com/watch?v=ENNk6Jv94G4", + "entries": [ + { + "id": 1, + "handle": { + "name": "MrSynAckster", + "demozoo_id": 130883 + }, + "source_file": "/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/MrSynAckster.lua", + "preview_image": "2023_04_17_byte_jam_monday_night_bytes/MrSynAckster.png" + }, + { + "id": 2, + "handle": { + "name": "Kii", + "demozoo_id": 135296 + }, + "source_file": "/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/Kii.lua", + "preview_image": "2023_04_17_byte_jam_monday_night_bytes/Kii.png" + }, + { + "id": 3, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "source_file": "/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/Alia.lua", + "preview_image": "2023_04_17_byte_jam_monday_night_bytes/Alia.png" + }, + { + "id": 4, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "source_file": "/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/dave84.lua", + "preview_image": "2023_04_17_byte_jam_monday_night_bytes/dave84.png" + }, + { + "id": 5, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "source_file": "/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/jtruk.lua", + "preview_image": "2023_04_17_byte_jam_monday_night_bytes/jtruk.png" + }, + { + "id": 6, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "source_file": "/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/NuSan.lua", + "preview_image": "2023_04_17_byte_jam_monday_night_bytes/NuSan.png" + }, + { + "id": 7, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "source_file": "/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/mantratronic.lua", + "preview_image": "2023_04_17_byte_jam_monday_night_bytes/mantratronic.png" + }, + { + "id": 8, + "handle": { + "name": "ToBach", + "demozoo_id": 89891 + }, + "source_file": "/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/ToBach.lua", + "preview_image": "2023_04_17_byte_jam_monday_night_bytes/ToBach.png" + }, + { + "id": 9, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "tic80_cart_id": 3497, + "source_file": "/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/superogue.lua", + "preview_image": "2023_04_17_byte_jam_monday_night_bytes/superogue.png" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + + { + "handle": { + "name": "Lynn Drumm", + "demozoo_id": 77648 + }, + "job": "Dj Set" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM", + "started": "2023-04-17", + "date": "17 April 2023" +} diff --git a/data/2023_04_24_byte_jam_monday_night_bytes.json b/data/2023_04_24_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..6e5c3a302 --- /dev/null +++ b/data/2023_04_24_byte_jam_monday_night_bytes.json @@ -0,0 +1,77 @@ +{ + "title": "Monday Night Bytes", + "type": "Byte Jam", + "website": "https://field-fx.party", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "source_file": "/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Alia.lua", + "preview_image": "2023_04_24_byte_jam_monday_night_bytes/Alia.png" + }, + { + "id": 2, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "source_file": "/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Gasman.lua", + "preview_image": "2023_04_24_byte_jam_monday_night_bytes/Gasman.png" + }, + { + "id": 3, + "handle": { + "name": "Gigabates", + "demozoo_id": 135703 + }, + "source_file": "/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Gigabates.lua", + "preview_image": "2023_04_24_byte_jam_monday_night_bytes/Gigabates.png" + }, + { + "id": 4, + "handle": { + "name": "Nico", + "demozoo_id": 131751 + }, + "source_file": "/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Nico.lua", + "preview_image": "2023_04_24_byte_jam_monday_night_bytes/Nico.png" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM", + "started": "2023-04-24", + "date": "24 April 2023" +} diff --git a/data/2023_04_29_shader_jam_sessions.json b/data/2023_04_29_shader_jam_sessions.json new file mode 100644 index 000000000..746ef0e3f --- /dev/null +++ b/data/2023_04_29_shader_jam_sessions.json @@ -0,0 +1,250 @@ +{ + "title": "Sessions", + "started": "2023-04-29", + "date": "28 - 30 April 2023", + "type": "Shader Jam", + "website": "https://sessions.frontl1ne.net/", + "flyer": "", + "vod":"https://www.youtube.com/watch?v=BCwIaDP8UFs", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + }, + { + "name": "SonicPi", + "url": "https://sonic-pi.net/", + "version": "", + "purpose": "Audio" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_aldroid.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_aldroid.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "anticore", + "demozoo_id": 117325 + }, + "poshbrolly_url":"https://www.poshbrolly.net/shader/4Eb8KCGwRlgyiGBJlzRX", + "shadertoy_url": "https://www.shadertoy.com/view/dtd3zf", + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_anticore.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_anticore.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Dlt3z2", + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_exca.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_exca.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gam0022", + "demozoo_id": 63869 + }, + "shadertoy_url": "https://www.shadertoy.com/view/dlcGRs", + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_gam0022.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_gam0022.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gaz", + "demozoo_id": 63867 + }, + "shadertoy_url": "https://www.shadertoy.com/view/cld3z2", + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_gaz.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_gaz.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ivan Dianov", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/Dtd3z2", + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_ivan_dianov.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_ivan_dianov.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Kamoshika", + "demozoo_id": 128644 + }, + "shadertoy_url": "https://www.shadertoy.com/view/dt3GRf", + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_Kamoshika.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_Kamoshika.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "kostik", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/ctt3z2", + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_kostik.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_kostik.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_Musk.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_Musk.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_NuSan.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_NuSan.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "rimina", + "demozoo_id": 56489 + }, + "shadertoy_url": null, + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_rimina.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_rimina.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ml3GzX", + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_sp4ghet.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_sp4ghet.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_superogue.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_superogue.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "poshbrolly_url": "https://www.poshbrolly.net/shader/W1D0W7QzxmVIyoa2T28x", + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_totetmatt.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_totetmatt.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_visy.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_visy.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "shadertoy_url": null, + "preview_image": "2023_04_29_shader_jam_sessions/grabber_sessions_wbcbz7.jpg", + "source_file": "/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_wbcbz7.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "\u3089\u304f\u3068\u3042\u3044\u3059 (lactoice)", + "demozoo_id": null + }, + "job": "Live Music" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "butadiene", + "demozoo_id": null + }, + "job": "Organizers" + }, + { + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "FL1NE", + "demozoo_id": 24017 + }, + "job": "Organizers" + } + ], + "demozoo_party_id":4606 +} diff --git a/data/2023_04_29_shader_seminar_sessions.json b/data/2023_04_29_shader_seminar_sessions.json new file mode 100644 index 000000000..641caf119 --- /dev/null +++ b/data/2023_04_29_shader_seminar_sessions.json @@ -0,0 +1,62 @@ +{ + "title": "Sessions", + "started": "2023-04-29", + "date": "28 - 30 April 2023", + "type": "Shader Code Seminar", + "website": "https://sessions.frontl1ne.net/", + "flyer": "", + "vod": "https://www.youtube.com/watch?v=NP8bjmesy2Q&t=17628s", + "software_used": [], + "phases": [ + { + "title": "\u30ec\u30a4\u30de\u30fc\u30c1\u30f3\u30b00\u304b\u30891", + "vod": "https://www.youtube.com/watch?v=gtSgPV10jDk", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": null, + "preview_image": "2023_04_29_shader_seminar_sessions/2023_sessions_0b5vr.png", + "source_file": "/shader_file_sources/2023_04_29_shader_seminar_sessions/2023_sessions_0b5vr.pdf" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "butadiene", + "demozoo_id": null + }, + "job": "Organizers" + }, + { + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "FL1NE", + "demozoo_id": 24017 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4606 +} diff --git a/data/2023_05_01_byte_jam_monday_night_bytes.json b/data/2023_05_01_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..a2b1ce6f8 --- /dev/null +++ b/data/2023_05_01_byte_jam_monday_night_bytes.json @@ -0,0 +1,77 @@ +{ + "title": "Monday Night Bytes", + "type": "Byte Jam", + "website": "https://field-fx.party", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "source_file": "/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/jtruk.lua", + "preview_image": "2023_05_01_byte_jam_monday_night_bytes/jtruk.png" + }, + { + "id": 2, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "source_file": "/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/Alia.lua", + "preview_image": "2023_05_01_byte_jam_monday_night_bytes/Alia.png" + }, + { + "id": 3, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "source_file": "/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/Mantratronic.lua", + "preview_image": "2023_05_01_byte_jam_monday_night_bytes/Mantratronic.png" + }, + { + "id": 4, + "handle": { + "name": "ToBach", + "demozoo_id": 89891 + }, + "source_file": "/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/ToBach.lua", + "preview_image": "2023_05_01_byte_jam_monday_night_bytes/ToBach.png" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM", + "started": "2023-05-01", + "date": "01 May 2023" +} diff --git a/data/2023_05_08_shader_jam_monday_night_bytes.json b/data/2023_05_08_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..4fcd8e585 --- /dev/null +++ b/data/2023_05_08_shader_jam_monday_night_bytes.json @@ -0,0 +1,123 @@ +{ + "title": "Monday Night Bytes - Shader Edition", + "started": "2023-05-08", + "date": "08 May 2023", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://www.youtube.com/watch?v=MUQNaxrWIos", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg", + "source_file": "/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg", + "source_file": "/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "kali", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_kali.jpg", + "source_file": "/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_kali.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg", + "source_file": "/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_Superogue.jpg", + "source_file": "/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_Superogue.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ToBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.jpg", + "source_file": "/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Alkama", + "demozoo_id": 1382 + }, + "job": "Dj Set" + }, + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_05_15_byte_jam_monday_night_bytes.json b/data/2023_05_15_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..fbb1b707c --- /dev/null +++ b/data/2023_05_15_byte_jam_monday_night_bytes.json @@ -0,0 +1,100 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-05-15", + "date": "15 May 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://www.youtube.com/watch?v=8ivX2zuhBS0&list=PLgTVkvMeo_mBBi73XxEDDZBthLxXl425U&index=14", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_05_15_byte_jam_monday_night_bytes/alia.gif", + "source_file": "/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_05_15_byte_jam_monday_night_bytes/jtruk.png", + "source_file": "/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_05_15_byte_jam_monday_night_bytes/mantratronic.gif", + "source_file": "/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/mantratronic.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nusan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_05_15_byte_jam_monday_night_bytes/nusan.png", + "source_file": "/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/nusan.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Synesthesia", + "demozoo_id": 43672 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2023_05_29_byte_jam_monday_night_bytes.json b/data/2023_05_29_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..0a7144d94 --- /dev/null +++ b/data/2023_05_29_byte_jam_monday_night_bytes.json @@ -0,0 +1,77 @@ +{ + "title": "Monday Night Bytes", + "type": "Byte Jam", + "website": "https://field-fx.party", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "source_file": "/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/totetmatt.lua", + "preview_image": "2023_05_29_byte_jam_monday_night_bytes/totetmatt.png" + }, + { + "id": 2, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "source_file": "/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/aldroid.lua", + "preview_image": "2023_05_29_byte_jam_monday_night_bytes/aldroid.png" + }, + { + "id": 3, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "source_file": "/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/mantratronic.lua", + "preview_image": "2023_05_29_byte_jam_monday_night_bytes/mantratronic.png" + }, + { + "id": 4, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "source_file": "/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/alia.lua", + "preview_image": "2023_05_29_byte_jam_monday_night_bytes/alia.png" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM", + "started": "2023-05-29", + "date": "29 May 2023" +} diff --git a/data/2023_06_05_shader_jam_monday_night_bytes.json b/data/2023_06_05_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..740d94bfa --- /dev/null +++ b/data/2023_06_05_shader_jam_monday_night_bytes.json @@ -0,0 +1,117 @@ +{ + "title": "Monday Night Bytes - Shader Edition", + "started": "2023-06-05", + "date": "05 June 2023", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://www.youtube.com/watch?v=uGHL40bgAmU", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg", + "source_file": "/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_jtruk.jpg", + "source_file": "/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_jtruk.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg", + "source_file": "/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt_2.jpg", + "source_file": "/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt_2.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg", + "source_file": "/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_visy.jpg", + "source_file": "/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_visy.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_06_12_byte_jam_monday_night_bytes.json b/data/2023_06_12_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..ed494bbf8 --- /dev/null +++ b/data/2023_06_12_byte_jam_monday_night_bytes.json @@ -0,0 +1,77 @@ +{ + "title": "Monday Night Bytes", + "type": "Byte Jam", + "website": "https://field-fx.party", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "phases": [ + { + "title": "Byte Jam", + "entries": [ + { + "id": 1, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "source_file": "/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/alia.lua", + "preview_image": "2023_06_12_byte_jam_monday_night_bytes/alia.png" + }, + { + "id": 2, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "source_file": "/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/gasman.lua", + "preview_image": "2023_06_12_byte_jam_monday_night_bytes/gasman.png" + }, + { + "id": 3, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "source_file": "/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/visy.lua", + "preview_image": "2023_06_12_byte_jam_monday_night_bytes/visy.png" + }, + { + "id": 4, + "handle": { + "name": "tobach", + "demozoo_id": 89891 + }, + "source_file": "/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/tobach.lua", + "preview_image": "2023_06_12_byte_jam_monday_night_bytes/tobach.png" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "demozoo_party_id": "LCDZFFCM", + "started": "2023-06-12", + "date": "12 June 2023" +} diff --git a/data/2023_06_19_byte_jam_monday_night_bytes.json b/data/2023_06_19_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..44206afc3 --- /dev/null +++ b/data/2023_06_19_byte_jam_monday_night_bytes.json @@ -0,0 +1,81 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-06-19", + "date": "19 June 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_06_19_byte_jam_monday_night_bytes/alia.gif", + "source_file": "/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2023_06_19_byte_jam_monday_night_bytes/gasman.gif", + "source_file": "/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_06_19_byte_jam_monday_night_bytes/tobach.gif", + "source_file": "/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/tobach.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2023_06_23_shader_jam_nova.json b/data/2023_06_23_shader_jam_nova.json new file mode 100644 index 000000000..248476d2e --- /dev/null +++ b/data/2023_06_23_shader_jam_nova.json @@ -0,0 +1,165 @@ +{ + "title": "Nova", + "started": "2023-06-24", + "date": "23 - 25 June 2023", + "type": "Shader Jam", + "website": "https://novaparty.org/", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/a169b23e-12f8-11ee-931f-00505685775e?t=1945#show-a169b23e-12f8-11ee-931f-00505685775e", + "software_used": [ + { + "name": "Poshbrolly", + "url": "https://www.poshbrolly.net/", + "version": "", + "purpose": "Graphic" + }, + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Team TIC-80", + "vod": null, + "entries": [ + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_06_23_shader_jam_nova/alianova.gif", + "source_file": "/shader_file_sources/2023_06_23_shader_jam_nova/alianova.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "preview_image": "2023_06_23_shader_jam_nova/dave84nova.gif", + "source_file": "/shader_file_sources/2023_06_23_shader_jam_nova/dave84nova.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "tic80_cart_id": 3421, + "preview_image": "2023_06_23_shader_jam_nova/jtruknova.gif", + "source_file": "/shader_file_sources/2023_06_23_shader_jam_nova/jtruknova.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_06_23_shader_jam_nova/mantratronicnova.gif", + "source_file": "/shader_file_sources/2023_06_23_shader_jam_nova/mantratronicnova.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nico", + "demozoo_id": 131751 + }, + "shadertoy_url": null, + "preview_image": "2023_06_23_shader_jam_nova/niconova.gif", + "source_file": "/shader_file_sources/2023_06_23_shader_jam_nova/niconova.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + + ], + "staffs": [ + + ] + }, + { + "title": "Team ZX Spectrum", + "vod": null, + "entries": [ + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2023_06_23_shader_jam_nova/gasmannova.png", + "source_file": "/shader_file_sources/2023_06_23_shader_jam_nova/gasmannova.asm" + } + + ], + "staffs": [ + + ] + }, + { + "title": "Team GLSL", + "vod": null, + "entries": [ + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + + ], + "staffs": [ + + ] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4516 +} diff --git a/data/2023_07_03_byte_jam_monday_night_bytes.json b/data/2023_07_03_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..409f8d200 --- /dev/null +++ b/data/2023_07_03_byte_jam_monday_night_bytes.json @@ -0,0 +1,93 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-07-03", + "date": "3 July 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_07_03_byte_jam_monday_night_bytes/alia.gif", + "source_file": "/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_07_03_byte_jam_monday_night_bytes/mantratronic.gif", + "source_file": "/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/mantratronic.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nico", + "demozoo_id": 131751 + }, + "shadertoy_url": null, + "preview_image": "2023_07_03_byte_jam_monday_night_bytes/nico.gif", + "source_file": "/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/nico.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_07_03_byte_jam_monday_night_bytes/tobach.gif", + "source_file": "/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/tobach.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} \ No newline at end of file diff --git a/data/2023_07_08_byte_battle_edison.json b/data/2023_07_08_byte_battle_edison.json new file mode 100644 index 000000000..2c1d15fcb --- /dev/null +++ b/data/2023_07_08_byte_battle_edison.json @@ -0,0 +1,82 @@ +{ + "title": "Edison", + "started": "2023-07-07", + "date": "07 - 09 July 2023", + "type": "Byte Battle", + "vod": "https://scenesat.com/videoarchive/2f3d093a-1df4-11ee-931f-00505685775e?t=918#show-2f3d093a-1df4-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "TIC80 Byte Battle", + "vod": "https://scenesat.com/videoarchive/2f3d093a-1df4-11ee-931f-00505685775e?t=918#show-2f3d093a-1df4-11ee-931f-00505685775e", + "keyword": null, + "entries": [ + { + "id": 1, + "rank": 1, + "points": 69, + "handle": { + "name": "jor-el", + "demozoo_id": 115423 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2023_07_08_byte_battle_edison/jo-rel.lua", + "preview_image": "2023_07_08_byte_battle_edison/jo-rel.png" + }, + { + "id": 2, + "rank": 2, + "points": 48, + "handle": { + "name": "The Jokerz", + "demozoo_id": 134471, + "members" : [ + { + "handle": { + "name": "Kavvan", + "demozoo_id": 22922 + } + }, + { + "handle": { + "name": "fsFreak", + "demozoo_id": 7803 + } + } + ] + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_07_08_byte_battle_edison/the_jokerz.lua", + "preview_image": "2023_07_08_byte_battle_edison/the_jokerz.png" + } + ], + "staffs": [ + { + "handle": { + "name": "Weyland", + "demozoo_id": 33819 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Weyland", + "demozoo_id": 33819 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4524 +} diff --git a/data/2023_07_24_byte_jam_prevoke.json b/data/2023_07_24_byte_jam_prevoke.json new file mode 100644 index 000000000..732ccb8d7 --- /dev/null +++ b/data/2023_07_24_byte_jam_prevoke.json @@ -0,0 +1,79 @@ +{ + "title": "Pre-Evoke", + "started": "2023-07-24", + "date": "24 July 2023", + "type": "Byte Jam", + "website": "https://2023.evoke.eu/", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/d10b0f1b-2a6d-11ee-931f-00505685775e?t=1374#show-d10b0f1b-2a6d-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_07_24_byte_jam_prevoke/alia.gif", + "source_file": "/shader_file_sources/2023_07_24_byte_jam_prevoke/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2023_07_24_byte_jam_prevoke/superogue.gif", + "source_file": "/shader_file_sources/2023_07_24_byte_jam_prevoke/superogue.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ToBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_07_24_byte_jam_prevoke/tobach.gif", + "source_file": "/shader_file_sources/2023_07_24_byte_jam_prevoke/tobach.lua" + } + ], + "staffs": [ + ] + } + ], + "staffs": [ + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_07_28_byte_jam_evoke.json b/data/2023_07_28_byte_jam_evoke.json new file mode 100644 index 000000000..70004257c --- /dev/null +++ b/data/2023_07_28_byte_jam_evoke.json @@ -0,0 +1,91 @@ +{ + "title": "Evoke", + "started": "2023-07-28", + "date": "28 - 30 July 2023", + "type": "Byte Jam", + "website": "https://2023.evoke.eu/", + "flyer": "", + "vod":null, + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Live Code Wall", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_07_28_byte_jam_evoke/LIVECODE_WALL.gif", + "source_file": "/shader_file_sources/2023_07_28_byte_jam_evoke/LIVECODE_WALL.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_07_28_byte_jam_evoke/nusan.gif", + "source_file": "/shader_file_sources/2023_07_28_byte_jam_evoke/nusan.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2023_07_28_byte_jam_evoke/superogue_jam.gif", + "source_file": "/shader_file_sources/2023_07_28_byte_jam_evoke/superogue_jam.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2023_07_28_byte_jam_evoke/superogue_jam_2.gif", + "source_file": "/shader_file_sources/2023_07_28_byte_jam_evoke/superogue_jam.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_07_28_byte_jam_evoke/tobach-jam.gif", + "source_file": "/shader_file_sources/2023_07_28_byte_jam_evoke/tobach-jam.lua" + } + ], + "staffs": [ + ] + } + ], + "staffs": [ + ], + "demozoo_party_id": 4512 +} diff --git a/data/2023_07_31_byte_jam_monday_night_bytes.json b/data/2023_07_31_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..4225e4b93 --- /dev/null +++ b/data/2023_07_31_byte_jam_monday_night_bytes.json @@ -0,0 +1,122 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-07-31", + "date": "31 July 2023", + "type": "Byte Jam", + "website": "https://field-fx.party", + "flyer": "", + "vod": "", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/alia.lua", + "preview_image": "2023_07_31_byte_jam_monday_night_bytes/alia.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "source_file": "/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/gasman.lua", + "preview_image": "2023_07_31_byte_jam_monday_night_bytes/gasman.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jmantruktronic", + "demozoo_id": null, + "members" : [ + { + "handle":{ + "name": "jtruk", + "demozoo_id": 135705 + } + }, + { + "handle":{ + "name": "Mantratronic", + "demozoo_id": 20215 + } + } + ] + }, + "source_file": "/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/jmantruktronic.lua", + "preview_image": "2023_07_31_byte_jam_monday_night_bytes/jmantruktronic.png" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "MrSynAckSter", + "demozoo_id": 135702 + }, + "source_file": "/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/mrsynackster.lua", + "preview_image": "2023_07_31_byte_jam_monday_night_bytes/mrsynackster.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "source_file": "/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/ps.lua", + "preview_image": "2023_07_31_byte_jam_monday_night_bytes/ps.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" + } \ No newline at end of file diff --git a/data/2023_08_07_shader_jam_monday_night_bytes.json b/data/2023_08_07_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..02aa30f76 --- /dev/null +++ b/data/2023_08_07_shader_jam_monday_night_bytes.json @@ -0,0 +1,106 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-08-07", + "date": "07 August 2023", + "type": "Shader Jam", + "website": "https://2023.evoke.eu/", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/11002d9a-3640-11ee-931f-00505685775e#show-11002d9a-3640-11ee-931f-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_aldroid.jpg", + "source_file": "/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_alia.jpg", + "source_file": "/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_alia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Eimink", + "demozoo_id": 32692 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ctBcR1", + "preview_image": "2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_eimink.jpg", + "source_file": "/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_eimink.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_NuSan.jpg", + "source_file": "/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_NuSan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ct2czh", + "preview_image": "2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_totetmatt.jpg", + "source_file": "/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_totetmatt.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_08_12_shader_battle_demodulation.json b/data/2023_08_12_shader_battle_demodulation.json new file mode 100644 index 000000000..bed38f700 --- /dev/null +++ b/data/2023_08_12_shader_battle_demodulation.json @@ -0,0 +1,219 @@ +{ + "title": "Demodulation", + "started": "2023-08-12", + "date": "12 August 2023", + "type": "Shader Showdown", + "website": "https://yandex.ru/museum/yaretrocomp", + "flyer": "", + "vod":null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + }, + { + "name": "Bonzomatic Extra Texture", + "url": "https://livecode.demozoo.org/extra/demodulation2023_textures.zip", + "version": "Demodulation 2023", + "purpose": "Texture" + } + ], + "phases": [ + { + "title": "Qualification", + "vod": "https://youtu.be/cTQSy76EPSM?t=11473", + "entries": [ + { + "id": null, + "rank": 8, + "points": 57647, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_cosamentale.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_cosamentale.glsl" + }, + { + "id": null, + "rank": 1, + "points": 86316, + "handle": { + "name": "Ivan Dianov", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/mt2yDm", + "preview_image": "2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_ivandianov.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_ivandianov.glsl" + }, + { + "id": null, + "rank": 6, + "points": 65714, + "handle": { + "name": "Jin X", + "demozoo_id": 81083 + }, + "shadertoy_url": null, + "preview_image": "2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_jin_x.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_jin_x.glsl" + }, + { + "id": null, + "rank": 2, + "points": 79474, + "handle": { + "name": "kostik", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_kostik.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_kostik.glsl" + }, + { + "id": null, + "rank": 7, + "points": 60000, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_musk.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_musk.glsl" + }, + { + "id": null, + "rank": 4, + "points": 71053, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_provod.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_provod.glsl" + }, + { + "id": null, + "rank": 5, + "points": 65789, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/mlByzG", + "poshbrolly_url":"https://www.poshbrolly.net/shader/Cv3f6I8URvIBu9pPQ0H6", + "preview_image": "2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_totetmatt.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_totetmatt.glsl" + }, + { + "id": null, + "rank": 3, + "points": 76316, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ctjyzd", + "preview_image": "2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_z0rg.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_z0rg.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "bfox", + "demozoo_id": 9743 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Porno-UZI", + "demozoo_id": 32870 + }, + "job": "DJ Set" + } + + ] + }, + { + "title": " Final", + "vod": "https://youtu.be/cTQSy76EPSM?t=20288", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "Ivan Dianov", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/dtjcDm", + "preview_image": "2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_ivandianov.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_ivandianov.glsl" + }, + { + "id": null, + "rank": 3, + "points": null, + "handle": { + "name": "kostik", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_kostik.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_kostik.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": "https://www.shadertoy.com/view/DtjcRd", + "preview_image": "2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_z0rg.jpg", + "source_file": "/shader_file_sources/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_z0rg.glsl" + } + ], + "staffs": [ { + "handle": { + "name": "bfox", + "demozoo_id": 9743 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Porno-UZI", + "demozoo_id": 32870 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Jin X", + "demozoo_id": 81083 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "4652" +} diff --git a/data/2023_08_14_byte_jam_monday_night.json b/data/2023_08_14_byte_jam_monday_night.json new file mode 100644 index 000000000..99c894ec5 --- /dev/null +++ b/data/2023_08_14_byte_jam_monday_night.json @@ -0,0 +1,103 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-08-14", + "date": "14 August 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/5da8e3bf-3c06-11ee-931f-00505685775e#show-5da8e3bf-3c06-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_08_14_byte_jam_monday_night/alia.gif", + "source_file": "/shader_file_sources/2023_08_14_byte_jam_monday_night/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "tic80_cart_id": 3491, + "shadertoy_url": null, + "preview_image": "2023_08_14_byte_jam_monday_night/gasman.gif", + "source_file": "/shader_file_sources/2023_08_14_byte_jam_monday_night/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "tic80_cart_id": 3499, + "shadertoy_url": null, + "preview_image": "2023_08_14_byte_jam_monday_night/jtruk.png", + "source_file": "/shader_file_sources/2023_08_14_byte_jam_monday_night/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_08_14_byte_jam_monday_night/mantratronic.gif", + "source_file": "/shader_file_sources/2023_08_14_byte_jam_monday_night/mantratronic.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "ferris", + "demozoo_id": 18 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_08_14_live_performance_ccc23.json b/data/2023_08_14_live_performance_ccc23.json new file mode 100644 index 000000000..957afd8a5 --- /dev/null +++ b/data/2023_08_14_live_performance_ccc23.json @@ -0,0 +1,46 @@ +{ + "title": "OnTrack Demoparty @ Chaos Communication Camp 2023", + "started": "2023-08-19", + "date": "19 August 2023", + "type": "Live Performance", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "Scratch", + "url": "https://scratch.mit.edu/", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "molive", + "demozoo_id": 72284 + }, + "shadertoy_url": "https://scratch.mit.edu/projects/883881876/", + "preview_image": "2023_08_14_live_performance_ccc23/molive.png", + "source_file": "/shader_file_sources/2023_08_14_live_performance_ccc23/molive.sb3" + } + ], + "staffs": [ + + ] + } + ], + "staffs": [ + + ], + "demozoo_party_id": 4654 +} diff --git a/data/2023_08_21_shader_jam_monday_night_bytes.json b/data/2023_08_21_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..fbd82e096 --- /dev/null +++ b/data/2023_08_21_shader_jam_monday_night_bytes.json @@ -0,0 +1,93 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-08-22", + "date": "22 August 2023", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/1b91c223-4108-11ee-931f-00505685775e?t=137#show-1b91c223-4108-11ee-931f-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg", + "source_file": "/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg", + "source_file": "/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_superogue.jpg", + "source_file": "/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_superogue.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg", + "source_file": "/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_08_25_shader_showdown_xenium.json b/data/2023_08_25_shader_showdown_xenium.json new file mode 100644 index 000000000..643e13ee3 --- /dev/null +++ b/data/2023_08_25_shader_showdown_xenium.json @@ -0,0 +1,223 @@ +{ + "title": "Xenium", + "started": "2023-08-25", + "date": "25 - 27 August 2023", + "type": "Shader Showdown", + "website": "https://xenium.rocks/en/results", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/11002d9a-3640-11ee-931f-00505685775e#show-11002d9a-3640-11ee-931f-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/Gargaj/Bonzomatic/releases/tag/2023-06-15", + "version": "Gargaj - 2023-06-15", + "purpose": "Graphic" + }, + { + "name": "Shadertoy", + "url": "https://www.shadertoy.com/", + "version": "", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Stage 1.1", + "vod": "https://scenesat.com/videoarchive/0eafeeb9-44e3-11ee-931f-00505685775e?t=57047#show-0eafeeb9-44e3-11ee-931f-00505685775e", + "entries": [ + + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "klos", + "demozoo_id": 88858 + }, + "shadertoy_url": null, + "preview_image": "2023_08_25_shader_showdown_xenium/shaderKlos.jpg", + "source_file": "/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKlos.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "citrus", + "demozoo_id": 21647 + }, + "shadertoy_url": null, + "preview_image": "2023_08_25_shader_showdown_xenium/shaderCitrus.jpg", + "source_file": "/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderCitrus.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "xcopy", + "demozoo_id": 126127 + }, + "job": "DJ Set" + }, + { + "handle": { + "name": "bonzaj", + "demozoo_id": 5955 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Stage 1.2", + "vod": "https://scenesat.com/videoarchive/0eafeeb9-44e3-11ee-931f-00505685775e?t=58483#show-0eafeeb9-44e3-11ee-931f-00505685775e", + "entries": [ + + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "kk", + "demozoo_id": 1027 + }, + "shadertoy_url": null, + "preview_image": "2023_08_25_shader_showdown_xenium/shaderKK_stage1.DX11.jpg", + "source_file": "/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKK_stage1.DX11.hlsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "maq", + "demozoo_id": 3833 + }, + "shadertoy_url": null, + "preview_image": "2023_08_25_shader_showdown_xenium/shaderMaq.jpg", + "source_file": "/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderMaq.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "xcopy", + "demozoo_id": 126127 + }, + "job": "DJ Set" + }, + { + "handle": { + "name": "bonzaj", + "demozoo_id": 5955 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Final Stage", + "vod": "https://scenesat.com/videoarchive/0eafeeb9-44e3-11ee-931f-00505685775e?t=60181#show-0eafeeb9-44e3-11ee-931f-00505685775e", + "entries": [ + + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "kk", + "demozoo_id": 1027 + }, + "shadertoy_url": null, + "preview_image": "2023_08_25_shader_showdown_xenium/shaderKK_stage2.DX11.jpg", + "source_file": "/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKK_stage2.DX11.hlsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "citrus", + "demozoo_id": 21647 + }, + "shadertoy_url": null, + "preview_image": "2023_08_25_shader_showdown_xenium/shaderCitrus.jpg", + "source_file": "/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderCitrus.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "xcopy", + "demozoo_id": 126127 + }, + "job": "DJ Set" + }, + { + "handle": { + "name": "bonzaj", + "demozoo_id": 5955 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Hidden Bonus Stage", + "vod": "https://scenesat.com/videoarchive/0eafeeb9-44e3-11ee-931f-00505685775e?t=61625#show-0eafeeb9-44e3-11ee-931f-00505685775e", + "entries": [ + + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "bonzaj+chatgptv4", + "demozoo_id": 5955 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "kk", + "demozoo_id": 1027 + }, + "shadertoy_url": null, + "preview_image": "2023_08_25_shader_showdown_xenium/shaderKK_stage3.DX11.jpg", + "source_file": "/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderBonzajGPT.dx11.hlsl" + } + ], + "staffs": [ + { + "handle": { + "name": "xcopy", + "demozoo_id": 126127 + }, + "job": "DJ Set" + }, + { + "handle": { + "name": "bonzaj", + "demozoo_id": 5955 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "arabek", + "demozoo_id": 34891 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4525 +} diff --git a/data/2023_08_28_byte_jam_monday_night_bytes.json b/data/2023_08_28_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..14a4c6044 --- /dev/null +++ b/data/2023_08_28_byte_jam_monday_night_bytes.json @@ -0,0 +1,101 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-08-28", + "date": "28 August 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/623cca83-4637-11ee-931f-00505685775e?t=477#show-623cca83-4637-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "tobach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_08_28_byte_jam_monday_night_bytes/2023_08_28_tobach.gif", + "source_file": "/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_tobach.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_08_28_byte_jam_monday_night_bytes/2023_08_28_alia.gif", + "source_file": "/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_08_28_byte_jam_monday_night_bytes/2023_08_28_jtruk.gif", + "source_file": "/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2023_08_28_byte_jam_monday_night_bytes/2023_08_28_totetmatt.gif", + "source_file": "/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_totetmatt.lua" + } + + + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Synesthesia", + "demozoo_id": null + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_09_04_byte_jam_monday_night_bytes.json b/data/2023_09_04_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..d5a21da1f --- /dev/null +++ b/data/2023_09_04_byte_jam_monday_night_bytes.json @@ -0,0 +1,101 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-09-04", + "date": "04 September 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/278f291f-4eea-11ee-931f-00505685775e#show-278f291f-4eea-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_09_04_byte_jam_monday_night_bytes/alia.gif", + "source_file": "/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_09_04_byte_jam_monday_night_bytes/aldroid.gif", + "source_file": "/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nico", + "demozoo_id": 131751 + }, + "shadertoy_url": null, + "preview_image": "2023_09_04_byte_jam_monday_night_bytes/nico.gif", + "source_file": "/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/nico.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_09_04_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/suule.lua" + } + + + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Lynn", + "demozoo_id": 77648 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_09_08_byte_jam_nordlicht.json b/data/2023_09_08_byte_jam_nordlicht.json new file mode 100644 index 000000000..4a41a76f2 --- /dev/null +++ b/data/2023_09_08_byte_jam_nordlicht.json @@ -0,0 +1,66 @@ +{ + "title": "Nordlicht", + "started": "2023-09-08", + "date": "08 September 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2023_09_08_byte_jam_nordlicht/gasman.gif", + "source_file": "/shader_file_sources/2023_09_08_byte_jam_nordlicht/gasman.lua" + } + + + ], + "staffs": [ + { + "handle": { + "name": "Messy", + "demozoo_id": 11924 + }, + "job": "DJ Set" + }, + { + "handle": { + "name": "Ektr0", + "demozoo_id": 87921 + }, + "job": "DJ Set" + }, + { + "handle": { + "name": "Triace", + "demozoo_id": 41536 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + + ], + "demozoo_party_id": 4656 +} diff --git a/data/2023_09_11_shader_jam_monday_night_bytes.json b/data/2023_09_11_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..92e363c6d --- /dev/null +++ b/data/2023_09_11_shader_jam_monday_night_bytes.json @@ -0,0 +1,106 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-09-11", + "date": "11 September 2023", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/6b752580-50e8-11ee-931f-00505685775e#show-6b752580-50e8-11ee-931f-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg", + "source_file": "/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg", + "source_file": "/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg", + "source_file": "/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_superogue.jpg", + "source_file": "/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_superogue.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg", + "source_file": "/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl" + } + + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_09_16_byte_jam_dutch_demoscene_unesco.json b/data/2023_09_16_byte_jam_dutch_demoscene_unesco.json new file mode 100644 index 000000000..350db7587 --- /dev/null +++ b/data/2023_09_16_byte_jam_dutch_demoscene_unesco.json @@ -0,0 +1,94 @@ +{ + "title": "Dutch Demoscene Unesco Celebration Party @ Home Computer Museum", + "started": "2023-09-16", + "date": "16 September 2023", + "type": "Byte Jam", + "website": "https://computermuseum.social/@homecomputermuseum", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_09_16_byte_jam_dutch_demoscene_unesco/aldroid.gif", + "source_file": "/shader_file_sources/2023_09_16_byte_jam_dutch_demoscene_unesco/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_09_16_byte_jam_dutch_demoscene_unesco/jtruk.png", + "source_file": "/shader_file_sources/2023_09_16_byte_jam_dutch_demoscene_unesco/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_09_16_byte_jam_dutch_demoscene_unesco/mantratronic.png", + "source_file": "/shader_file_sources/2023_09_16_byte_jam_dutch_demoscene_unesco/mantratronic.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_09_16_byte_jam_dutch_demoscene_unesco/suule.gif", + "source_file": "/shader_file_sources/2023_09_16_byte_jam_dutch_demoscene_unesco/suule.lua" + } + + + ], + "staffs": [ + { + "handle": { + "name": "Demovibes 14", + "demozoo_id": null + }, + "job": "Audio Mix" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZUNESCO" +} diff --git a/data/2023_09_18_byte_jam_monday_night_bytes.json b/data/2023_09_18_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..df2e23453 --- /dev/null +++ b/data/2023_09_18_byte_jam_monday_night_bytes.json @@ -0,0 +1,100 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-09-18", + "date": "18 September 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/7c5eb48f-5675-11ee-931f-00505685775e#show-7c5eb48f-5675-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_09_18_byte_jam_monday_night_bytes/aldroid.gif", + "source_file": "/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_09_18_byte_jam_monday_night_bytes/nusan.gif", + "source_file": "/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/nusan.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_09_18_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/suule.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_09_18_byte_jam_monday_night_bytes/tobach.gif", + "source_file": "/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/tobach.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_09_25_byte_jam_monday_night_bytes.json b/data/2023_09_25_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..adcddc9d7 --- /dev/null +++ b/data/2023_09_25_byte_jam_monday_night_bytes.json @@ -0,0 +1,100 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-09-25", + "date": "25 September 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/3ff8be6b-5f69-11ee-931f-00505685775e#show-3ff8be6b-5f69-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lex Bailey", + "demozoo_id": 136849 + }, + "shadertoy_url": null, + "preview_image": "2023_09_25_byte_jam_monday_night_bytes/lexbailey.gif", + "source_file": "/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/lexbailey.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ompuco", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_09_25_byte_jam_monday_night_bytes/ompuco.gif", + "source_file": "/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/ompuco.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_09_25_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/suule.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Vurpo", + "demozoo_id": 138609 + }, + "shadertoy_url": null, + "preview_image": "2023_09_25_byte_jam_monday_night_bytes/vurpo.gif", + "source_file": "/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/vurpo.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_09_30_patch_battle_deadline.json b/data/2023_09_30_patch_battle_deadline.json new file mode 100644 index 000000000..d1935612a --- /dev/null +++ b/data/2023_09_30_patch_battle_deadline.json @@ -0,0 +1,236 @@ +{ + "title": "Deadline", + "started": "2023-09-30", + "date": "30 September 2023", + "type": "Patch Battle", + "website": "", + "flyer": "", + "vod":"https://www.youtube.com/watch?v=H6wmVYp5S8s&ab_channel=DeadlineDemopartyBerlin", + "software_used": [ + { + "name": "Tooll", + "url": "https://tooll.io/", + "version": "v3", + "purpose": "Graphic" + }, + { + "name": "Cables", + "url": "https://cables.gl/", + "version": "September 2023", + "purpose": "Graphic" + }, + { + "name": "Blender", + "url": "https://www.blender.org/", + "version": "September 2023", + "purpose": "Graphic" + }, + { + "name": "TouchDesigner", + "url": "https://derivative.ca/", + "version": "September 2023", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round 1 (plattenbau and glyphs)", + "vod": "https://youtu.be/H6wmVYp5S8s?si=4L5ZGRiR8qC3vOaG&t=314", + "entries": [ + { + "id": 1, + "rank": null, + "points": 6, + "handle": { + "name": "Oni", + "demozoo_id": 3669 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": null, + "points": 3, + "handle": { + "name": "Pandur", + "demozoo_id": 1983 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 3, + "rank": null, + "points": 8, + "handle": { + "name": "Pixtur", + "demozoo_id": 866 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 4, + "rank": null, + "points": 1, + "handle": { + "name": "Matthi", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "kb", + "demozoo_id": 557 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Round 2 (black vs white and noise)", + "vod": "https://youtu.be/H6wmVYp5S8s?si=klnpRCsljQFFR8Bg&t=1426", + "entries": [ + { + "id": 1, + "rank": null, + "points": 6, + "handle": { + "name": "Oni", + "demozoo_id": 3669 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": null, + "points": 3, + "handle": { + "name": "Pandur", + "demozoo_id": 1983 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 3, + "rank": null, + "points": 8, + "handle": { + "name": "Pixtur", + "demozoo_id": 866 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 4, + "rank": null, + "points": 4, + "handle": { + "name": "Matthi", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "kb", + "demozoo_id": 557 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Round 3 (acid and mountain)", + "vod": "https://youtu.be/H6wmVYp5S8s?si=Z_PSt8U56_Que9PC&t=2418", + "entries": [ + { + "id": 1, + "rank": null, + "points": 3, + "handle": { + "name": "Oni", + "demozoo_id": 3669 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 2, + "rank": null, + "points": 4, + "handle": { + "name": "Pandur", + "demozoo_id": 1983 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 3, + "rank": null, + "points": 6, + "handle": { + "name": "Pixtur", + "demozoo_id": 866 + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + }, + { + "id": 4, + "rank": null, + "points": 5, + "handle": { + "name": "Matthi", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "kb", + "demozoo_id": 557 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "kb", + "demozoo_id": 557 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4536 +} diff --git a/data/2023_09_30_shader_jam_piilanit.json b/data/2023_09_30_shader_jam_piilanit.json new file mode 100644 index 000000000..18e216ba3 --- /dev/null +++ b/data/2023_09_30_shader_jam_piilanit.json @@ -0,0 +1,48 @@ +{ + "title": "Piilanit", + "started": "2023-09-30", + "date": "30 September 2023", + "type": "Live Performance", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2023_09_30_shader_jam_piilanit/pumpuli.png", + "source_file": "/shader_file_sources/2023_09_30_shader_jam_piilanit/pumpuli.glsl" + } + ], + "staffs": [ + ] + } + ], + "staffs": [ + { + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "job": "Organizers" + } + ] +} diff --git a/data/2023_10_02_shader_jam_monday_night_bytes.json b/data/2023_10_02_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..9bbbb46c8 --- /dev/null +++ b/data/2023_10_02_shader_jam_monday_night_bytes.json @@ -0,0 +1,68 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-10-02", + "date": "02 October 2023", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/2fb2c29a-629c-11ee-931f-00505685775e#show-2fb2c29a-629c-11ee-931f-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_10_02_shader_jam_monday_night_bytes/aldroid.png", + "source_file": "/shader_file_sources/2023_10_02_shader_jam_monday_night_bytes/sender_mondaynightbytes_aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_10_02_shader_jam_monday_night_bytes/alia.png", + "source_file": "/shader_file_sources/2023_10_02_shader_jam_monday_night_bytes/sender_mondaynightbytes_alia.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_10_09_byte_jam_monday_night_bytes.json b/data/2023_10_09_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..aa2821ed0 --- /dev/null +++ b/data/2023_10_09_byte_jam_monday_night_bytes.json @@ -0,0 +1,93 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-10-09", + "date": "09 October 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/217daff7-67ae-11ee-931f-00505685775e#show-217daff7-67ae-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_10_09_byte_jam_monday_night_bytes/alia.gif", + "source_file": "/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2023_10_09_byte_jam_monday_night_bytes/gasman.gif", + "source_file": "/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_10_09_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/suule.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_10_09_byte_jam_monday_night_bytes/tobach.PNG", + "source_file": "/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/tobach.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_10_16_byte_jam_monday_night_bytes.json b/data/2023_10_16_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..aa18f41d6 --- /dev/null +++ b/data/2023_10_16_byte_jam_monday_night_bytes.json @@ -0,0 +1,93 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-10-16", + "date": "16 October 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/1a9ed273-6c6a-11ee-931f-00505685775e#show-1a9ed273-6c6a-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_10_16_byte_jam_monday_night_bytes/alia.gif", + "source_file": "/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_10_16_byte_jam_monday_night_bytes/jtruk.PNG", + "source_file": "/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_10_16_byte_jam_monday_night_bytes/nusan.PNG", + "source_file": "/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/nusan.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_10_16_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/suule.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_10_23_shader_jam_monday_night_bytes.json b/data/2023_10_23_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..64dd89dd9 --- /dev/null +++ b/data/2023_10_23_shader_jam_monday_night_bytes.json @@ -0,0 +1,104 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-10-23", + "date": "23 October 2023", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/96d4ca05-76a2-11ee-931f-00505685775e#show-96d4ca05-76a2-11ee-931f-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_10_23_shader_jam_monday_night_bytes/aldroid.png", + "source_file": "/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_10_23_shader_jam_monday_night_bytes/alia.png", + "source_file": "/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/alia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Alien01", + "demozoo_id": 108887 + }, + "shadertoy_url": null, + "preview_image": "2023_10_23_shader_jam_monday_night_bytes/alien.png", + "source_file": "/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/alien.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_10_23_shader_jam_monday_night_bytes/jtruk.png", + "source_file": "/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/jtruk.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "juni", + "demozoo_id": 140083 + }, + "shadertoy_url": null, + "preview_image": "2023_10_23_shader_jam_monday_night_bytes/juni.png", + "source_file": "/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/juni.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_10_30_byte_jam_monday_night_bytes.json b/data/2023_10_30_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..766e78d2d --- /dev/null +++ b/data/2023_10_30_byte_jam_monday_night_bytes.json @@ -0,0 +1,93 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-10-30", + "date": "30 October 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/8f54daeb-783c-11ee-931f-00505685775e#show-8f54daeb-783c-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_10_30_byte_jam_monday_night_bytes/alia.gif", + "source_file": "/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lynn", + "demozoo_id": 77648 + }, + "shadertoy_url": null, + "preview_image": "2023_10_30_byte_jam_monday_night_bytes/lynn.gif", + "source_file": "/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/lynn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_10_30_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/suule.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Sir Garbagetruk", + "demozoo_id": 3143 + }, + "shadertoy_url": null, + "preview_image": "2023_10_30_byte_jam_monday_night_bytes/truck.gif", + "source_file": "/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/truck.fennel" + } + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_11_04_shader_showdown_chitose_film_festival.json b/data/2023_11_04_shader_showdown_chitose_film_festival.json new file mode 100644 index 000000000..829a55561 --- /dev/null +++ b/data/2023_11_04_shader_showdown_chitose_film_festival.json @@ -0,0 +1,76 @@ +{ + "title": "第10回 新千歳空港国際アニメーション映画祭", + "started": "2023-11-04", + "date": "04 November 2023", + "type": "Shader Showdown", + "website": "https://airport-anifes.jp/programs/live_demoscene/", + "flyer": "", + "vod": "https://youtu.be/B_Yst6SSVn0?t=3054", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Exhibition Match", + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Renard", + "demozoo_id": 137275 + + }, + "shadertoy_url": "https://www.shadertoy.com/view/cltcWM", + "preview_image": null, + "source_file": null + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gam0022", + "demozoo_id": 63869 + + }, + "shadertoy_url": "https://www.shadertoy.com/view/dldyz2", + "preview_image": null, + "source_file": null + } + ], + "staffs": [ + { + "handle": { + "name": "fl1ne", + "demozoo_id": 24017 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "niko_14", + "demozoo_id": null + }, + "job": "Livecode Music" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "fl1ne", + "demozoo_id": 24017 + }, + "job": "Organizers" + } + ] +} diff --git a/data/2023_11_13_byte_jam_monday_night_bytes.json b/data/2023_11_13_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..e968f2bba --- /dev/null +++ b/data/2023_11_13_byte_jam_monday_night_bytes.json @@ -0,0 +1,160 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-11-13", + "date": "13 November 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/e3e67215-833b-11ee-931f-00505685775e#show-e3e67215-833b-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "doctor soft", + "demozoo_id": 54181 + }, + "shadertoy_url": null, + "preview_image": "2023_11_13_byte_jam_monday_night_bytes/doctorsoft.gif", + "source_file": "/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/doctorsoft.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evilpaul", + "demozoo_id": 548 + }, + "shadertoy_url": null, + "preview_image": "2023_11_13_byte_jam_monday_night_bytes/evilpaul.gif", + "source_file": "/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/evilpaul.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2023_11_13_byte_jam_monday_night_bytes/gasman.gif", + "source_file": "/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_11_13_byte_jam_monday_night_bytes/jtruk.PNG", + "source_file": "/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lex Bailey", + "demozoo_id": 136849 + }, + "shadertoy_url": null, + "preview_image": "2023_11_13_byte_jam_monday_night_bytes/lex.gif", + "source_file": "/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/lex.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lynn", + "demozoo_id": 77648 + }, + "shadertoy_url": null, + "preview_image": "2023_11_13_byte_jam_monday_night_bytes/lynn.gif", + "source_file": "/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/lynn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_11_13_byte_jam_monday_night_bytes/mantratronic.gif", + "source_file": "/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/mantratronic.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_11_13_byte_jam_monday_night_bytes/tobach.gif", + "source_file": "/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/tobach.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2023_11_13_byte_jam_monday_night_bytes/visy.gif", + "source_file": "/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/visy.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_11_20_shader_jam_monday_night_bytes copy.json b/data/2023_11_20_shader_jam_monday_night_bytes copy.json new file mode 100644 index 000000000..2c2ae9bad --- /dev/null +++ b/data/2023_11_20_shader_jam_monday_night_bytes copy.json @@ -0,0 +1,92 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-11-20", + "date": "20 November 2023", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/dc649cb0-894a-11ee-931f-00505685775e#show-dc649cb0-894a-11ee-931f-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_11_20_shader_jam_monday_night_bytes/aldroid.png", + "source_file": "/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_11_20_shader_jam_monday_night_bytes/alia.png", + "source_file": "/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/alia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_11_20_shader_jam_monday_night_bytes/nusan.png", + "source_file": "/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2023_11_20_shader_jam_monday_night_bytes/wrighter.png", + "source_file": "/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/wrighter.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_11_27_byte_jam_monday_night_bytes.json b/data/2023_11_27_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..01a357d2e --- /dev/null +++ b/data/2023_11_27_byte_jam_monday_night_bytes.json @@ -0,0 +1,93 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-11-27", + "date": "27 November 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/5fde5885-90f8-11ee-931f-00505685775e#show-5fde5885-90f8-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_11_27_byte_jam_monday_night_bytes/mantratronic.png", + "source_file": "/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/mantratronic.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_11_27_byte_jam_monday_night_bytes/nusan.png", + "source_file": "/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/nusan.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_11_27_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/suule.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_11_27_byte_jam_monday_night_bytes/tobach.gif", + "source_file": "/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/tobach.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Totetmatt", + "demozoo_id": 121811 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Totetmatt", + "demozoo_id": 121811 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_12_01_shader_jam_inercia.json b/data/2023_12_01_shader_jam_inercia.json new file mode 100644 index 000000000..f066b794f --- /dev/null +++ b/data/2023_12_01_shader_jam_inercia.json @@ -0,0 +1,348 @@ +{ + "title": "Inércia", + "started": "2023-12-01", + "date": "01 December 2023", + "type": "Shader Jam", + "website": "https://2023.inercia.pt/", + "flyer": "", + "vod":"https://www.youtube.com/watch?v=5Ibqtmc6Aj8&ab_channel=In%C3%A9rciaDemoparty", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": "https://www.shadertoy.com/view/cldBRl", + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_0b5vr.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_0b5vr.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_aldroid.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_aldroid.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alia.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alia.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alien.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alien.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "byt3m3chanic", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/DldfRl", + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_byt3_m3chanic.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_byt3_m3chanic.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_cosamentale.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_cosamentale.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dok", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_dok.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_dok.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": "https://www.shadertoy.com/view/ctdBzl", + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Exca.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Exca.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gam0022", + "demozoo_id": 63869 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_gam0022.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_gam0022.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ivan Dianov", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/DldBzl", + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_ivan_dianov.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_ivan_dianov.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jb", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jb.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jb.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jtruk.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jtruk.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Kamoshika", + "demozoo_id": 128644 + }, + "shadertoy_url": "https://www.shadertoy.com/view/clcBDS", + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Kamoshika.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Kamoshika.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "klos", + "demozoo_id": 88858 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_klos.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_klos.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "kostik", + "demozoo_id": null + }, + "shadertoy_url": "https://www.shadertoy.com/view/mtdfzl", + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_kostik.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_kostik.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "mocoo", + "demozoo_id": 133218 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_mocoo.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_mocoo.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_NuSan.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_NuSan.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": "https://www.shadertoy.com/view/DldfRs", + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_provod.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_provod.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_pumpuli.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_pumpuli.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "sp4ghet", + "demozoo_id": 119897 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_sp4ghet.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_sp4ghet.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_superogue.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_superogue.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_totetmatt.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_totetmatt.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_visy.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_visy.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "VjPyree", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_vjpyree.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_vjpyree.glsl" + },{ + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "shadertoy_url": null, + "preview_image": "2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wbcbz7.jpg", + "source_file": "/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wbcbz7.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "dextrose", + "demozoo_id": 21681 + }, + "job": "live set" + }, + { + "handle": { + "name": "willow", + "demozoo_id": 138454 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "job": "Coordinator" + } + ], + "demozoo_party_id": 4664 +} diff --git a/data/2023_12_03_byte_jam_inercia.json b/data/2023_12_03_byte_jam_inercia.json new file mode 100644 index 000000000..8d85e1e6b --- /dev/null +++ b/data/2023_12_03_byte_jam_inercia.json @@ -0,0 +1,148 @@ +{ + "title": "Inércia", + "started": "2023-12-03", + "date": "03 December 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/d5130a83-91db-11ee-931f-00505685775e?t=92190#show-d5130a83-91db-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "doctor soft", + "demozoo_id": 54181 + }, + "shadertoy_url": null, + "preview_image": "2023_12_03_byte_jam_inercia/drsoft.gif", + "source_file": "/shader_file_sources/2023_12_03_byte_jam_inercia/drsoft.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2023_12_03_byte_jam_inercia/gasman.gif", + "source_file": "/shader_file_sources/2023_12_03_byte_jam_inercia/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_12_03_byte_jam_inercia/jtruk.png", + "source_file": "/shader_file_sources/2023_12_03_byte_jam_inercia/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_12_03_byte_jam_inercia/mantratronic.gif", + "source_file": "/shader_file_sources/2023_12_03_byte_jam_inercia/mantratronic.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2023_12_03_byte_jam_inercia/nusan.png", + "source_file": "/shader_file_sources/2023_12_03_byte_jam_inercia/nusan.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "preview_image": "2023_12_03_byte_jam_inercia/superogue.gif", + "source_file": "/shader_file_sources/2023_12_03_byte_jam_inercia/superogue.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_12_03_byte_jam_inercia/suule.gif", + "source_file": "/shader_file_sources/2023_12_03_byte_jam_inercia/suule.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_12_03_byte_jam_inercia/tobach.gif", + "source_file": "/shader_file_sources/2023_12_03_byte_jam_inercia/tobach.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Jeenio", + "demozoo_id": 3048 + }, + "job": "Piano" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4664 +} diff --git a/data/2023_12_11_byte_jam_monday_night_bytes.json b/data/2023_12_11_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..ea1718123 --- /dev/null +++ b/data/2023_12_11_byte_jam_monday_night_bytes.json @@ -0,0 +1,99 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-12-11", + "date": "11 December 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/3d7068d3-987a-11ee-931f-00505685775e#show-3d7068d3-987a-11ee-931f-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alia", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2023_12_11_byte_jam_monday_night_bytes/alia.gif", + "source_file": "/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/alia.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gigabates", + "demozoo_id": 135703 + }, + "shadertoy_url": null, + "preview_image": "2023_12_11_byte_jam_monday_night_bytes/gigabates.gif", + "source_file": "/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/gigabates.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Pellicus", + "demozoo_id": 75306 + }, + "shadertoy_url": null, + "preview_image": "2023_12_11_byte_jam_monday_night_bytes/pellicus.gif", + "source_file": "/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/pellicus.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_12_11_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/suule.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Synesthesia", + "demozoo_id": 43672 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_12_17_shader_jam_private_birthday.json b/data/2023_12_17_shader_jam_private_birthday.json new file mode 100644 index 000000000..220066217 --- /dev/null +++ b/data/2023_12_17_shader_jam_private_birthday.json @@ -0,0 +1,57 @@ +{ + "title": "Private Birthday Party Jam", + "started": "2023-12-01", + "date": "17 December 2023", + "type": "Shader Jam", + "website": null, + "flyer": "", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli & rimina", + "demozoo_id": null, + "members" : [ + { + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + } + }, + { + "handle": { + "name": "rimina", + "demozoo_id": 56489 + } + } + ] + }, + "shadertoy_url": null, + "preview_image": "2023_12_17_shader_jam_private_birthday/birthday-jam_riminapumpuli.jpg", + "source_file": "/shader_file_sources/2023_12_17_shader_jam_private_birthday/birthday-jam_riminapumpuli.glsl" + } + ], + "staffs": [ + + ] + } + ], + "staffs": [ + + ] +} diff --git a/data/2023_12_18_byte_jam_monday_night_bytes.json b/data/2023_12_18_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..7651d01bf --- /dev/null +++ b/data/2023_12_18_byte_jam_monday_night_bytes.json @@ -0,0 +1,135 @@ +{ + "title": "Monday Night Bytes", + "started": "2023-12-18", + "date": "18 December 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2023_12_18_byte_jam_monday_night_bytes/aldroid.gif", + "source_file": "/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2023_12_18_byte_jam_monday_night_bytes/gasman.gif", + "source_file": "/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_12_18_byte_jam_monday_night_bytes/jtruk.gif", + "source_file": "/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_12_18_byte_jam_monday_night_bytes/mantratronic.gif", + "source_file": "/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/mantratronic.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Nico", + "demozoo_id": 131751 + }, + "shadertoy_url": null, + "preview_image": "2023_12_18_byte_jam_monday_night_bytes/nico.gif", + "source_file": "/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/nico.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_12_18_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/suule.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2023_12_18_byte_jam_monday_night_bytes/tobach.gif", + "source_file": "/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/tobach.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_12_22_byte_jam_monday_night_bytes.json b/data/2023_12_22_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..8ee7ce13e --- /dev/null +++ b/data/2023_12_22_byte_jam_monday_night_bytes.json @@ -0,0 +1,87 @@ +{ + "title": "Monday Night Bytes on Toplap Solstice", + "started": "2023-12-22", + "date": "22 December 2023", + "type": "Byte Jam", + "website": "https://solstice.toplap.org/", + "flyer": "", + "vod":"https://archive.org/details/latesolstice2023-monday-night-bytes-collective", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + }, + { + "name": "Foxdot music livecode", + "url": "https://livecode.demozoo.org/extra/solstice_2023_aldroid_foxdot.py", + "version": "v0.8.12", + "purpose": "Foxdot script" + } + + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2023_12_22_byte_jam_monday_night_bytes/gasman.gif", + "source_file": "/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_12_22_byte_jam_monday_night_bytes/jtruk.png", + "source_file": "/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2023_12_22_byte_jam_monday_night_bytes/mantratronic.png", + "source_file": "/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/mantratronic.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Livecoded music" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 +}, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2023_12_29_byte_jam_tillage.json b/data/2023_12_29_byte_jam_tillage.json new file mode 100644 index 000000000..a51677764 --- /dev/null +++ b/data/2023_12_29_byte_jam_tillage.json @@ -0,0 +1,93 @@ +{ + "title": "Tillage", + "started": "2023-12-29", + "date": "29 December 2023", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/2603c35d-a6b3-11ee-b94e-00505685775e?t=12446#show-2603c35d-a6b3-11ee-b94e-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2023_12_29_byte_jam_tillage/gasman.gif", + "source_file": "/shader_file_sources/2023_12_29_byte_jam_tillage/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2023_12_29_byte_jam_tillage/jtruk.gif", + "source_file": "/shader_file_sources/2023_12_29_byte_jam_tillage/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mrs Beanbag", + "demozoo_id": 66552 + }, + "shadertoy_url": null, + "preview_image": "2023_12_29_byte_jam_tillage/mrsbeanbag.gif", + "source_file": "/shader_file_sources/2023_12_29_byte_jam_tillage/mrsbeanbag.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2023_12_29_byte_jam_tillage/suule.gif", + "source_file": "/shader_file_sources/2023_12_29_byte_jam_tillage/suule.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Polynomial", + "demozoo_id": 60607 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4730 +} diff --git a/data/2024_01_08_monday_night_bytes.json b/data/2024_01_08_monday_night_bytes.json new file mode 100644 index 000000000..0e3887e80 --- /dev/null +++ b/data/2024_01_08_monday_night_bytes.json @@ -0,0 +1,106 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-01-08", + "date": "08 January 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/870f9975-af03-11ee-b94e-00505685775e#show-870f9975-af03-11ee-b94e-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_01_08_byte_jam_monday_night_bytes/aldroid.gif", + "source_file": "/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_01_08_byte_jam_monday_night_bytes/catnip.gif", + "source_file": "/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/catnip.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "HeNeArXn", + "demozoo_id": 135712 + }, + "shadertoy_url": null, + "preview_image": "2024_01_08_byte_jam_monday_night_bytes/henearxn.gif", + "source_file": "/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/henearxn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jmantruktronic", + "demozoo_id": null, + "members" : [ + { + "handle":{ + "name": "jtruk", + "demozoo_id": 135705 + } + }, + { + "handle":{ + "name": "Mantratronic", + "demozoo_id": 20215 + } + } + ] + }, + "shadertoy_url": null, + "preview_image": "2024_01_08_byte_jam_monday_night_bytes/jmantruktronic.png", + "source_file": "/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/jmantruktronic.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 +}, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_01_15_monday_night_bytes.json b/data/2024_01_15_monday_night_bytes.json new file mode 100644 index 000000000..66550de53 --- /dev/null +++ b/data/2024_01_15_monday_night_bytes.json @@ -0,0 +1,99 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-01-15", + "date": "15 January 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_01_15_byte_jam_monday_night_bytes/aldroid.gif", + "source_file": "/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "HeNeArXn", + "demozoo_id": 135712 + }, + "shadertoy_url": null, + "preview_image": "2024_01_15_byte_jam_monday_night_bytes/henearxn.gif", + "source_file": "/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/henearxn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle":{ + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_01_15_byte_jam_monday_night_bytes/jtruk.gif", + "source_file": "/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle":{ + "name": "suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2024_01_15_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/suule.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Polynomial", + "demozoo_id": 60607 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_01_22_byte_jam_monday_night_bytes.json b/data/2024_01_22_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..c64642802 --- /dev/null +++ b/data/2024_01_22_byte_jam_monday_night_bytes.json @@ -0,0 +1,99 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-01-22", + "date": "22 January 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/f60ed781-bf86-11ee-b94e-00505685775e#show-f60ed781-bf86-11ee-b94e-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Dave84", + "demozoo_id": 127921 + }, + "shadertoy_url": null, + "preview_image": "2024_01_22_byte_jam_monday_night_bytes/dave84.gif", + "source_file": "/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/dave84.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "doop", + "demozoo_id": 141174 + }, + "shadertoy_url": null, + "preview_image": "2024_01_22_byte_jam_monday_night_bytes/doop.gif", + "source_file": "/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/doop.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle":{ + "name": "suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2024_01_22_byte_jam_monday_night_bytes/suule.gif", + "source_file": "/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/suule.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle":{ + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2024_01_22_byte_jam_monday_night_bytes/tobach.gif", + "source_file": "/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/tobach.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Polynomial", + "demozoo_id": 60607 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_01_29_byte_jam_monday_night_bytes.json b/data/2024_01_29_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..4e5c1f770 --- /dev/null +++ b/data/2024_01_29_byte_jam_monday_night_bytes.json @@ -0,0 +1,101 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-01-29", + "date": "29 January 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/8080632f-bfa3-11ee-b94e-00505685775e#show-8080632f-bfa3-11ee-b94e-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_01_29_byte_jam_monday_night_bytes/aldroid.gif", + "source_file": "/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle":{ + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_01_29_byte_jam_monday_night_bytes/jtruk.png", + "source_file": "/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle":{ + "name": "nic\u00f4bach", + "demozoo_id": null, + "members" : [ + { + "handle":{ + "name": "nico", + "demozoo_id": 131751 + } + }, + { + "handle":{ + "name": "T\u00f4Bach", + "demozoo_id": 89891 + } + } + ] + }, + "shadertoy_url": null, + "preview_image": "2024_01_29_byte_jam_monday_night_bytes/nicobach.gif", + "source_file": "/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/nicobach.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Polynomial", + "demozoo_id": 60607 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_02_05_byte_jam_monday_night_bytes.json b/data/2024_02_05_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..74f119a58 --- /dev/null +++ b/data/2024_02_05_byte_jam_monday_night_bytes.json @@ -0,0 +1,99 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-02-05", + "date": "05 February 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/679b342d-c46e-11ee-b94e-00505685775e#show-679b342d-c46e-11ee-b94e-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_02_05_byte_jam_monday_night_bytes/aldroid.png", + "source_file": "/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_02_05_byte_jam_monday_night_bytes/catnip.gif", + "source_file": "/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/catnip.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_02_05_byte_jam_monday_night_bytes/jtruk.png", + "source_file": "/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "preview_image": "2024_02_05_byte_jam_monday_night_bytes/mantratronic.gif", + "source_file": "/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/mantratronic.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Polynomial", + "demozoo_id": 60607 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_02_09_byte_jam_lovebyte.json b/data/2024_02_09_byte_jam_lovebyte.json new file mode 100644 index 000000000..3cd11a80e --- /dev/null +++ b/data/2024_02_09_byte_jam_lovebyte.json @@ -0,0 +1,190 @@ +{ + "title": "Lovebyte", + "started": "2024-02-09", + "date": "09 February 2024", + "type": "Byte Jam", + "vod": null, + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Byte Jam", + "vod": null, + "entries": [ + + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_02_09_byte_jam_lovebyte/gasman.lua", + "preview_image": "2024_02_09_byte_jam_lovebyte/gasman.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_02_09_byte_jam_lovebyte/jtruk.lua", + "preview_image": "2024_02_09_byte_jam_lovebyte/jtruk.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mantratronic", + "demozoo_id": 20215 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_02_09_byte_jam_lovebyte/mantratronic.lua", + "preview_image": "2024_02_09_byte_jam_lovebyte/mantratronic.png" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "mrsynackster", + "demozoo_id": 130883 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_02_09_byte_jam_lovebyte/mrsynackster.lua", + "preview_image": "2024_02_09_byte_jam_lovebyte/mrsynackster.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_02_09_byte_jam_lovebyte/tobach.lua", + "preview_image": "2024_02_09_byte_jam_lovebyte/tobach.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "visy", + "demozoo_id": 1301 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_02_09_byte_jam_lovebyte/visy.lua", + "preview_image": "2024_02_09_byte_jam_lovebyte/visy.gif" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "vurpo", + "demozoo_id": 138609 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_02_09_byte_jam_lovebyte/vurpo.lua", + "preview_image": "2024_02_09_byte_jam_lovebyte/vurpo.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "mintimperial", + "demozoo_id": null + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "blossom", + "demozoo_id": 89867 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "dave84", + "demozoo_id": 127921 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Main Organizers" + }, + { + "handle": { + "name": "The Watcher", + "demozoo_id": 15853 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4760 +} diff --git a/data/2024_02_11_zx_spectrum_jam_lovebyte.json b/data/2024_02_11_zx_spectrum_jam_lovebyte.json new file mode 100644 index 000000000..30bad12a0 --- /dev/null +++ b/data/2024_02_11_zx_spectrum_jam_lovebyte.json @@ -0,0 +1,83 @@ +{ + "title": "Lovebyte", + "started": "2024-02-11", + "date": "11 February 2024", + "type": "ZX Spectrum Jam", + "vod": null, + "software_used": [ + { + "name": "Bazematic", + "url": "https://github.com/gasman/bazematic", + "version": "2024-02-07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "ZX Spectrum Jam", + "vod": null, + "keyword": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_02_11_zx_spectrum_jam_lovebyte/superogue.asm", + "preview_image": "2024_02_11_zx_spectrum_jam_lovebyte/superogue.png" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_02_11_zx_spectrum_jam_lovebyte/gasman.asm", + "preview_image": "2024_02_11_zx_spectrum_jam_lovebyte/gasman.png" + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4760 +} diff --git a/data/2024_02_12_byte_jam_monday_night_bytes.json b/data/2024_02_12_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..b9bbb2096 --- /dev/null +++ b/data/2024_02_12_byte_jam_monday_night_bytes.json @@ -0,0 +1,100 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-02-12", + "date": "12 February 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/d0a3a13e-c9fa-11ee-b94e-00505685775e#show-d0a3a13e-c9fa-11ee-b94e-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_02_12_byte_jam_monday_night_bytes/catnip.gif", + "source_file": "/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/catnip.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "HeNeArXn", + "demozoo_id": 135712 + }, + "shadertoy_url": null, + "preview_image": "2024_02_12_byte_jam_monday_night_bytes/henearxn.gif", + "source_file": "/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/henearxn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_02_12_byte_jam_monday_night_bytes/jtruk.png", + "source_file": "/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "T\u00f4Bach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/tobach.lua", + "preview_image": "2024_02_12_byte_jam_monday_night_bytes/tobach.gif" + } + ], + "staffs": [ + { + "handle": { + "name": "vurpo", + "demozoo_id": 138609 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Lynn", + "demozoo_id": 77648 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "vurpo", + "demozoo_id": 138609 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_02_19_byte_jam_monday_night_bytes.json b/data/2024_02_19_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..4519dc6bc --- /dev/null +++ b/data/2024_02_19_byte_jam_monday_night_bytes.json @@ -0,0 +1,92 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-02-19", + "date": "19 February 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/b1a0f945-cf7f-11ee-b94e-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2024_02_19_byte_jam_monday_night_bytes/tobach.png", + "source_file": "/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/tobach.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Vurpo", + "demozoo_id": 138609 + }, + "shadertoy_url": null, + "preview_image": "2024_02_19_byte_jam_monday_night_bytes/vurpo.png", + "source_file": "/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/vurpo.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "HeNeArXn", + "demozoo_id": 135712 + }, + "shadertoy_url": null, + "preview_image": "2024_02_19_byte_jam_monday_night_bytes/henearxn.png", + "source_file": "/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/henearxn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_02_19_byte_jam_monday_night_bytes/aldroid.png", + "source_file": "/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/aldroid.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "H0ffman (Revision 2023 Set)", + "demozoo_id": 1525 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_02_26_byte_jam_monday_night_bytes.json b/data/2024_02_26_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..721a97956 --- /dev/null +++ b/data/2024_02_26_byte_jam_monday_night_bytes.json @@ -0,0 +1,92 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-02-26", + "date": "26 February 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/3798cad2-d4f6-11ee-b94e-00505685775e", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Lex Bailey", + "demozoo_id": 136849 + }, + "shadertoy_url": null, + "preview_image": "2024_02_26_byte_jam_monday_night_bytes/lexbailey.png", + "source_file": "/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/lexbailey.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Doop", + "demozoo_id": 141174 + }, + "shadertoy_url": null, + "preview_image": "2024_02_26_byte_jam_monday_night_bytes/doop.png", + "source_file": "/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/doop.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_02_26_byte_jam_monday_night_bytes/catnip.png", + "source_file": "/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/catnip.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_02_26_byte_jam_monday_night_bytes/aldroid.png", + "source_file": "/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/aldroid.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Polynomial", + "demozoo_id": 60607 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_03_02_shader_showdown_instanssi.json b/data/2024_03_02_shader_showdown_instanssi.json new file mode 100644 index 000000000..348153178 --- /dev/null +++ b/data/2024_03_02_shader_showdown_instanssi.json @@ -0,0 +1,353 @@ +{ + "title": "Instanssi 2024 Varjostimien Näytösottelu", + "started": "2024-03-02", + "date": "02 March 2024", + "type": "Shader Showdown", + "website": "", + "flyer": "", + "vod":null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round 1 - Aloitusottelu 1", + "vod": "https://www.youtube.com/watch?v=YuHbekoYrzA", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle":{ + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_pumpuli.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_pumpuli.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle":{ + "name": "papu", + "demozoo_id": 76637 + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_papu.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_papu.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "zertap", + "demozoo_id": null + }, + "job": "Commentator" + } + ] + }, + { + "title": "Round 1 - Aloitusottelu 2", + "vod": "https://youtu.be/YuHbekoYrzA?t=2446", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle":{ + "name": "Alef", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Alef.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Alef.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle":{ + "name": "gemppu", + "demozoo_id": 87308 + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_gemppu.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_gemppu.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "papu", + "demozoo_id": 76637 + }, + "job": "Commentator" + },{ + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Round 1 - Aloitusottelu 3", + "vod": "https://youtu.be/YuHbekoYrzA?t=4258", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle":{ + "name": "Stuk", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Stuk.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Stuk.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle":{ + "name": "BFlorry", + "demozoo_id": 112769 + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BFlorry.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BFlorry.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "papu", + "demozoo_id": 76637 + }, + "job": "Commentator" + },{ + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Round 1 - Aloitusottelu 4", + "vod": "https://youtu.be/YuHbekoYrzA?t=6080", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle":{ + "name": "BadFelix", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BadFelix.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BadFelix.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle":{ + "name": "Eslo", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Eslo.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Eslo.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "papu", + "demozoo_id": 76637 + }, + "job": "Commentator" + },{ + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Round 2 - Semifinaali 1", + "vod": "https://youtu.be/YuHbekoYrzA?t=7863", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle":{ + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_pumpuli.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_pumpuli.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle":{ + "name": "Alef", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Alef.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Alef.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "papu", + "demozoo_id": 76637 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Round 2 - Semifinaali 2", + "vod": "https://youtu.be/YuHbekoYrzA?t=9508", + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle":{ + "name": "BFlorry", + "demozoo_id": 112769 + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_BFlorry.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_BFlorry.glsl" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle":{ + "name": "Eslo", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Eslo.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Eslo.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "papu", + "demozoo_id": 76637 + }, + "job": "Commentator" + },{ + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Round 3 - Final", + "vod": "https://www.youtube.com/watch?v=TmPo2LY6ivg", + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle":{ + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r3_final/r3_pumpuli.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r3_final/r3_pumpuli.glsl" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle":{ + "name": "Eslo", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_02_shader_showdown_instanssi/r3_final/r3_Eslo.jpg", + "source_file": "/shader_file_sources/2024_03_02_shader_showdown_instanssi/r3_final/r3_Eslo.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "papu", + "demozoo_id": 76637 + }, + "job": "Commentator" + },{ + "handle": { + "name": "zertap", + "demozoo_id": null + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Danacat", + "demozoo_id": null + }, + "job": "DJ" + }, + { + "handle": { + "name": "Kaaosradio", + "demozoo_id": null + }, + "job": "DJ" + }, + { + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "job": "Organizer" + }, + { + "handle": { + "name": "papu", + "demozoo_id": 76637 + }, + "job": "Organizer" + } + ], + "demozoo_party_id": 4655 +} diff --git a/data/2024_03_03_byte_jam_instanssi.json b/data/2024_03_03_byte_jam_instanssi.json new file mode 100644 index 000000000..22a2b44d3 --- /dev/null +++ b/data/2024_03_03_byte_jam_instanssi.json @@ -0,0 +1,99 @@ +{ + "title": "Instanssi 2024 Byte Jam", + "started": "2024-03-03", + "date": "03 March 2024", + "type": "Byte Jam", + "website": "https://instanssi.org/2024/ohjelma/#266", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_03_03_byte_jam_instanssi/aldroid.gif", + "source_file": "/shader_file_sources/2024_03_03_byte_jam_instanssi/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "muffintrap", + "demozoo_id": 80210 + }, + "shadertoy_url": null, + "preview_image": "2024_03_03_byte_jam_instanssi/muffintrap.gif", + "source_file": "/shader_file_sources/2024_03_03_byte_jam_instanssi/muffintrap.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2024_03_03_byte_jam_instanssi/suule.gif", + "source_file": "/shader_file_sources/2024_03_03_byte_jam_instanssi/suule.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_03_03_byte_jam_instanssi/pumpuli.gif", + "source_file": "/shader_file_sources/2024_03_03_byte_jam_instanssi/pumpuli.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "OGsuntio", + "demozoo_id": null + }, + "job": "DJ set" + }, + { + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4655 +} diff --git a/data/2024_03_04_shader_jam_monday_night_bytes.json b/data/2024_03_04_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..37a6c12ce --- /dev/null +++ b/data/2024_03_04_shader_jam_monday_night_bytes.json @@ -0,0 +1,183 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-03-04", + "date": "04 March 2024", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/0d38092a-da6f-11ee-b94e-00505685775e#show-0d38092a-da6f-11ee-b94e-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "BFlorry", + "demozoo_id": 112769 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_BFlorry.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_BFlorry.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "MuffinHop", + "demozoo_id": 44254 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_MuffinHop.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_MuffinHop.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "papu", + "demozoo_id": 76637 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_papu.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_papu.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_pumpuli.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_pumpuli.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "saempl", + "demozoo_id": 136417 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_saempl.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_saempl.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ToBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.jpg", + "source_file": "/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Alkama", + "demozoo_id": 1382 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_03_11_byte_jam_monday_night_bytes.json b/data/2024_03_11_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..4b579899e --- /dev/null +++ b/data/2024_03_11_byte_jam_monday_night_bytes.json @@ -0,0 +1,99 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-03-11", + "date": "11 March 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_03_11_byte_jam_monday_night_bytes/aldroid.gif", + "source_file": "/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_03_11_byte_jam_monday_night_bytes/catnip.gif", + "source_file": "/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/catnip.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_03_11_byte_jam_monday_night_bytes/pumpuli.gif", + "source_file": "/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/pumpuli.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "vurpo", + "demozoo_id": 138609 + }, + "shadertoy_url": null, + "preview_image": "2024_03_11_byte_jam_monday_night_bytes/vurpo.gif", + "source_file": "/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/vurpo.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "GryphonAlpha", + "demozoo_id": null + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_03_18_shader_jam_monday_night_bytes.json b/data/2024_03_18_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..9456baaef --- /dev/null +++ b/data/2024_03_18_shader_jam_monday_night_bytes.json @@ -0,0 +1,118 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-03-18", + "date": "18 March 2024", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_aldroid.jpg", + "source_file": "/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_Catnip.jpg", + "source_file": "/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_Catnip.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_nusan.jpg", + "source_file": "/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ompuco", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_ompuco.jpg", + "source_file": "/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_ompuco.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Peregrine", + "demozoo_id": 122747 + }, + "shadertoy_url": null, + "preview_image": "2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_peregrine.jpg", + "source_file": "/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_peregrine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_totetmatt.jpg", + "source_file": "/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_totetmatt.glsl" + } + + ], + "staffs": [ + + { + "handle": { + "name": "Dj Mallard", + "demozoo_id": null + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Reality", + "demozoo_id": 67077 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_03_29_shader_showdown_revision_2024.json b/data/2024_03_29_shader_showdown_revision_2024.json new file mode 100644 index 000000000..63bca01f5 --- /dev/null +++ b/data/2024_03_29_shader_showdown_revision_2024.json @@ -0,0 +1,306 @@ +{ + "title": "Revision", + "started": "2024-03-29", + "date": "29 March 2024", + "type": "Shader Showdown", + "website": "https://2024.revision-party.net/", + "flyer": "", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Round 1", + "vod": "https://youtu.be/8PoeeqtmRe0?t=78", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 874, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2024_03_29_shader_showdown_revision_2024/evvvvil-qualif-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/evvvvil-qualif-rev2024.glsl" + }, + { + "id": 2, + "rank": 3, + "points": 797, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2024_03_29_shader_showdown_revision_2024/wrighter-qualif-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/wrighter-qualif-rev2024.glsl" + }, + { + "id": 3, + "rank": 2, + "points": 864, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": "https://www.shadertoy.com/view/XcyGRz", + "preview_image": "2024_03_29_shader_showdown_revision_2024/totetmatt-qualif-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/totetmatt-qualif-rev2024.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "lug00ber", + "demozoo_id": 90 + }, + "job": "DJ set" + }, + { + "handle": { + "name": "psenough", + "demozoo_id": 313 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Round 2", + "vod": "https://youtu.be/8PoeeqtmRe0?t=2511", + "entries": [ + { + "id": 1, + "rank": 3, + "points": 677, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_29_shader_showdown_revision_2024/cosamentale-qualif-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/cosamentale-qualif-rev2024.glsl" + }, + { + "id": 2, + "rank": 2, + "points": 769, + "handle": { + "name": "dok", + "demozoo_id": 142108 + }, + "shadertoy_url": null, + "preview_image": "2024_03_29_shader_showdown_revision_2024/dok-qualif-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/dok-qualif-rev2024.glsl" + }, + { + "id": 3, + "rank": 1, + "points": 885, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2024_03_29_shader_showdown_revision_2024/nusan-qualif-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/nusan-qualif-rev2024.glsl" + } + + ], + "staffs": [ + + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "DJ set" + }, + { + "handle": { + "name": "psenough", + "demozoo_id": 313 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Round 3", + "vod": "https://youtu.be/8PoeeqtmRe0?t=4798", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 713, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": "https://www.shadertoy.com/view/lfKGzR", + "preview_image": "2024_03_29_shader_showdown_revision_2024/ponk-qualif-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/ponk-qualif-rev2024.glsl" + }, + { + "id": 2, + "rank": 3, + "points": 471, + "handle": { + "name": "z0rg", + "demozoo_id": 114547 + }, + "shadertoy_url": null, + "preview_image": "2024_03_29_shader_showdown_revision_2024/z0rg-qualif-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/z0rg-qualif-rev2024.glsl" + }, + { + "id": 3, + "rank": 2, + "points": 599, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2024_03_29_shader_showdown_revision_2024/musk-qualif-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/musk-qualif-rev2024.glsl" + } + + ], + "staffs": [ + { + "handle": { + "name": "subi", + "demozoo_id": 21306 + }, + "job": "DJ set" + }, + { + "handle": { + "name": "psenough", + "demozoo_id": 313 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentator" + } + ] + }, + { + "title": "Final", + "vod": "https://www.youtube.com/watch?v=JEn3kpysimY", + "entries": [ + { + "id": 1, + "rank": 1, + "points": 1215, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2024_03_29_shader_showdown_revision_2024/evvvvil-final-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/evvvvil-final-rev2024.glsl" + }, + { + "id": 2, + "rank":2, + "points": 914, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2024_03_29_shader_showdown_revision_2024/nusan-final-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/nusan-final-rev2024.glsl" + }, + { + "id": 3, + "rank": 3, + "points": 824, + "handle": { + "name": "Ponk", + "demozoo_id": 61858 + }, + "shadertoy_url": null, + "preview_image": "2024_03_29_shader_showdown_revision_2024/ponk-final-rev2024.jpg", + "source_file": "/shader_file_sources/2024_03_29_shader_showdown_revision_2024/ponk-final-rev2024.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "DJ set" + }, + { + "handle": { + "name": "psenough", + "demozoo_id": 313 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "kusma", + "demozoo_id": 1998 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "psenough", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "job": "Coordinator" + }, + { + "handle": { + "name": "Diffty", + "demozoo_id": 88962 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4791 +} diff --git a/data/2024_03_30_byte_jam_revision_2024.json b/data/2024_03_30_byte_jam_revision_2024.json new file mode 100644 index 000000000..3bcd85bf6 --- /dev/null +++ b/data/2024_03_30_byte_jam_revision_2024.json @@ -0,0 +1,99 @@ +{ + "title": "Revision", + "started": "2024-03-30", + "date": "30 March 2024", + "type": "Byte Jam", + "website": "https://2024.revision-party.net/", + "flyer": "", + "vod":"https://www.youtube.com/watch?v=9Qhg4zJLy4o", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_byte_jam_revision_2024/tobach.gif", + "source_file": "/shader_file_sources/2024_03_30_byte_jam_revision_2024/tobach.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_byte_jam_revision_2024/gasman.gif", + "source_file": "/shader_file_sources/2024_03_30_byte_jam_revision_2024/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_byte_jam_revision_2024/jtruk.gif", + "source_file": "/shader_file_sources/2024_03_30_byte_jam_revision_2024/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_byte_jam_revision_2024/nusan.gif", + "source_file": "/shader_file_sources/2024_03_30_byte_jam_revision_2024/nusan.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Numtek", + "demozoo_id": 6428 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers (Stage)" + }, + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers (BeamTeam)" + } + ], + "demozoo_party_id": 4791 +} diff --git a/data/2024_03_30_shader_jam_revision_2024.json b/data/2024_03_30_shader_jam_revision_2024.json new file mode 100644 index 000000000..28c322eb4 --- /dev/null +++ b/data/2024_03_30_shader_jam_revision_2024.json @@ -0,0 +1,437 @@ +{ + "title": "Revision", + "started": "2024-03-30", + "date": "30 March 2024", + "type": "Shader Jam", + "website": "https://2024.revision-party.net/", + "flyer": "", + "vod":"https://www.youtube.com/watch?v=dSMlBgwciAk", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": "https://www.shadertoy.com/view/4ct3RB", + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_0b5vr.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_0b5vr.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroidia", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_aldroidia.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_aldroidia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alien", + "demozoo_id": 108887 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_alien.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_alien.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ciosai_tw", + "demozoo_id": 142051 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ciosai_tw.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ciosai_tw.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cosamentale", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cosamentale.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cosamentale.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "cpdt", + "demozoo_id": 71620 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cpdt.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cpdt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "DiFFtY", + "demozoo_id": 88962 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_diffty.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_diffty.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dok", + "demozoo_id": 142108 + }, + "shadertoy_url": "https://www.shadertoy.com/view/XfcGR2", + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_dok.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_dok.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ebu", + "demozoo_id": 52375 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ebu.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ebu.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Exca", + "demozoo_id": 35897 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Exca.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Exca.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ferris", + "demozoo_id": 18 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ferris.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ferris.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gam0022", + "demozoo_id": 63869 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_gam0022.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_gam0022.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ivan Dianov", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ivan_dianov.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ivan_dianov.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "kali", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_kali.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_kali.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Kamoshika", + "demozoo_id": 128644 + }, + "shadertoy_url": "https://www.shadertoy.com/view/4fdGzB", + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Kamoshika.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Kamoshika.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "klos", + "demozoo_id": 88858 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_klos.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_klos.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "krafpy", + "demozoo_id": 142045 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_krafpy.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_krafpy.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "LechugaFeliz", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_LechugaFeliz.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_LechugaFeliz.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "luckyxxl", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_luckyxxl.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_luckyxxl.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Marex", + "demozoo_id": 131937 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Marex.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Marex.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "MrSynAckSter", + "demozoo_id": 130883 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_MrSynAckSter.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_MrSynAckSter.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "musk", + "demozoo_id": 14411 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_musk.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_musk.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_nusan.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "peregrine", + "demozoo_id": 122747 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_peregrine.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_peregrine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_pumpuli.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_pumpuli.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "rubix", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_rubix.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_rubix.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "scrapper", + "demozoo_id": 73877 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_scrapper.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_scrapper.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_totetmatt.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_totetmatt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wbcbz7.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wbcbz7.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wrighter.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wrighter.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Zavie", + "demozoo_id": 985 + }, + "shadertoy_url": null, + "preview_image": "2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Zavie.jpg", + "source_file": "/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Zavie.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "h0ffman", + "demozoo_id": 1525 + }, + "job": "Amiga DJ set" + }, + { + "handle": { + "name": "Teo", + "demozoo_id": 901 + }, + "job": "Amiga DJ set" + }, + { + "handle": { + "name": "psenough", + "demozoo_id": 313 + }, + "job": "VJ" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "psenough", + "demozoo_id": 313 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "job": "Coordinator" + } + ], + "demozoo_party_id": 4791 +} diff --git a/data/2024_04_02_byte_jam_monday_night_bytes.json b/data/2024_04_02_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..01946c2fe --- /dev/null +++ b/data/2024_04_02_byte_jam_monday_night_bytes.json @@ -0,0 +1,92 @@ +{ + "title": "Monday Night Bytes (on Tuesday)", + "started": "2024-04-02", + "date": "2 April 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/glastonbridge/TIC-80/releases/tag/hack.fft.1_0_2", + "version": "tic80showdown FFT Hack v1.0.2", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_04_02_byte_jam_monday_night_bytes/pumpuli.gif", + "source_file": "/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/pumpuli.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "JokerX", + "demozoo_id": 142119 + }, + "shadertoy_url": null, + "preview_image": "2024_04_02_byte_jam_monday_night_bytes/jokerx.gif", + "source_file": "/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/jokerx.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_04_02_byte_jam_monday_night_bytes/jtruk.gif", + "source_file": "/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Suule", + "demozoo_id": 136862 + }, + "shadertoy_url": null, + "preview_image": "2024_04_02_byte_jam_monday_night_bytes/suule.png", + "source_file": "/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/suule.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Cmdr.Homer", + "demozoo_id": 77040 + }, + "job": "DJ set (replay)" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Vurpo", + "demozoo_id": 138609 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_04_08_shader_jam_monday_night_bytes.json b/data/2024_04_08_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..10f3dc0c1 --- /dev/null +++ b/data/2024_04_08_shader_jam_monday_night_bytes.json @@ -0,0 +1,116 @@ +{ + "title": "Monday Night Bytes ", + "started": "2024-04-08", + "date": "08 April 2024", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroidia", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_aldroidia.jpg", + "source_file": "/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_aldroidia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": "https://www.shadertoy.com/view/XfVGRh", + "preview_image": "2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_catnip.jpg", + "source_file": "/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_catnip.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dok", + "demozoo_id": 142108 + }, + "shadertoy_url": null, + "preview_image": "2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_dok.jpg", + "source_file": "/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_dok.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Marex", + "demozoo_id": 131937 + }, + "shadertoy_url": "https://www.shadertoy.com/view/4ftSWH", + "preview_image": "2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.jpg", + "source_file": "/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.jpg", + "source_file": "/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.jpg", + "source_file": "/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Commentator" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_04_15_byte_jam_monday_night_bytes.json b/data/2024_04_15_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..231af1b5d --- /dev/null +++ b/data/2024_04_15_byte_jam_monday_night_bytes.json @@ -0,0 +1,80 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-04-15", + "date": "15 April 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/aliceisjustplaying/TIC-80/releases/tag/v0.0.1", + "version": "tic80showdown Alice fork v0.0.1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_04_15_byte_jam_monday_night_bytes/pumpuli.png", + "source_file": "/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/pumpuli.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Muffintrap", + "demozoo_id": 80210 + }, + "shadertoy_url": null, + "preview_image": "2024_04_15_byte_jam_monday_night_bytes/muffintrap.png", + "source_file": "/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/muffintrap.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Vurpo", + "demozoo_id": 138609 + }, + "shadertoy_url": null, + "preview_image": "2024_04_15_byte_jam_monday_night_bytes/vurpo.png", + "source_file": "/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/vurpo.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "mintimperial", + "demozoo_id": null + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_04_22_shader_jam_monday_night_bytes.json b/data/2024_04_22_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..650616ae6 --- /dev/null +++ b/data/2024_04_22_shader_jam_monday_night_bytes.json @@ -0,0 +1,171 @@ +{ + "title": "Monday Night Bytes ", + "started": "2024-04-22", + "date": "22 April 2024", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/dee6217a-00f6-11ef-9de6-00505685775e#show-dee6217a-00f6-11ef-9de6-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "shadertoy_url": null, + "preview_image": "2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_alkama.jpg", + "source_file": "/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_alkama.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": "https://www.shadertoy.com/view/MfcXDH", + "preview_image": "2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_catnip.jpg", + "source_file": "/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_catnip.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ciosai_tw", + "demozoo_id": 142051 + }, + "shadertoy_url": null, + "preview_image": "2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ciosai_tw.jpg", + "source_file": "/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ciosai_tw.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "dok", + "demozoo_id": 142108 + }, + "shadertoy_url": null, + "preview_image": "2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_dok.jpg", + "source_file": "/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_dok.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Marex", + "demozoo_id": 131937 + }, + "shadertoy_url": "https://www.shadertoy.com/view/4ctSWH", + "preview_image": "2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.jpg", + "source_file": "/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": "https://www.shadertoy.com/view/4ctSWH", + "preview_image": "2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_nusan.jpg", + "source_file": "/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.jpg", + "source_file": "/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ToBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ToBach.jpg", + "source_file": "/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ToBach.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.jpg", + "source_file": "/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_wrighter.jpg", + "source_file": "/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_wrighter.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "Polynomial", + "demozoo_id": null + }, + "job": "DJ" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_04_29_zx_spectrum_showdown_multimatograf.json b/data/2024_04_29_zx_spectrum_showdown_multimatograf.json new file mode 100644 index 000000000..a32af2c83 --- /dev/null +++ b/data/2024_04_29_zx_spectrum_showdown_multimatograf.json @@ -0,0 +1,175 @@ +{ + "title": "Multimatograf", + "started": "2024-04-29", + "date": "29 April 2024", + "type": "ZX Spectrum Showdown", + "website":"https://events.retroscene.org/mf2024", + "vod": null, + "software_used": [ + { + "name": "Bazematic", + "url": "https://github.com/gasman/bazematic", + "version": "2024-02-07", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "Semi Final #01", + "vod": null, + "keyword": null, + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "gogin", + "demozoo_id": 12629 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/gogin.asm", + "preview_image": "2024_04_29_zx_spectrum_showdown_multimatograf/semis/gogin.png" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "nyuk", + "demozoo_id": 43587 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nyuk.asm", + "preview_image": "2024_04_29_zx_spectrum_showdown_multimatograf/semis/nyuk.png" + } + ], + "staffs": [ + { + "handle": { + "name": "bfox", + "demozoo_id": 9743 + }, + "job": "MC" + } + ] + }, + { + "title": "Semi Final #02", + "vod": null, + "keyword": null, + "entries": [ + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "bfox", + "demozoo_id": 9743 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/bfox.asm", + "preview_image": "2024_04_29_zx_spectrum_showdown_multimatograf/semis/bfox.png" + }, + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "nikhotmsk", + "demozoo_id": 132977 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nikhotmsk.asm", + "preview_image": "2024_04_29_zx_spectrum_showdown_multimatograf/semis/nikhotmsk.png" + } + ], + "staffs": [ + ] + }, + { + "title": "Grand Final", + "vod": null, + "keyword": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "nyuk", + "demozoo_id": 43587 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nyuk.asm", + "preview_image": "2024_04_29_zx_spectrum_showdown_multimatograf/finals/nyuk.png" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "nikhotmsk", + "demozoo_id": 132977 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nikhotmsk.asm", + "preview_image": "2024_04_29_zx_spectrum_showdown_multimatograf/finals/nikhotmsk.png" + } + ], + "staffs": [ + ] + }, + { + "title": "3rd place Final", + "vod": null, + "keyword": null, + "entries": [ + { + "id": null, + "rank": 1, + "points": null, + "handle": { + "name": "gogin", + "demozoo_id": 12629 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/gogin.asm", + "preview_image": "2024_04_29_zx_spectrum_showdown_multimatograf/finals/gogin.png" + }, + { + "id": null, + "rank": 2, + "points": null, + "handle": { + "name": "bfox", + "demozoo_id": 9743 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/bfox.asm", + "preview_image": "2024_04_29_zx_spectrum_showdown_multimatograf/finals/bfox.png" + } + ], + "staffs": [ + ] + } + ], + "staffs": [ + { + "handle": { + "name": "wbcbz7", + "demozoo_id": 45761 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4847 +} \ No newline at end of file diff --git a/data/2024_05_04_zx_spectrum_jam_synergy.json b/data/2024_05_04_zx_spectrum_jam_synergy.json new file mode 100644 index 000000000..492c74e41 --- /dev/null +++ b/data/2024_05_04_zx_spectrum_jam_synergy.json @@ -0,0 +1,134 @@ +{ + "title": "Synergy", + "started": "2024-05-04", + "date": "4 May 2024", + "type": "ZX Spectrum Jam", + "vod": "https://www.youtube.com/watch?v=dIC6XuCkBnk&ab_channel=In%C3%A9rciaDemoparty", + "software_used": [ + { + "name": "Bazematic", + "url": "https://github.com/gasman/bazematic", + "version": "2024-05-02", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": "ZX Spectrum Jam", + "vod": "https://www.youtube.com/watch?v=dIC6XuCkBnk&ab_channel=In%C3%A9rciaDemoparty", + "keyword": null, + "entries": [ + { + "id": 1, + "rank": null, + "points": null, + "handle": { + "name": "lordcoxis", + "demozoo_id": 8935 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "https://files.scene.org/get/parties/2024/synergy24/bazematic_jam/lordcoxis.asm", + "preview_image": "2024_05_04_zx_spectrum_jam_synergy/lordcoxis.png" + }, + { + "id": 2, + "rank": null, + "points": null, + "handle": { + "name": "mr_spiv", + "demozoo_id": 2926 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "https://files.scene.org/get/parties/2024/synergy24/bazematic_jam/mr_spiv.asm", + "preview_image": "2024_05_04_zx_spectrum_jam_synergy/mr_spiv.png" + }, + { + "id": 3, + "rank": null, + "points": null, + "handle": { + "name": "rzxm", + "demozoo_id": 141732 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "https://files.scene.org/get/parties/2024/synergy24/bazematic_jam/rzxm.asm", + "preview_image": "2024_05_04_zx_spectrum_jam_synergy/rzxm.png" + }, + { + "id": 4, + "rank": null, + "points": null, + "handle": { + "name": "sq", + "demozoo_id": 9554 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "https://files.scene.org/get/parties/2024/synergy24/bazematic_jam/sq.asm", + "preview_image": "2024_05_04_zx_spectrum_jam_synergy/sq.png" + }, + { + "id": 5, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "https://files.scene.org/get/parties/2024/synergy24/bazematic_jam/gasman.asm", + "preview_image": "2024_05_04_zx_spectrum_jam_synergy/gasman.png" + }, + { + "id": 6, + "rank": null, + "points": null, + "handle": { + "name": "tmk", + "demozoo_id": 9182 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "https://files.scene.org/get/parties/2024/synergy24/bazematic_jam/tmk.asm", + "preview_image": "2024_05_04_zx_spectrum_jam_synergy/tmk.png" + }, + { + "id": 7, + "rank": null, + "points": null, + "handle": { + "name": "superogue", + "demozoo_id": 617 + }, + "shadertoy_url": null, + "tic80_cart_id": null, + "source_file": "https://files.scene.org/get/parties/2024/synergy24/bazematic_jam/superogue.asm", + "preview_image": "2024_05_04_zx_spectrum_jam_synergy/superogue.png" + } + ], + "staffs": [ + { + "handle": { + "name": "jeenio", + "demozoo_id": 3048 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "ps", + "demozoo_id": 313 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4904 +} diff --git a/data/2024_05_06_byte_jam_monday_night_bytes.json b/data/2024_05_06_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..0df8f73cb --- /dev/null +++ b/data/2024_05_06_byte_jam_monday_night_bytes.json @@ -0,0 +1,104 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-05-06", + "date": "6 May 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/aliceisjustplaying/TIC-80/releases/tag/v0.0.4", + "version": "tic80showdown Alice fork v0.0.4", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alice", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_05_06_byte_jam_monday_night_bytes/alice.png", + "source_file": "/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/alice.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_05_06_byte_jam_monday_night_bytes/catnip.png", + "source_file": "/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/catnip.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2024_05_06_byte_jam_monday_night_bytes/gasman.png", + "source_file": "/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_05_06_byte_jam_monday_night_bytes/jtruk.png", + "source_file": "/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_05_06_byte_jam_monday_night_bytes/pumpuli.png", + "source_file": "/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/pumpuli.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Polynomial", + "demozoo_id": 60607 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_05_10_byte_jam_outline.json b/data/2024_05_10_byte_jam_outline.json new file mode 100644 index 000000000..f0b9ed6b7 --- /dev/null +++ b/data/2024_05_10_byte_jam_outline.json @@ -0,0 +1,92 @@ +{ + "title": "Outline", + "started": "2024-05-09", + "date": "9 - 12 May 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"https://www.youtube.com/watch?v=5nWoPYPJAf8", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/aliceisjustplaying/TIC-80/releases/tag/v0.0.4", + "version": "tic80showdown Alice fork v0.0.4", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_05_10_byte_jam_outline/jtruk.gif", + "source_file": "/shader_file_sources/2024_05_10_byte_jam_outline/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gasman", + "demozoo_id": 5879 + }, + "shadertoy_url": null, + "preview_image": "2024_05_10_byte_jam_outline/gasman.gif", + "source_file": "/shader_file_sources/2024_05_10_byte_jam_outline/gasman.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "alice", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_05_10_byte_jam_outline/alice.gif", + "source_file": "/shader_file_sources/2024_05_10_byte_jam_outline/alice.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_05_10_byte_jam_outline/aldroid.gif", + "source_file": "/shader_file_sources/2024_05_10_byte_jam_outline/aldroid.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "dojoe", + "demozoo_id": 24894 + }, + "job": "DJ Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "havoc", + "demozoo_id": 2419 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4889 +} diff --git a/data/2024_05_13_byte_jam_monday_night_bytes.json b/data/2024_05_13_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..66bd06364 --- /dev/null +++ b/data/2024_05_13_byte_jam_monday_night_bytes.json @@ -0,0 +1,104 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-05-13", + "date": "13 May 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/aliceisjustplaying/TIC-80/releases/tag/v0.0.5", + "version": "tic80showdown Alice fork v0.0.5", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_05_13_byte_jam_monday_night_bytes/catnip.png", + "source_file": "/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/catnip.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_05_13_byte_jam_monday_night_bytes/jtruk.png", + "source_file": "/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_05_13_byte_jam_monday_night_bytes/pumpuli.png", + "source_file": "/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/pumpuli.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "TôBach", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2024_05_13_byte_jam_monday_night_bytes/tobach.png", + "source_file": "/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/tobach.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Vurpo", + "demozoo_id": 138609 + }, + "shadertoy_url": null, + "preview_image": "2024_05_13_byte_jam_monday_night_bytes/vurpo.png", + "source_file": "/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/vurpo.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "Polynomial", + "demozoo_id": 60607 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Reality404", + "demozoo_id": 67077 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_05_14_shader_jam_atparty.json b/data/2024_05_14_shader_jam_atparty.json new file mode 100644 index 000000000..4e67ada1e --- /dev/null +++ b/data/2024_05_14_shader_jam_atparty.json @@ -0,0 +1,49 @@ +{ + "title": "@Party 2024", + "started": "2024-05-14", + "date": "14 June 2024", + "type": "Live Performance", + "website": "http://atparty-demoscene.net/", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/0c86061b-2bc5-11ef-9de6-00505685775e?t=30350#show-0c86061b-2bc5-11ef-9de6-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "provod", + "demozoo_id": 24024 + }, + "shadertoy_url": null, + "preview_image": "2024_05_14_shader_jam_atparty/2024-06-15-provod-atparty-improv.jpg", + "source_file": "/shader_file_sources/2024_05_14_shader_jam_atparty/2024-06-15-provod-atparty-improv.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "jimbo00000", + "demozoo_id": 62356 + }, + "job": "Live Music" + } + ] + } + ], + "staffs": [ + ], + "demozoo_party_id": 4955 +} diff --git a/data/2024_06_29_shader_jam_shadow_party.json b/data/2024_06_29_shader_jam_shadow_party.json new file mode 100644 index 000000000..04fad6cc3 --- /dev/null +++ b/data/2024_06_29_shader_jam_shadow_party.json @@ -0,0 +1,219 @@ +{ + "title": "Shadow Party", + "started": "2024-06-29", + "date": "29 June 2024", + "type": "Shader Jam", + "website": "https://shadow-party.org/", + "flyer": "", + "vod":"https://www.twitch.tv/videos/2184004547?t=20h19m45s", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_a1dr0idia.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_a1dr0idia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroid.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroidia.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroidia.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "evvvvil", + "demozoo_id": 71087 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_evvvvil.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_evvvvil.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "g012", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g012.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g012.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "g33kou", + "demozoo_id": 143232 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g33kou.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g33kou.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Koltes", + "demozoo_id": 52423 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_Koltes.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_Koltes.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lamogui", + "demozoo_id": 71129 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_lamogui.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_lamogui.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Marex", + "demozoo_id": 131937 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_Marex.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_Marex.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_nusan.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "peregrine", + "demozoo_id": 122747 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_peregrine.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_peregrine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_alkama.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_alkama.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_nfp.jpg", + "source_file": "/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_nfp.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "pouale", + "demozoo_id": 143226 + }, + "job": "Live Set" + }, + { + "handle": { + "name": "alkama", + "demozoo_id": 1382 + }, + "job": "DJ Set" + }, + { + "handle": { + "name": "DMA-SC", + "demozoo_id": 2568 + }, + "job": "Live Set" + } + ] + } + ], + "staffs": [ + ], + "demozoo_party_id": 4946 +} diff --git a/data/2024_07_19_shader_jam_bornhack.json b/data/2024_07_19_shader_jam_bornhack.json new file mode 100644 index 000000000..940d3f6c7 --- /dev/null +++ b/data/2024_07_19_shader_jam_bornhack.json @@ -0,0 +1,156 @@ +{ + "title": "Immibis Shader Jam @ Bornhack", + "started": "2024-07-19", + "date": "19 - 24 July 2024", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":null, + "software_used": [ + { + "name": "unpublished tool by immibis", + "url": "", + "version": "unpublished", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "ciosai_tw", + "demozoo_id": 142051 + }, + "shadertoy_url": null, + "preview_image": "2024_07_19_shader_jam_bornhack/CIOSAI_tw.jpg", + "source_file": "/shader_file_sources/2024_07_19_shader_jam_bornhack/CIOSAI_tw_booboobaba.html" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Mushbie", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_07_19_shader_jam_bornhack/Mushbie.jpg", + "source_file": "/shader_file_sources/2024_07_19_shader_jam_bornhack/Mushbie_trans_wave.html" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Okarin", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_07_19_shader_jam_bornhack/Okarin.jpg", + "source_file": "/shader_file_sources/2024_07_19_shader_jam_bornhack/Okarin_neon_flow.html" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "immibis", + "demozoo_id": 138870 + }, + "shadertoy_url": null, + "preview_image": "2024_07_19_shader_jam_bornhack/immibis 1.jpg", + "source_file": "/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_advert_seed_shader.html" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "immibis & anuril", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_07_19_shader_jam_bornhack/immibis&anuril.jpg", + "source_file": "/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_and_anuril_another_neon_feedback_shader.html" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "immibis", + "demozoo_id": 138870 + }, + "shadertoy_url": null, + "preview_image": "2024_07_19_shader_jam_bornhack/immibis 2.jpg", + "source_file": "/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_spiral_tunnel.html" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "iron", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_07_19_shader_jam_bornhack/iron.jpg", + "source_file": "/shader_file_sources/2024_07_19_shader_jam_bornhack/iron_spinning_circles.html" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jn", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_07_19_shader_jam_bornhack/jn.jpg", + "source_file": "/shader_file_sources/2024_07_19_shader_jam_bornhack/jn_Game_of_Life.html" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "unknown", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_07_19_shader_jam_bornhack/null.jpg", + "source_file": "/shader_file_sources/2024_07_19_shader_jam_bornhack/unknown_fash2.html" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "unknown", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_07_19_shader_jam_bornhack/null(1).jpg", + "source_file": "/shader_file_sources/2024_07_19_shader_jam_bornhack/unknown_testbars.html" + } + ], + "staffs": [] + } + ], + "staffs": [ + { + "handle": { + "name": "immibis", + "demozoo_id": 138870 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} diff --git a/data/2024_07_22_shader_byte_jam_monday_night_bytes.json b/data/2024_07_22_shader_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..da268c9ba --- /dev/null +++ b/data/2024_07_22_shader_byte_jam_monday_night_bytes.json @@ -0,0 +1,104 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-07-22", + "date": "22 July 2024", + "type": "ShaderByte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/aliceisjustplaying/TIC-80/releases/tag/v0.0.5", + "version": "tic80showdown Alice fork v0.0.5", + "purpose": "Graphic" + }, + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Catnip.jpg", + "source_file": "/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Catnip.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Ciosai", + "demozoo_id": 142051 + }, + "shadertoy_url": null, + "preview_image": "2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Ciosai.jpg", + "source_file": "/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Ciosai.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Peregrine", + "demozoo_id": 122747 + }, + "shadertoy_url": null, + "preview_image": "2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_peregrine.jpg", + "source_file": "/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_peregrine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "enfys", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2024_07_22_shader_byte_jam_monday_night_bytes/enfys-fieldfxmonday-1.gif", + "source_file": "/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/enfys-fieldfxmonday-1.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "roeltje", + "demozoo_id": 44279 + }, + "shadertoy_url": null, + "preview_image": "2024_07_22_shader_byte_jam_monday_night_bytes/roeltje-bytejam1.gif", + "source_file": "/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/roeltje-bytejam1.lua" + } + + ], + "staffs": [ + { + "handle": { + "name": "Alkama", + "demozoo_id": 1382 + }, + "job": "DJ set" + } + ] + } + ], + "staffs": [ + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_08_12_shader_jam_monday_night_bytes.json b/data/2024_08_12_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..c8c65d2aa --- /dev/null +++ b/data/2024_08_12_shader_jam_monday_night_bytes.json @@ -0,0 +1,99 @@ +{ + "title": "Monday Night Bytes ", + "started": "2024-08-12", + "date": "12 August 2024", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/3e3604e5-58f0-11ef-a6a4-00505685775e#show-3e3604e5-58f0-11ef-a6a4-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldro1d1a.jpg", + "source_file": "/shader_file_sources/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldro1d1a.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg", + "source_file": "/shader_file_sources/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "LittleTheremin", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_LittleTheremin.jpg", + "source_file": "/shader_file_sources/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_LittleTheremin.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg", + "source_file": "/shader_file_sources/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "P3RC", + "demozoo_id": null + }, + "job": "DJ" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_08_16_byte_jam_byte_wall_evoke.json b/data/2024_08_16_byte_jam_byte_wall_evoke.json new file mode 100644 index 000000000..85a402904 --- /dev/null +++ b/data/2024_08_16_byte_jam_byte_wall_evoke.json @@ -0,0 +1,283 @@ +{ + "title": "Bytewall @ Evoke ", + "started": "2024-08-16", + "date": "16 August 2024", + "type": "Byte Jam", + "website": "https://2024.evoke.eu/", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/aliceisjustplaying/TIC-80/releases/tag/v0.0.5", + "version": "tic80showdown Alice fork v0.0.5", + "purpose": "Graphic" + }, + { + "name": "Byte Jammer", + "url": "https://github.com/creativenucleus/bytejammer", + "version" : "", + "purpose": "System" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/aldroid.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "chordbug", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/chordbug1.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug1.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "chordbug", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/chordbug2.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug2.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "chordbug", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/chordbug3.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug3.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "chordbug", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/chordbug4.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug4.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "enfys", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/enfys1.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/enfys1.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "enfys", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/enfys2.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/enfys2.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/jtruk - bouncing bytewall.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bouncing bytewall.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/jtruk - bytewall ad.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bytewall ad.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/jtruk - embossed-neon.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - embossed-neon.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/jtruk - grunge-spiral.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - grunge-spiral.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/jtruk - mosaic-mirage.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - mosaic-mirage.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "PotcFdk", + "demozoo_id": 80946 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/PotcFdk.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/PotcFdk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/pumpuli.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/pumpuli.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Roeltje", + "demozoo_id": 44279 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/Roeltje.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/Roeltje.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "rubix", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/rubix.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/rubix.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "trifox", + "demozoo_id": 6134 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/trifox1.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox1.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "trifox", + "demozoo_id": 6134 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/trifox2.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox2.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "trifox", + "demozoo_id": 6134 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/trifox3.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox3.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "trifox", + "demozoo_id": 6134 + }, + "shadertoy_url": null, + "preview_image": "2024_08_16_byte_jam_byte_wall_evoke/trifox4.gif", + "source_file": "/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox4.lua" + } + ], + "staffs": [ + ] + } + ], + "staffs": [ + { + "handle": { + "name": "RaccoonViolet", + "demozoo_id": 90373 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": 4710 +} diff --git a/data/2024_08_26_byte_jam_monday_night_bytes.json b/data/2024_08_26_byte_jam_monday_night_bytes.json new file mode 100644 index 000000000..0c0cd537f --- /dev/null +++ b/data/2024_08_26_byte_jam_monday_night_bytes.json @@ -0,0 +1,140 @@ +{ + "title": "Monday Night Bytes", + "started": "2024-08-26", + "date": "26 August 2024", + "type": "Byte Jam", + "website": "", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/aliceisjustplaying/TIC-80/releases/tag/v0.0.5", + "version": "tic80showdown Alice fork v0.0.5", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_08_26_byte_jam_monday_night_bytes/catnip.png", + "source_file": "/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/catnip.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "enfys", + "demozoo_id": 89891 + }, + "shadertoy_url": null, + "preview_image": "2024_08_26_byte_jam_monday_night_bytes/enfys.png", + "source_file": "/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/enfys.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "g33kou", + "demozoo_id": 143232 + }, + "shadertoy_url": null, + "preview_image": "2024_08_26_byte_jam_monday_night_bytes/g33kou.png", + "source_file": "/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/g33kou.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "henearxn", + "demozoo_id": 135712 + }, + "shadertoy_url": null, + "preview_image": "2024_08_26_byte_jam_monday_night_bytes/henearxn.png", + "source_file": "/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/henearxn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "jtruk", + "demozoo_id": 135705 + }, + "shadertoy_url": null, + "preview_image": "2024_08_26_byte_jam_monday_night_bytes/jtruk.png", + "source_file": "/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/jtruk.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "lynn", + "demozoo_id": null + }, + "shadertoy_url": null, + "preview_image": "2024_08_26_byte_jam_monday_night_bytes/lynn.png", + "source_file": "/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/lynn.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "stormcaller", + "demozoo_id": 118528 + }, + "shadertoy_url": null, + "preview_image": "2024_08_26_byte_jam_monday_night_bytes/stormcaller.png", + "source_file": "/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/stormcaller.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "vurpo", + "demozoo_id": 138609 + }, + "shadertoy_url": null, + "preview_image": "2024_08_26_byte_jam_monday_night_bytes/vurpo.png", + "source_file": "/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/vurpo.lua" + } + ], + "staffs": [ + { + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "job": "Live set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_09_02_shader_jam_monday_night_bytes.json b/data/2024_09_02_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..3806cb8a9 --- /dev/null +++ b/data/2024_09_02_shader_jam_monday_night_bytes.json @@ -0,0 +1,136 @@ +{ + "title": "Monday Night Bytes ", + "started": "2024-09-02", + "date": "02 September 2024", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/ac39ac88-69c2-11ef-a6a4-00505685775e#show-ac39ac88-69c2-11ef-a6a4-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg", + "source_file": "/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg", + "source_file": "/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "CIOSAI_tw", + "demozoo_id": 142051 + }, + "shadertoy_url": null, + "preview_image": "2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_CIOSAI_tw.jpg", + "source_file": "/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_CIOSAI_tw.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg", + "source_file": "/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Peregrine", + "demozoo_id": 122747 + }, + "shadertoy_url": "https://www.shadertoy.com/view/Mfjfzc", + "preview_image": "2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_peregrine.jpg", + "source_file": "/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_peregrine.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg", + "source_file": "/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "wrighter", + "demozoo_id": 113559 + }, + "shadertoy_url": null, + "preview_image": "2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.jpg", + "source_file": "/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.glsl" + } + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "The Green Herring", + "demozoo_id": 137440 + }, + "job": "DJ" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_09_13_byte_jam_skrolli.json b/data/2024_09_13_byte_jam_skrolli.json new file mode 100644 index 000000000..223787546 --- /dev/null +++ b/data/2024_09_13_byte_jam_skrolli.json @@ -0,0 +1,90 @@ +{ + "title": "Skrolli", + "started": "2024-09-13", + "date": "13 September 2024", + "type": "Byte Jam", + "website": "https://skrolliparty.fi/2024/index.en.html", + "flyer": "", + "vod":"", + "software_used": [ + { + "name": "TIC-80 FFT Hack", + "url": "https://github.com/aliceisjustplaying/TIC-80/releases/tag/v0.0.5", + "version": "tic80showdown Alice fork v0.0.5", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_09_13_byte_jam_skrolli/aldroid.gif", + "source_file": "/shader_file_sources/2024_09_13_byte_jam_skrolli/aldroid.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "g33kou", + "demozoo_id": 143232 + }, + "shadertoy_url": null, + "preview_image": "2024_09_13_byte_jam_skrolli/geekou.gif", + "source_file": "/shader_file_sources/2024_09_13_byte_jam_skrolli/g33kou.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "moziz", + "demozoo_id": 52149 + }, + "shadertoy_url": null, + "preview_image": "2024_09_13_byte_jam_skrolli/moziz.gif", + "source_file": "/shader_file_sources/2024_09_13_byte_jam_skrolli/moziz.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "muffintrap", + "demozoo_id": 80210 + }, + "shadertoy_url": null, + "preview_image": "2024_09_13_byte_jam_skrolli/muffintrap.gif", + "source_file": "/shader_file_sources/2024_09_13_byte_jam_skrolli/muffintrap.lua" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "shadertoy_url": null, + "preview_image": "2024_09_13_byte_jam_skrolli/pumpuli.gif", + "source_file": "/shader_file_sources/2024_09_13_byte_jam_skrolli/pumpuli.lua" + } + ], + "staffs": [ + ] + } + ], + "staffs": [ + ], + "demozoo_party_id": 5021 +} diff --git a/data/2024_09_16_shader_jam_monday_night_bytes.json b/data/2024_09_16_shader_jam_monday_night_bytes.json new file mode 100644 index 000000000..d3fe3675b --- /dev/null +++ b/data/2024_09_16_shader_jam_monday_night_bytes.json @@ -0,0 +1,100 @@ +{ + "title": "Monday Night Bytes ", + "started": "2024-09-16", + "date": "16 September 2024", + "type": "Shader Jam", + "website": "", + "flyer": "", + "vod":"https://scenesat.com/videoarchive/ac39ac88-69c2-11ef-a6a4-00505685775e#show-ac39ac88-69c2-11ef-a6a4-00505685775e", + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/wrightwriter/Bonzomatic-Compute/releases/tag/v1.0.1", + "version": "Wrighter Compute - v1", + "purpose": "Graphic" + } + ], + "phases": [ + { + "title": null, + "vod": "https://bumull.ddns.net:2000/index.php/s/wg7ya5R5qpfwQgR", + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "aldroid", + "demozoo_id": 63755 + }, + "shadertoy_url": null, + "preview_image": "2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg", + "source_file": "/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "catnip", + "demozoo_id": 113525 + }, + "shadertoy_url": null, + "preview_image": "2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg", + "source_file": "/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "NuSan", + "demozoo_id": 88839 + }, + "shadertoy_url": null, + "preview_image": "2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg", + "source_file": "/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "totetmatt", + "demozoo_id": 121811 + }, + "shadertoy_url": null, + "preview_image": "2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg", + "source_file": "/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl" + } + + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Commentator" + }, + { + "handle": { + "name": "pumpuli", + "demozoo_id": 22208 + }, + "job": "Live Set" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "Aldroid", + "demozoo_id": 63755 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": "LCDZFFCM" +} diff --git a/data/2024_09_28_shader_jam_normalizefm.json b/data/2024_09_28_shader_jam_normalizefm.json new file mode 100644 index 000000000..1533b4979 --- /dev/null +++ b/data/2024_09_28_shader_jam_normalizefm.json @@ -0,0 +1,105 @@ +{ + "title": "WebGL Souhonzan + normalize.fm 10th + 3rd Annivrersary festival", + "started": "2024-09-28", + "date": "28 September 2024", + "type": "Shader Jam", + "website": "https://sn13.peatix.com/", + "flyer": "", + "vod": null, + "software_used": [ + { + "name": "Bonzomatic", + "url": "https://github.com/TheNuSan/Bonzomatic/releases/tag/v13", + "version": "NuSan - v13", + "purpose": "Graphic" + }, + { + "name": "SonicPi", + "url": "https://sonic-pi.net/", + "version": "", + "purpose": "Audio" + } + ], + "phases": [ + { + "title": null, + "vod": null, + "entries": [ + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "shadertoy_url": "https://www.shadertoy.com/view/M32cRc", + "preview_image": "2024_09_28_shader_jam_normalizefm/grabber_normalizefm_0b5vr.jpg", + "source_file": "/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_0b5vr.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "gam0022", + "demozoo_id": 63869 + }, + "shadertoy_url": "https://www.shadertoy.com/view/XX2yRt", + "preview_image": "2024_09_28_shader_jam_normalizefm/grabber_normalizefm_gam0022.jpg", + "source_file": "/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_gam0022.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Kamoshika", + "demozoo_id": 128644 + }, + "shadertoy_url": "https://www.shadertoy.com/view/l32cz3", + "preview_image": "2024_09_28_shader_jam_normalizefm/grabber_normalizefm_Kamoshika.jpg", + "source_file": "/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_Kamoshika.glsl" + }, + { + "id": null, + "rank": null, + "points": null, + "handle": { + "name": "Renard", + "demozoo_id": 137275 + }, + "shadertoy_url": null, + "preview_image": "2024_09_28_shader_jam_normalizefm/grabber_normalizefm_renard.jpg", + "source_file": "/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_renard.glsl" + } + ], + "staffs": [ + { + "handle": { + "name": "niko_14", + "demozoo_id": null + }, + "job": "Livecode Music" + } + ] + } + ], + "staffs": [ + { + "handle": { + "name": "0b5vr", + "demozoo_id": 128318 + }, + "job": "Organizers" + }, + { + "handle": { + "name": "doxas", + "demozoo_id": 57111 + }, + "job": "Organizers" + } + ], + "demozoo_party_id": null +} diff --git a/doc/schema.html b/doc/schema.html new file mode 100644 index 000000000..d7589d443 --- /dev/null +++ b/doc/schema.html @@ -0,0 +1 @@ + Event

Event

Type: object

An event which consist of a set of phases

Type: string

Name of the Event

Type: string

First day of the event, ISO-8601 format

Type: string

Human readable date

Type: string

Type of event

Type: string or null

Link if VOD

Type: array of object or null

Software used

Each item of this array must be:

Type: object

Type: string

Type: string

Type: string

Type: enum (of string)

Must be one of:

  • "Graphic"
  • "Music"
  • "Stream"
  • "Organisation"
  • "Jury"

Type: array of object

All the phases of the event

Each item of this array must be:

Type: object

A phase of the event. Consists of multiple entries

Type: string or null

Phase title. Can be null if the event is one phase e.g

Type: string or null

Link if VOD

Type: array of object

All the entry of the phase

Each item of this array must be:

Type: object

An entry. Which here consists of a shader creation

Type: integer or null

User Id for the phase (usually for Shader Royale)

Type: integer or null

Rank of the entry

Type: integer or null

Points of the entry

Type: object

Handle / Username

Type: string

Type: integer or null

Type: string or null

File of the entry

Type: string or null

Shadertoy url

Type: string or null

Link if VOD

Type: array of object

Staff info for the phase

Each item of this array must be:

Type: object

Staff information. What people were doing

Type: enum (of string)

Job

Must be one of:

  • "Live Music"
  • "Dj Set"
  • "Commentators"

Type: object

Handle / Username

Type: string

Type: integer or null

Type: array of object

Staff info for the whole Event

Each item of this array must be:

Type: object

Staff information. What people were doing

Type: enum (of string)

Job

Must be one of:

  • "Organizers"
  • "Jury"

Type: object

Handle / Username

Type: string

Type: integer or null
\ No newline at end of file diff --git a/doc/schema_doc.css b/doc/schema_doc.css new file mode 100644 index 000000000..8dc145ddd --- /dev/null +++ b/doc/schema_doc.css @@ -0,0 +1,180 @@ +body { + font: 16px/1.5em "Overpass", "Open Sans", Helvetica, sans-serif; + color: #333; + font-weight: 300; + padding: 40px; +} + +.btn.btn-link { + font-size: 18px; +} + +.jsfh-animated-property { + animation: eclair; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-duration: .75s; + +} + +@keyframes eclair { + 0%,100% { + transform: scale(1); + } + 50% { + transform: scale(1.03); + } +} + +.btn.btn-primary { + margin: 10px; +} + +.btn.example-show.collapsed:before { + content: "show" +} + +.btn.example-show:before { + content: "hide" +} + +.description.collapse:not(.show) { + max-height: 100px !important; + overflow: hidden; + + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.description.collapsing { + min-height: 100px !important; +} + +.collapse-description-link.collapsed:after { + content: '+ Read More'; +} + +.collapse-description-link:not(.collapsed):after { + content: '- Read Less'; +} + +.badge { + font-size: 100%; + margin-bottom: 0.5rem; + margin-top: 0.5rem; +} + +.badge.value-type { + font-size: 120%; + margin-right: 5px; + margin-bottom: 10px; +} + + +.badge.default-value { + font-size: 120%; + margin-left: 5px; + margin-bottom: 10px; +} + +.badge.restriction { + display: inline-block; +} + +.badge.required-property,.badge.deprecated-property,.badge.pattern-property,.badge.no-additional { + font-size: 100%; + margin-left: 10px; +} + +.accordion div.card:only-child { + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} + +.examples { + padding: 1rem !important; +} + +.examples pre { + margin-bottom: 0; +} + +.highlight.jumbotron { + padding: 1rem !important; +} + +.generated-by-footer { + margin-top: 1em; + text-align: right; +} + +/* From https://github.com/richleland/pygments-css/blob/master/friendly.css, see https://github.com/trentm/python-markdown2/wiki/fenced-code-blocks */ +.highlight { background: #e9ecef; } /* Changed from #f0f0f0 in the original style to be the same as bootstrap's jumbotron */ +.highlight .hll { background-color: #ffffcc } +.highlight .c { color: #60a0b0; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #60a0b0; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .cpf { color: #60a0b0; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #40a070 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #40a070 } /* Literal.Number.Bin */ +.highlight .mf { color: #40a070 } /* Literal.Number.Float */ +.highlight .mh { color: #40a070 } /* Literal.Number.Hex */ +.highlight .mi { color: #40a070 } /* Literal.Number.Integer */ +.highlight .mo { color: #40a070 } /* Literal.Number.Oct */ +.highlight .sa { color: #4070a0 } /* Literal.String.Affix */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #06287e } /* Name.Function.Magic */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ +.highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/doc/schema_doc.min.js b/doc/schema_doc.min.js new file mode 100644 index 000000000..0d9c7882d --- /dev/null +++ b/doc/schema_doc.min.js @@ -0,0 +1 @@ +function flashElement(t){myElement=document.getElementById(t),myElement.classList.add("jsfh-animated-property"),setTimeout(function(){myElement.classList.remove("jsfh-animated-property")},1e3)}function setAnchor(t){history.pushState({},"",t)}function anchorOnLoad(){let t=window.location.hash.split("?")[0].split("&")[0];"#"===t[0]&&(t=t.substr(1)),t.length>0&&anchorLink(t)}function anchorLink(t){$("#"+t).parents().addBack().filter(".collapse:not(.show), .tab-pane, [role='tab']").each(function(t){if($(this).hasClass("collapse"))$(this).collapse("show");else if($(this).hasClass("tab-pane")){const t=$("a[href='#"+$(this).attr("id")+"']");t&&t.tab("show")}else"tab"===$(this).attr("role")&&$(this).tab("show")}),setTimeout(function(){let e=document.getElementById(t);e&&(e.scrollIntoView({block:"center",behavior:"smooth"}),setTimeout(function(){flashElement(t)},500))},1e3)}$(document).on("click",'a[href^="#"]',function(t){t.preventDefault(),history.pushState({},"",this.href)}); \ No newline at end of file diff --git a/extra/demodulation2023_textures.zip b/extra/demodulation2023_textures.zip new file mode 100644 index 000000000..be30bee3f Binary files /dev/null and b/extra/demodulation2023_textures.zip differ diff --git a/extra/revision_2022_extra_textures.zip b/extra/revision_2022_extra_textures.zip new file mode 100644 index 000000000..a53b6f61e Binary files /dev/null and b/extra/revision_2022_extra_textures.zip differ diff --git a/extra/revision_2023_showdown_extra_textures.zip b/extra/revision_2023_showdown_extra_textures.zip new file mode 100644 index 000000000..762e735f9 Binary files /dev/null and b/extra/revision_2023_showdown_extra_textures.zip differ diff --git a/extra/solstice_2023_aldroid_foxdot.py b/extra/solstice_2023_aldroid_foxdot.py new file mode 100644 index 000000000..b3216de45 --- /dev/null +++ b/extra/solstice_2023_aldroid_foxdot.py @@ -0,0 +1,36 @@ +Clock.bpm=135 + +## FoxDot newbie, decided to have a play after +## seeing Violeta's talk at Inercia + + + + +p2 >> play("happy solstice :)", dur=0.25) +m1 >> play(" ss", sample=3) +p3 >> play("x x ") + +p4 >> jbass([0,None,5,4,5,4],dur=[1,1,0.5,0.5,0.5,0.5], scale=Scale.phrygian) +l1 >> loop("drumloop1", dur=4,amp=0.6) + +p4.stop() + +p5 >> pulse([2,3,4,6,7,8],dur=0.25,sus=0.1,scale=Scale.phrygian) + +p5.stop() + +l1.stop() +p6.stop() +p7.stop() + + +p6 >> pads([(2,4,-6),(3,5,-4)],dur=2,scale=Scale.phrygian,amp=0.3) +p7 >> pads([-6,-5,-4],dur=3,amp=0.9, scale=Scale.phrygian) + +## wonder what these do :D + +d1 >> space(1,dur=3,amp=0.7) + +d1.stop() + +d2 >> arpy([6,7,8],dur=[0.5,0.25,0.25]) diff --git a/media/.jpg b/media/.jpg new file mode 100644 index 000000000..471410fd2 Binary files /dev/null and b/media/.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/01_quarterfinals/01_crypt.jpg b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/01_crypt.jpg new file mode 100644 index 000000000..17ca04ac8 Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/01_crypt.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/01_quarterfinals/01_skomp.jpg b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/01_skomp.jpg new file mode 100644 index 000000000..ef593eb9b Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/01_skomp.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/01_quarterfinals/02_blueberry.jpg b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/02_blueberry.jpg new file mode 100644 index 000000000..a62204300 Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/02_blueberry.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/01_quarterfinals/02_kabuto.jpg b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/02_kabuto.jpg new file mode 100644 index 000000000..5a2795d00 Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/02_kabuto.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/01_quarterfinals/03_miku.jpg b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/03_miku.jpg new file mode 100644 index 000000000..76a88f43a Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/03_miku.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/01_quarterfinals/03_musk.jpg b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/03_musk.jpg new file mode 100644 index 000000000..1b50e36c2 Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/01_quarterfinals/03_musk.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/02_semifinals/01_kabuto.jpg b/media/2014_04_18_shader_showdown_revision/02_semifinals/01_kabuto.jpg new file mode 100644 index 000000000..0d2f1fd51 Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/02_semifinals/01_kabuto.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/02_semifinals/01_musk.jpg b/media/2014_04_18_shader_showdown_revision/02_semifinals/01_musk.jpg new file mode 100644 index 000000000..cd77fe0ba Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/02_semifinals/01_musk.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/02_semifinals/02_skomp.jpg b/media/2014_04_18_shader_showdown_revision/02_semifinals/02_skomp.jpg new file mode 100644 index 000000000..a867b04e9 Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/02_semifinals/02_skomp.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/02_semifinals/02_xtrium.jpg b/media/2014_04_18_shader_showdown_revision/02_semifinals/02_xtrium.jpg new file mode 100644 index 000000000..b1174896a Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/02_semifinals/02_xtrium.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/03_final/musk.jpg b/media/2014_04_18_shader_showdown_revision/03_final/musk.jpg new file mode 100644 index 000000000..7cb4a6ab6 Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/03_final/musk.jpg differ diff --git a/media/2014_04_18_shader_showdown_revision/03_final/skomp.jpg b/media/2014_04_18_shader_showdown_revision/03_final/skomp.jpg new file mode 100644 index 000000000..23b6eff2c Binary files /dev/null and b/media/2014_04_18_shader_showdown_revision/03_final/skomp.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/01a-musk.jpg b/media/2015_04_03_shader_showdown_revision/01a-musk.jpg new file mode 100644 index 000000000..ae75df1f3 Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/01a-musk.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/01b-eybor.jpg b/media/2015_04_03_shader_showdown_revision/01b-eybor.jpg new file mode 100644 index 000000000..d15cb272b Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/01b-eybor.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/01b-renhoek.jpg b/media/2015_04_03_shader_showdown_revision/01b-renhoek.jpg new file mode 100644 index 000000000..08c451969 Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/01b-renhoek.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/01c-lj.jpg b/media/2015_04_03_shader_showdown_revision/01c-lj.jpg new file mode 100644 index 000000000..d56a70b50 Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/01c-lj.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/01c-xt95.jpg b/media/2015_04_03_shader_showdown_revision/01c-xt95.jpg new file mode 100644 index 000000000..9ab5224dc Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/01c-xt95.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/01d-kabuto.jpg b/media/2015_04_03_shader_showdown_revision/01d-kabuto.jpg new file mode 100644 index 000000000..3f75c9218 Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/01d-kabuto.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/01d-wsmind.jpg b/media/2015_04_03_shader_showdown_revision/01d-wsmind.jpg new file mode 100644 index 000000000..9debdda9b Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/01d-wsmind.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/02a-eybor.jpg b/media/2015_04_03_shader_showdown_revision/02a-eybor.jpg new file mode 100644 index 000000000..05389bdd6 Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/02a-eybor.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/02a-musk.jpg b/media/2015_04_03_shader_showdown_revision/02a-musk.jpg new file mode 100644 index 000000000..c2c89047a Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/02a-musk.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/02b-kabuto.jpg b/media/2015_04_03_shader_showdown_revision/02b-kabuto.jpg new file mode 100644 index 000000000..23efc557c Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/02b-kabuto.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/02b-xt95.jpg b/media/2015_04_03_shader_showdown_revision/02b-xt95.jpg new file mode 100644 index 000000000..352fc366c Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/02b-xt95.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/03-kabuto.jpg b/media/2015_04_03_shader_showdown_revision/03-kabuto.jpg new file mode 100644 index 000000000..c53105360 Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/03-kabuto.jpg differ diff --git a/media/2015_04_03_shader_showdown_revision/03-musk.jpg b/media/2015_04_03_shader_showdown_revision/03-musk.jpg new file mode 100644 index 000000000..f906bc536 Binary files /dev/null and b/media/2015_04_03_shader_showdown_revision/03-musk.jpg differ diff --git a/media/2015_07_10_shader_showdown_solskogen/01a-ferris.jpg b/media/2015_07_10_shader_showdown_solskogen/01a-ferris.jpg new file mode 100644 index 000000000..5d3d640de Binary files /dev/null and b/media/2015_07_10_shader_showdown_solskogen/01a-ferris.jpg differ diff --git a/media/2015_07_10_shader_showdown_solskogen/01a-musk.jpg b/media/2015_07_10_shader_showdown_solskogen/01a-musk.jpg new file mode 100644 index 000000000..e69ddbaec Binary files /dev/null and b/media/2015_07_10_shader_showdown_solskogen/01a-musk.jpg differ diff --git a/media/2015_07_10_shader_showdown_solskogen/01b-emil.jpg b/media/2015_07_10_shader_showdown_solskogen/01b-emil.jpg new file mode 100644 index 000000000..a384ad751 Binary files /dev/null and b/media/2015_07_10_shader_showdown_solskogen/01b-emil.jpg differ diff --git a/media/2015_07_10_shader_showdown_solskogen/01b-urs.jpg b/media/2015_07_10_shader_showdown_solskogen/01b-urs.jpg new file mode 100644 index 000000000..c5931452d Binary files /dev/null and b/media/2015_07_10_shader_showdown_solskogen/01b-urs.jpg differ diff --git a/media/2015_07_10_shader_showdown_solskogen/02-ferris.jpg b/media/2015_07_10_shader_showdown_solskogen/02-ferris.jpg new file mode 100644 index 000000000..877a72d30 Binary files /dev/null and b/media/2015_07_10_shader_showdown_solskogen/02-ferris.jpg differ diff --git a/media/2015_07_10_shader_showdown_solskogen/02-urs.jpg b/media/2015_07_10_shader_showdown_solskogen/02-urs.jpg new file mode 100644 index 000000000..86e86ab04 Binary files /dev/null and b/media/2015_07_10_shader_showdown_solskogen/02-urs.jpg differ diff --git a/media/2016_07_15_shader_showdown_solskogen/final-ferris.jpg b/media/2016_07_15_shader_showdown_solskogen/final-ferris.jpg new file mode 100644 index 000000000..d772e2bc5 Binary files /dev/null and b/media/2016_07_15_shader_showdown_solskogen/final-ferris.jpg differ diff --git a/media/2016_07_15_shader_showdown_solskogen/final-tapped.jpg b/media/2016_07_15_shader_showdown_solskogen/final-tapped.jpg new file mode 100644 index 000000000..4f0648336 Binary files /dev/null and b/media/2016_07_15_shader_showdown_solskogen/final-tapped.jpg differ diff --git a/media/2016_07_15_shader_showdown_solskogen/semifinal1-ferris.jpg b/media/2016_07_15_shader_showdown_solskogen/semifinal1-ferris.jpg new file mode 100644 index 000000000..9fe2d0eb5 Binary files /dev/null and b/media/2016_07_15_shader_showdown_solskogen/semifinal1-ferris.jpg differ diff --git a/media/2016_07_15_shader_showdown_solskogen/semifinal1-urs.jpg b/media/2016_07_15_shader_showdown_solskogen/semifinal1-urs.jpg new file mode 100644 index 000000000..397844e68 Binary files /dev/null and b/media/2016_07_15_shader_showdown_solskogen/semifinal1-urs.jpg differ diff --git a/media/2016_07_15_shader_showdown_solskogen/semifinal2-blueberry.jpg b/media/2016_07_15_shader_showdown_solskogen/semifinal2-blueberry.jpg new file mode 100644 index 000000000..1cbea58a0 Binary files /dev/null and b/media/2016_07_15_shader_showdown_solskogen/semifinal2-blueberry.jpg differ diff --git a/media/2016_07_15_shader_showdown_solskogen/semifinal2-tapped.jpg b/media/2016_07_15_shader_showdown_solskogen/semifinal2-tapped.jpg new file mode 100644 index 000000000..890288d61 Binary files /dev/null and b/media/2016_07_15_shader_showdown_solskogen/semifinal2-tapped.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/01-anton.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/01-anton.jpg new file mode 100644 index 000000000..106646549 Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/01-anton.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/01-eybor.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/01-eybor.jpg new file mode 100644 index 000000000..0d4a6fee9 Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/01-eybor.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/02-flopine.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/02-flopine.jpg new file mode 100644 index 000000000..c6fcd9f78 Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/02-flopine.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/02-wsmind.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/02-wsmind.jpg new file mode 100644 index 000000000..5d266b660 Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/02-wsmind.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/03-lamogui.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/03-lamogui.jpg new file mode 100644 index 000000000..0b2cabe34 Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/03-lamogui.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/03-sicarde.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/03-sicarde.jpg new file mode 100644 index 000000000..e95f65c41 Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/03-sicarde.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/04-ponk.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/04-ponk.jpg new file mode 100644 index 000000000..ddd98efa1 Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/04-ponk.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/04-semtoraap.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/04-semtoraap.jpg new file mode 100644 index 000000000..c5acf556d Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/04-semtoraap.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/05-anton.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/05-anton.jpg new file mode 100644 index 000000000..96748fbda Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/05-anton.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/05-pasta.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/05-pasta.jpg new file mode 100644 index 000000000..a79c06268 Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/05-pasta.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/06-koltes.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/06-koltes.jpg new file mode 100644 index 000000000..3580d209f Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/06-koltes.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/06-pouletvert.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/06-pouletvert.jpg new file mode 100644 index 000000000..65f6744bd Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/06-pouletvert.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/07-flopine.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/07-flopine.jpg new file mode 100644 index 000000000..ec900360e Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/07-flopine.jpg differ diff --git a/media/2017_06_22_shader_showdown_paris_cc_1/07-wsmind.jpg b/media/2017_06_22_shader_showdown_paris_cc_1/07-wsmind.jpg new file mode 100644 index 000000000..291265d49 Binary files /dev/null and b/media/2017_06_22_shader_showdown_paris_cc_1/07-wsmind.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/01-eybor.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/01-eybor.jpg new file mode 100644 index 000000000..2ec376b60 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/01-eybor.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/01-wsmind.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/01-wsmind.jpg new file mode 100644 index 000000000..c80384885 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/01-wsmind.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/02-anton.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/02-anton.jpg new file mode 100644 index 000000000..5ab983211 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/02-anton.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/02-lamogui.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/02-lamogui.jpg new file mode 100644 index 000000000..a873c819a Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/02-lamogui.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/03-flopine.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/03-flopine.jpg new file mode 100644 index 000000000..414faddc3 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/03-flopine.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/03-pouletvert.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/03-pouletvert.jpg new file mode 100644 index 000000000..6548de692 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/03-pouletvert.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/04-lamogui.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/04-lamogui.jpg new file mode 100644 index 000000000..4bbd08850 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/04-lamogui.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/04-omar.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/04-omar.jpg new file mode 100644 index 000000000..7c6e3ca07 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/04-omar.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/05-lock0.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/05-lock0.jpg new file mode 100644 index 000000000..5da7f43d9 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/05-lock0.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/05-xt95.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/05-xt95.jpg new file mode 100644 index 000000000..75536f545 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/05-xt95.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/06-koltes.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/06-koltes.jpg new file mode 100644 index 000000000..03ad47a62 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/06-koltes.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/06-ponk.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/06-ponk.jpg new file mode 100644 index 000000000..271c7d636 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/06-ponk.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/extra-shex-1.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/extra-shex-1.jpg new file mode 100644 index 000000000..7bbff70e9 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/extra-shex-1.jpg differ diff --git a/media/2017_10_26_shader_showdown_paris_cc_2/extra-shex-2.jpg b/media/2017_10_26_shader_showdown_paris_cc_2/extra-shex-2.jpg new file mode 100644 index 000000000..eb74221c6 Binary files /dev/null and b/media/2017_10_26_shader_showdown_paris_cc_2/extra-shex-2.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/01-lamogui.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/01-lamogui.jpg new file mode 100644 index 000000000..cbf93f3ac Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/01-lamogui.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/01-ponk.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/01-ponk.jpg new file mode 100644 index 000000000..c275c9219 Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/01-ponk.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/02-anton.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/02-anton.jpg new file mode 100644 index 000000000..9fc55b2d4 Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/02-anton.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/02-koltes.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/02-koltes.jpg new file mode 100644 index 000000000..e51dd4106 Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/02-koltes.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/03-ponk.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/03-ponk.jpg new file mode 100644 index 000000000..2b4c0c8d3 Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/03-ponk.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/03-remi.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/03-remi.jpg new file mode 100644 index 000000000..58d4958cf Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/03-remi.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/04-anton.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/04-anton.jpg new file mode 100644 index 000000000..50ae4e4f9 Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/04-anton.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/04-lamogui.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/04-lamogui.jpg new file mode 100644 index 000000000..ba72f8763 Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/04-lamogui.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/Readme.md b/media/2017_11_25_shader_showdown_paris_cc_3/Readme.md new file mode 100644 index 000000000..92fcf3d31 --- /dev/null +++ b/media/2017_11_25_shader_showdown_paris_cc_3/Readme.md @@ -0,0 +1,22 @@ +# Shader Showdown Paris #3 + +On November 25th, 2017 at [Nogozon](https://www.facebook.com/nogozon/). + +[Video on YouTube](https://youtu.be/55ayUl_07-E) + +## Rounds + +1. Lamogui vs Ponk +2. Anton vs Koltes +3. Ponk vs Remi +4. Anton vs Lamogui + +## Extras + +- Flopine +- Shader exquis #1 +- Shader exquis #2 + +## Software + +[Bonzomatic](https://github.com/Gargaj/Bonzomatic) diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/extra-flopine.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/extra-flopine.jpg new file mode 100644 index 000000000..b0ff4c1ef Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/extra-flopine.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/extra-shex-1.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/extra-shex-1.jpg new file mode 100644 index 000000000..7635ae120 Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/extra-shex-1.jpg differ diff --git a/media/2017_11_25_shader_showdown_paris_cc_3/extra-shex-2.jpg b/media/2017_11_25_shader_showdown_paris_cc_3/extra-shex-2.jpg new file mode 100644 index 000000000..0181053a3 Binary files /dev/null and b/media/2017_11_25_shader_showdown_paris_cc_3/extra-shex-2.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/01-eybor.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/01-eybor.jpg new file mode 100644 index 000000000..18f9949bc Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/01-eybor.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/01-flopine.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/01-flopine.jpg new file mode 100644 index 000000000..7e4bc1cd4 Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/01-flopine.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/02-anton.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/02-anton.jpg new file mode 100644 index 000000000..05bd6628f Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/02-anton.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/02-theotime.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/02-theotime.jpg new file mode 100644 index 000000000..9a3b51767 Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/02-theotime.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/03-lamogui.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/03-lamogui.jpg new file mode 100644 index 000000000..000daca2f Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/03-lamogui.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/03-xt95.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/03-xt95.jpg new file mode 100644 index 000000000..fcbed7196 Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/03-xt95.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/04-coyhot.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/04-coyhot.jpg new file mode 100644 index 000000000..e8632e9d1 Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/04-coyhot.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/04-xtrium.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/04-xtrium.jpg new file mode 100644 index 000000000..415bb0a64 Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/04-xtrium.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/05-flopine.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/05-flopine.jpg new file mode 100644 index 000000000..de5847a67 Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/05-flopine.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/05-theotime.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/05-theotime.jpg new file mode 100644 index 000000000..ffd22c41b Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/05-theotime.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/06-coyhot.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/06-coyhot.jpg new file mode 100644 index 000000000..a1d1603df Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/06-coyhot.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/06-xt95-xmen-edit.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/06-xt95-xmen-edit.jpg new file mode 100644 index 000000000..76600576b Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/06-xt95-xmen-edit.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/07-flopine.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/07-flopine.jpg new file mode 100644 index 000000000..5ee9ca4e0 Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/07-flopine.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/07-xt95.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/07-xt95.jpg new file mode 100644 index 000000000..e6fb7a872 Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/07-xt95.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/extra-01.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/extra-01.jpg new file mode 100644 index 000000000..533f4a9ac Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/extra-01.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/extra-02.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/extra-02.jpg new file mode 100644 index 000000000..d33cf1ac9 Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/extra-02.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/extra-03.dx9.hlsl b/media/2017_12_08_shader_showdown_paris_cc_4/extra-03.dx9.hlsl new file mode 100644 index 000000000..df3042ad2 --- /dev/null +++ b/media/2017_12_08_shader_showdown_paris_cc_4/extra-03.dx9.hlsl @@ -0,0 +1,42 @@ +texture texTFFT; sampler1D texFFT = sampler_state { Texture = ; }; +// towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +texture texFFTSmoothedT; sampler1D texFFTSmoothed = sampler_state { Texture = ; }; +// this one has longer falloff and less harsh transients +texture texFFTIntegratedT; sampler1D texFFTIntegrated = sampler_state { Texture = ; }; +// this is continually increasing + +texture rawtexChecker; sampler2D texChecker = sampler_state { Texture = ; }; +texture rawtexNoise; sampler2D texNoise = sampler_state { Texture = ; }; +texture rawtexTex1; sampler2D texTex1 = sampler_state { Texture = ; }; +texture rawtexTex2; sampler2D texTex2 = sampler_state { Texture = ; }; +texture rawtexTex3; sampler2D texTex3 = sampler_state { Texture = ; }; +texture rawtexTex4; sampler2D texTex4 = sampler_state { Texture = ; }; + +float fGlobalTime; // in seconds +float2 v2Resolution; // viewport resolution (in pixels) + +float4 plas( float2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return float4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +float4 main( float2 TexCoord : TEXCOORD0 ) : COLOR0 +{ + float2 uv = TexCoord; + uv -= 0.5; + uv /= float2(v2Resolution.y / v2Resolution.x, 1); + float2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = tex1D( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + float4 t = plas( m * 3.14, fGlobalTime ) / d; + t = saturate( t ); + + float4 col = float4(((uv.x+0.5+sin(fGlobalTime+uv.y*10)/5 + sin(fGlobalTime+uv.y*2.234)/-3)*10)%1, uv.y, 1, 1); + return col; +} \ No newline at end of file diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/extra-04.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/extra-04.jpg new file mode 100644 index 000000000..5428e1413 Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/extra-04.jpg differ diff --git a/media/2017_12_08_shader_showdown_paris_cc_4/extra-05.jpg b/media/2017_12_08_shader_showdown_paris_cc_4/extra-05.jpg new file mode 100644 index 000000000..e3eea718d Binary files /dev/null and b/media/2017_12_08_shader_showdown_paris_cc_4/extra-05.jpg differ diff --git a/media/2018_02_07_shader_showdown_paris_cc_5/03-anton.jpg b/media/2018_02_07_shader_showdown_paris_cc_5/03-anton.jpg new file mode 100644 index 000000000..095c844e9 Binary files /dev/null and b/media/2018_02_07_shader_showdown_paris_cc_5/03-anton.jpg differ diff --git a/media/2018_02_07_shader_showdown_paris_cc_5/07-anton.jpg b/media/2018_02_07_shader_showdown_paris_cc_5/07-anton.jpg new file mode 100644 index 000000000..30acfceca Binary files /dev/null and b/media/2018_02_07_shader_showdown_paris_cc_5/07-anton.jpg differ diff --git a/media/2018_02_07_shader_showdown_paris_cc_5/08-xt95.jpg b/media/2018_02_07_shader_showdown_paris_cc_5/08-xt95.jpg new file mode 100644 index 000000000..7a6c0d847 Binary files /dev/null and b/media/2018_02_07_shader_showdown_paris_cc_5/08-xt95.jpg differ diff --git a/media/2018_02_07_shader_showdown_paris_cc_5/09-wsmind.jpg b/media/2018_02_07_shader_showdown_paris_cc_5/09-wsmind.jpg new file mode 100644 index 000000000..e1e26668a Binary files /dev/null and b/media/2018_02_07_shader_showdown_paris_cc_5/09-wsmind.jpg differ diff --git a/media/2018_02_07_shader_showdown_paris_cc_5/cc_live_coding_2018-02-07 - Raccourci.lnk b/media/2018_02_07_shader_showdown_paris_cc_5/cc_live_coding_2018-02-07 - Raccourci.lnk new file mode 100644 index 000000000..3325b1d5d Binary files /dev/null and b/media/2018_02_07_shader_showdown_paris_cc_5/cc_live_coding_2018-02-07 - Raccourci.lnk differ diff --git a/media/2018_05_25_shader_showdown_paris_cc_8/02-antoine.jpg b/media/2018_05_25_shader_showdown_paris_cc_8/02-antoine.jpg new file mode 100644 index 000000000..45f9fbed0 Binary files /dev/null and b/media/2018_05_25_shader_showdown_paris_cc_8/02-antoine.jpg differ diff --git a/media/2018_05_25_shader_showdown_paris_cc_8/02-lamogui.jpg b/media/2018_05_25_shader_showdown_paris_cc_8/02-lamogui.jpg new file mode 100644 index 000000000..996ef5293 Binary files /dev/null and b/media/2018_05_25_shader_showdown_paris_cc_8/02-lamogui.jpg differ diff --git a/media/2018_05_25_shader_showdown_paris_cc_8/03-lsdlive.jpg b/media/2018_05_25_shader_showdown_paris_cc_8/03-lsdlive.jpg new file mode 100644 index 000000000..3d06ac75f Binary files /dev/null and b/media/2018_05_25_shader_showdown_paris_cc_8/03-lsdlive.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/01-ponk.jpg b/media/2018_06_01_shader_showdown_vip/01-ponk.jpg new file mode 100644 index 000000000..7bc0fb34f Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/01-ponk.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/01-xtrium.jpg b/media/2018_06_01_shader_showdown_vip/01-xtrium.jpg new file mode 100644 index 000000000..088022cff Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/01-xtrium.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/02-coyhot.jpg b/media/2018_06_01_shader_showdown_vip/02-coyhot.jpg new file mode 100644 index 000000000..0d04ecb9a Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/02-coyhot.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/02-lamogui.jpg b/media/2018_06_01_shader_showdown_vip/02-lamogui.jpg new file mode 100644 index 000000000..4a330e6d2 Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/02-lamogui.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/03-flopine.jpg b/media/2018_06_01_shader_showdown_vip/03-flopine.jpg new file mode 100644 index 000000000..b95910676 Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/03-flopine.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/03-ponk.jpg b/media/2018_06_01_shader_showdown_vip/03-ponk.jpg new file mode 100644 index 000000000..c14ee5762 Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/03-ponk.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/04-coyhot.jpg b/media/2018_06_01_shader_showdown_vip/04-coyhot.jpg new file mode 100644 index 000000000..2cbc3c188 Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/04-coyhot.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/04-lsdlive.jpg b/media/2018_06_01_shader_showdown_vip/04-lsdlive.jpg new file mode 100644 index 000000000..8da21e0e7 Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/04-lsdlive.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/05-coyhot.jpg b/media/2018_06_01_shader_showdown_vip/05-coyhot.jpg new file mode 100644 index 000000000..7089d822a Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/05-coyhot.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/05-ponk.jpg b/media/2018_06_01_shader_showdown_vip/05-ponk.jpg new file mode 100644 index 000000000..c2e05588d Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/05-ponk.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/06-lsdlive.jpg b/media/2018_06_01_shader_showdown_vip/06-lsdlive.jpg new file mode 100644 index 000000000..c27246b02 Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/06-lsdlive.jpg differ diff --git a/media/2018_06_01_shader_showdown_vip/06_flopine.jpg b/media/2018_06_01_shader_showdown_vip/06_flopine.jpg new file mode 100644 index 000000000..ee17db2f5 Binary files /dev/null and b/media/2018_06_01_shader_showdown_vip/06_flopine.jpg differ diff --git a/media/2018_11_02_shader_showdown_demosplash/charstiles.jpg b/media/2018_11_02_shader_showdown_demosplash/charstiles.jpg new file mode 100644 index 000000000..186475541 Binary files /dev/null and b/media/2018_11_02_shader_showdown_demosplash/charstiles.jpg differ diff --git a/media/2018_11_02_shader_showdown_demosplash/lsh.jpg b/media/2018_11_02_shader_showdown_demosplash/lsh.jpg new file mode 100644 index 000000000..e0def532d Binary files /dev/null and b/media/2018_11_02_shader_showdown_demosplash/lsh.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/01-elie.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/01-elie.jpg new file mode 100644 index 000000000..7dccc582b Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/01-elie.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/01-wsmind.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/01-wsmind.jpg new file mode 100644 index 000000000..7c3280c44 Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/01-wsmind.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/02-evvvvil.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/02-evvvvil.jpg new file mode 100644 index 000000000..97278238e Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/02-evvvvil.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/02-ponk.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/02-ponk.jpg new file mode 100644 index 000000000..2d024e8fe Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/02-ponk.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/03-flopine.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/03-flopine.jpg new file mode 100644 index 000000000..b6dc0071c Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/03-flopine.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/03-lsdlive.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/03-lsdlive.jpg new file mode 100644 index 000000000..037fdce26 Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/03-lsdlive.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/04-eybor.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/04-eybor.jpg new file mode 100644 index 000000000..ecef89f27 Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/04-eybor.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/04-nusan.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/04-nusan.jpg new file mode 100644 index 000000000..6e735885b Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/04-nusan.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/05-ponk.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/05-ponk.jpg new file mode 100644 index 000000000..f4cf24c99 Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/05-ponk.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/05-wsmind.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/05-wsmind.jpg new file mode 100644 index 000000000..65701e5ee Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/05-wsmind.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/06-flopine.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/06-flopine.jpg new file mode 100644 index 000000000..14e689fda Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/06-flopine.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/06-nusan.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/06-nusan.jpg new file mode 100644 index 000000000..59020d13d Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/06-nusan.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/07-nusan.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/07-nusan.jpg new file mode 100644 index 000000000..b5a8d0a85 Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/07-nusan.jpg differ diff --git a/media/2018_11_30_shader_showdown_paris_cc_10/07-ponk.jpg b/media/2018_11_30_shader_showdown_paris_cc_10/07-ponk.jpg new file mode 100644 index 000000000..ac9032f60 Binary files /dev/null and b/media/2018_11_30_shader_showdown_paris_cc_10/07-ponk.jpg differ diff --git a/media/2018_12_01_shader_jam_tokyo_demo_fest/FMS_Cat.jpg b/media/2018_12_01_shader_jam_tokyo_demo_fest/FMS_Cat.jpg new file mode 100644 index 000000000..6c16e93ef Binary files /dev/null and b/media/2018_12_01_shader_jam_tokyo_demo_fest/FMS_Cat.jpg differ diff --git a/media/2018_12_01_shader_jam_tokyo_demo_fest/gam0022.jpg b/media/2018_12_01_shader_jam_tokyo_demo_fest/gam0022.jpg new file mode 100644 index 000000000..d17455533 Binary files /dev/null and b/media/2018_12_01_shader_jam_tokyo_demo_fest/gam0022.jpg differ diff --git a/media/2018_12_01_shader_jam_tokyo_demo_fest/gyabo.jpg b/media/2018_12_01_shader_jam_tokyo_demo_fest/gyabo.jpg new file mode 100644 index 000000000..18db0c5d6 Binary files /dev/null and b/media/2018_12_01_shader_jam_tokyo_demo_fest/gyabo.jpg differ diff --git a/media/2018_12_01_shader_jam_tokyo_demo_fest/notargs.jpg b/media/2018_12_01_shader_jam_tokyo_demo_fest/notargs.jpg new file mode 100644 index 000000000..a68c51dbf Binary files /dev/null and b/media/2018_12_01_shader_jam_tokyo_demo_fest/notargs.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/Nusan_300119.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/Nusan_300119.jpg new file mode 100644 index 000000000..37dafdf39 Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/Nusan_300119.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/anatole 1.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/anatole 1.jpg new file mode 100644 index 000000000..df4ef86da Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/anatole 1.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/anatole 2.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/anatole 2.jpg new file mode 100644 index 000000000..00ce9a362 Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/anatole 2.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/antoine1.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/antoine1.jpg new file mode 100644 index 000000000..125fc1bbb Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/antoine1.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/anton1.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/anton1.jpg new file mode 100644 index 000000000..f1ae9c660 Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/anton1.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/anton2.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/anton2.jpg new file mode 100644 index 000000000..4627ec8ff Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/anton2.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/gregory 1.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/gregory 1.jpg new file mode 100644 index 000000000..f5a95a404 Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/gregory 1.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/lamogui 1.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/lamogui 1.jpg new file mode 100644 index 000000000..89caff771 Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/lamogui 1.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/lamogui3.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/lamogui3.jpg new file mode 100644 index 000000000..ffb8f1f03 Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/lamogui3.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/leon2.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/leon2.jpg new file mode 100644 index 000000000..343cf3a7d Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/leon2.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/momo1.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/momo1.jpg new file mode 100644 index 000000000..01916955e Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/momo1.jpg differ diff --git a/media/2019_01_30_shader_showdown_paris_cc_11/shader - volumetric light scattering.jpg b/media/2019_01_30_shader_showdown_paris_cc_11/shader - volumetric light scattering.jpg new file mode 100644 index 000000000..b94d761dc Binary files /dev/null and b/media/2019_01_30_shader_showdown_paris_cc_11/shader - volumetric light scattering.jpg differ diff --git a/media/2019_10_25_shader_showdown_cafe/shadershow_final_f0x.jpg b/media/2019_10_25_shader_showdown_cafe/shadershow_final_f0x.jpg new file mode 100644 index 000000000..5b6670621 Binary files /dev/null and b/media/2019_10_25_shader_showdown_cafe/shadershow_final_f0x.jpg differ diff --git a/media/2019_10_25_shader_showdown_cafe/shadershow_final_wbcbz7.jpg b/media/2019_10_25_shader_showdown_cafe/shadershow_final_wbcbz7.jpg new file mode 100644 index 000000000..2ba3e639f Binary files /dev/null and b/media/2019_10_25_shader_showdown_cafe/shadershow_final_wbcbz7.jpg differ diff --git a/media/2019_10_25_shader_showdown_cafe/shadershow_semifinal_dart.jpg b/media/2019_10_25_shader_showdown_cafe/shadershow_semifinal_dart.jpg new file mode 100644 index 000000000..4a87de7ac Binary files /dev/null and b/media/2019_10_25_shader_showdown_cafe/shadershow_semifinal_dart.jpg differ diff --git a/media/2019_10_25_shader_showdown_cafe/shadershow_semifinal_kotsoft.jpg b/media/2019_10_25_shader_showdown_cafe/shadershow_semifinal_kotsoft.jpg new file mode 100644 index 000000000..24ba13cf1 Binary files /dev/null and b/media/2019_10_25_shader_showdown_cafe/shadershow_semifinal_kotsoft.jpg differ diff --git a/media/2019_10_25_shader_showdown_cafe/shadershow_tour1_dart.jpg b/media/2019_10_25_shader_showdown_cafe/shadershow_tour1_dart.jpg new file mode 100644 index 000000000..2e9b3c07c Binary files /dev/null and b/media/2019_10_25_shader_showdown_cafe/shadershow_tour1_dart.jpg differ diff --git a/media/2019_10_25_shader_showdown_cafe/shadershow_tour1_wbcbz7.jpg b/media/2019_10_25_shader_showdown_cafe/shadershow_tour1_wbcbz7.jpg new file mode 100644 index 000000000..039447eb6 Binary files /dev/null and b/media/2019_10_25_shader_showdown_cafe/shadershow_tour1_wbcbz7.jpg differ diff --git a/media/2019_10_25_shader_showdown_cafe/shadershow_tour2_f0x.jpg b/media/2019_10_25_shader_showdown_cafe/shadershow_tour2_f0x.jpg new file mode 100644 index 000000000..794807497 Binary files /dev/null and b/media/2019_10_25_shader_showdown_cafe/shadershow_tour2_f0x.jpg differ diff --git a/media/2019_10_25_shader_showdown_cafe/shadershow_tour2_kotsoft.jpg b/media/2019_10_25_shader_showdown_cafe/shadershow_tour2_kotsoft.jpg new file mode 100644 index 000000000..3face975b Binary files /dev/null and b/media/2019_10_25_shader_showdown_cafe/shadershow_tour2_kotsoft.jpg differ diff --git a/media/2019_10_26_shader_showdown_paris_cc_12/01-anat.jpg b/media/2019_10_26_shader_showdown_paris_cc_12/01-anat.jpg new file mode 100644 index 000000000..0f9d61c6e Binary files /dev/null and b/media/2019_10_26_shader_showdown_paris_cc_12/01-anat.jpg differ diff --git a/media/2019_10_26_shader_showdown_paris_cc_12/01-flopine.jpg b/media/2019_10_26_shader_showdown_paris_cc_12/01-flopine.jpg new file mode 100644 index 000000000..c91319aff Binary files /dev/null and b/media/2019_10_26_shader_showdown_paris_cc_12/01-flopine.jpg differ diff --git a/media/2019_10_26_shader_showdown_paris_cc_12/02-LJ.jpg b/media/2019_10_26_shader_showdown_paris_cc_12/02-LJ.jpg new file mode 100644 index 000000000..3703bf78a Binary files /dev/null and b/media/2019_10_26_shader_showdown_paris_cc_12/02-LJ.jpg differ diff --git a/media/2019_10_26_shader_showdown_paris_cc_12/02-evvvvil.jpg b/media/2019_10_26_shader_showdown_paris_cc_12/02-evvvvil.jpg new file mode 100644 index 000000000..e613e9d08 Binary files /dev/null and b/media/2019_10_26_shader_showdown_paris_cc_12/02-evvvvil.jpg differ diff --git a/media/2019_10_26_shader_showdown_paris_cc_12/03-LJ.jpg b/media/2019_10_26_shader_showdown_paris_cc_12/03-LJ.jpg new file mode 100644 index 000000000..a2a8e00d1 Binary files /dev/null and b/media/2019_10_26_shader_showdown_paris_cc_12/03-LJ.jpg differ diff --git a/media/2019_10_26_shader_showdown_paris_cc_12/03-anat.jpg b/media/2019_10_26_shader_showdown_paris_cc_12/03-anat.jpg new file mode 100644 index 000000000..0529da0b8 Binary files /dev/null and b/media/2019_10_26_shader_showdown_paris_cc_12/03-anat.jpg differ diff --git a/media/2019_10_26_shader_showdown_paris_cc_12/04-evvvvil.jpg b/media/2019_10_26_shader_showdown_paris_cc_12/04-evvvvil.jpg new file mode 100644 index 000000000..111212a82 Binary files /dev/null and b/media/2019_10_26_shader_showdown_paris_cc_12/04-evvvvil.jpg differ diff --git a/media/2019_10_26_shader_showdown_paris_cc_12/04-flopine.jpg b/media/2019_10_26_shader_showdown_paris_cc_12/04-flopine.jpg new file mode 100644 index 000000000..e4513d601 Binary files /dev/null and b/media/2019_10_26_shader_showdown_paris_cc_12/04-flopine.jpg differ diff --git a/media/2019_11_08_shader_showdown_demosplash/charstiles.jpg b/media/2019_11_08_shader_showdown_demosplash/charstiles.jpg new file mode 100644 index 000000000..d6e9d38a6 Binary files /dev/null and b/media/2019_11_08_shader_showdown_demosplash/charstiles.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/01-anton.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/01-anton.jpg new file mode 100644 index 000000000..da6460242 Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/01-anton.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/01-lamogui.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/01-lamogui.jpg new file mode 100644 index 000000000..046d5b9b2 Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/01-lamogui.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/02-kidou_greckow.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/02-kidou_greckow.jpg new file mode 100644 index 000000000..118cf087d Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/02-kidou_greckow.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/02-ponk.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/02-ponk.jpg new file mode 100644 index 000000000..2f95913ab Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/02-ponk.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/03-franzybily.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/03-franzybily.jpg new file mode 100644 index 000000000..ab5cd9bc4 Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/03-franzybily.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/03-nicoptere.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/03-nicoptere.jpg new file mode 100644 index 000000000..cccffefdc Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/03-nicoptere.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/04-col1.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/04-col1.jpg new file mode 100644 index 000000000..c0bbeb1bb Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/04-col1.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/04-sixclone.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/04-sixclone.jpg new file mode 100644 index 000000000..74f071b08 Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/04-sixclone.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/05-flopine.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/05-flopine.jpg new file mode 100644 index 000000000..babf2dd1a Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/05-flopine.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/06-lsdlive.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/06-lsdlive.jpg new file mode 100644 index 000000000..d3c846051 Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/06-lsdlive.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/06-nusan.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/06-nusan.jpg new file mode 100644 index 000000000..d240471cd Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/06-nusan.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/07-monollonom-bg.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/07-monollonom-bg.jpg new file mode 100644 index 000000000..a246ad238 Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/07-monollonom-bg.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/07-novac.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/07-novac.jpg new file mode 100644 index 000000000..26319dbb3 Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/07-novac.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/08-anton.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/08-anton.jpg new file mode 100644 index 000000000..dcfffaeb7 Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/08-anton.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/08-hotdogstudio.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/08-hotdogstudio.jpg new file mode 100644 index 000000000..669b45ff4 Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/08-hotdogstudio.jpg differ diff --git a/media/2019_11_30_shader_showdown_paris_grow_festival/09-ponk.jpg b/media/2019_11_30_shader_showdown_paris_grow_festival/09-ponk.jpg new file mode 100644 index 000000000..cc311e1c4 Binary files /dev/null and b/media/2019_11_30_shader_showdown_paris_grow_festival/09-ponk.jpg differ diff --git a/media/2019_12_19_shader_showdown_recondu_stream/Flopine.jpg b/media/2019_12_19_shader_showdown_recondu_stream/Flopine.jpg new file mode 100644 index 000000000..3329e0cb1 Binary files /dev/null and b/media/2019_12_19_shader_showdown_recondu_stream/Flopine.jpg differ diff --git a/media/2019_12_19_shader_showdown_recondu_stream/Nusan.jpg b/media/2019_12_19_shader_showdown_recondu_stream/Nusan.jpg new file mode 100644 index 000000000..c4f2b84d1 Binary files /dev/null and b/media/2019_12_19_shader_showdown_recondu_stream/Nusan.jpg differ diff --git a/media/2020_03_19_shader_showdown_paris_cc_streaming_1/Flopine.jpg b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/Flopine.jpg new file mode 100644 index 000000000..393d24f47 Binary files /dev/null and b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/Flopine.jpg differ diff --git a/media/2020_03_19_shader_showdown_paris_cc_streaming_1/Sixclones.jpg b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/Sixclones.jpg new file mode 100644 index 000000000..c3f5b5ac6 Binary files /dev/null and b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/Sixclones.jpg differ diff --git a/media/2020_03_19_shader_showdown_paris_cc_streaming_1/alkama.jpg b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/alkama.jpg new file mode 100644 index 000000000..82115fda4 Binary files /dev/null and b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/alkama.jpg differ diff --git a/media/2020_03_19_shader_showdown_paris_cc_streaming_1/anton.jpg b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/anton.jpg new file mode 100644 index 000000000..9c6b11346 Binary files /dev/null and b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/anton.jpg differ diff --git a/media/2020_03_19_shader_showdown_paris_cc_streaming_1/bruce.jpg b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/bruce.jpg new file mode 100644 index 000000000..b34d78bb4 Binary files /dev/null and b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/bruce.jpg differ diff --git a/media/2020_03_19_shader_showdown_paris_cc_streaming_1/cookie.jpg b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/cookie.jpg new file mode 100644 index 000000000..64b01683e Binary files /dev/null and b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/cookie.jpg differ diff --git a/media/2020_03_19_shader_showdown_paris_cc_streaming_1/evvvvil.jpg b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/evvvvil.jpg new file mode 100644 index 000000000..3a3f07746 Binary files /dev/null and b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/evvvvil.jpg differ diff --git a/media/2020_03_19_shader_showdown_paris_cc_streaming_1/lamogui.jpg b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/lamogui.jpg new file mode 100644 index 000000000..5c6d89927 Binary files /dev/null and b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/lamogui.jpg differ diff --git a/media/2020_03_19_shader_showdown_paris_cc_streaming_1/nusan.jpg b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/nusan.jpg new file mode 100644 index 000000000..e695e1cd5 Binary files /dev/null and b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/nusan.jpg differ diff --git a/media/2020_03_19_shader_showdown_paris_cc_streaming_1/ponk.jpg b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/ponk.jpg new file mode 100644 index 000000000..fe68571dd Binary files /dev/null and b/media/2020_03_19_shader_showdown_paris_cc_streaming_1/ponk.jpg differ diff --git a/media/2020_03_26_shader_showdown_paris_cc_streaming_2/Wrighter.jpg b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/Wrighter.jpg new file mode 100644 index 000000000..209caf2b9 Binary files /dev/null and b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/Wrighter.jpg differ diff --git a/media/2020_03_26_shader_showdown_paris_cc_streaming_2/alkama.jpg b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/alkama.jpg new file mode 100644 index 000000000..a5b22e29c Binary files /dev/null and b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/alkama.jpg differ diff --git a/media/2020_03_26_shader_showdown_paris_cc_streaming_2/anton.jpg b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/anton.jpg new file mode 100644 index 000000000..cb6b2fef9 Binary files /dev/null and b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/anton.jpg differ diff --git a/media/2020_03_26_shader_showdown_paris_cc_streaming_2/bruce.jpg b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/bruce.jpg new file mode 100644 index 000000000..f2c9955b4 Binary files /dev/null and b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/bruce.jpg differ diff --git a/media/2020_03_26_shader_showdown_paris_cc_streaming_2/cookie.jpg b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/cookie.jpg new file mode 100644 index 000000000..edccdf556 Binary files /dev/null and b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/cookie.jpg differ diff --git a/media/2020_03_26_shader_showdown_paris_cc_streaming_2/flopine.jpg b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/flopine.jpg new file mode 100644 index 000000000..40d3e5b49 Binary files /dev/null and b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/flopine.jpg differ diff --git a/media/2020_03_26_shader_showdown_paris_cc_streaming_2/lamogui.jpg b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/lamogui.jpg new file mode 100644 index 000000000..b8cbf18e8 Binary files /dev/null and b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/lamogui.jpg differ diff --git a/media/2020_03_26_shader_showdown_paris_cc_streaming_2/nusan.jpg b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/nusan.jpg new file mode 100644 index 000000000..109cc6da8 Binary files /dev/null and b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/nusan.jpg differ diff --git a/media/2020_03_26_shader_showdown_paris_cc_streaming_2/ponk.jpg b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/ponk.jpg new file mode 100644 index 000000000..f5fbcb10e Binary files /dev/null and b/media/2020_03_26_shader_showdown_paris_cc_streaming_2/ponk.jpg differ diff --git a/media/2020_04_10_shader_jam_revision_online/revision2020_threewayshowdown_gargaj.jpg b/media/2020_04_10_shader_jam_revision_online/revision2020_threewayshowdown_gargaj.jpg new file mode 100644 index 000000000..394e4ce62 Binary files /dev/null and b/media/2020_04_10_shader_jam_revision_online/revision2020_threewayshowdown_gargaj.jpg differ diff --git a/media/2020_06_19_shader_showdown_nova/sender_nova_wrighter.jpg b/media/2020_06_19_shader_showdown_nova/sender_nova_wrighter.jpg new file mode 100644 index 000000000..8ad204773 Binary files /dev/null and b/media/2020_06_19_shader_showdown_nova/sender_nova_wrighter.jpg differ diff --git a/media/2020_06_24_shader_jam_pancake_conference/grabber_pancakeftw_alkama.jpg b/media/2020_06_24_shader_jam_pancake_conference/grabber_pancakeftw_alkama.jpg new file mode 100644 index 000000000..e5e3076c4 Binary files /dev/null and b/media/2020_06_24_shader_jam_pancake_conference/grabber_pancakeftw_alkama.jpg differ diff --git a/media/2020_07_11_shader_showdown_solskogen/sender_solskogen2020_wrighter.jpg b/media/2020_07_11_shader_showdown_solskogen/sender_solskogen2020_wrighter.jpg new file mode 100644 index 000000000..0f2259ea1 Binary files /dev/null and b/media/2020_07_11_shader_showdown_solskogen/sender_solskogen2020_wrighter.jpg differ diff --git a/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_blackle.jpg b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_blackle.jpg new file mode 100644 index 000000000..b63396186 Binary files /dev/null and b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_blackle.jpg differ diff --git a/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_evvvvil.jpg b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_evvvvil.jpg new file mode 100644 index 000000000..355cbfbdb Binary files /dev/null and b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_evvvvil.jpg differ diff --git a/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_flopine.jpg b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_flopine.jpg new file mode 100644 index 000000000..0978348f2 Binary files /dev/null and b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_flopine.jpg differ diff --git a/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_visy.jpg b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_visy.jpg new file mode 100644 index 000000000..9332c45a3 Binary files /dev/null and b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_visy.jpg differ diff --git a/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_wrighter.jpg b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_wrighter.jpg new file mode 100644 index 000000000..4a46b3ac6 Binary files /dev/null and b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_wrighter.jpg differ diff --git a/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_yx.jpg b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_yx.jpg new file mode 100644 index 000000000..bc98d2493 Binary files /dev/null and b/media/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_yx.jpg differ diff --git a/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_FMS_Cat.jpg b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_FMS_Cat.jpg new file mode 100644 index 000000000..548e0de70 Binary files /dev/null and b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_FMS_Cat.jpg differ diff --git a/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg new file mode 100644 index 000000000..231546f27 Binary files /dev/null and b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg differ diff --git a/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_evvvvil.jpg b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_evvvvil.jpg new file mode 100644 index 000000000..aa8fcbf18 Binary files /dev/null and b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_evvvvil.jpg differ diff --git a/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_fizzer.jpg b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_fizzer.jpg new file mode 100644 index 000000000..824e20ac8 Binary files /dev/null and b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_fizzer.jpg differ diff --git a/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_nusan.jpg b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_nusan.jpg new file mode 100644 index 000000000..1255b3721 Binary files /dev/null and b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_nusan.jpg differ diff --git a/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_provod.jpg b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_provod.jpg new file mode 100644 index 000000000..9e98cfa2c Binary files /dev/null and b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_provod.jpg differ diff --git a/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg new file mode 100644 index 000000000..5b4044420 Binary files /dev/null and b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg differ diff --git a/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_wrighter.jpg b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_wrighter.jpg new file mode 100644 index 000000000..c0d2d67bc Binary files /dev/null and b/media/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_wrighter.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_Exca.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_Exca.jpg new file mode 100644 index 000000000..e958ff65f Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_Exca.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_FMS_Cat.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_FMS_Cat.jpg new file mode 100644 index 000000000..f4db778e1 Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_FMS_Cat.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_LechugaFeliz.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_LechugaFeliz.jpg new file mode 100644 index 000000000..29275a823 Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_LechugaFeliz.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_NR4.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_NR4.jpg new file mode 100644 index 000000000..64012a324 Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_NR4.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_anticore.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_anticore.jpg new file mode 100644 index 000000000..0ec4002d3 Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_anticore.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_branch.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_branch.jpg new file mode 100644 index 000000000..2cb5372b2 Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_branch.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_cosamentale.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_cosamentale.jpg new file mode 100644 index 000000000..7708af040 Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_cosamentale.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_dok.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_dok.jpg new file mode 100644 index 000000000..c5ad11568 Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_dok.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_monsieursoleil.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_monsieursoleil.jpg new file mode 100644 index 000000000..8111f13cb Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_monsieursoleil.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_nusan.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_nusan.jpg new file mode 100644 index 000000000..de6fdc1ab Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_nusan.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_provod.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_provod.jpg new file mode 100644 index 000000000..68cfa111d Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_provod.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_visy.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_visy.jpg new file mode 100644 index 000000000..d03187838 Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_visy.jpg differ diff --git a/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_wrighter.jpg b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_wrighter.jpg new file mode 100644 index 000000000..138c68714 Binary files /dev/null and b/media/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_wrighter.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_FMS_Cat.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_FMS_Cat.jpg new file mode 100644 index 000000000..acb599268 Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_FMS_Cat.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_LechugaFeliz.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_LechugaFeliz.jpg new file mode 100644 index 000000000..9be432102 Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_LechugaFeliz.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_NR4.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_NR4.jpg new file mode 100644 index 000000000..c7e927091 Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_NR4.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_alkama.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_alkama.jpg new file mode 100644 index 000000000..3f211c841 Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_alkama.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_evvvvil.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_evvvvil.jpg new file mode 100644 index 000000000..190bec95b Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_evvvvil.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_hArDy.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_hArDy.jpg new file mode 100644 index 000000000..35ea624d0 Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_hArDy.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_monsieursoleil.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_monsieursoleil.jpg new file mode 100644 index 000000000..0832b117e Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_monsieursoleil.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_provod.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_provod.jpg new file mode 100644 index 000000000..9f9289236 Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_provod.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_sp4ghet.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_sp4ghet.jpg new file mode 100644 index 000000000..58290c2c1 Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_sp4ghet.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_visy.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_visy.jpg new file mode 100644 index 000000000..c1654f756 Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_visy.jpg differ diff --git a/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_wrighter.jpg b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_wrighter.jpg new file mode 100644 index 000000000..207902fcd Binary files /dev/null and b/media/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_wrighter.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Exca.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Exca.jpg new file mode 100644 index 000000000..019d30d2e Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Exca.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Flopine.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Flopine.jpg new file mode 100644 index 000000000..91542d9f2 Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Flopine.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_LechugaFeliz.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_LechugaFeliz.jpg new file mode 100644 index 000000000..0b5b8e30c Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_LechugaFeliz.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_NuSan.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_NuSan.jpg new file mode 100644 index 000000000..13033425a Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_NuSan.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_anticore.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_anticore.jpg new file mode 100644 index 000000000..8139849fa Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_anticore.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_cosamentale.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_cosamentale.jpg new file mode 100644 index 000000000..838f2a651 Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_cosamentale.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_hArDy.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_hArDy.jpg new file mode 100644 index 000000000..f233ff8ad Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_hArDy.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_monsieursoleil.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_monsieursoleil.jpg new file mode 100644 index 000000000..a8c7c4949 Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_monsieursoleil.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_provod.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_provod.jpg new file mode 100644 index 000000000..7aeb5149c Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_provod.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_rimina.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_rimina.jpg new file mode 100644 index 000000000..a7da55bda Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_rimina.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_totetmatt.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_totetmatt.jpg new file mode 100644 index 000000000..644a5d99b Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_totetmatt.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_visy.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_visy.jpg new file mode 100644 index 000000000..7dc2e290f Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_visy.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.jpg b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.jpg new file mode 100644 index 000000000..1ffeea577 Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.jpg differ diff --git a/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.png b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.png new file mode 100644 index 000000000..0102d86ee Binary files /dev/null and b/media/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.png differ diff --git a/media/2021_02_27_shader_jam_challenge/shaderchallenge_sp4ghet.jpg b/media/2021_02_27_shader_jam_challenge/shaderchallenge_sp4ghet.jpg new file mode 100644 index 000000000..a2fcec317 Binary files /dev/null and b/media/2021_02_27_shader_jam_challenge/shaderchallenge_sp4ghet.jpg differ diff --git a/media/2021_03_12_byte_battle_lovebyte/final_nusan.gif b/media/2021_03_12_byte_battle_lovebyte/final_nusan.gif new file mode 100644 index 000000000..311f63bb0 Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/final_nusan.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/final_orbitaldecay.gif b/media/2021_03_12_byte_battle_lovebyte/final_orbitaldecay.gif new file mode 100644 index 000000000..4fcacc48c Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/final_orbitaldecay.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/qf_blueberry.gif b/media/2021_03_12_byte_battle_lovebyte/qf_blueberry.gif new file mode 100644 index 000000000..a1a3655fa Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/qf_blueberry.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/qf_flopine.gif b/media/2021_03_12_byte_battle_lovebyte/qf_flopine.gif new file mode 100644 index 000000000..41aa2f7ab Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/qf_flopine.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/qf_gasman.gif b/media/2021_03_12_byte_battle_lovebyte/qf_gasman.gif new file mode 100644 index 000000000..905f243c1 Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/qf_gasman.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/qf_mantratronic.gif b/media/2021_03_12_byte_battle_lovebyte/qf_mantratronic.gif new file mode 100644 index 000000000..5aeba2740 Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/qf_mantratronic.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/qf_nusan.gif b/media/2021_03_12_byte_battle_lovebyte/qf_nusan.gif new file mode 100644 index 000000000..54e20384f Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/qf_nusan.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/qf_orbitaldecay.gif b/media/2021_03_12_byte_battle_lovebyte/qf_orbitaldecay.gif new file mode 100644 index 000000000..7c8e8f50b Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/qf_orbitaldecay.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/qf_superogue.gif b/media/2021_03_12_byte_battle_lovebyte/qf_superogue.gif new file mode 100644 index 000000000..0066963af Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/qf_superogue.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/qf_wrighter.gif b/media/2021_03_12_byte_battle_lovebyte/qf_wrighter.gif new file mode 100644 index 000000000..94fe2aa75 Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/qf_wrighter.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/semifinal_flopine.gif b/media/2021_03_12_byte_battle_lovebyte/semifinal_flopine.gif new file mode 100644 index 000000000..07b184546 Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/semifinal_flopine.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/semifinal_nusan.gif b/media/2021_03_12_byte_battle_lovebyte/semifinal_nusan.gif new file mode 100644 index 000000000..e3bb9bf84 Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/semifinal_nusan.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/semifinal_orbitaldecay.gif b/media/2021_03_12_byte_battle_lovebyte/semifinal_orbitaldecay.gif new file mode 100644 index 000000000..7ea3602f5 Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/semifinal_orbitaldecay.gif differ diff --git a/media/2021_03_12_byte_battle_lovebyte/semifinal_superogue.gif b/media/2021_03_12_byte_battle_lovebyte/semifinal_superogue.gif new file mode 100644 index 000000000..067f90499 Binary files /dev/null and b/media/2021_03_12_byte_battle_lovebyte/semifinal_superogue.gif differ diff --git a/media/2021_04_02_shader_jam_revision_online/jam_with_ghost/exca.jpg b/media/2021_04_02_shader_jam_revision_online/jam_with_ghost/exca.jpg new file mode 100644 index 000000000..7d75cb2d9 Binary files /dev/null and b/media/2021_04_02_shader_jam_revision_online/jam_with_ghost/exca.jpg differ diff --git a/media/2021_04_02_shader_jam_revision_online/jam_with_ghost/rimina.jpg b/media/2021_04_02_shader_jam_revision_online/jam_with_ghost/rimina.jpg new file mode 100644 index 000000000..fe3fc2823 Binary files /dev/null and b/media/2021_04_02_shader_jam_revision_online/jam_with_ghost/rimina.jpg differ diff --git a/media/2021_04_02_shader_jam_revision_online/jam_with_ghost/visy.jpg b/media/2021_04_02_shader_jam_revision_online/jam_with_ghost/visy.jpg new file mode 100644 index 000000000..b8d8b98f5 Binary files /dev/null and b/media/2021_04_02_shader_jam_revision_online/jam_with_ghost/visy.jpg differ diff --git a/media/2021_04_02_shader_jam_revision_online/jam_with_lynn/eimink.jpg b/media/2021_04_02_shader_jam_revision_online/jam_with_lynn/eimink.jpg new file mode 100644 index 000000000..642d1a7a6 Binary files /dev/null and b/media/2021_04_02_shader_jam_revision_online/jam_with_lynn/eimink.jpg differ diff --git a/media/2021_04_02_shader_jam_revision_online/jam_with_lynn/lechugafeliz.jpg b/media/2021_04_02_shader_jam_revision_online/jam_with_lynn/lechugafeliz.jpg new file mode 100644 index 000000000..c3df71ad6 Binary files /dev/null and b/media/2021_04_02_shader_jam_revision_online/jam_with_lynn/lechugafeliz.jpg differ diff --git a/media/2021_04_02_shader_jam_revision_online/jam_with_lynn/nusan.jpg b/media/2021_04_02_shader_jam_revision_online/jam_with_lynn/nusan.jpg new file mode 100644 index 000000000..5b6395ece Binary files /dev/null and b/media/2021_04_02_shader_jam_revision_online/jam_with_lynn/nusan.jpg differ diff --git a/media/2021_04_02_shader_jam_revision_online/jam_with_messy/evvvvil.jpg b/media/2021_04_02_shader_jam_revision_online/jam_with_messy/evvvvil.jpg new file mode 100644 index 000000000..f367847e4 Binary files /dev/null and b/media/2021_04_02_shader_jam_revision_online/jam_with_messy/evvvvil.jpg differ diff --git a/media/2021_04_02_shader_jam_revision_online/jam_with_messy/sp4ghet.jpg b/media/2021_04_02_shader_jam_revision_online/jam_with_messy/sp4ghet.jpg new file mode 100644 index 000000000..65042a3d0 Binary files /dev/null and b/media/2021_04_02_shader_jam_revision_online/jam_with_messy/sp4ghet.jpg differ diff --git a/media/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek.jpg b/media/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek.jpg new file mode 100644 index 000000000..f3a001bcd Binary files /dev/null and b/media/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/f_evvvvil.jpg b/media/2021_04_02_shader_showdown_revision_online/f_evvvvil.jpg new file mode 100644 index 000000000..199ebac93 Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/f_evvvvil.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/qf_anticore.jpg b/media/2021_04_02_shader_showdown_revision_online/qf_anticore.jpg new file mode 100644 index 000000000..43755fa4a Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/qf_anticore.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/qf_blackle.jpg b/media/2021_04_02_shader_showdown_revision_online/qf_blackle.jpg new file mode 100644 index 000000000..15579a3f9 Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/qf_blackle.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/qf_cosamentale.jpg b/media/2021_04_02_shader_showdown_revision_online/qf_cosamentale.jpg new file mode 100644 index 000000000..0f4c4e29e Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/qf_cosamentale.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/qf_evvvvil.jpg b/media/2021_04_02_shader_showdown_revision_online/qf_evvvvil.jpg new file mode 100644 index 000000000..c185c0e55 Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/qf_evvvvil.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/qf_flopine.jpg b/media/2021_04_02_shader_showdown_revision_online/qf_flopine.jpg new file mode 100644 index 000000000..e54aaaed8 Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/qf_flopine.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/qf_lechugafeliz.jpg b/media/2021_04_02_shader_showdown_revision_online/qf_lechugafeliz.jpg new file mode 100644 index 000000000..6123c244b Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/qf_lechugafeliz.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/qf_monsieursoleil.jpg b/media/2021_04_02_shader_showdown_revision_online/qf_monsieursoleil.jpg new file mode 100644 index 000000000..60f5216e4 Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/qf_monsieursoleil.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/qf_wrighter.jpg b/media/2021_04_02_shader_showdown_revision_online/qf_wrighter.jpg new file mode 100644 index 000000000..104ce4174 Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/qf_wrighter.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/sf_anticore.jpg b/media/2021_04_02_shader_showdown_revision_online/sf_anticore.jpg new file mode 100644 index 000000000..b5d523fc0 Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/sf_anticore.jpg differ diff --git a/media/2021_04_02_shader_showdown_revision_online/sf_flopine.jpg b/media/2021_04_02_shader_showdown_revision_online/sf_flopine.jpg new file mode 100644 index 000000000..cb9300750 Binary files /dev/null and b/media/2021_04_02_shader_showdown_revision_online/sf_flopine.jpg differ diff --git a/media/2021_04_16_shader_showdown_recto_vrso/01-nusan.jpg b/media/2021_04_16_shader_showdown_recto_vrso/01-nusan.jpg new file mode 100644 index 000000000..4757b9ce8 Binary files /dev/null and b/media/2021_04_16_shader_showdown_recto_vrso/01-nusan.jpg differ diff --git a/media/2021_04_16_shader_showdown_recto_vrso/01-z0rg.jpg b/media/2021_04_16_shader_showdown_recto_vrso/01-z0rg.jpg new file mode 100644 index 000000000..6b21aa5b9 Binary files /dev/null and b/media/2021_04_16_shader_showdown_recto_vrso/01-z0rg.jpg differ diff --git a/media/2021_04_16_shader_showdown_recto_vrso/02-lechugafeliz.jpg b/media/2021_04_16_shader_showdown_recto_vrso/02-lechugafeliz.jpg new file mode 100644 index 000000000..7154db1a9 Binary files /dev/null and b/media/2021_04_16_shader_showdown_recto_vrso/02-lechugafeliz.jpg differ diff --git a/media/2021_04_16_shader_showdown_recto_vrso/02-wrighter.jpg b/media/2021_04_16_shader_showdown_recto_vrso/02-wrighter.jpg new file mode 100644 index 000000000..6e328f15e Binary files /dev/null and b/media/2021_04_16_shader_showdown_recto_vrso/02-wrighter.jpg differ diff --git a/media/2021_04_16_shader_showdown_recto_vrso/03-tater.jpg b/media/2021_04_16_shader_showdown_recto_vrso/03-tater.jpg new file mode 100644 index 000000000..fb64ae0c6 Binary files /dev/null and b/media/2021_04_16_shader_showdown_recto_vrso/03-tater.jpg differ diff --git a/media/2021_04_16_shader_showdown_recto_vrso/03-z0rg.jpg b/media/2021_04_16_shader_showdown_recto_vrso/03-z0rg.jpg new file mode 100644 index 000000000..5089cd630 Binary files /dev/null and b/media/2021_04_16_shader_showdown_recto_vrso/03-z0rg.jpg differ diff --git a/media/2021_04_16_shader_showdown_recto_vrso/04-lechugafeliz.jpg b/media/2021_04_16_shader_showdown_recto_vrso/04-lechugafeliz.jpg new file mode 100644 index 000000000..270c273b4 Binary files /dev/null and b/media/2021_04_16_shader_showdown_recto_vrso/04-lechugafeliz.jpg differ diff --git a/media/2021_05_13_byte_battle_outline/final_exoticorn.gif b/media/2021_05_13_byte_battle_outline/final_exoticorn.gif new file mode 100644 index 000000000..ceee2c42c Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/final_exoticorn.gif differ diff --git a/media/2021_05_13_byte_battle_outline/final_gopher.gif b/media/2021_05_13_byte_battle_outline/final_gopher.gif new file mode 100644 index 000000000..3f9115fbe Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/final_gopher.gif differ diff --git a/media/2021_05_13_byte_battle_outline/qf_aldroid.gif b/media/2021_05_13_byte_battle_outline/qf_aldroid.gif new file mode 100644 index 000000000..7c17e123c Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/qf_aldroid.gif differ diff --git a/media/2021_05_13_byte_battle_outline/qf_exoticorn.gif b/media/2021_05_13_byte_battle_outline/qf_exoticorn.gif new file mode 100644 index 000000000..6082eb7a1 Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/qf_exoticorn.gif differ diff --git a/media/2021_05_13_byte_battle_outline/qf_fmscat.gif b/media/2021_05_13_byte_battle_outline/qf_fmscat.gif new file mode 100644 index 000000000..e83d8787d Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/qf_fmscat.gif differ diff --git a/media/2021_05_13_byte_battle_outline/qf_gopher.gif b/media/2021_05_13_byte_battle_outline/qf_gopher.gif new file mode 100644 index 000000000..917e3545b Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/qf_gopher.gif differ diff --git a/media/2021_05_13_byte_battle_outline/qf_killedbyapixel.gif b/media/2021_05_13_byte_battle_outline/qf_killedbyapixel.gif new file mode 100644 index 000000000..b011a601c Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/qf_killedbyapixel.gif differ diff --git a/media/2021_05_13_byte_battle_outline/qf_popolon.gif b/media/2021_05_13_byte_battle_outline/qf_popolon.gif new file mode 100644 index 000000000..7959c9071 Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/qf_popolon.gif differ diff --git a/media/2021_05_13_byte_battle_outline/qf_ps.gif b/media/2021_05_13_byte_battle_outline/qf_ps.gif new file mode 100644 index 000000000..80b2d5ae7 Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/qf_ps.gif differ diff --git a/media/2021_05_13_byte_battle_outline/qf_tomcat.gif b/media/2021_05_13_byte_battle_outline/qf_tomcat.gif new file mode 100644 index 000000000..d55d3c1d8 Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/qf_tomcat.gif differ diff --git a/media/2021_05_13_byte_battle_outline/semifinal_aldroid.gif b/media/2021_05_13_byte_battle_outline/semifinal_aldroid.gif new file mode 100644 index 000000000..55cff7735 Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/semifinal_aldroid.gif differ diff --git a/media/2021_05_13_byte_battle_outline/semifinal_exoticorn.gif b/media/2021_05_13_byte_battle_outline/semifinal_exoticorn.gif new file mode 100644 index 000000000..e064a410b Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/semifinal_exoticorn.gif differ diff --git a/media/2021_05_13_byte_battle_outline/semifinal_fmscat.gif b/media/2021_05_13_byte_battle_outline/semifinal_fmscat.gif new file mode 100644 index 000000000..c5ae6ef33 Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/semifinal_fmscat.gif differ diff --git a/media/2021_05_13_byte_battle_outline/semifinal_gopher.gif b/media/2021_05_13_byte_battle_outline/semifinal_gopher.gif new file mode 100644 index 000000000..ce7c05ba4 Binary files /dev/null and b/media/2021_05_13_byte_battle_outline/semifinal_gopher.gif differ diff --git a/media/2021_05_21_shader_jam_shadow_party/sender_shadow_nusan.jpg b/media/2021_05_21_shader_jam_shadow_party/sender_shadow_nusan.jpg new file mode 100644 index 000000000..8b6a9daf2 Binary files /dev/null and b/media/2021_05_21_shader_jam_shadow_party/sender_shadow_nusan.jpg differ diff --git a/media/2021_05_21_shader_jam_shadow_party/sender_shadow_ponk.jpg b/media/2021_05_21_shader_jam_shadow_party/sender_shadow_ponk.jpg new file mode 100644 index 000000000..333440935 Binary files /dev/null and b/media/2021_05_21_shader_jam_shadow_party/sender_shadow_ponk.jpg differ diff --git a/media/2021_05_21_shader_jam_shadow_party/sender_shadow_totetmatt.jpg b/media/2021_05_21_shader_jam_shadow_party/sender_shadow_totetmatt.jpg new file mode 100644 index 000000000..ec5426c5c Binary files /dev/null and b/media/2021_05_21_shader_jam_shadow_party/sender_shadow_totetmatt.jpg differ diff --git a/media/2021_05_21_shader_jam_shadow_party/shadow-evvvvil-shaderjam.jpg b/media/2021_05_21_shader_jam_shadow_party/shadow-evvvvil-shaderjam.jpg new file mode 100644 index 000000000..3ea35a556 Binary files /dev/null and b/media/2021_05_21_shader_jam_shadow_party/shadow-evvvvil-shaderjam.jpg differ diff --git a/media/2021_05_21_shader_jam_shadow_party/z0rg.jpg b/media/2021_05_21_shader_jam_shadow_party/z0rg.jpg new file mode 100644 index 000000000..7fd7ffb10 Binary files /dev/null and b/media/2021_05_21_shader_jam_shadow_party/z0rg.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_EmmazingGoose.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_EmmazingGoose.jpg new file mode 100644 index 000000000..a635c7f65 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_EmmazingGoose.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Exca.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Exca.jpg new file mode 100644 index 000000000..271c1f0ea Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Exca.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_LechugaFeliz.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_LechugaFeliz.jpg new file mode 100644 index 000000000..cf1e83a5c Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_LechugaFeliz.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NR4.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NR4.jpg new file mode 100644 index 000000000..77f1e2170 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NR4.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Nameless.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Nameless.jpg new file mode 100644 index 000000000..8f7682d60 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Nameless.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NuSan.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NuSan.jpg new file mode 100644 index 000000000..b63ec944a Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NuSan.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Tater.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Tater.jpg new file mode 100644 index 000000000..5fa30aa06 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Tater.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_VjPyree.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_VjPyree.jpg new file mode 100644 index 000000000..a9c2b43b8 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_VjPyree.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_alien.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_alien.jpg new file mode 100644 index 000000000..54976de7b Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_alien.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_anticore.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_anticore.jpg new file mode 100644 index 000000000..88d5df7fc Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_anticore.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_bitnenfer.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_bitnenfer.jpg new file mode 100644 index 000000000..563fe6ccc Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_bitnenfer.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_blackle.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_blackle.jpg new file mode 100644 index 000000000..887f226ab Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_blackle.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_branch.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_branch.jpg new file mode 100644 index 000000000..37bc0aee8 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_branch.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_butadiene.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_butadiene.jpg new file mode 100644 index 000000000..daaa02dd5 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_butadiene.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_cosamentale.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_cosamentale.jpg new file mode 100644 index 000000000..7e5f9db57 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_cosamentale.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_dok.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_dok.jpg new file mode 100644 index 000000000..5046c08a0 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_dok.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_eimink.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_eimink.jpg new file mode 100644 index 000000000..c2bd0f2c6 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_eimink.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_evvvvil.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_evvvvil.jpg new file mode 100644 index 000000000..8b584ff81 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_evvvvil.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_monsieursoleil.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_monsieursoleil.jpg new file mode 100644 index 000000000..49229c6b1 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_monsieursoleil.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_provod.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_provod.jpg new file mode 100644 index 000000000..2c4ac3f4f Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_provod.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rimina.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rimina.jpg new file mode 100644 index 000000000..20c9387e7 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rimina.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rohtie.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rohtie.jpg new file mode 100644 index 000000000..af9529d57 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rohtie.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_sp4ghet.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_sp4ghet.jpg new file mode 100644 index 000000000..01e718377 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_sp4ghet.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_totetmatt.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_totetmatt.jpg new file mode 100644 index 000000000..d3b69bc1a Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_totetmatt.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_visy.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_visy.jpg new file mode 100644 index 000000000..96e56cef6 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_visy.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_wrighter.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_wrighter.jpg new file mode 100644 index 000000000..ad5f38bf6 Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_wrighter.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_yx.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_yx.jpg new file mode 100644 index 000000000..e7b13085b Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_yx.jpg differ diff --git a/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_z0rg.jpg b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_z0rg.jpg new file mode 100644 index 000000000..e749cf64e Binary files /dev/null and b/media/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_z0rg.jpg differ diff --git a/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_EmmazingGoose.jpg b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_EmmazingGoose.jpg new file mode 100644 index 000000000..29897e07b Binary files /dev/null and b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_EmmazingGoose.jpg differ diff --git a/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Exca.jpg b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Exca.jpg new file mode 100644 index 000000000..d44b34417 Binary files /dev/null and b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Exca.jpg differ diff --git a/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Tater.jpg b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Tater.jpg new file mode 100644 index 000000000..7c2e30955 Binary files /dev/null and b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Tater.jpg differ diff --git a/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_cosamentale.jpg b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_cosamentale.jpg new file mode 100644 index 000000000..4a099aa50 Binary files /dev/null and b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_cosamentale.jpg differ diff --git a/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_rimina.jpg b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_rimina.jpg new file mode 100644 index 000000000..0068ff0db Binary files /dev/null and b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_rimina.jpg differ diff --git a/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_sp4ghet.jpg b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_sp4ghet.jpg new file mode 100644 index 000000000..9b74db167 Binary files /dev/null and b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_sp4ghet.jpg differ diff --git a/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_totetmatt.jpg b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_totetmatt.jpg new file mode 100644 index 000000000..5fd832b84 Binary files /dev/null and b/media/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_totetmatt.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_Exca.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_Exca.jpg new file mode 100644 index 000000000..6b9181fec Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_Exca.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_LechugaFeliz.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_LechugaFeliz.jpg new file mode 100644 index 000000000..4e99c4182 Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_LechugaFeliz.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_NuSan.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_NuSan.jpg new file mode 100644 index 000000000..a7946d925 Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_NuSan.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alien.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alien.jpg new file mode 100644 index 000000000..4b8c1fd04 Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alien.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alkama.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alkama.jpg new file mode 100644 index 000000000..5229ddd35 Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alkama.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_eimink.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_eimink.jpg new file mode 100644 index 000000000..9fbee0bc4 Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_eimink.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_provod.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_provod.jpg new file mode 100644 index 000000000..1b9c2ffce Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_provod.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_rimina.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_rimina.jpg new file mode 100644 index 000000000..3b7925b02 Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_rimina.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_tater.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_tater.jpg new file mode 100644 index 000000000..5eb3172d0 Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_tater.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_totetmatt.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_totetmatt.jpg new file mode 100644 index 000000000..aec60904f Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_totetmatt.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_visy.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_visy.jpg new file mode 100644 index 000000000..c5aa2bc31 Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_visy.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_wrighter.jpg b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_wrighter.jpg new file mode 100644 index 000000000..8a4d3fba6 Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_wrighter.jpg differ diff --git a/media/2021_08_13_shader_jam_prevoke/prevoke_ps_1.png b/media/2021_08_13_shader_jam_prevoke/prevoke_ps_1.png new file mode 100644 index 000000000..61f6fbd3a Binary files /dev/null and b/media/2021_08_13_shader_jam_prevoke/prevoke_ps_1.png differ diff --git a/media/2021_08_14_shader_jam_nevoke/Flopine_chibitech_visuals.jpg b/media/2021_08_14_shader_jam_nevoke/Flopine_chibitech_visuals.jpg new file mode 100644 index 000000000..4d8bae721 Binary files /dev/null and b/media/2021_08_14_shader_jam_nevoke/Flopine_chibitech_visuals.jpg differ diff --git a/media/2021_09_02_byte_jam_pre_lovebyte/superogue.gif b/media/2021_09_02_byte_jam_pre_lovebyte/superogue.gif new file mode 100644 index 000000000..154640ca8 Binary files /dev/null and b/media/2021_09_02_byte_jam_pre_lovebyte/superogue.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/0b5vr_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/0b5vr_first_round.gif new file mode 100644 index 000000000..04b9c8b08 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/0b5vr_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/aldroid_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/aldroid_first_round.gif new file mode 100644 index 000000000..7521784ad Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/aldroid_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/aldroid_quarter.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/aldroid_quarter.gif new file mode 100644 index 000000000..cdf34fa6f Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/aldroid_quarter.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/blackle_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/blackle_first_round.gif new file mode 100644 index 000000000..974a4ef8e Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/blackle_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/dresdenboy_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/dresdenboy_first_round.gif new file mode 100644 index 000000000..3090e6674 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/dresdenboy_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/exoticorn_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/exoticorn_first_round.gif new file mode 100644 index 000000000..0a23ed008 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/exoticorn_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_first_round.gif new file mode 100644 index 000000000..19b02b289 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_quarter.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_quarter.gif new file mode 100644 index 000000000..8ab042bde Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_quarter.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_semi.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_semi.gif new file mode 100644 index 000000000..6ade891cf Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_semi.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gopher_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gopher_first_round.gif new file mode 100644 index 000000000..590e46757 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/gopher_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_first_round.gif new file mode 100644 index 000000000..d5499c192 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_quarter.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_quarter.gif new file mode 100644 index 000000000..00f8836b8 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_quarter.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_first_round.gif new file mode 100644 index 000000000..794a0010c Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_quarter.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_quarter.gif new file mode 100644 index 000000000..fedae1bb3 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_quarter.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_semi.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_semi.gif new file mode 100644 index 000000000..ca1d49e77 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_semi.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/nusan_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/nusan_first_round.gif new file mode 100644 index 000000000..b9472ff59 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/nusan_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/nusan_quarter.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/nusan_quarter.gif new file mode 100644 index 000000000..07a076486 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/nusan_quarter.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_final.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_final.gif new file mode 100644 index 000000000..0c5aab1dd Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_final.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_first_round.gif new file mode 100644 index 000000000..b66a8aee6 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_quarter.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_quarter.gif new file mode 100644 index 000000000..ba5f6fff0 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_quarter.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_semi.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_semi.gif new file mode 100644 index 000000000..bac774485 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/pestis_semi.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/psenough_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/psenough_first_round.gif new file mode 100644 index 000000000..834600ee6 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/psenough_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_final.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_final.gif new file mode 100644 index 000000000..70bacddeb Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_final.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_first_round.gif new file mode 100644 index 000000000..7357cc8ee Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_quarter.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_quarter.gif new file mode 100644 index 000000000..8b874d637 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_quarter.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_semi.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_semi.gif new file mode 100644 index 000000000..d336e3266 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_semi.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_first_round.gif new file mode 100644 index 000000000..891254d70 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_first_round.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_quarter.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_quarter.gif new file mode 100644 index 000000000..b2c58ce82 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_quarter.gif differ diff --git a/media/2021_09_25_byte_battle_lovebyte_battlegrounds/visy_first_round.gif b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/visy_first_round.gif new file mode 100644 index 000000000..68a8b14e7 Binary files /dev/null and b/media/2021_09_25_byte_battle_lovebyte_battlegrounds/visy_first_round.gif differ diff --git a/media/2021_09_25_byte_jam_lovebyte/gasman.gif b/media/2021_09_25_byte_jam_lovebyte/gasman.gif new file mode 100644 index 000000000..0f25752b5 Binary files /dev/null and b/media/2021_09_25_byte_jam_lovebyte/gasman.gif differ diff --git a/media/2021_09_25_byte_jam_lovebyte/mantratronic.gif b/media/2021_09_25_byte_jam_lovebyte/mantratronic.gif new file mode 100644 index 000000000..9f571dc1e Binary files /dev/null and b/media/2021_09_25_byte_jam_lovebyte/mantratronic.gif differ diff --git a/media/2021_09_25_byte_jam_lovebyte/pancelor.gif b/media/2021_09_25_byte_jam_lovebyte/pancelor.gif new file mode 100644 index 000000000..e4e36599f Binary files /dev/null and b/media/2021_09_25_byte_jam_lovebyte/pancelor.gif differ diff --git a/media/2021_09_25_byte_jam_lovebyte/pestis_1.gif b/media/2021_09_25_byte_jam_lovebyte/pestis_1.gif new file mode 100644 index 000000000..fc4b7cb99 Binary files /dev/null and b/media/2021_09_25_byte_jam_lovebyte/pestis_1.gif differ diff --git a/media/2021_09_25_byte_jam_lovebyte/pestis_2.gif b/media/2021_09_25_byte_jam_lovebyte/pestis_2.gif new file mode 100644 index 000000000..b2c1f6038 Binary files /dev/null and b/media/2021_09_25_byte_jam_lovebyte/pestis_2.gif differ diff --git a/media/2021_09_25_byte_jam_lovebyte/sir_garbagetruck.gif b/media/2021_09_25_byte_jam_lovebyte/sir_garbagetruck.gif new file mode 100644 index 000000000..56bbd8897 Binary files /dev/null and b/media/2021_09_25_byte_jam_lovebyte/sir_garbagetruck.gif differ diff --git a/media/2021_09_26_byte_jam_lovebyte_duck/gopher.gif b/media/2021_09_26_byte_jam_lovebyte_duck/gopher.gif new file mode 100644 index 000000000..cec4b1b8d Binary files /dev/null and b/media/2021_09_26_byte_jam_lovebyte_duck/gopher.gif differ diff --git a/media/2021_09_26_byte_jam_lovebyte_duck/jobe.gif b/media/2021_09_26_byte_jam_lovebyte_duck/jobe.gif new file mode 100644 index 000000000..1c4adbc1b Binary files /dev/null and b/media/2021_09_26_byte_jam_lovebyte_duck/jobe.gif differ diff --git a/media/2021_09_26_byte_jam_lovebyte_duck/nusan.gif b/media/2021_09_26_byte_jam_lovebyte_duck/nusan.gif new file mode 100644 index 000000000..d90301d78 Binary files /dev/null and b/media/2021_09_26_byte_jam_lovebyte_duck/nusan.gif differ diff --git a/media/2021_09_26_byte_jam_lovebyte_duck/superogue.gif b/media/2021_09_26_byte_jam_lovebyte_duck/superogue.gif new file mode 100644 index 000000000..eff703534 Binary files /dev/null and b/media/2021_09_26_byte_jam_lovebyte_duck/superogue.gif differ diff --git a/media/2021_10_30_byte_jam_inercia/mantratronic_inerciajam.gif b/media/2021_10_30_byte_jam_inercia/mantratronic_inerciajam.gif new file mode 100644 index 000000000..afc40b9cd Binary files /dev/null and b/media/2021_10_30_byte_jam_inercia/mantratronic_inerciajam.gif differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_0b5vr.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_0b5vr.jpg new file mode 100644 index 000000000..05128640a Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_0b5vr.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.jpg new file mode 100644 index 000000000..8b2ef09ad Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Exca.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Exca.jpg new file mode 100644 index 000000000..c596199ea Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Exca.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg new file mode 100644 index 000000000..bafb27034 Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Tater.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Tater.jpg new file mode 100644 index 000000000..edb748a02 Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Tater.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_alkama.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_alkama.jpg new file mode 100644 index 000000000..f89ecb1c8 Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_alkama.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_cosamentale.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_cosamentale.jpg new file mode 100644 index 000000000..a7c963bb1 Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_cosamentale.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_dok.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_dok.jpg new file mode 100644 index 000000000..bc86efa71 Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_dok.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_msieursoleil.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_msieursoleil.jpg new file mode 100644 index 000000000..4a69b3c28 Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_msieursoleil.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_provod.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_provod.jpg new file mode 100644 index 000000000..f1e6bb261 Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_provod.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg new file mode 100644 index 000000000..58d725d84 Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_totetmatt.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_totetmatt.jpg new file mode 100644 index 000000000..3863b161c Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_totetmatt.jpg differ diff --git a/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_z0rg.jpg b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_z0rg.jpg new file mode 100644 index 000000000..a2a076643 Binary files /dev/null and b/media/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_z0rg.jpg differ diff --git a/media/2021_11_27_byte_jam_demodulation/jobe.gif b/media/2021_11_27_byte_jam_demodulation/jobe.gif new file mode 100644 index 000000000..6151f739d Binary files /dev/null and b/media/2021_11_27_byte_jam_demodulation/jobe.gif differ diff --git a/media/2021_11_27_byte_jam_demodulation/lynn.gif b/media/2021_11_27_byte_jam_demodulation/lynn.gif new file mode 100644 index 000000000..910274a29 Binary files /dev/null and b/media/2021_11_27_byte_jam_demodulation/lynn.gif differ diff --git a/media/2021_11_27_byte_jam_demodulation/mantratronic.gif b/media/2021_11_27_byte_jam_demodulation/mantratronic.gif new file mode 100644 index 000000000..d82cae7b3 Binary files /dev/null and b/media/2021_11_27_byte_jam_demodulation/mantratronic.gif differ diff --git a/media/2021_11_27_byte_jam_demodulation/pestis.gif b/media/2021_11_27_byte_jam_demodulation/pestis.gif new file mode 100644 index 000000000..7049239eb Binary files /dev/null and b/media/2021_11_27_byte_jam_demodulation/pestis.gif differ diff --git a/media/2021_12_11_shader_jam_tokyo_demofest/Good_luck_semifinal.png b/media/2021_12_11_shader_jam_tokyo_demofest/Good_luck_semifinal.png new file mode 100644 index 000000000..5ddd670cd Binary files /dev/null and b/media/2021_12_11_shader_jam_tokyo_demofest/Good_luck_semifinal.png differ diff --git a/media/2021_12_11_shader_seminar_tokyo_demofest/2021_tdf_0b5vr.png b/media/2021_12_11_shader_seminar_tokyo_demofest/2021_tdf_0b5vr.png new file mode 100644 index 000000000..3f1bd811d Binary files /dev/null and b/media/2021_12_11_shader_seminar_tokyo_demofest/2021_tdf_0b5vr.png differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_Kamoshika.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_Kamoshika.jpg new file mode 100644 index 000000000..abd799a78 Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_Kamoshika.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_phi16.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_phi16.jpg new file mode 100644 index 000000000..e1355d146 Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_phi16.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_0b5vr.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_0b5vr.jpg new file mode 100644 index 000000000..eecaff821 Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_0b5vr.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_Kamoshika.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_Kamoshika.jpg new file mode 100644 index 000000000..e63dcfa2d Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_Kamoshika.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gam0022.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gam0022.jpg new file mode 100644 index 000000000..f69e40eac Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gam0022.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gaz.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gaz.jpg new file mode 100644 index 000000000..132b2fa5e Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gaz.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gyabo.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gyabo.jpg new file mode 100644 index 000000000..4e411d1f4 Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gyabo.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_notargs.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_notargs.jpg new file mode 100644 index 000000000..f73e76c58 Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_notargs.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_phi16.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_phi16.jpg new file mode 100644 index 000000000..727694195 Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_phi16.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_sp4ghet.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_sp4ghet.jpg new file mode 100644 index 000000000..683e4b9bd Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_sp4ghet.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_Kamoshika.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_Kamoshika.jpg new file mode 100644 index 000000000..c03ba69e0 Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_Kamoshika.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_gam0022.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_gam0022.jpg new file mode 100644 index 000000000..ca6ea4e4d Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_gam0022.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_phi16.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_phi16.jpg new file mode 100644 index 000000000..629f58d2b Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_phi16.jpg differ diff --git a/media/2021_12_11_shader_showdown_tokyo_demofest/semi/sender_sp4ghet_tdf2021.jpg b/media/2021_12_11_shader_showdown_tokyo_demofest/semi/sender_sp4ghet_tdf2021.jpg new file mode 100644 index 000000000..e0c7a552c Binary files /dev/null and b/media/2021_12_11_shader_showdown_tokyo_demofest/semi/sender_sp4ghet_tdf2021.jpg differ diff --git a/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_0b5vr.jpg b/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_0b5vr.jpg new file mode 100644 index 000000000..16c9e8f23 Binary files /dev/null and b/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_0b5vr.jpg differ diff --git a/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_Tater.jpg b/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_Tater.jpg new file mode 100644 index 000000000..fda147791 Binary files /dev/null and b/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_Tater.jpg differ diff --git a/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_monsieursoleil.jpg b/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_monsieursoleil.jpg new file mode 100644 index 000000000..d019e5c94 Binary files /dev/null and b/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_monsieursoleil.jpg differ diff --git a/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_rimina.jpg b/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_rimina.jpg new file mode 100644 index 000000000..c0f8e236f Binary files /dev/null and b/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_rimina.jpg differ diff --git a/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_totetmatt.jpg b/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_totetmatt.jpg new file mode 100644 index 000000000..b24f815b1 Binary files /dev/null and b/media/2021_12_31_shader_jam_fieldfx/grabber_silvester_totetmatt.jpg differ diff --git a/media/2022_02_11_byte_jam_lovebyte/borb_frogparty.gif b/media/2022_02_11_byte_jam_lovebyte/borb_frogparty.gif new file mode 100644 index 000000000..2d3987d12 Binary files /dev/null and b/media/2022_02_11_byte_jam_lovebyte/borb_frogparty.gif differ diff --git a/media/2022_02_11_byte_jam_lovebyte/gasman_voyager.gif b/media/2022_02_11_byte_jam_lovebyte/gasman_voyager.gif new file mode 100644 index 000000000..b76df2b9e Binary files /dev/null and b/media/2022_02_11_byte_jam_lovebyte/gasman_voyager.gif differ diff --git a/media/2022_02_11_byte_jam_lovebyte/mantratronic_lb22jam.gif b/media/2022_02_11_byte_jam_lovebyte/mantratronic_lb22jam.gif new file mode 100644 index 000000000..f471bf1a1 Binary files /dev/null and b/media/2022_02_11_byte_jam_lovebyte/mantratronic_lb22jam.gif differ diff --git a/media/2022_02_11_byte_jam_lovebyte/tobach_bytejam.gif b/media/2022_02_11_byte_jam_lovebyte/tobach_bytejam.gif new file mode 100644 index 000000000..319da264b Binary files /dev/null and b/media/2022_02_11_byte_jam_lovebyte/tobach_bytejam.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/final_dave84.gif b/media/2022_02_12_byte_battle_lovebyte/final_dave84.gif new file mode 100644 index 000000000..ffa82ec93 Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/final_dave84.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/final_pestis.gif b/media/2022_02_12_byte_battle_lovebyte/final_pestis.gif new file mode 100644 index 000000000..fded36bfc Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/final_pestis.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/quarter_dresdenboy.gif b/media/2022_02_12_byte_battle_lovebyte/quarter_dresdenboy.gif new file mode 100644 index 000000000..96ee82d7d Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/quarter_dresdenboy.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/quarter_jobe.gif b/media/2022_02_12_byte_battle_lovebyte/quarter_jobe.gif new file mode 100644 index 000000000..07e117c21 Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/quarter_jobe.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/quarter_lynn.gif b/media/2022_02_12_byte_battle_lovebyte/quarter_lynn.gif new file mode 100644 index 000000000..fff0a070a Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/quarter_lynn.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/quarter_pestis.gif b/media/2022_02_12_byte_battle_lovebyte/quarter_pestis.gif new file mode 100644 index 000000000..66878c84f Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/quarter_pestis.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/quarter_totetmatt.gif b/media/2022_02_12_byte_battle_lovebyte/quarter_totetmatt.gif new file mode 100644 index 000000000..ba58e0a9e Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/quarter_totetmatt.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/quarter_visy.gif b/media/2022_02_12_byte_battle_lovebyte/quarter_visy.gif new file mode 100644 index 000000000..8f4e6883f Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/quarter_visy.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/semi_dave84.gif b/media/2022_02_12_byte_battle_lovebyte/semi_dave84.gif new file mode 100644 index 000000000..3b992ec73 Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/semi_dave84.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/semi_pestis.gif b/media/2022_02_12_byte_battle_lovebyte/semi_pestis.gif new file mode 100644 index 000000000..8cb9c5828 Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/semi_pestis.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/semi_totetmatt.gif b/media/2022_02_12_byte_battle_lovebyte/semi_totetmatt.gif new file mode 100644 index 000000000..c6cf23a80 Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/semi_totetmatt.gif differ diff --git a/media/2022_02_12_byte_battle_lovebyte/semi_visy.gif b/media/2022_02_12_byte_battle_lovebyte/semi_visy.gif new file mode 100644 index 000000000..5843e3c9b Binary files /dev/null and b/media/2022_02_12_byte_battle_lovebyte/semi_visy.gif differ diff --git a/media/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_Tater.jpg b/media/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_Tater.jpg new file mode 100644 index 000000000..6142746e3 Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_Tater.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_eimink.jpg b/media/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_eimink.jpg new file mode 100644 index 000000000..b91668748 Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_eimink.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_exca.jpg b/media/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_exca.jpg new file mode 100644 index 000000000..007d0f15e Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_exca.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_evvvvil.jpg b/media/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_evvvvil.jpg new file mode 100644 index 000000000..b160071cf Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_evvvvil.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_exca.jpg b/media/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_exca.jpg new file mode 100644 index 000000000..c175bdf8e Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_exca.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_kostik.jpg b/media/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_kostik.jpg new file mode 100644 index 000000000..d5ba7ff6d Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_kostik.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_blackle.jpg b/media/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_blackle.jpg new file mode 100644 index 000000000..2b0e551fb Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_blackle.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_monsieursoleil.jpg b/media/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_monsieursoleil.jpg new file mode 100644 index 000000000..a54633695 Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_monsieursoleil.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_z0rg.jpg b/media/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_z0rg.jpg new file mode 100644 index 000000000..f22cc110f Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_z0rg.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_goose.jpg b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_goose.jpg new file mode 100644 index 000000000..d8b5157ae Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_goose.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_lechugafeliz.jpg b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_lechugafeliz.jpg new file mode 100644 index 000000000..8497a2bc7 Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_lechugafeliz.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_nusan.jpg b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_nusan.jpg new file mode 100644 index 000000000..afed61777 Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_nusan.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_provod.jpg b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_provod.jpg new file mode 100644 index 000000000..a04b18c7f Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_provod.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_totetmatt.jpg b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_totetmatt.jpg new file mode 100644 index 000000000..62b8d6281 Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_totetmatt.jpg differ diff --git a/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_wbcbz7.jpg b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_wbcbz7.jpg new file mode 100644 index 000000000..e4f21913e Binary files /dev/null and b/media/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_wbcbz7.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_evvvvil.jpg b/media/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_evvvvil.jpg new file mode 100644 index 000000000..143f672c5 Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_evvvvil.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_exca.jpg b/media/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_exca.jpg new file mode 100644 index 000000000..61901db6f Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_exca.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_blackle.jpg b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_blackle.jpg new file mode 100644 index 000000000..5e303b3c1 Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_blackle.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_evvvvil.jpg b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_evvvvil.jpg new file mode 100644 index 000000000..85e57999b Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_evvvvil.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_exca.jpg b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_exca.jpg new file mode 100644 index 000000000..25c81a4d1 Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_exca.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_goose.jpg b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_goose.jpg new file mode 100644 index 000000000..221898012 Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_goose.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_monsieursoleil.jpg b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_monsieursoleil.jpg new file mode 100644 index 000000000..4c634b9f4 Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_monsieursoleil.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_provod.jpg b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_provod.jpg new file mode 100644 index 000000000..5d72ae572 Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_provod.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_totetmatt.jpg b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_totetmatt.jpg new file mode 100644 index 000000000..c9f58b52c Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_totetmatt.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_z0rg.jpg b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_z0rg.jpg new file mode 100644 index 000000000..90299469b Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_z0rg.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_blackle.jpg b/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_blackle.jpg new file mode 100644 index 000000000..bbdcc9b85 Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_blackle.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_evvvvil.jpg b/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_evvvvil.jpg new file mode 100644 index 000000000..1b5536dac Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_evvvvil.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_exca.jpg b/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_exca.jpg new file mode 100644 index 000000000..ab532ae4f Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_exca.jpg differ diff --git a/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_goose.jpg b/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_goose.jpg new file mode 100644 index 000000000..7756547a0 Binary files /dev/null and b/media/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_goose.jpg differ diff --git a/media/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_gasman.gif b/media/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_gasman.gif new file mode 100644 index 000000000..5c2143183 Binary files /dev/null and b/media/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_gasman.gif differ diff --git a/media/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_tobach.gif b/media/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_tobach.gif new file mode 100644 index 000000000..ccc70f1d0 Binary files /dev/null and b/media/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_tobach.gif differ diff --git a/media/2022_05_02_shader_jam_fieldfx/shader_MonsieurSoleil.jpg b/media/2022_05_02_shader_jam_fieldfx/shader_MonsieurSoleil.jpg new file mode 100644 index 000000000..3fcc9a8b6 Binary files /dev/null and b/media/2022_05_02_shader_jam_fieldfx/shader_MonsieurSoleil.jpg differ diff --git a/media/2022_05_02_shader_jam_fieldfx/shader_totetmatt.jpg b/media/2022_05_02_shader_jam_fieldfx/shader_totetmatt.jpg new file mode 100644 index 000000000..9a879b00b Binary files /dev/null and b/media/2022_05_02_shader_jam_fieldfx/shader_totetmatt.jpg differ diff --git a/media/2022_06_10_shader_jam_shadowparty/z0rg.jpg b/media/2022_06_10_shader_jam_shadowparty/z0rg.jpg new file mode 100644 index 000000000..457430739 Binary files /dev/null and b/media/2022_06_10_shader_jam_shadowparty/z0rg.jpg differ diff --git a/media/2022_07_22_byte_jam_mch/bytejam_mch_blinry.gif b/media/2022_07_22_byte_jam_mch/bytejam_mch_blinry.gif new file mode 100644 index 000000000..dcc814160 Binary files /dev/null and b/media/2022_07_22_byte_jam_mch/bytejam_mch_blinry.gif differ diff --git a/media/2022_07_22_byte_jam_mch/bytejam_mch_gasman.gif b/media/2022_07_22_byte_jam_mch/bytejam_mch_gasman.gif new file mode 100644 index 000000000..ccaff56f7 Binary files /dev/null and b/media/2022_07_22_byte_jam_mch/bytejam_mch_gasman.gif differ diff --git a/media/2022_07_22_byte_jam_mch/bytejam_mch_lynn.gif b/media/2022_07_22_byte_jam_mch/bytejam_mch_lynn.gif new file mode 100644 index 000000000..d1d93daf4 Binary files /dev/null and b/media/2022_07_22_byte_jam_mch/bytejam_mch_lynn.gif differ diff --git a/media/2022_07_22_byte_jam_mch/bytejam_mch_superogue.gif b/media/2022_07_22_byte_jam_mch/bytejam_mch_superogue.gif new file mode 100644 index 000000000..7c9d3221f Binary files /dev/null and b/media/2022_07_22_byte_jam_mch/bytejam_mch_superogue.gif differ diff --git a/media/2022_08_05_shader_showdown_assembly/shader_asm_exca_semifinal1.jpg b/media/2022_08_05_shader_showdown_assembly/shader_asm_exca_semifinal1.jpg new file mode 100644 index 000000000..d1ad2cb6e Binary files /dev/null and b/media/2022_08_05_shader_showdown_assembly/shader_asm_exca_semifinal1.jpg differ diff --git a/media/2022_08_05_shader_showdown_assembly/shader_asm_provod_final.jpg b/media/2022_08_05_shader_showdown_assembly/shader_asm_provod_final.jpg new file mode 100644 index 000000000..c0387a1df Binary files /dev/null and b/media/2022_08_05_shader_showdown_assembly/shader_asm_provod_final.jpg differ diff --git a/media/2022_08_05_shader_showdown_assembly/shader_asm_provod_semifinal2.jpg b/media/2022_08_05_shader_showdown_assembly/shader_asm_provod_semifinal2.jpg new file mode 100644 index 000000000..6bc9d747a Binary files /dev/null and b/media/2022_08_05_shader_showdown_assembly/shader_asm_provod_semifinal2.jpg differ diff --git a/media/2022_08_05_shader_showdown_assembly/shader_asm_rimina_final.jpg b/media/2022_08_05_shader_showdown_assembly/shader_asm_rimina_final.jpg new file mode 100644 index 000000000..effca7aab Binary files /dev/null and b/media/2022_08_05_shader_showdown_assembly/shader_asm_rimina_final.jpg differ diff --git a/media/2022_08_05_shader_showdown_assembly/shader_asm_rimina_semifinal1.jpg b/media/2022_08_05_shader_showdown_assembly/shader_asm_rimina_semifinal1.jpg new file mode 100644 index 000000000..e7b476b35 Binary files /dev/null and b/media/2022_08_05_shader_showdown_assembly/shader_asm_rimina_semifinal1.jpg differ diff --git a/media/2022_08_05_shader_showdown_assembly/shader_asm_visy_semifinal2.jpg b/media/2022_08_05_shader_showdown_assembly/shader_asm_visy_semifinal2.jpg new file mode 100644 index 000000000..fff96832b Binary files /dev/null and b/media/2022_08_05_shader_showdown_assembly/shader_asm_visy_semifinal2.jpg differ diff --git a/media/2022_08_05_shader_showdown_evoke/flopine_final.jpg b/media/2022_08_05_shader_showdown_evoke/flopine_final.jpg new file mode 100644 index 000000000..1b2859540 Binary files /dev/null and b/media/2022_08_05_shader_showdown_evoke/flopine_final.jpg differ diff --git a/media/2022_08_05_shader_showdown_evoke/flopine_semi2.jpg b/media/2022_08_05_shader_showdown_evoke/flopine_semi2.jpg new file mode 100644 index 000000000..15f197f0b Binary files /dev/null and b/media/2022_08_05_shader_showdown_evoke/flopine_semi2.jpg differ diff --git a/media/2022_08_05_shader_showdown_evoke/nusan_semi1.jpg b/media/2022_08_05_shader_showdown_evoke/nusan_semi1.jpg new file mode 100644 index 000000000..c3d6b1ccb Binary files /dev/null and b/media/2022_08_05_shader_showdown_evoke/nusan_semi1.jpg differ diff --git a/media/2022_08_05_shader_showdown_evoke/totetmatt_final.jpg b/media/2022_08_05_shader_showdown_evoke/totetmatt_final.jpg new file mode 100644 index 000000000..0f5e757b2 Binary files /dev/null and b/media/2022_08_05_shader_showdown_evoke/totetmatt_final.jpg differ diff --git a/media/2022_08_05_shader_showdown_evoke/totetmatt_semi1.jpg b/media/2022_08_05_shader_showdown_evoke/totetmatt_semi1.jpg new file mode 100644 index 000000000..e4a3fa0d5 Binary files /dev/null and b/media/2022_08_05_shader_showdown_evoke/totetmatt_semi1.jpg differ diff --git a/media/2022_08_05_shader_showdown_evoke/z0rg_semi1.jpg b/media/2022_08_05_shader_showdown_evoke/z0rg_semi1.jpg new file mode 100644 index 000000000..e43d672de Binary files /dev/null and b/media/2022_08_05_shader_showdown_evoke/z0rg_semi1.jpg differ diff --git a/media/2022_08_06_byte_battle_lovebyte_turbo/blossom.gif b/media/2022_08_06_byte_battle_lovebyte_turbo/blossom.gif new file mode 100644 index 000000000..4d77c531c Binary files /dev/null and b/media/2022_08_06_byte_battle_lovebyte_turbo/blossom.gif differ diff --git a/media/2022_08_06_byte_battle_lovebyte_turbo/superogue.gif b/media/2022_08_06_byte_battle_lovebyte_turbo/superogue.gif new file mode 100644 index 000000000..0af6e5534 Binary files /dev/null and b/media/2022_08_06_byte_battle_lovebyte_turbo/superogue.gif differ diff --git a/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_dart.jpg b/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_dart.jpg new file mode 100644 index 000000000..42417fd53 Binary files /dev/null and b/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_dart.jpg differ diff --git a/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_f0x.dx11.jpg b/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_f0x.dx11.jpg new file mode 100644 index 000000000..440ee8851 Binary files /dev/null and b/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_f0x.dx11.jpg differ diff --git a/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_ivan_dianov.jpg b/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_ivan_dianov.jpg new file mode 100644 index 000000000..26ba2f767 Binary files /dev/null and b/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_ivan_dianov.jpg differ diff --git a/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_jin_x.jpg b/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_jin_x.jpg new file mode 100644 index 000000000..425b50622 Binary files /dev/null and b/media/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_jin_x.jpg differ diff --git a/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_dart.jpg b/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_dart.jpg new file mode 100644 index 000000000..9e59220b0 Binary files /dev/null and b/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_dart.jpg differ diff --git a/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_f0x.jpg b/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_f0x.jpg new file mode 100644 index 000000000..76f784b2b Binary files /dev/null and b/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_f0x.jpg differ diff --git a/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_ivan_dianov.jpg b/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_ivan_dianov.jpg new file mode 100644 index 000000000..a02be8ad6 Binary files /dev/null and b/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_ivan_dianov.jpg differ diff --git a/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_jin_x.jpg b/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_jin_x.jpg new file mode 100644 index 000000000..f2f4828a3 Binary files /dev/null and b/media/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_jin_x.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_0b5vr.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_0b5vr.jpg new file mode 100644 index 000000000..06292bee4 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_0b5vr.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Blueberry.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Blueberry.jpg new file mode 100644 index 000000000..b6ebcb01c Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Blueberry.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.jpg new file mode 100644 index 000000000..b7105f4d2 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Exca.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Exca.jpg new file mode 100644 index 000000000..2754b798f Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Exca.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_IvanDianov.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_IvanDianov.jpg new file mode 100644 index 000000000..66045c893 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_IvanDianov.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Kamoshika.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Kamoshika.jpg new file mode 100644 index 000000000..ceb762d1c Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Kamoshika.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg new file mode 100644 index 000000000..e53551d3f Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_NR4.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_NR4.jpg new file mode 100644 index 000000000..c5e22d4bd Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_NR4.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Nusan.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Nusan.jpg new file mode 100644 index 000000000..ee7a1614d Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Nusan.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Tater.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Tater.jpg new file mode 100644 index 000000000..caae1490e Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Tater.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Xor.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Xor.jpg new file mode 100644 index 000000000..0e747e656 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Xor.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_aldroid.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_aldroid.jpg new file mode 100644 index 000000000..f5b583542 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_aldroid.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_blackle.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_blackle.jpg new file mode 100644 index 000000000..43520ab3b Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_blackle.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_branch.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_branch.jpg new file mode 100644 index 000000000..0e34d1a20 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_branch.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_byt3m3chanic.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_byt3m3chanic.jpg new file mode 100644 index 000000000..aa4c64ac1 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_byt3m3chanic.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_cosamentale.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_cosamentale.jpg new file mode 100644 index 000000000..e761ea289 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_cosamentale.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_flopine.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_flopine.jpg new file mode 100644 index 000000000..66899de30 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_flopine.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_glowcone.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_glowcone.jpg new file mode 100644 index 000000000..f543b3e5b Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_glowcone.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kali.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kali.jpg new file mode 100644 index 000000000..cb14cd9cd Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kali.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kostik1337.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kostik1337.jpg new file mode 100644 index 000000000..d5b47fd84 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kostik1337.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_leon.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_leon.jpg new file mode 100644 index 000000000..f5308a0c4 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_leon.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_musk.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_musk.jpg new file mode 100644 index 000000000..baea1c493 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_musk.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_provod.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_provod.jpg new file mode 100644 index 000000000..e7616cb7f Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_provod.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg new file mode 100644 index 000000000..a5a762965 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_rimina.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_totetmatt.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_totetmatt.jpg new file mode 100644 index 000000000..57cdd826f Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_totetmatt.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_visy.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_visy.jpg new file mode 100644 index 000000000..a9751ee65 Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_visy.jpg differ diff --git a/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_z0rg.jpg b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_z0rg.jpg new file mode 100644 index 000000000..8f06ac74b Binary files /dev/null and b/media/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_z0rg.jpg differ diff --git a/media/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_1.gif b/media/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_1.gif new file mode 100644 index 000000000..77d4b7bf7 Binary files /dev/null and b/media/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_1.gif differ diff --git a/media/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_2.gif b/media/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_2.gif new file mode 100644 index 000000000..5c40856ce Binary files /dev/null and b/media/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_2.gif differ diff --git a/media/2022_11_05_byte_jam_inercia/inerciabytejam_gasman.gif b/media/2022_11_05_byte_jam_inercia/inerciabytejam_gasman.gif new file mode 100644 index 000000000..84b45c331 Binary files /dev/null and b/media/2022_11_05_byte_jam_inercia/inerciabytejam_gasman.gif differ diff --git a/media/2022_11_05_byte_jam_inercia/inerciabytejam_nico.gif b/media/2022_11_05_byte_jam_inercia/inerciabytejam_nico.gif new file mode 100644 index 000000000..640f4e3da Binary files /dev/null and b/media/2022_11_05_byte_jam_inercia/inerciabytejam_nico.gif differ diff --git a/media/2022_11_05_byte_jam_inercia/inerciabytejam_superogue.gif b/media/2022_11_05_byte_jam_inercia/inerciabytejam_superogue.gif new file mode 100644 index 000000000..61af18a63 Binary files /dev/null and b/media/2022_11_05_byte_jam_inercia/inerciabytejam_superogue.gif differ diff --git a/media/2022_11_05_byte_jam_inercia/inerciabytejam_tobach.gif b/media/2022_11_05_byte_jam_inercia/inerciabytejam_tobach.gif new file mode 100644 index 000000000..415af8583 Binary files /dev/null and b/media/2022_11_05_byte_jam_inercia/inerciabytejam_tobach.gif differ diff --git a/media/2022_11_14_byte_battle_fieldfx_bbc/bytebattle/dave84-bytebattle.gif b/media/2022_11_14_byte_battle_fieldfx_bbc/bytebattle/dave84-bytebattle.gif new file mode 100644 index 000000000..710296516 Binary files /dev/null and b/media/2022_11_14_byte_battle_fieldfx_bbc/bytebattle/dave84-bytebattle.gif differ diff --git a/media/2022_11_14_byte_battle_fieldfx_bbc/bytebattle/mantratronic-bytebattle.gif b/media/2022_11_14_byte_battle_fieldfx_bbc/bytebattle/mantratronic-bytebattle.gif new file mode 100644 index 000000000..ed7fda545 Binary files /dev/null and b/media/2022_11_14_byte_battle_fieldfx_bbc/bytebattle/mantratronic-bytebattle.gif differ diff --git a/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/aldroid-jam.gif b/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/aldroid-jam.gif new file mode 100644 index 000000000..5607bf776 Binary files /dev/null and b/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/aldroid-jam.gif differ diff --git a/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/dave84-jam.gif b/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/dave84-jam.gif new file mode 100644 index 000000000..57141e110 Binary files /dev/null and b/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/dave84-jam.gif differ diff --git a/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/mantratronic-jam.gif b/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/mantratronic-jam.gif new file mode 100644 index 000000000..e996afa68 Binary files /dev/null and b/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/mantratronic-jam.gif differ diff --git a/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/tobach-jam.gif b/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/tobach-jam.gif new file mode 100644 index 000000000..25d8e4b3d Binary files /dev/null and b/media/2022_11_14_byte_jam_fieldfx_bbc/bytejam/tobach-jam.gif differ diff --git a/media/2022_11_21_byte_jam_fieldfx_casual/gasman.gif b/media/2022_11_21_byte_jam_fieldfx_casual/gasman.gif new file mode 100644 index 000000000..2ca6bddde Binary files /dev/null and b/media/2022_11_21_byte_jam_fieldfx_casual/gasman.gif differ diff --git a/media/2022_11_21_byte_jam_fieldfx_casual/mantratronic.gif b/media/2022_11_21_byte_jam_fieldfx_casual/mantratronic.gif new file mode 100644 index 000000000..6c9a548cf Binary files /dev/null and b/media/2022_11_21_byte_jam_fieldfx_casual/mantratronic.gif differ diff --git a/media/2022_11_21_byte_jam_fieldfx_casual/superogue.gif b/media/2022_11_21_byte_jam_fieldfx_casual/superogue.gif new file mode 100644 index 000000000..388d7b643 Binary files /dev/null and b/media/2022_11_21_byte_jam_fieldfx_casual/superogue.gif differ diff --git a/media/2022_11_21_byte_jam_fieldfx_casual/tobach.gif b/media/2022_11_21_byte_jam_fieldfx_casual/tobach.gif new file mode 100644 index 000000000..5f76ec199 Binary files /dev/null and b/media/2022_11_21_byte_jam_fieldfx_casual/tobach.gif differ diff --git a/media/2022_11_21_byte_jam_fieldfx_casual/totetmatt.gif b/media/2022_11_21_byte_jam_fieldfx_casual/totetmatt.gif new file mode 100644 index 000000000..d51c3a025 Binary files /dev/null and b/media/2022_11_21_byte_jam_fieldfx_casual/totetmatt.gif differ diff --git a/media/2022_11_28_byte_jam_fieldfx_casual/mantratronic.gif b/media/2022_11_28_byte_jam_fieldfx_casual/mantratronic.gif new file mode 100644 index 000000000..4ce73fd3d Binary files /dev/null and b/media/2022_11_28_byte_jam_fieldfx_casual/mantratronic.gif differ diff --git a/media/2022_11_28_byte_jam_fieldfx_casual/tobach.gif b/media/2022_11_28_byte_jam_fieldfx_casual/tobach.gif new file mode 100644 index 000000000..39ba12f09 Binary files /dev/null and b/media/2022_11_28_byte_jam_fieldfx_casual/tobach.gif differ diff --git a/media/2022_11_28_byte_jam_fieldfx_casual/truck.gif b/media/2022_11_28_byte_jam_fieldfx_casual/truck.gif new file mode 100644 index 000000000..9be287f84 Binary files /dev/null and b/media/2022_11_28_byte_jam_fieldfx_casual/truck.gif differ diff --git a/media/2022_11_28_byte_jam_fieldfx_casual/visy.gif b/media/2022_11_28_byte_jam_fieldfx_casual/visy.gif new file mode 100644 index 000000000..49e820d8d Binary files /dev/null and b/media/2022_11_28_byte_jam_fieldfx_casual/visy.gif differ diff --git a/media/2022_12_05_byte_jam_fieldfx_casual/aldroid.gif b/media/2022_12_05_byte_jam_fieldfx_casual/aldroid.gif new file mode 100644 index 000000000..481700f6f Binary files /dev/null and b/media/2022_12_05_byte_jam_fieldfx_casual/aldroid.gif differ diff --git a/media/2022_12_05_byte_jam_fieldfx_casual/dave84.gif b/media/2022_12_05_byte_jam_fieldfx_casual/dave84.gif new file mode 100644 index 000000000..209c95549 Binary files /dev/null and b/media/2022_12_05_byte_jam_fieldfx_casual/dave84.gif differ diff --git a/media/2022_12_05_byte_jam_fieldfx_casual/gasman.gif b/media/2022_12_05_byte_jam_fieldfx_casual/gasman.gif new file mode 100644 index 000000000..89b366ac6 Binary files /dev/null and b/media/2022_12_05_byte_jam_fieldfx_casual/gasman.gif differ diff --git a/media/2022_12_05_byte_jam_fieldfx_casual/tobach.gif b/media/2022_12_05_byte_jam_fieldfx_casual/tobach.gif new file mode 100644 index 000000000..ed8ffca93 Binary files /dev/null and b/media/2022_12_05_byte_jam_fieldfx_casual/tobach.gif differ diff --git a/media/2022_12_12_byte_jam_fieldfx_casual/aldroid.png b/media/2022_12_12_byte_jam_fieldfx_casual/aldroid.png new file mode 100644 index 000000000..418c78f81 Binary files /dev/null and b/media/2022_12_12_byte_jam_fieldfx_casual/aldroid.png differ diff --git a/media/2022_12_12_byte_jam_fieldfx_casual/mantratronic.gif b/media/2022_12_12_byte_jam_fieldfx_casual/mantratronic.gif new file mode 100644 index 000000000..b4ec2ee3f Binary files /dev/null and b/media/2022_12_12_byte_jam_fieldfx_casual/mantratronic.gif differ diff --git a/media/2022_12_12_byte_jam_fieldfx_casual/superogue.gif b/media/2022_12_12_byte_jam_fieldfx_casual/superogue.gif new file mode 100644 index 000000000..411e377fd Binary files /dev/null and b/media/2022_12_12_byte_jam_fieldfx_casual/superogue.gif differ diff --git a/media/2022_12_12_byte_jam_fieldfx_casual/tobach.gif b/media/2022_12_12_byte_jam_fieldfx_casual/tobach.gif new file mode 100644 index 000000000..122459e22 Binary files /dev/null and b/media/2022_12_12_byte_jam_fieldfx_casual/tobach.gif differ diff --git a/media/2022_12_19_byte_jam_fieldfx_casual/kiikrindar.gif b/media/2022_12_19_byte_jam_fieldfx_casual/kiikrindar.gif new file mode 100644 index 000000000..7ccd3aae0 Binary files /dev/null and b/media/2022_12_19_byte_jam_fieldfx_casual/kiikrindar.gif differ diff --git a/media/2022_12_19_byte_jam_fieldfx_casual/mrsynackster.gif b/media/2022_12_19_byte_jam_fieldfx_casual/mrsynackster.gif new file mode 100644 index 000000000..388d35db3 Binary files /dev/null and b/media/2022_12_19_byte_jam_fieldfx_casual/mrsynackster.gif differ diff --git a/media/2022_12_19_byte_jam_fieldfx_casual/superogue.gif b/media/2022_12_19_byte_jam_fieldfx_casual/superogue.gif new file mode 100644 index 000000000..ee36fce9a Binary files /dev/null and b/media/2022_12_19_byte_jam_fieldfx_casual/superogue.gif differ diff --git a/media/2022_12_19_byte_jam_fieldfx_casual/tobach.gif b/media/2022_12_19_byte_jam_fieldfx_casual/tobach.gif new file mode 100644 index 000000000..76ff39f02 Binary files /dev/null and b/media/2022_12_19_byte_jam_fieldfx_casual/tobach.gif differ diff --git a/media/2023_01_02_byte_jam_monday_night_bytes/alia.gif b/media/2023_01_02_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..b70c52f8b Binary files /dev/null and b/media/2023_01_02_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_01_02_byte_jam_monday_night_bytes/kiikrindar.gif b/media/2023_01_02_byte_jam_monday_night_bytes/kiikrindar.gif new file mode 100644 index 000000000..979c757f0 Binary files /dev/null and b/media/2023_01_02_byte_jam_monday_night_bytes/kiikrindar.gif differ diff --git a/media/2023_01_02_byte_jam_monday_night_bytes/mantratronic.png b/media/2023_01_02_byte_jam_monday_night_bytes/mantratronic.png new file mode 100644 index 000000000..a2add51f6 Binary files /dev/null and b/media/2023_01_02_byte_jam_monday_night_bytes/mantratronic.png differ diff --git a/media/2023_01_02_byte_jam_monday_night_bytes/tobach.gif b/media/2023_01_02_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..47ebba05d Binary files /dev/null and b/media/2023_01_02_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_01_09_byte_jam_monday_night_bytes/alia.gif b/media/2023_01_09_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..55e9752f7 Binary files /dev/null and b/media/2023_01_09_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_01_09_byte_jam_monday_night_bytes/gasman.gif b/media/2023_01_09_byte_jam_monday_night_bytes/gasman.gif new file mode 100644 index 000000000..db6a221ee Binary files /dev/null and b/media/2023_01_09_byte_jam_monday_night_bytes/gasman.gif differ diff --git a/media/2023_01_09_byte_jam_monday_night_bytes/mantratronic.gif b/media/2023_01_09_byte_jam_monday_night_bytes/mantratronic.gif new file mode 100644 index 000000000..5b46d7aad Binary files /dev/null and b/media/2023_01_09_byte_jam_monday_night_bytes/mantratronic.gif differ diff --git a/media/2023_01_09_byte_jam_monday_night_bytes/tobach.gif b/media/2023_01_09_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..9510e6c1f Binary files /dev/null and b/media/2023_01_09_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_01_14_byte_jam_lovebyte_get_ready/alia.png b/media/2023_01_14_byte_jam_lovebyte_get_ready/alia.png new file mode 100755 index 000000000..f1103ebc8 Binary files /dev/null and b/media/2023_01_14_byte_jam_lovebyte_get_ready/alia.png differ diff --git a/media/2023_01_14_byte_jam_lovebyte_get_ready/evilpaul.gif b/media/2023_01_14_byte_jam_lovebyte_get_ready/evilpaul.gif new file mode 100755 index 000000000..438cf0ea3 Binary files /dev/null and b/media/2023_01_14_byte_jam_lovebyte_get_ready/evilpaul.gif differ diff --git a/media/2023_01_14_byte_jam_lovebyte_get_ready/mantratronic.png b/media/2023_01_14_byte_jam_lovebyte_get_ready/mantratronic.png new file mode 100755 index 000000000..0b99f5fed Binary files /dev/null and b/media/2023_01_14_byte_jam_lovebyte_get_ready/mantratronic.png differ diff --git a/media/2023_01_14_byte_jam_lovebyte_get_ready/tobach.gif b/media/2023_01_14_byte_jam_lovebyte_get_ready/tobach.gif new file mode 100755 index 000000000..5f4055773 Binary files /dev/null and b/media/2023_01_14_byte_jam_lovebyte_get_ready/tobach.gif differ diff --git a/media/2023_01_23_byte_jam_monday_night_bytes/aldroid.gif b/media/2023_01_23_byte_jam_monday_night_bytes/aldroid.gif new file mode 100644 index 000000000..c3c975ac4 Binary files /dev/null and b/media/2023_01_23_byte_jam_monday_night_bytes/aldroid.gif differ diff --git a/media/2023_01_23_byte_jam_monday_night_bytes/gasman.gif b/media/2023_01_23_byte_jam_monday_night_bytes/gasman.gif new file mode 100644 index 000000000..e8666f54e Binary files /dev/null and b/media/2023_01_23_byte_jam_monday_night_bytes/gasman.gif differ diff --git a/media/2023_01_23_byte_jam_monday_night_bytes/kiikrinder.gif b/media/2023_01_23_byte_jam_monday_night_bytes/kiikrinder.gif new file mode 100644 index 000000000..41214a3bd Binary files /dev/null and b/media/2023_01_23_byte_jam_monday_night_bytes/kiikrinder.gif differ diff --git a/media/2023_01_23_byte_jam_monday_night_bytes/nico.gif b/media/2023_01_23_byte_jam_monday_night_bytes/nico.gif new file mode 100644 index 000000000..b885af797 Binary files /dev/null and b/media/2023_01_23_byte_jam_monday_night_bytes/nico.gif differ diff --git a/media/2023_01_30_byte_jam_monday_night_bytes/evilpaul.gif b/media/2023_01_30_byte_jam_monday_night_bytes/evilpaul.gif new file mode 100644 index 000000000..7588b5773 Binary files /dev/null and b/media/2023_01_30_byte_jam_monday_night_bytes/evilpaul.gif differ diff --git a/media/2023_01_30_byte_jam_monday_night_bytes/mrsynackster.gif b/media/2023_01_30_byte_jam_monday_night_bytes/mrsynackster.gif new file mode 100644 index 000000000..162bbb55a Binary files /dev/null and b/media/2023_01_30_byte_jam_monday_night_bytes/mrsynackster.gif differ diff --git a/media/2023_01_30_byte_jam_monday_night_bytes/tobach.gif b/media/2023_01_30_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..936925df6 Binary files /dev/null and b/media/2023_01_30_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_01_30_byte_jam_monday_night_bytes/truck.gif b/media/2023_01_30_byte_jam_monday_night_bytes/truck.gif new file mode 100644 index 000000000..7aadda6a7 Binary files /dev/null and b/media/2023_01_30_byte_jam_monday_night_bytes/truck.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/alia.gif b/media/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/alia.gif new file mode 100644 index 000000000..c70847d6c Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/alia.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/orby.png b/media/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/orby.png new file mode 100644 index 000000000..aef24b66a Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/orby.png differ diff --git a/media/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/alia.gif b/media/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/alia.gif new file mode 100644 index 000000000..ca0f45c36 Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/alia.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/pestis.gif b/media/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/pestis.gif new file mode 100644 index 000000000..c6c83534e Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/pestis.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/battle_jam/alia.gif b/media/2023_02_10_byte_battle_lovebyte/battle_jam/alia.gif new file mode 100644 index 000000000..4cfb0708f Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/battle_jam/alia.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/battle_jam/mantratronic.gif b/media/2023_02_10_byte_battle_lovebyte/battle_jam/mantratronic.gif new file mode 100644 index 000000000..e4efd59a2 Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/battle_jam/mantratronic.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/battle_jam/orby.gif b/media/2023_02_10_byte_battle_lovebyte/battle_jam/orby.gif new file mode 100644 index 000000000..2371f81ef Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/battle_jam/orby.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/battle_jam/tobach.gif b/media/2023_02_10_byte_battle_lovebyte/battle_jam/tobach.gif new file mode 100644 index 000000000..a86bf5759 Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/battle_jam/tobach.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/.DS_Store b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/.DS_Store new file mode 100644 index 000000000..74fbaea4b Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/.DS_Store differ diff --git a/media/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/gasman.gif b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/gasman.gif new file mode 100644 index 000000000..aef2f0383 Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/gasman.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/pestis.gif b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/pestis.gif new file mode 100644 index 000000000..7427380bf Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/pestis.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/.DS_Store b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/.DS_Store new file mode 100644 index 000000000..788d5c1ec Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/.DS_Store differ diff --git a/media/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/gasman.gif b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/gasman.gif new file mode 100644 index 000000000..2a498751f Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/gasman.gif differ diff --git a/media/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/tobach.gif b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/tobach.gif new file mode 100644 index 000000000..f251fb325 Binary files /dev/null and b/media/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/tobach.gif differ diff --git a/media/2023_02_10_byte_jam_lovebyte/byte_jam/blossom.png b/media/2023_02_10_byte_jam_lovebyte/byte_jam/blossom.png new file mode 100644 index 000000000..8a407cf75 Binary files /dev/null and b/media/2023_02_10_byte_jam_lovebyte/byte_jam/blossom.png differ diff --git a/media/2023_02_10_byte_jam_lovebyte/byte_jam/mantratronic.gif b/media/2023_02_10_byte_jam_lovebyte/byte_jam/mantratronic.gif new file mode 100644 index 000000000..b038470dc Binary files /dev/null and b/media/2023_02_10_byte_jam_lovebyte/byte_jam/mantratronic.gif differ diff --git a/media/2023_02_10_byte_jam_lovebyte/byte_jam/tobach.gif b/media/2023_02_10_byte_jam_lovebyte/byte_jam/tobach.gif new file mode 100644 index 000000000..0b8717a1c Binary files /dev/null and b/media/2023_02_10_byte_jam_lovebyte/byte_jam/tobach.gif differ diff --git a/media/2023_02_10_byte_jam_lovebyte/byte_jam/visy.gif b/media/2023_02_10_byte_jam_lovebyte/byte_jam/visy.gif new file mode 100644 index 000000000..6ee005bcf Binary files /dev/null and b/media/2023_02_10_byte_jam_lovebyte/byte_jam/visy.gif differ diff --git a/media/2023_02_20_byte_jam_monday_night_bytes/gasman.gif b/media/2023_02_20_byte_jam_monday_night_bytes/gasman.gif new file mode 100644 index 000000000..c5e599531 Binary files /dev/null and b/media/2023_02_20_byte_jam_monday_night_bytes/gasman.gif differ diff --git a/media/2023_02_20_byte_jam_monday_night_bytes/jtruk.gif b/media/2023_02_20_byte_jam_monday_night_bytes/jtruk.gif new file mode 100644 index 000000000..32dbdafdf Binary files /dev/null and b/media/2023_02_20_byte_jam_monday_night_bytes/jtruk.gif differ diff --git a/media/2023_02_20_byte_jam_monday_night_bytes/luchak.gif b/media/2023_02_20_byte_jam_monday_night_bytes/luchak.gif new file mode 100644 index 000000000..7b12c47ef Binary files /dev/null and b/media/2023_02_20_byte_jam_monday_night_bytes/luchak.gif differ diff --git a/media/2023_02_20_byte_jam_monday_night_bytes/tobach.gif b/media/2023_02_20_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..4d0fa7756 Binary files /dev/null and b/media/2023_02_20_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_02_27_byte_jam_monday_night_bytes/alia.png b/media/2023_02_27_byte_jam_monday_night_bytes/alia.png new file mode 100644 index 000000000..f1eb97775 Binary files /dev/null and b/media/2023_02_27_byte_jam_monday_night_bytes/alia.png differ diff --git a/media/2023_02_27_byte_jam_monday_night_bytes/doop.png b/media/2023_02_27_byte_jam_monday_night_bytes/doop.png new file mode 100644 index 000000000..f7610e0ba Binary files /dev/null and b/media/2023_02_27_byte_jam_monday_night_bytes/doop.png differ diff --git a/media/2023_02_27_byte_jam_monday_night_bytes/mrsynackster.png b/media/2023_02_27_byte_jam_monday_night_bytes/mrsynackster.png new file mode 100644 index 000000000..91888fa77 Binary files /dev/null and b/media/2023_02_27_byte_jam_monday_night_bytes/mrsynackster.png differ diff --git a/media/2023_02_27_byte_jam_monday_night_bytes/tobach.png b/media/2023_02_27_byte_jam_monday_night_bytes/tobach.png new file mode 100644 index 000000000..6d7e80edf Binary files /dev/null and b/media/2023_02_27_byte_jam_monday_night_bytes/tobach.png differ diff --git a/media/2023_03_02_shader_showdown_instanssi/r1_Kahvi.jpg b/media/2023_03_02_shader_showdown_instanssi/r1_Kahvi.jpg new file mode 100644 index 000000000..6d063e4a7 Binary files /dev/null and b/media/2023_03_02_shader_showdown_instanssi/r1_Kahvi.jpg differ diff --git a/media/2023_03_02_shader_showdown_instanssi/r1_pumpuli.jpg b/media/2023_03_02_shader_showdown_instanssi/r1_pumpuli.jpg new file mode 100644 index 000000000..f5140b3d0 Binary files /dev/null and b/media/2023_03_02_shader_showdown_instanssi/r1_pumpuli.jpg differ diff --git a/media/2023_03_02_shader_showdown_instanssi/r2.2_Kahvi.jpg b/media/2023_03_02_shader_showdown_instanssi/r2.2_Kahvi.jpg new file mode 100644 index 000000000..ebe3ec107 Binary files /dev/null and b/media/2023_03_02_shader_showdown_instanssi/r2.2_Kahvi.jpg differ diff --git a/media/2023_03_02_shader_showdown_instanssi/r3_NordicGoat.jpg b/media/2023_03_02_shader_showdown_instanssi/r3_NordicGoat.jpg new file mode 100644 index 000000000..e1a19b128 Binary files /dev/null and b/media/2023_03_02_shader_showdown_instanssi/r3_NordicGoat.jpg differ diff --git a/media/2023_03_06_byte_jam_monday_night_bytes/alia.png b/media/2023_03_06_byte_jam_monday_night_bytes/alia.png new file mode 100644 index 000000000..39e6e3221 Binary files /dev/null and b/media/2023_03_06_byte_jam_monday_night_bytes/alia.png differ diff --git a/media/2023_03_06_byte_jam_monday_night_bytes/gasman.png b/media/2023_03_06_byte_jam_monday_night_bytes/gasman.png new file mode 100644 index 000000000..b1962cdb7 Binary files /dev/null and b/media/2023_03_06_byte_jam_monday_night_bytes/gasman.png differ diff --git a/media/2023_03_06_byte_jam_monday_night_bytes/kii.png b/media/2023_03_06_byte_jam_monday_night_bytes/kii.png new file mode 100644 index 000000000..182d16dc2 Binary files /dev/null and b/media/2023_03_06_byte_jam_monday_night_bytes/kii.png differ diff --git a/media/2023_03_06_byte_jam_monday_night_bytes/visy.png b/media/2023_03_06_byte_jam_monday_night_bytes/visy.png new file mode 100644 index 000000000..54ff8d930 Binary files /dev/null and b/media/2023_03_06_byte_jam_monday_night_bytes/visy.png differ diff --git a/media/2023_03_13_byte_jam_monday_night_bytes/evilpaul.gif b/media/2023_03_13_byte_jam_monday_night_bytes/evilpaul.gif new file mode 100644 index 000000000..5268772a2 Binary files /dev/null and b/media/2023_03_13_byte_jam_monday_night_bytes/evilpaul.gif differ diff --git a/media/2023_03_13_byte_jam_monday_night_bytes/jtruk.gif b/media/2023_03_13_byte_jam_monday_night_bytes/jtruk.gif new file mode 100644 index 000000000..5c920a5fb Binary files /dev/null and b/media/2023_03_13_byte_jam_monday_night_bytes/jtruk.gif differ diff --git a/media/2023_03_13_byte_jam_monday_night_bytes/mantratronic.png b/media/2023_03_13_byte_jam_monday_night_bytes/mantratronic.png new file mode 100644 index 000000000..225954fd3 Binary files /dev/null and b/media/2023_03_13_byte_jam_monday_night_bytes/mantratronic.png differ diff --git a/media/2023_03_13_byte_jam_monday_night_bytes/tobach.gif b/media/2023_03_13_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..c939abf5d Binary files /dev/null and b/media/2023_03_13_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_03_20_byte_jam_monday_night_bytes/alia.gif b/media/2023_03_20_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..d15d0c22a Binary files /dev/null and b/media/2023_03_20_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_03_20_byte_jam_monday_night_bytes/mantratronic.gif b/media/2023_03_20_byte_jam_monday_night_bytes/mantratronic.gif new file mode 100644 index 000000000..db6d4db16 Binary files /dev/null and b/media/2023_03_20_byte_jam_monday_night_bytes/mantratronic.gif differ diff --git a/media/2023_03_20_byte_jam_monday_night_bytes/mrsynackster.gif b/media/2023_03_20_byte_jam_monday_night_bytes/mrsynackster.gif new file mode 100644 index 000000000..b30c06a70 Binary files /dev/null and b/media/2023_03_20_byte_jam_monday_night_bytes/mrsynackster.gif differ diff --git a/media/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_evvvvil.jpg b/media/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_evvvvil.jpg new file mode 100644 index 000000000..7c8fb2dc8 Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_evvvvil.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_flopine.jpg b/media/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_flopine.jpg new file mode 100644 index 000000000..e091f0fb4 Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_flopine.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_totetmatt.jpg b/media/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_totetmatt.jpg new file mode 100644 index 000000000..7e3ddff5a Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_totetmatt.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_flopine.jpg b/media/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_flopine.jpg new file mode 100644 index 000000000..87684c5da Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_flopine.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_molive.jpg b/media/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_molive.jpg new file mode 100644 index 000000000..41cb7582f Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_molive.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_musk.jpg b/media/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_musk.jpg new file mode 100644 index 000000000..c25c10cfe Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/q1/grabber_BACK2EWERK_musk.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_dok.jpg b/media/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_dok.jpg new file mode 100644 index 000000000..51eae6ab4 Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_dok.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_evvvvil.jpg b/media/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_evvvvil.jpg new file mode 100644 index 000000000..2161d2551 Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_evvvvil.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_z0rg.jpg b/media/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_z0rg.jpg new file mode 100644 index 000000000..9d6c96146 Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_z0rg.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_cosamentale.jpg b/media/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_cosamentale.jpg new file mode 100644 index 000000000..ed17dead1 Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_cosamentale.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_nusan.jpg b/media/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_nusan.jpg new file mode 100644 index 000000000..fd0dd0a8d Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_nusan.jpg differ diff --git a/media/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_totetmatt.jpg b/media/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_totetmatt.jpg new file mode 100644 index 000000000..244d5463c Binary files /dev/null and b/media/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_totetmatt.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_0b5vr.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_0b5vr.jpg new file mode 100644 index 000000000..4f48cb6ce Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_0b5vr.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_aldroid.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_aldroid.jpg new file mode 100644 index 000000000..3f0e2eb41 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_aldroid.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_alien.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_alien.jpg new file mode 100644 index 000000000..c96d9ba13 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_alien.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_dok.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_dok.jpg new file mode 100644 index 000000000..9ee185dc4 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_dok.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_eimink.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_eimink.jpg new file mode 100644 index 000000000..f981a5dc9 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_eimink.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_exca.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_exca.jpg new file mode 100644 index 000000000..ccfc4b26d Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_exca.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_flopin.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_flopin.jpg new file mode 100644 index 000000000..206a5a60a Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_flopin.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_ivan_dianov.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_ivan_dianov.jpg new file mode 100644 index 000000000..61108c902 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_ivan_dianov.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_kali.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_kali.jpg new file mode 100644 index 000000000..64b34776e Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_kali.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_kostik.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_kostik.jpg new file mode 100644 index 000000000..574fd0f44 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_kostik.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_nusan.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_nusan.jpg new file mode 100644 index 000000000..01e698d71 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_nusan.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_rimina.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_rimina.jpg new file mode 100644 index 000000000..fae68e332 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_rimina.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_silvester747.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_silvester747.jpg new file mode 100644 index 000000000..e03871f33 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_silvester747.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_superogue.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_superogue.jpg new file mode 100644 index 000000000..a1ae45c9f Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_superogue.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_totetmatt.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_totetmatt.jpg new file mode 100644 index 000000000..f807b08a5 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_totetmatt.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_visy.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_visy.jpg new file mode 100644 index 000000000..c8eb8c076 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_visy.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_wbcbz7.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_wbcbz7.jpg new file mode 100644 index 000000000..b4cec7d3f Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_wbcbz7.jpg differ diff --git a/media/2023_04_08_shader_jam_revision/grabber_revision2023_xor.jpg b/media/2023_04_08_shader_jam_revision/grabber_revision2023_xor.jpg new file mode 100644 index 000000000..1fedadb53 Binary files /dev/null and b/media/2023_04_08_shader_jam_revision/grabber_revision2023_xor.jpg differ diff --git a/media/2023_04_08_tic80_jam_revision/showdown_Tobach.gif b/media/2023_04_08_tic80_jam_revision/showdown_Tobach.gif new file mode 100644 index 000000000..488fb9462 Binary files /dev/null and b/media/2023_04_08_tic80_jam_revision/showdown_Tobach.gif differ diff --git a/media/2023_04_08_tic80_jam_revision/showdown_mrsyn.gif b/media/2023_04_08_tic80_jam_revision/showdown_mrsyn.gif new file mode 100644 index 000000000..73e630861 Binary files /dev/null and b/media/2023_04_08_tic80_jam_revision/showdown_mrsyn.gif differ diff --git a/media/2023_04_08_tic80_jam_revision/showdown_musk.gif b/media/2023_04_08_tic80_jam_revision/showdown_musk.gif new file mode 100644 index 000000000..316a893aa Binary files /dev/null and b/media/2023_04_08_tic80_jam_revision/showdown_musk.gif differ diff --git a/media/2023_04_08_tic80_jam_revision/showdown_nico.gif b/media/2023_04_08_tic80_jam_revision/showdown_nico.gif new file mode 100644 index 000000000..71f94312a Binary files /dev/null and b/media/2023_04_08_tic80_jam_revision/showdown_nico.gif differ diff --git a/media/2023_04_08_tic80_jam_revision/showdown_nusan.gif b/media/2023_04_08_tic80_jam_revision/showdown_nusan.gif new file mode 100644 index 000000000..7d4bfb80c Binary files /dev/null and b/media/2023_04_08_tic80_jam_revision/showdown_nusan.gif differ diff --git a/media/2023_04_08_tic80_jam_revision/showdown_speedman.gif b/media/2023_04_08_tic80_jam_revision/showdown_speedman.gif new file mode 100644 index 000000000..534131aa9 Binary files /dev/null and b/media/2023_04_08_tic80_jam_revision/showdown_speedman.gif differ diff --git a/media/2023_04_08_tic80_jam_revision/showdown_superogue.gif b/media/2023_04_08_tic80_jam_revision/showdown_superogue.gif new file mode 100644 index 000000000..17c1f9d19 Binary files /dev/null and b/media/2023_04_08_tic80_jam_revision/showdown_superogue.gif differ diff --git a/media/2023_04_17_byte_jam_monday_night_bytes/Alia.png b/media/2023_04_17_byte_jam_monday_night_bytes/Alia.png new file mode 100644 index 000000000..8b796b3d7 Binary files /dev/null and b/media/2023_04_17_byte_jam_monday_night_bytes/Alia.png differ diff --git a/media/2023_04_17_byte_jam_monday_night_bytes/Kii.png b/media/2023_04_17_byte_jam_monday_night_bytes/Kii.png new file mode 100644 index 000000000..890381532 Binary files /dev/null and b/media/2023_04_17_byte_jam_monday_night_bytes/Kii.png differ diff --git a/media/2023_04_17_byte_jam_monday_night_bytes/MrSynAckster.png b/media/2023_04_17_byte_jam_monday_night_bytes/MrSynAckster.png new file mode 100644 index 000000000..0d3552312 Binary files /dev/null and b/media/2023_04_17_byte_jam_monday_night_bytes/MrSynAckster.png differ diff --git a/media/2023_04_17_byte_jam_monday_night_bytes/NuSan.png b/media/2023_04_17_byte_jam_monday_night_bytes/NuSan.png new file mode 100644 index 000000000..cfaf45036 Binary files /dev/null and b/media/2023_04_17_byte_jam_monday_night_bytes/NuSan.png differ diff --git a/media/2023_04_17_byte_jam_monday_night_bytes/ToBach.png b/media/2023_04_17_byte_jam_monday_night_bytes/ToBach.png new file mode 100644 index 000000000..59501c12d Binary files /dev/null and b/media/2023_04_17_byte_jam_monday_night_bytes/ToBach.png differ diff --git a/media/2023_04_17_byte_jam_monday_night_bytes/dave84.png b/media/2023_04_17_byte_jam_monday_night_bytes/dave84.png new file mode 100644 index 000000000..fa3a0bc59 Binary files /dev/null and b/media/2023_04_17_byte_jam_monday_night_bytes/dave84.png differ diff --git a/media/2023_04_17_byte_jam_monday_night_bytes/jtruk.png b/media/2023_04_17_byte_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..0dd35c346 Binary files /dev/null and b/media/2023_04_17_byte_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2023_04_17_byte_jam_monday_night_bytes/mantratronic.png b/media/2023_04_17_byte_jam_monday_night_bytes/mantratronic.png new file mode 100644 index 000000000..b346feb56 Binary files /dev/null and b/media/2023_04_17_byte_jam_monday_night_bytes/mantratronic.png differ diff --git a/media/2023_04_17_byte_jam_monday_night_bytes/superogue.png b/media/2023_04_17_byte_jam_monday_night_bytes/superogue.png new file mode 100644 index 000000000..c86fd3da4 Binary files /dev/null and b/media/2023_04_17_byte_jam_monday_night_bytes/superogue.png differ diff --git a/media/2023_04_24_byte_jam_monday_night_bytes/Alia.png b/media/2023_04_24_byte_jam_monday_night_bytes/Alia.png new file mode 100644 index 000000000..234104ce1 Binary files /dev/null and b/media/2023_04_24_byte_jam_monday_night_bytes/Alia.png differ diff --git a/media/2023_04_24_byte_jam_monday_night_bytes/Gasman.png b/media/2023_04_24_byte_jam_monday_night_bytes/Gasman.png new file mode 100644 index 000000000..cdb5a5c49 Binary files /dev/null and b/media/2023_04_24_byte_jam_monday_night_bytes/Gasman.png differ diff --git a/media/2023_04_24_byte_jam_monday_night_bytes/Gigabates.png b/media/2023_04_24_byte_jam_monday_night_bytes/Gigabates.png new file mode 100644 index 000000000..a8fd26670 Binary files /dev/null and b/media/2023_04_24_byte_jam_monday_night_bytes/Gigabates.png differ diff --git a/media/2023_04_24_byte_jam_monday_night_bytes/Nico.png b/media/2023_04_24_byte_jam_monday_night_bytes/Nico.png new file mode 100644 index 000000000..4481acce1 Binary files /dev/null and b/media/2023_04_24_byte_jam_monday_night_bytes/Nico.png differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_Kamoshika.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_Kamoshika.jpg new file mode 100644 index 000000000..5d1d7eb39 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_Kamoshika.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_Musk.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_Musk.jpg new file mode 100644 index 000000000..94a95ea14 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_Musk.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_NuSan.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_NuSan.jpg new file mode 100644 index 000000000..017a54ba7 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_NuSan.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_aldroid.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_aldroid.jpg new file mode 100644 index 000000000..0775b4434 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_aldroid.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_anticore.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_anticore.jpg new file mode 100644 index 000000000..ee04371b7 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_anticore.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_exca.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_exca.jpg new file mode 100644 index 000000000..bf4e6e8a0 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_exca.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_gam0022.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_gam0022.jpg new file mode 100644 index 000000000..fad34f4c3 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_gam0022.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_gaz.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_gaz.jpg new file mode 100644 index 000000000..91416c54c Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_gaz.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_ivan_dianov.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_ivan_dianov.jpg new file mode 100644 index 000000000..2157f6c66 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_ivan_dianov.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_kostik.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_kostik.jpg new file mode 100644 index 000000000..d6836bc20 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_kostik.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_rimina.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_rimina.jpg new file mode 100644 index 000000000..3538f990d Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_rimina.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_sp4ghet.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_sp4ghet.jpg new file mode 100644 index 000000000..acc81dd5c Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_sp4ghet.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_superogue.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_superogue.jpg new file mode 100644 index 000000000..d4851dad9 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_superogue.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_totetmatt.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_totetmatt.jpg new file mode 100644 index 000000000..a1a6b91a5 Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_totetmatt.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_visy.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_visy.jpg new file mode 100644 index 000000000..dc88d2edf Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_visy.jpg differ diff --git a/media/2023_04_29_shader_jam_sessions/grabber_sessions_wbcbz7.jpg b/media/2023_04_29_shader_jam_sessions/grabber_sessions_wbcbz7.jpg new file mode 100644 index 000000000..1566c4eea Binary files /dev/null and b/media/2023_04_29_shader_jam_sessions/grabber_sessions_wbcbz7.jpg differ diff --git a/media/2023_04_29_shader_seminar_sessions/2023_sessions_0b5vr.png b/media/2023_04_29_shader_seminar_sessions/2023_sessions_0b5vr.png new file mode 100644 index 000000000..db05091ce Binary files /dev/null and b/media/2023_04_29_shader_seminar_sessions/2023_sessions_0b5vr.png differ diff --git a/media/2023_05_01_byte_jam_monday_night_bytes/Alia.png b/media/2023_05_01_byte_jam_monday_night_bytes/Alia.png new file mode 100644 index 000000000..3228e3a50 Binary files /dev/null and b/media/2023_05_01_byte_jam_monday_night_bytes/Alia.png differ diff --git a/media/2023_05_01_byte_jam_monday_night_bytes/Mantratronic.png b/media/2023_05_01_byte_jam_monday_night_bytes/Mantratronic.png new file mode 100644 index 000000000..e302e9ea7 Binary files /dev/null and b/media/2023_05_01_byte_jam_monday_night_bytes/Mantratronic.png differ diff --git a/media/2023_05_01_byte_jam_monday_night_bytes/ToBach.png b/media/2023_05_01_byte_jam_monday_night_bytes/ToBach.png new file mode 100644 index 000000000..11ed2ede2 Binary files /dev/null and b/media/2023_05_01_byte_jam_monday_night_bytes/ToBach.png differ diff --git a/media/2023_05_01_byte_jam_monday_night_bytes/jtruk.png b/media/2023_05_01_byte_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..3e6337537 Binary files /dev/null and b/media/2023_05_01_byte_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg new file mode 100644 index 000000000..8649f6b30 Binary files /dev/null and b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg differ diff --git a/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_Superogue.jpg b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_Superogue.jpg new file mode 100644 index 000000000..e8e99aa73 Binary files /dev/null and b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_Superogue.jpg differ diff --git a/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.jpg b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.jpg new file mode 100644 index 000000000..b5879563b Binary files /dev/null and b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.jpg differ diff --git a/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg new file mode 100644 index 000000000..c34da4218 Binary files /dev/null and b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg differ diff --git a/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg new file mode 100644 index 000000000..ffd8d2046 Binary files /dev/null and b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg differ diff --git a/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_kali.jpg b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_kali.jpg new file mode 100644 index 000000000..1df4582de Binary files /dev/null and b/media/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_kali.jpg differ diff --git a/media/2023_05_15_byte_jam_monday_night_bytes/alia.gif b/media/2023_05_15_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..0a90781c6 Binary files /dev/null and b/media/2023_05_15_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_05_15_byte_jam_monday_night_bytes/jtruk.png b/media/2023_05_15_byte_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..112a01d98 Binary files /dev/null and b/media/2023_05_15_byte_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2023_05_15_byte_jam_monday_night_bytes/mantratronic.gif b/media/2023_05_15_byte_jam_monday_night_bytes/mantratronic.gif new file mode 100644 index 000000000..5ad7cb3e7 Binary files /dev/null and b/media/2023_05_15_byte_jam_monday_night_bytes/mantratronic.gif differ diff --git a/media/2023_05_15_byte_jam_monday_night_bytes/nusan.png b/media/2023_05_15_byte_jam_monday_night_bytes/nusan.png new file mode 100644 index 000000000..c53a6318f Binary files /dev/null and b/media/2023_05_15_byte_jam_monday_night_bytes/nusan.png differ diff --git a/media/2023_05_29_byte_jam_monday_night_bytes/aldroid.png b/media/2023_05_29_byte_jam_monday_night_bytes/aldroid.png new file mode 100644 index 000000000..dbedf2d24 Binary files /dev/null and b/media/2023_05_29_byte_jam_monday_night_bytes/aldroid.png differ diff --git a/media/2023_05_29_byte_jam_monday_night_bytes/alia.png b/media/2023_05_29_byte_jam_monday_night_bytes/alia.png new file mode 100644 index 000000000..5f24e173f Binary files /dev/null and b/media/2023_05_29_byte_jam_monday_night_bytes/alia.png differ diff --git a/media/2023_05_29_byte_jam_monday_night_bytes/mantratronic.png b/media/2023_05_29_byte_jam_monday_night_bytes/mantratronic.png new file mode 100644 index 000000000..7cc87c32d Binary files /dev/null and b/media/2023_05_29_byte_jam_monday_night_bytes/mantratronic.png differ diff --git a/media/2023_05_29_byte_jam_monday_night_bytes/totetmatt.png b/media/2023_05_29_byte_jam_monday_night_bytes/totetmatt.png new file mode 100644 index 000000000..ac087937c Binary files /dev/null and b/media/2023_05_29_byte_jam_monday_night_bytes/totetmatt.png differ diff --git a/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg new file mode 100644 index 000000000..7699d89fc Binary files /dev/null and b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg differ diff --git a/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg new file mode 100644 index 000000000..355074fa4 Binary files /dev/null and b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg differ diff --git a/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_jtruk.jpg b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_jtruk.jpg new file mode 100644 index 000000000..4c91dde7b Binary files /dev/null and b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_jtruk.jpg differ diff --git a/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg new file mode 100644 index 000000000..d19037116 Binary files /dev/null and b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg differ diff --git a/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt_2.jpg b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt_2.jpg new file mode 100644 index 000000000..cd406cb72 Binary files /dev/null and b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt_2.jpg differ diff --git a/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_visy.jpg b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_visy.jpg new file mode 100644 index 000000000..a4a921f42 Binary files /dev/null and b/media/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_visy.jpg differ diff --git a/media/2023_06_12_byte_jam_monday_night_bytes/alia.png b/media/2023_06_12_byte_jam_monday_night_bytes/alia.png new file mode 100644 index 000000000..5112d855a Binary files /dev/null and b/media/2023_06_12_byte_jam_monday_night_bytes/alia.png differ diff --git a/media/2023_06_12_byte_jam_monday_night_bytes/gasman.png b/media/2023_06_12_byte_jam_monday_night_bytes/gasman.png new file mode 100644 index 000000000..eb54c9c6e Binary files /dev/null and b/media/2023_06_12_byte_jam_monday_night_bytes/gasman.png differ diff --git a/media/2023_06_12_byte_jam_monday_night_bytes/tobach.png b/media/2023_06_12_byte_jam_monday_night_bytes/tobach.png new file mode 100644 index 000000000..ef1c097e4 Binary files /dev/null and b/media/2023_06_12_byte_jam_monday_night_bytes/tobach.png differ diff --git a/media/2023_06_12_byte_jam_monday_night_bytes/visy.png b/media/2023_06_12_byte_jam_monday_night_bytes/visy.png new file mode 100644 index 000000000..b7ad9d438 Binary files /dev/null and b/media/2023_06_12_byte_jam_monday_night_bytes/visy.png differ diff --git a/media/2023_06_19_byte_jam_monday_night_bytes/alia.gif b/media/2023_06_19_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..aad42dbff Binary files /dev/null and b/media/2023_06_19_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_06_19_byte_jam_monday_night_bytes/gasman.gif b/media/2023_06_19_byte_jam_monday_night_bytes/gasman.gif new file mode 100644 index 000000000..57f80c62a Binary files /dev/null and b/media/2023_06_19_byte_jam_monday_night_bytes/gasman.gif differ diff --git a/media/2023_06_19_byte_jam_monday_night_bytes/tobach.gif b/media/2023_06_19_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..c3e051799 Binary files /dev/null and b/media/2023_06_19_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_06_23_shader_jam_nova/alianova.gif b/media/2023_06_23_shader_jam_nova/alianova.gif new file mode 100644 index 000000000..5c2f87f0a Binary files /dev/null and b/media/2023_06_23_shader_jam_nova/alianova.gif differ diff --git a/media/2023_06_23_shader_jam_nova/dave84nova.gif b/media/2023_06_23_shader_jam_nova/dave84nova.gif new file mode 100644 index 000000000..04e314049 Binary files /dev/null and b/media/2023_06_23_shader_jam_nova/dave84nova.gif differ diff --git a/media/2023_06_23_shader_jam_nova/gasmannova.png b/media/2023_06_23_shader_jam_nova/gasmannova.png new file mode 100644 index 000000000..5d1fada91 Binary files /dev/null and b/media/2023_06_23_shader_jam_nova/gasmannova.png differ diff --git a/media/2023_06_23_shader_jam_nova/jtruknova.gif b/media/2023_06_23_shader_jam_nova/jtruknova.gif new file mode 100644 index 000000000..118570118 Binary files /dev/null and b/media/2023_06_23_shader_jam_nova/jtruknova.gif differ diff --git a/media/2023_06_23_shader_jam_nova/mantratronicnova.gif b/media/2023_06_23_shader_jam_nova/mantratronicnova.gif new file mode 100644 index 000000000..09f1e7182 Binary files /dev/null and b/media/2023_06_23_shader_jam_nova/mantratronicnova.gif differ diff --git a/media/2023_06_23_shader_jam_nova/niconova.gif b/media/2023_06_23_shader_jam_nova/niconova.gif new file mode 100644 index 000000000..dd0c9ca9b Binary files /dev/null and b/media/2023_06_23_shader_jam_nova/niconova.gif differ diff --git a/media/2023_07_03_byte_jam_monday_night_bytes/alia.gif b/media/2023_07_03_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..73addb022 Binary files /dev/null and b/media/2023_07_03_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_07_03_byte_jam_monday_night_bytes/mantratronic.gif b/media/2023_07_03_byte_jam_monday_night_bytes/mantratronic.gif new file mode 100644 index 000000000..d2e7b89e5 Binary files /dev/null and b/media/2023_07_03_byte_jam_monday_night_bytes/mantratronic.gif differ diff --git a/media/2023_07_03_byte_jam_monday_night_bytes/nico.gif b/media/2023_07_03_byte_jam_monday_night_bytes/nico.gif new file mode 100644 index 000000000..a0d4f1b7f Binary files /dev/null and b/media/2023_07_03_byte_jam_monday_night_bytes/nico.gif differ diff --git a/media/2023_07_03_byte_jam_monday_night_bytes/tobach.gif b/media/2023_07_03_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..e92c1c381 Binary files /dev/null and b/media/2023_07_03_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_07_08_byte_battle_edison/jo-rel.png b/media/2023_07_08_byte_battle_edison/jo-rel.png new file mode 100644 index 000000000..b60653f0b Binary files /dev/null and b/media/2023_07_08_byte_battle_edison/jo-rel.png differ diff --git a/media/2023_07_08_byte_battle_edison/the_jokerz.png b/media/2023_07_08_byte_battle_edison/the_jokerz.png new file mode 100644 index 000000000..fc8019474 Binary files /dev/null and b/media/2023_07_08_byte_battle_edison/the_jokerz.png differ diff --git a/media/2023_07_24_byte_jam_prevoke/alia.gif b/media/2023_07_24_byte_jam_prevoke/alia.gif new file mode 100644 index 000000000..2749b8552 Binary files /dev/null and b/media/2023_07_24_byte_jam_prevoke/alia.gif differ diff --git a/media/2023_07_24_byte_jam_prevoke/superogue.gif b/media/2023_07_24_byte_jam_prevoke/superogue.gif new file mode 100644 index 000000000..3dc24af0d Binary files /dev/null and b/media/2023_07_24_byte_jam_prevoke/superogue.gif differ diff --git a/media/2023_07_24_byte_jam_prevoke/tobach.gif b/media/2023_07_24_byte_jam_prevoke/tobach.gif new file mode 100644 index 000000000..4a6bf6853 Binary files /dev/null and b/media/2023_07_24_byte_jam_prevoke/tobach.gif differ diff --git a/media/2023_07_28_byte_jam_evoke/LIVECODE_WALL.gif b/media/2023_07_28_byte_jam_evoke/LIVECODE_WALL.gif new file mode 100644 index 000000000..91dd5afb9 Binary files /dev/null and b/media/2023_07_28_byte_jam_evoke/LIVECODE_WALL.gif differ diff --git a/media/2023_07_28_byte_jam_evoke/nusan.gif b/media/2023_07_28_byte_jam_evoke/nusan.gif new file mode 100644 index 000000000..8c61e9c36 Binary files /dev/null and b/media/2023_07_28_byte_jam_evoke/nusan.gif differ diff --git a/media/2023_07_28_byte_jam_evoke/superogue_jam.gif b/media/2023_07_28_byte_jam_evoke/superogue_jam.gif new file mode 100644 index 000000000..d54572834 Binary files /dev/null and b/media/2023_07_28_byte_jam_evoke/superogue_jam.gif differ diff --git a/media/2023_07_28_byte_jam_evoke/superogue_jam_2.gif b/media/2023_07_28_byte_jam_evoke/superogue_jam_2.gif new file mode 100644 index 000000000..c8a49f71f Binary files /dev/null and b/media/2023_07_28_byte_jam_evoke/superogue_jam_2.gif differ diff --git a/media/2023_07_28_byte_jam_evoke/tobach-jam.gif b/media/2023_07_28_byte_jam_evoke/tobach-jam.gif new file mode 100644 index 000000000..c35b955a4 Binary files /dev/null and b/media/2023_07_28_byte_jam_evoke/tobach-jam.gif differ diff --git a/media/2023_07_31_byte_jam_monday_night_bytes/alia.gif b/media/2023_07_31_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..51a9dc78a Binary files /dev/null and b/media/2023_07_31_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_07_31_byte_jam_monday_night_bytes/gasman.gif b/media/2023_07_31_byte_jam_monday_night_bytes/gasman.gif new file mode 100644 index 000000000..17fda82e5 Binary files /dev/null and b/media/2023_07_31_byte_jam_monday_night_bytes/gasman.gif differ diff --git a/media/2023_07_31_byte_jam_monday_night_bytes/jmantruktronic.png b/media/2023_07_31_byte_jam_monday_night_bytes/jmantruktronic.png new file mode 100644 index 000000000..92013d3e6 Binary files /dev/null and b/media/2023_07_31_byte_jam_monday_night_bytes/jmantruktronic.png differ diff --git a/media/2023_07_31_byte_jam_monday_night_bytes/mrsynackster.gif b/media/2023_07_31_byte_jam_monday_night_bytes/mrsynackster.gif new file mode 100644 index 000000000..5ed2da36f Binary files /dev/null and b/media/2023_07_31_byte_jam_monday_night_bytes/mrsynackster.gif differ diff --git a/media/2023_07_31_byte_jam_monday_night_bytes/ps.gif b/media/2023_07_31_byte_jam_monday_night_bytes/ps.gif new file mode 100644 index 000000000..25ddf3bc0 Binary files /dev/null and b/media/2023_07_31_byte_jam_monday_night_bytes/ps.gif differ diff --git a/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_NuSan.jpg b/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_NuSan.jpg new file mode 100644 index 000000000..7ecc57141 Binary files /dev/null and b/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_NuSan.jpg differ diff --git a/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_aldroid.jpg b/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_aldroid.jpg new file mode 100644 index 000000000..2057cec28 Binary files /dev/null and b/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_aldroid.jpg differ diff --git a/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_alia.jpg b/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_alia.jpg new file mode 100644 index 000000000..e4f8ecf95 Binary files /dev/null and b/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_alia.jpg differ diff --git a/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_eimink.jpg b/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_eimink.jpg new file mode 100644 index 000000000..c6e6bd982 Binary files /dev/null and b/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_eimink.jpg differ diff --git a/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_totetmatt.jpg b/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_totetmatt.jpg new file mode 100644 index 000000000..5052cb8e0 Binary files /dev/null and b/media/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_totetmatt.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_ivandianov.jpg b/media/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_ivandianov.jpg new file mode 100644 index 000000000..982c41a87 Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_ivandianov.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_kostik.jpg b/media/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_kostik.jpg new file mode 100644 index 000000000..712b6e8eb Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_kostik.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_z0rg.jpg b/media/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_z0rg.jpg new file mode 100644 index 000000000..633a68ffc Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_z0rg.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_cosamentale.jpg b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_cosamentale.jpg new file mode 100644 index 000000000..82bfbea10 Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_cosamentale.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_ivandianov.jpg b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_ivandianov.jpg new file mode 100644 index 000000000..c46657aea Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_ivandianov.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_jin_x.jpg b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_jin_x.jpg new file mode 100644 index 000000000..e9ffbf907 Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_jin_x.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_kostik.jpg b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_kostik.jpg new file mode 100644 index 000000000..8bd6ea17a Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_kostik.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_musk.jpg b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_musk.jpg new file mode 100644 index 000000000..8a8893df0 Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_musk.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_provod.jpg b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_provod.jpg new file mode 100644 index 000000000..8f88780df Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_provod.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_totetmatt.jpg b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_totetmatt.jpg new file mode 100644 index 000000000..d94a9dced Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_totetmatt.jpg differ diff --git a/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_z0rg.jpg b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_z0rg.jpg new file mode 100644 index 000000000..47ab47305 Binary files /dev/null and b/media/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_z0rg.jpg differ diff --git a/media/2023_08_14_byte_jam_monday_night/alia.gif b/media/2023_08_14_byte_jam_monday_night/alia.gif new file mode 100644 index 000000000..5e82e93bb Binary files /dev/null and b/media/2023_08_14_byte_jam_monday_night/alia.gif differ diff --git a/media/2023_08_14_byte_jam_monday_night/gasman.gif b/media/2023_08_14_byte_jam_monday_night/gasman.gif new file mode 100644 index 000000000..0defe2da9 Binary files /dev/null and b/media/2023_08_14_byte_jam_monday_night/gasman.gif differ diff --git a/media/2023_08_14_byte_jam_monday_night/jtruk.png b/media/2023_08_14_byte_jam_monday_night/jtruk.png new file mode 100644 index 000000000..7ac917a92 Binary files /dev/null and b/media/2023_08_14_byte_jam_monday_night/jtruk.png differ diff --git a/media/2023_08_14_byte_jam_monday_night/mantratronic.gif b/media/2023_08_14_byte_jam_monday_night/mantratronic.gif new file mode 100644 index 000000000..d58ba346f Binary files /dev/null and b/media/2023_08_14_byte_jam_monday_night/mantratronic.gif differ diff --git a/media/2023_08_14_live_performance_ccc23/molive.png b/media/2023_08_14_live_performance_ccc23/molive.png new file mode 100644 index 000000000..8c35b098f Binary files /dev/null and b/media/2023_08_14_live_performance_ccc23/molive.png differ diff --git a/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg b/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg new file mode 100644 index 000000000..8bd822b54 Binary files /dev/null and b/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg differ diff --git a/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg b/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg new file mode 100644 index 000000000..fc14d6cdb Binary files /dev/null and b/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg differ diff --git a/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_superogue.jpg b/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_superogue.jpg new file mode 100644 index 000000000..bb5e96244 Binary files /dev/null and b/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_superogue.jpg differ diff --git a/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg b/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg new file mode 100644 index 000000000..ec6d0c17f Binary files /dev/null and b/media/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg differ diff --git a/media/2023_08_25_shader_showdown_xenium/shaderCitrus.jpg b/media/2023_08_25_shader_showdown_xenium/shaderCitrus.jpg new file mode 100644 index 000000000..eade8c4f9 Binary files /dev/null and b/media/2023_08_25_shader_showdown_xenium/shaderCitrus.jpg differ diff --git a/media/2023_08_25_shader_showdown_xenium/shaderKK_stage1.DX11.jpg b/media/2023_08_25_shader_showdown_xenium/shaderKK_stage1.DX11.jpg new file mode 100644 index 000000000..c6e6c1519 Binary files /dev/null and b/media/2023_08_25_shader_showdown_xenium/shaderKK_stage1.DX11.jpg differ diff --git a/media/2023_08_25_shader_showdown_xenium/shaderKK_stage2.DX11.jpg b/media/2023_08_25_shader_showdown_xenium/shaderKK_stage2.DX11.jpg new file mode 100644 index 000000000..9ed4f2e0d Binary files /dev/null and b/media/2023_08_25_shader_showdown_xenium/shaderKK_stage2.DX11.jpg differ diff --git a/media/2023_08_25_shader_showdown_xenium/shaderKK_stage3.DX11.jpg b/media/2023_08_25_shader_showdown_xenium/shaderKK_stage3.DX11.jpg new file mode 100644 index 000000000..a55978792 Binary files /dev/null and b/media/2023_08_25_shader_showdown_xenium/shaderKK_stage3.DX11.jpg differ diff --git a/media/2023_08_25_shader_showdown_xenium/shaderKlos.jpg b/media/2023_08_25_shader_showdown_xenium/shaderKlos.jpg new file mode 100644 index 000000000..765c4317d Binary files /dev/null and b/media/2023_08_25_shader_showdown_xenium/shaderKlos.jpg differ diff --git a/media/2023_08_25_shader_showdown_xenium/shaderMaq.jpg b/media/2023_08_25_shader_showdown_xenium/shaderMaq.jpg new file mode 100644 index 000000000..c3059c7ef Binary files /dev/null and b/media/2023_08_25_shader_showdown_xenium/shaderMaq.jpg differ diff --git a/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_alia.gif b/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_alia.gif new file mode 100644 index 000000000..5a1219f6a Binary files /dev/null and b/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_alia.gif differ diff --git a/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_jtruk.gif b/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_jtruk.gif new file mode 100644 index 000000000..89b8dc05a Binary files /dev/null and b/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_jtruk.gif differ diff --git a/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_tobach.gif b/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_tobach.gif new file mode 100644 index 000000000..d70cd3de5 Binary files /dev/null and b/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_tobach.gif differ diff --git a/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_totetmatt.gif b/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_totetmatt.gif new file mode 100644 index 000000000..8c4e529a5 Binary files /dev/null and b/media/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_totetmatt.gif differ diff --git a/media/2023_09_04_byte_jam_monday_night_bytes/aldroid.gif b/media/2023_09_04_byte_jam_monday_night_bytes/aldroid.gif new file mode 100644 index 000000000..c73ec1e89 Binary files /dev/null and b/media/2023_09_04_byte_jam_monday_night_bytes/aldroid.gif differ diff --git a/media/2023_09_04_byte_jam_monday_night_bytes/alia.gif b/media/2023_09_04_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..168a1d8d0 Binary files /dev/null and b/media/2023_09_04_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_09_04_byte_jam_monday_night_bytes/nico.gif b/media/2023_09_04_byte_jam_monday_night_bytes/nico.gif new file mode 100644 index 000000000..c28283e9b Binary files /dev/null and b/media/2023_09_04_byte_jam_monday_night_bytes/nico.gif differ diff --git a/media/2023_09_04_byte_jam_monday_night_bytes/suule.gif b/media/2023_09_04_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..70496976e Binary files /dev/null and b/media/2023_09_04_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2023_09_08_byte_jam_nordlicht/gasman.gif b/media/2023_09_08_byte_jam_nordlicht/gasman.gif new file mode 100644 index 000000000..2f7d03417 Binary files /dev/null and b/media/2023_09_08_byte_jam_nordlicht/gasman.gif differ diff --git a/media/2023_09_11_shader_jam_monday_night_bytes/170285812_18d69cca-52f2-480a-8113-7630706eafa9_thumbnail_250x250.jpg b/media/2023_09_11_shader_jam_monday_night_bytes/170285812_18d69cca-52f2-480a-8113-7630706eafa9_thumbnail_250x250.jpg new file mode 100644 index 000000000..6162478ae Binary files /dev/null and b/media/2023_09_11_shader_jam_monday_night_bytes/170285812_18d69cca-52f2-480a-8113-7630706eafa9_thumbnail_250x250.jpg differ diff --git a/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg b/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg new file mode 100644 index 000000000..275dd3cc4 Binary files /dev/null and b/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.jpg differ diff --git a/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg b/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg new file mode 100644 index 000000000..103e5c023 Binary files /dev/null and b/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg differ diff --git a/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg b/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg new file mode 100644 index 000000000..2335b8e58 Binary files /dev/null and b/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.jpg differ diff --git a/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_superogue.jpg b/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_superogue.jpg new file mode 100644 index 000000000..d49bd9342 Binary files /dev/null and b/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_superogue.jpg differ diff --git a/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg b/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg new file mode 100644 index 000000000..ee4b9beca Binary files /dev/null and b/media/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg differ diff --git a/media/2023_09_16_byte_jam_dutch_demoscene_unesco/aldroid.gif b/media/2023_09_16_byte_jam_dutch_demoscene_unesco/aldroid.gif new file mode 100644 index 000000000..9f19472ca Binary files /dev/null and b/media/2023_09_16_byte_jam_dutch_demoscene_unesco/aldroid.gif differ diff --git a/media/2023_09_16_byte_jam_dutch_demoscene_unesco/jtruk.png b/media/2023_09_16_byte_jam_dutch_demoscene_unesco/jtruk.png new file mode 100644 index 000000000..3b2bb51d6 Binary files /dev/null and b/media/2023_09_16_byte_jam_dutch_demoscene_unesco/jtruk.png differ diff --git a/media/2023_09_16_byte_jam_dutch_demoscene_unesco/mantratronic.png b/media/2023_09_16_byte_jam_dutch_demoscene_unesco/mantratronic.png new file mode 100644 index 000000000..ee4a9442e Binary files /dev/null and b/media/2023_09_16_byte_jam_dutch_demoscene_unesco/mantratronic.png differ diff --git a/media/2023_09_16_byte_jam_dutch_demoscene_unesco/suule.gif b/media/2023_09_16_byte_jam_dutch_demoscene_unesco/suule.gif new file mode 100644 index 000000000..5048f229c Binary files /dev/null and b/media/2023_09_16_byte_jam_dutch_demoscene_unesco/suule.gif differ diff --git a/media/2023_09_18_byte_jam_monday_night_bytes/aldroid.gif b/media/2023_09_18_byte_jam_monday_night_bytes/aldroid.gif new file mode 100644 index 000000000..aad21ff54 Binary files /dev/null and b/media/2023_09_18_byte_jam_monday_night_bytes/aldroid.gif differ diff --git a/media/2023_09_18_byte_jam_monday_night_bytes/nusan.gif b/media/2023_09_18_byte_jam_monday_night_bytes/nusan.gif new file mode 100644 index 000000000..064a752fa Binary files /dev/null and b/media/2023_09_18_byte_jam_monday_night_bytes/nusan.gif differ diff --git a/media/2023_09_18_byte_jam_monday_night_bytes/suule.gif b/media/2023_09_18_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..d92580cd7 Binary files /dev/null and b/media/2023_09_18_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2023_09_18_byte_jam_monday_night_bytes/tobach.gif b/media/2023_09_18_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..e8fde7759 Binary files /dev/null and b/media/2023_09_18_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_09_25_byte_jam_monday_night_bytes/lexbailey.gif b/media/2023_09_25_byte_jam_monday_night_bytes/lexbailey.gif new file mode 100644 index 000000000..ef88949a9 Binary files /dev/null and b/media/2023_09_25_byte_jam_monday_night_bytes/lexbailey.gif differ diff --git a/media/2023_09_25_byte_jam_monday_night_bytes/ompuco.gif b/media/2023_09_25_byte_jam_monday_night_bytes/ompuco.gif new file mode 100644 index 000000000..1a5b95f69 Binary files /dev/null and b/media/2023_09_25_byte_jam_monday_night_bytes/ompuco.gif differ diff --git a/media/2023_09_25_byte_jam_monday_night_bytes/suule.gif b/media/2023_09_25_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..ca9c03de3 Binary files /dev/null and b/media/2023_09_25_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2023_09_25_byte_jam_monday_night_bytes/vurpo.gif b/media/2023_09_25_byte_jam_monday_night_bytes/vurpo.gif new file mode 100644 index 000000000..4d8c0b77e Binary files /dev/null and b/media/2023_09_25_byte_jam_monday_night_bytes/vurpo.gif differ diff --git a/media/2023_09_30_shader_jam_piilanit/pumpuli.png b/media/2023_09_30_shader_jam_piilanit/pumpuli.png new file mode 100644 index 000000000..4c489ec9a Binary files /dev/null and b/media/2023_09_30_shader_jam_piilanit/pumpuli.png differ diff --git a/media/2023_10_02_shader_jam_monday_night_bytes/aldroid.png b/media/2023_10_02_shader_jam_monday_night_bytes/aldroid.png new file mode 100644 index 000000000..7829e878f Binary files /dev/null and b/media/2023_10_02_shader_jam_monday_night_bytes/aldroid.png differ diff --git a/media/2023_10_02_shader_jam_monday_night_bytes/alia.png b/media/2023_10_02_shader_jam_monday_night_bytes/alia.png new file mode 100644 index 000000000..b50887623 Binary files /dev/null and b/media/2023_10_02_shader_jam_monday_night_bytes/alia.png differ diff --git a/media/2023_10_09_byte_jam_monday_night_bytes/alia.gif b/media/2023_10_09_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..8ae044889 Binary files /dev/null and b/media/2023_10_09_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_10_09_byte_jam_monday_night_bytes/gasman.gif b/media/2023_10_09_byte_jam_monday_night_bytes/gasman.gif new file mode 100644 index 000000000..ec1aeda69 Binary files /dev/null and b/media/2023_10_09_byte_jam_monday_night_bytes/gasman.gif differ diff --git a/media/2023_10_09_byte_jam_monday_night_bytes/suule.gif b/media/2023_10_09_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..36039dcce Binary files /dev/null and b/media/2023_10_09_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2023_10_09_byte_jam_monday_night_bytes/tobach.PNG b/media/2023_10_09_byte_jam_monday_night_bytes/tobach.PNG new file mode 100644 index 000000000..9d3da465e Binary files /dev/null and b/media/2023_10_09_byte_jam_monday_night_bytes/tobach.PNG differ diff --git a/media/2023_10_16_byte_jam_monday_night_bytes/alia.gif b/media/2023_10_16_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..3c4d5754e Binary files /dev/null and b/media/2023_10_16_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_10_16_byte_jam_monday_night_bytes/jtruk.PNG b/media/2023_10_16_byte_jam_monday_night_bytes/jtruk.PNG new file mode 100644 index 000000000..419a92fdb Binary files /dev/null and b/media/2023_10_16_byte_jam_monday_night_bytes/jtruk.PNG differ diff --git a/media/2023_10_16_byte_jam_monday_night_bytes/nusan.PNG b/media/2023_10_16_byte_jam_monday_night_bytes/nusan.PNG new file mode 100644 index 000000000..a16e19a51 Binary files /dev/null and b/media/2023_10_16_byte_jam_monday_night_bytes/nusan.PNG differ diff --git a/media/2023_10_16_byte_jam_monday_night_bytes/suule.gif b/media/2023_10_16_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..7265fb070 Binary files /dev/null and b/media/2023_10_16_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2023_10_23_shader_jam_monday_night_bytes/aldroid.png b/media/2023_10_23_shader_jam_monday_night_bytes/aldroid.png new file mode 100644 index 000000000..8ec761575 Binary files /dev/null and b/media/2023_10_23_shader_jam_monday_night_bytes/aldroid.png differ diff --git a/media/2023_10_23_shader_jam_monday_night_bytes/alia.png b/media/2023_10_23_shader_jam_monday_night_bytes/alia.png new file mode 100644 index 000000000..1e797f23c Binary files /dev/null and b/media/2023_10_23_shader_jam_monday_night_bytes/alia.png differ diff --git a/media/2023_10_23_shader_jam_monday_night_bytes/alien.png b/media/2023_10_23_shader_jam_monday_night_bytes/alien.png new file mode 100644 index 000000000..88d016e3b Binary files /dev/null and b/media/2023_10_23_shader_jam_monday_night_bytes/alien.png differ diff --git a/media/2023_10_23_shader_jam_monday_night_bytes/jtruk.png b/media/2023_10_23_shader_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..eb1137bdf Binary files /dev/null and b/media/2023_10_23_shader_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2023_10_23_shader_jam_monday_night_bytes/juni.png b/media/2023_10_23_shader_jam_monday_night_bytes/juni.png new file mode 100644 index 000000000..d8f4c71c7 Binary files /dev/null and b/media/2023_10_23_shader_jam_monday_night_bytes/juni.png differ diff --git a/media/2023_10_30_byte_jam_monday_night_bytes/alia.gif b/media/2023_10_30_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..425e70595 Binary files /dev/null and b/media/2023_10_30_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_10_30_byte_jam_monday_night_bytes/lynn.gif b/media/2023_10_30_byte_jam_monday_night_bytes/lynn.gif new file mode 100644 index 000000000..005c19cf3 Binary files /dev/null and b/media/2023_10_30_byte_jam_monday_night_bytes/lynn.gif differ diff --git a/media/2023_10_30_byte_jam_monday_night_bytes/suule.gif b/media/2023_10_30_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..e4acc1793 Binary files /dev/null and b/media/2023_10_30_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2023_10_30_byte_jam_monday_night_bytes/truck.gif b/media/2023_10_30_byte_jam_monday_night_bytes/truck.gif new file mode 100644 index 000000000..715b1e8b4 Binary files /dev/null and b/media/2023_10_30_byte_jam_monday_night_bytes/truck.gif differ diff --git a/media/2023_11_13_byte_jam_monday_night_bytes/doctorsoft.gif b/media/2023_11_13_byte_jam_monday_night_bytes/doctorsoft.gif new file mode 100644 index 000000000..733dc7007 Binary files /dev/null and b/media/2023_11_13_byte_jam_monday_night_bytes/doctorsoft.gif differ diff --git a/media/2023_11_13_byte_jam_monday_night_bytes/evilpaul.gif b/media/2023_11_13_byte_jam_monday_night_bytes/evilpaul.gif new file mode 100644 index 000000000..780206e23 Binary files /dev/null and b/media/2023_11_13_byte_jam_monday_night_bytes/evilpaul.gif differ diff --git a/media/2023_11_13_byte_jam_monday_night_bytes/gasman.gif b/media/2023_11_13_byte_jam_monday_night_bytes/gasman.gif new file mode 100644 index 000000000..3e3ead8d0 Binary files /dev/null and b/media/2023_11_13_byte_jam_monday_night_bytes/gasman.gif differ diff --git a/media/2023_11_13_byte_jam_monday_night_bytes/jtruk.PNG b/media/2023_11_13_byte_jam_monday_night_bytes/jtruk.PNG new file mode 100644 index 000000000..9029bf8a8 Binary files /dev/null and b/media/2023_11_13_byte_jam_monday_night_bytes/jtruk.PNG differ diff --git a/media/2023_11_13_byte_jam_monday_night_bytes/lex.gif b/media/2023_11_13_byte_jam_monday_night_bytes/lex.gif new file mode 100644 index 000000000..bdc792dfd Binary files /dev/null and b/media/2023_11_13_byte_jam_monday_night_bytes/lex.gif differ diff --git a/media/2023_11_13_byte_jam_monday_night_bytes/lynn.gif b/media/2023_11_13_byte_jam_monday_night_bytes/lynn.gif new file mode 100644 index 000000000..de5efb287 Binary files /dev/null and b/media/2023_11_13_byte_jam_monday_night_bytes/lynn.gif differ diff --git a/media/2023_11_13_byte_jam_monday_night_bytes/mantratronic.gif b/media/2023_11_13_byte_jam_monday_night_bytes/mantratronic.gif new file mode 100644 index 000000000..82c002158 Binary files /dev/null and b/media/2023_11_13_byte_jam_monday_night_bytes/mantratronic.gif differ diff --git a/media/2023_11_13_byte_jam_monday_night_bytes/tobach.gif b/media/2023_11_13_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..2f2e465ad Binary files /dev/null and b/media/2023_11_13_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_11_13_byte_jam_monday_night_bytes/visy.gif b/media/2023_11_13_byte_jam_monday_night_bytes/visy.gif new file mode 100644 index 000000000..174973b2d Binary files /dev/null and b/media/2023_11_13_byte_jam_monday_night_bytes/visy.gif differ diff --git a/media/2023_11_20_shader_jam_monday_night_bytes/aldroid.png b/media/2023_11_20_shader_jam_monday_night_bytes/aldroid.png new file mode 100644 index 000000000..97ab5a580 Binary files /dev/null and b/media/2023_11_20_shader_jam_monday_night_bytes/aldroid.png differ diff --git a/media/2023_11_20_shader_jam_monday_night_bytes/alia.png b/media/2023_11_20_shader_jam_monday_night_bytes/alia.png new file mode 100644 index 000000000..7b0bdbade Binary files /dev/null and b/media/2023_11_20_shader_jam_monday_night_bytes/alia.png differ diff --git a/media/2023_11_20_shader_jam_monday_night_bytes/nusan.png b/media/2023_11_20_shader_jam_monday_night_bytes/nusan.png new file mode 100644 index 000000000..1cf58f06d Binary files /dev/null and b/media/2023_11_20_shader_jam_monday_night_bytes/nusan.png differ diff --git a/media/2023_11_20_shader_jam_monday_night_bytes/wrighter.png b/media/2023_11_20_shader_jam_monday_night_bytes/wrighter.png new file mode 100644 index 000000000..0b87bf79c Binary files /dev/null and b/media/2023_11_20_shader_jam_monday_night_bytes/wrighter.png differ diff --git a/media/2023_11_27_byte_jam_monday_night_bytes/mantratronic.png b/media/2023_11_27_byte_jam_monday_night_bytes/mantratronic.png new file mode 100644 index 000000000..fd87b20b9 Binary files /dev/null and b/media/2023_11_27_byte_jam_monday_night_bytes/mantratronic.png differ diff --git a/media/2023_11_27_byte_jam_monday_night_bytes/nusan.png b/media/2023_11_27_byte_jam_monday_night_bytes/nusan.png new file mode 100644 index 000000000..24af43803 Binary files /dev/null and b/media/2023_11_27_byte_jam_monday_night_bytes/nusan.png differ diff --git a/media/2023_11_27_byte_jam_monday_night_bytes/suule.gif b/media/2023_11_27_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..a8e88f6d7 Binary files /dev/null and b/media/2023_11_27_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2023_11_27_byte_jam_monday_night_bytes/tobach.gif b/media/2023_11_27_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..a8938a6d4 Binary files /dev/null and b/media/2023_11_27_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_0b5vr.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_0b5vr.jpg new file mode 100644 index 000000000..371950327 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_0b5vr.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Exca.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Exca.jpg new file mode 100644 index 000000000..c37295d42 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Exca.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Kamoshika.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Kamoshika.jpg new file mode 100644 index 000000000..03c0cebc9 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Kamoshika.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_NuSan.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_NuSan.jpg new file mode 100644 index 000000000..26ef77df9 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_NuSan.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_aldroid.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_aldroid.jpg new file mode 100644 index 000000000..1c87bc2f6 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_aldroid.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alia.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alia.jpg new file mode 100644 index 000000000..812d3ccaa Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alia.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alien.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alien.jpg new file mode 100644 index 000000000..29551c766 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alien.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_byt3_m3chanic.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_byt3_m3chanic.jpg new file mode 100644 index 000000000..40c811774 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_byt3_m3chanic.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_cosamentale.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_cosamentale.jpg new file mode 100644 index 000000000..a9e4cbd53 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_cosamentale.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_dok.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_dok.jpg new file mode 100644 index 000000000..1abe97208 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_dok.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_gam0022.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_gam0022.jpg new file mode 100644 index 000000000..dd325eae9 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_gam0022.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_ivan_dianov.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_ivan_dianov.jpg new file mode 100644 index 000000000..ddb0e0efe Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_ivan_dianov.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jb.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jb.jpg new file mode 100644 index 000000000..c785ea189 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jb.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jtruk.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jtruk.jpg new file mode 100644 index 000000000..37dbe280e Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jtruk.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_klos.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_klos.jpg new file mode 100644 index 000000000..34068704e Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_klos.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_kostik.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_kostik.jpg new file mode 100644 index 000000000..03eba1d18 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_kostik.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_mocoo.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_mocoo.jpg new file mode 100644 index 000000000..39e0f5f32 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_mocoo.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_provod.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_provod.jpg new file mode 100644 index 000000000..93ddddd27 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_provod.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_pumpuli.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_pumpuli.jpg new file mode 100644 index 000000000..f1a7aa905 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_pumpuli.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_sp4ghet.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_sp4ghet.jpg new file mode 100644 index 000000000..08fd051a0 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_sp4ghet.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_superogue.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_superogue.jpg new file mode 100644 index 000000000..d0e96478b Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_superogue.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_totetmatt.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_totetmatt.jpg new file mode 100644 index 000000000..ef6cd2392 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_totetmatt.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_visy.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_visy.jpg new file mode 100644 index 000000000..168a79800 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_visy.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_vjpyree.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_vjpyree.jpg new file mode 100644 index 000000000..9772ab11e Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_vjpyree.jpg differ diff --git a/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wbcbz7.jpg b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wbcbz7.jpg new file mode 100644 index 000000000..54459f083 Binary files /dev/null and b/media/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wbcbz7.jpg differ diff --git a/media/2023_12_03_byte_jam_inercia/drsoft.gif b/media/2023_12_03_byte_jam_inercia/drsoft.gif new file mode 100644 index 000000000..cd1a92285 Binary files /dev/null and b/media/2023_12_03_byte_jam_inercia/drsoft.gif differ diff --git a/media/2023_12_03_byte_jam_inercia/gasman.gif b/media/2023_12_03_byte_jam_inercia/gasman.gif new file mode 100644 index 000000000..40701b796 Binary files /dev/null and b/media/2023_12_03_byte_jam_inercia/gasman.gif differ diff --git a/media/2023_12_03_byte_jam_inercia/jtruk.png b/media/2023_12_03_byte_jam_inercia/jtruk.png new file mode 100644 index 000000000..95a5b497f Binary files /dev/null and b/media/2023_12_03_byte_jam_inercia/jtruk.png differ diff --git a/media/2023_12_03_byte_jam_inercia/mantratronic.gif b/media/2023_12_03_byte_jam_inercia/mantratronic.gif new file mode 100644 index 000000000..ee9e21a89 Binary files /dev/null and b/media/2023_12_03_byte_jam_inercia/mantratronic.gif differ diff --git a/media/2023_12_03_byte_jam_inercia/nusan.png b/media/2023_12_03_byte_jam_inercia/nusan.png new file mode 100644 index 000000000..f6a3384d5 Binary files /dev/null and b/media/2023_12_03_byte_jam_inercia/nusan.png differ diff --git a/media/2023_12_03_byte_jam_inercia/superogue.gif b/media/2023_12_03_byte_jam_inercia/superogue.gif new file mode 100644 index 000000000..f527b1eec Binary files /dev/null and b/media/2023_12_03_byte_jam_inercia/superogue.gif differ diff --git a/media/2023_12_03_byte_jam_inercia/suule.gif b/media/2023_12_03_byte_jam_inercia/suule.gif new file mode 100644 index 000000000..d623bb6b5 Binary files /dev/null and b/media/2023_12_03_byte_jam_inercia/suule.gif differ diff --git a/media/2023_12_03_byte_jam_inercia/tobach.gif b/media/2023_12_03_byte_jam_inercia/tobach.gif new file mode 100644 index 000000000..350367c44 Binary files /dev/null and b/media/2023_12_03_byte_jam_inercia/tobach.gif differ diff --git a/media/2023_12_11_byte_jam_monday_night_bytes/alia.gif b/media/2023_12_11_byte_jam_monday_night_bytes/alia.gif new file mode 100644 index 000000000..fdb832664 Binary files /dev/null and b/media/2023_12_11_byte_jam_monday_night_bytes/alia.gif differ diff --git a/media/2023_12_11_byte_jam_monday_night_bytes/gigabates.gif b/media/2023_12_11_byte_jam_monday_night_bytes/gigabates.gif new file mode 100644 index 000000000..5bb53e85b Binary files /dev/null and b/media/2023_12_11_byte_jam_monday_night_bytes/gigabates.gif differ diff --git a/media/2023_12_11_byte_jam_monday_night_bytes/pellicus.gif b/media/2023_12_11_byte_jam_monday_night_bytes/pellicus.gif new file mode 100644 index 000000000..eace62bbc Binary files /dev/null and b/media/2023_12_11_byte_jam_monday_night_bytes/pellicus.gif differ diff --git a/media/2023_12_11_byte_jam_monday_night_bytes/suule.gif b/media/2023_12_11_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..bc2970db0 Binary files /dev/null and b/media/2023_12_11_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2023_12_17_shader_jam_private_birthday/birthday-jam_riminapumpuli.jpg b/media/2023_12_17_shader_jam_private_birthday/birthday-jam_riminapumpuli.jpg new file mode 100644 index 000000000..0c79ae09f Binary files /dev/null and b/media/2023_12_17_shader_jam_private_birthday/birthday-jam_riminapumpuli.jpg differ diff --git a/media/2023_12_18_byte_jam_monday_night_bytes/aldroid.gif b/media/2023_12_18_byte_jam_monday_night_bytes/aldroid.gif new file mode 100644 index 000000000..d12f2851a Binary files /dev/null and b/media/2023_12_18_byte_jam_monday_night_bytes/aldroid.gif differ diff --git a/media/2023_12_18_byte_jam_monday_night_bytes/gasman.gif b/media/2023_12_18_byte_jam_monday_night_bytes/gasman.gif new file mode 100644 index 000000000..fb7f31ec8 Binary files /dev/null and b/media/2023_12_18_byte_jam_monday_night_bytes/gasman.gif differ diff --git a/media/2023_12_18_byte_jam_monday_night_bytes/jtruk.gif b/media/2023_12_18_byte_jam_monday_night_bytes/jtruk.gif new file mode 100644 index 000000000..67f565fa0 Binary files /dev/null and b/media/2023_12_18_byte_jam_monday_night_bytes/jtruk.gif differ diff --git a/media/2023_12_18_byte_jam_monday_night_bytes/mantratronic.gif b/media/2023_12_18_byte_jam_monday_night_bytes/mantratronic.gif new file mode 100644 index 000000000..b40c71312 Binary files /dev/null and b/media/2023_12_18_byte_jam_monday_night_bytes/mantratronic.gif differ diff --git a/media/2023_12_18_byte_jam_monday_night_bytes/nico.gif b/media/2023_12_18_byte_jam_monday_night_bytes/nico.gif new file mode 100644 index 000000000..a9281ec8d Binary files /dev/null and b/media/2023_12_18_byte_jam_monday_night_bytes/nico.gif differ diff --git a/media/2023_12_18_byte_jam_monday_night_bytes/suule.gif b/media/2023_12_18_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..bd515a99b Binary files /dev/null and b/media/2023_12_18_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2023_12_18_byte_jam_monday_night_bytes/tobach.gif b/media/2023_12_18_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..85aac8b37 Binary files /dev/null and b/media/2023_12_18_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2023_12_22_byte_jam_monday_night_bytes/gasman.gif b/media/2023_12_22_byte_jam_monday_night_bytes/gasman.gif new file mode 100644 index 000000000..cb371e6f8 Binary files /dev/null and b/media/2023_12_22_byte_jam_monday_night_bytes/gasman.gif differ diff --git a/media/2023_12_22_byte_jam_monday_night_bytes/jtruk.png b/media/2023_12_22_byte_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..9806bb95a Binary files /dev/null and b/media/2023_12_22_byte_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2023_12_22_byte_jam_monday_night_bytes/mantratronic.png b/media/2023_12_22_byte_jam_monday_night_bytes/mantratronic.png new file mode 100644 index 000000000..0cc180535 Binary files /dev/null and b/media/2023_12_22_byte_jam_monday_night_bytes/mantratronic.png differ diff --git a/media/2023_12_29_byte_jam_tillage/gasman.gif b/media/2023_12_29_byte_jam_tillage/gasman.gif new file mode 100644 index 000000000..29ee00cfd Binary files /dev/null and b/media/2023_12_29_byte_jam_tillage/gasman.gif differ diff --git a/media/2023_12_29_byte_jam_tillage/jtruk.gif b/media/2023_12_29_byte_jam_tillage/jtruk.gif new file mode 100644 index 000000000..89976c34a Binary files /dev/null and b/media/2023_12_29_byte_jam_tillage/jtruk.gif differ diff --git a/media/2023_12_29_byte_jam_tillage/mrsbeanbag.gif b/media/2023_12_29_byte_jam_tillage/mrsbeanbag.gif new file mode 100644 index 000000000..4619d777c Binary files /dev/null and b/media/2023_12_29_byte_jam_tillage/mrsbeanbag.gif differ diff --git a/media/2023_12_29_byte_jam_tillage/suule.gif b/media/2023_12_29_byte_jam_tillage/suule.gif new file mode 100644 index 000000000..f6c73c3cf Binary files /dev/null and b/media/2023_12_29_byte_jam_tillage/suule.gif differ diff --git a/media/2024_01_08_byte_jam_monday_night_bytes/aldroid.gif b/media/2024_01_08_byte_jam_monday_night_bytes/aldroid.gif new file mode 100644 index 000000000..7177e9430 Binary files /dev/null and b/media/2024_01_08_byte_jam_monday_night_bytes/aldroid.gif differ diff --git a/media/2024_01_08_byte_jam_monday_night_bytes/catnip.gif b/media/2024_01_08_byte_jam_monday_night_bytes/catnip.gif new file mode 100644 index 000000000..2a7587829 Binary files /dev/null and b/media/2024_01_08_byte_jam_monday_night_bytes/catnip.gif differ diff --git a/media/2024_01_08_byte_jam_monday_night_bytes/henearxn.gif b/media/2024_01_08_byte_jam_monday_night_bytes/henearxn.gif new file mode 100644 index 000000000..6b166e0e5 Binary files /dev/null and b/media/2024_01_08_byte_jam_monday_night_bytes/henearxn.gif differ diff --git a/media/2024_01_08_byte_jam_monday_night_bytes/jmantruktronic.png b/media/2024_01_08_byte_jam_monday_night_bytes/jmantruktronic.png new file mode 100644 index 000000000..3308453fb Binary files /dev/null and b/media/2024_01_08_byte_jam_monday_night_bytes/jmantruktronic.png differ diff --git a/media/2024_01_15_byte_jam_monday_night_bytes/aldroid.gif b/media/2024_01_15_byte_jam_monday_night_bytes/aldroid.gif new file mode 100644 index 000000000..68d72307c Binary files /dev/null and b/media/2024_01_15_byte_jam_monday_night_bytes/aldroid.gif differ diff --git a/media/2024_01_15_byte_jam_monday_night_bytes/henearxn.gif b/media/2024_01_15_byte_jam_monday_night_bytes/henearxn.gif new file mode 100644 index 000000000..cf0cec1bf Binary files /dev/null and b/media/2024_01_15_byte_jam_monday_night_bytes/henearxn.gif differ diff --git a/media/2024_01_15_byte_jam_monday_night_bytes/jtruk.gif b/media/2024_01_15_byte_jam_monday_night_bytes/jtruk.gif new file mode 100644 index 000000000..a93580fd7 Binary files /dev/null and b/media/2024_01_15_byte_jam_monday_night_bytes/jtruk.gif differ diff --git a/media/2024_01_15_byte_jam_monday_night_bytes/suule.gif b/media/2024_01_15_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..06400b446 Binary files /dev/null and b/media/2024_01_15_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2024_01_22_byte_jam_monday_night_bytes/dave84.gif b/media/2024_01_22_byte_jam_monday_night_bytes/dave84.gif new file mode 100644 index 000000000..d1c878974 Binary files /dev/null and b/media/2024_01_22_byte_jam_monday_night_bytes/dave84.gif differ diff --git a/media/2024_01_22_byte_jam_monday_night_bytes/doop.gif b/media/2024_01_22_byte_jam_monday_night_bytes/doop.gif new file mode 100644 index 000000000..53ad8a832 Binary files /dev/null and b/media/2024_01_22_byte_jam_monday_night_bytes/doop.gif differ diff --git a/media/2024_01_22_byte_jam_monday_night_bytes/suule.gif b/media/2024_01_22_byte_jam_monday_night_bytes/suule.gif new file mode 100644 index 000000000..90dd211ef Binary files /dev/null and b/media/2024_01_22_byte_jam_monday_night_bytes/suule.gif differ diff --git a/media/2024_01_22_byte_jam_monday_night_bytes/tobach.gif b/media/2024_01_22_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..9f02e17b2 Binary files /dev/null and b/media/2024_01_22_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2024_01_29_byte_jam_monday_night_bytes/aldroid.gif b/media/2024_01_29_byte_jam_monday_night_bytes/aldroid.gif new file mode 100644 index 000000000..0f91bba01 Binary files /dev/null and b/media/2024_01_29_byte_jam_monday_night_bytes/aldroid.gif differ diff --git a/media/2024_01_29_byte_jam_monday_night_bytes/jtruk.png b/media/2024_01_29_byte_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..f3af535f1 Binary files /dev/null and b/media/2024_01_29_byte_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2024_01_29_byte_jam_monday_night_bytes/nicobach.gif b/media/2024_01_29_byte_jam_monday_night_bytes/nicobach.gif new file mode 100644 index 000000000..44df9cb59 Binary files /dev/null and b/media/2024_01_29_byte_jam_monday_night_bytes/nicobach.gif differ diff --git a/media/2024_02_05_byte_jam_monday_night_bytes/aldroid.png b/media/2024_02_05_byte_jam_monday_night_bytes/aldroid.png new file mode 100644 index 000000000..e6f13fcbc Binary files /dev/null and b/media/2024_02_05_byte_jam_monday_night_bytes/aldroid.png differ diff --git a/media/2024_02_05_byte_jam_monday_night_bytes/catnip.gif b/media/2024_02_05_byte_jam_monday_night_bytes/catnip.gif new file mode 100644 index 000000000..d88fdfc64 Binary files /dev/null and b/media/2024_02_05_byte_jam_monday_night_bytes/catnip.gif differ diff --git a/media/2024_02_05_byte_jam_monday_night_bytes/jtruk.png b/media/2024_02_05_byte_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..e10787f4c Binary files /dev/null and b/media/2024_02_05_byte_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2024_02_05_byte_jam_monday_night_bytes/mantratronic.gif b/media/2024_02_05_byte_jam_monday_night_bytes/mantratronic.gif new file mode 100644 index 000000000..2a5272a0d Binary files /dev/null and b/media/2024_02_05_byte_jam_monday_night_bytes/mantratronic.gif differ diff --git a/media/2024_02_09_byte_jam_lovebyte/gasman.gif b/media/2024_02_09_byte_jam_lovebyte/gasman.gif new file mode 100644 index 000000000..d2d6349b3 Binary files /dev/null and b/media/2024_02_09_byte_jam_lovebyte/gasman.gif differ diff --git a/media/2024_02_09_byte_jam_lovebyte/jtruk.gif b/media/2024_02_09_byte_jam_lovebyte/jtruk.gif new file mode 100644 index 000000000..27039a15f Binary files /dev/null and b/media/2024_02_09_byte_jam_lovebyte/jtruk.gif differ diff --git a/media/2024_02_09_byte_jam_lovebyte/mantratronic.png b/media/2024_02_09_byte_jam_lovebyte/mantratronic.png new file mode 100644 index 000000000..700167a4b Binary files /dev/null and b/media/2024_02_09_byte_jam_lovebyte/mantratronic.png differ diff --git a/media/2024_02_09_byte_jam_lovebyte/mrsynackster.gif b/media/2024_02_09_byte_jam_lovebyte/mrsynackster.gif new file mode 100644 index 000000000..7f9e41d3d Binary files /dev/null and b/media/2024_02_09_byte_jam_lovebyte/mrsynackster.gif differ diff --git a/media/2024_02_09_byte_jam_lovebyte/tobach.gif b/media/2024_02_09_byte_jam_lovebyte/tobach.gif new file mode 100644 index 000000000..f6ef7b530 Binary files /dev/null and b/media/2024_02_09_byte_jam_lovebyte/tobach.gif differ diff --git a/media/2024_02_09_byte_jam_lovebyte/visy.gif b/media/2024_02_09_byte_jam_lovebyte/visy.gif new file mode 100644 index 000000000..fce9b292e Binary files /dev/null and b/media/2024_02_09_byte_jam_lovebyte/visy.gif differ diff --git a/media/2024_02_09_byte_jam_lovebyte/vurpo.gif b/media/2024_02_09_byte_jam_lovebyte/vurpo.gif new file mode 100644 index 000000000..7354c47a4 Binary files /dev/null and b/media/2024_02_09_byte_jam_lovebyte/vurpo.gif differ diff --git a/media/2024_02_11_zx_spectrum_jam_lovebyte/gasman.png b/media/2024_02_11_zx_spectrum_jam_lovebyte/gasman.png new file mode 100644 index 000000000..a4423b97d Binary files /dev/null and b/media/2024_02_11_zx_spectrum_jam_lovebyte/gasman.png differ diff --git a/media/2024_02_11_zx_spectrum_jam_lovebyte/superogue.png b/media/2024_02_11_zx_spectrum_jam_lovebyte/superogue.png new file mode 100644 index 000000000..632287ce0 Binary files /dev/null and b/media/2024_02_11_zx_spectrum_jam_lovebyte/superogue.png differ diff --git a/media/2024_02_12_byte_jam_monday_night_bytes/catnip.gif b/media/2024_02_12_byte_jam_monday_night_bytes/catnip.gif new file mode 100644 index 000000000..b3cd62cd5 Binary files /dev/null and b/media/2024_02_12_byte_jam_monday_night_bytes/catnip.gif differ diff --git a/media/2024_02_12_byte_jam_monday_night_bytes/henearxn.gif b/media/2024_02_12_byte_jam_monday_night_bytes/henearxn.gif new file mode 100644 index 000000000..eb31bb9ba Binary files /dev/null and b/media/2024_02_12_byte_jam_monday_night_bytes/henearxn.gif differ diff --git a/media/2024_02_12_byte_jam_monday_night_bytes/jtruk.png b/media/2024_02_12_byte_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..e9261ae2c Binary files /dev/null and b/media/2024_02_12_byte_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2024_02_12_byte_jam_monday_night_bytes/tobach.gif b/media/2024_02_12_byte_jam_monday_night_bytes/tobach.gif new file mode 100644 index 000000000..35753616c Binary files /dev/null and b/media/2024_02_12_byte_jam_monday_night_bytes/tobach.gif differ diff --git a/media/2024_02_19_byte_jam_monday_night_bytes/aldroid.png b/media/2024_02_19_byte_jam_monday_night_bytes/aldroid.png new file mode 100644 index 000000000..9c136fe4b Binary files /dev/null and b/media/2024_02_19_byte_jam_monday_night_bytes/aldroid.png differ diff --git a/media/2024_02_19_byte_jam_monday_night_bytes/henearxn.png b/media/2024_02_19_byte_jam_monday_night_bytes/henearxn.png new file mode 100644 index 000000000..1e4bdeaf9 Binary files /dev/null and b/media/2024_02_19_byte_jam_monday_night_bytes/henearxn.png differ diff --git a/media/2024_02_19_byte_jam_monday_night_bytes/tobach.png b/media/2024_02_19_byte_jam_monday_night_bytes/tobach.png new file mode 100644 index 000000000..c8bc94e3d Binary files /dev/null and b/media/2024_02_19_byte_jam_monday_night_bytes/tobach.png differ diff --git a/media/2024_02_19_byte_jam_monday_night_bytes/vurpo.png b/media/2024_02_19_byte_jam_monday_night_bytes/vurpo.png new file mode 100644 index 000000000..a5fcd0d48 Binary files /dev/null and b/media/2024_02_19_byte_jam_monday_night_bytes/vurpo.png differ diff --git a/media/2024_02_26_byte_jam_monday_night_bytes/aldroid.png b/media/2024_02_26_byte_jam_monday_night_bytes/aldroid.png new file mode 100644 index 000000000..d41fa3441 Binary files /dev/null and b/media/2024_02_26_byte_jam_monday_night_bytes/aldroid.png differ diff --git a/media/2024_02_26_byte_jam_monday_night_bytes/catnip.png b/media/2024_02_26_byte_jam_monday_night_bytes/catnip.png new file mode 100644 index 000000000..1c394c66a Binary files /dev/null and b/media/2024_02_26_byte_jam_monday_night_bytes/catnip.png differ diff --git a/media/2024_02_26_byte_jam_monday_night_bytes/doop.png b/media/2024_02_26_byte_jam_monday_night_bytes/doop.png new file mode 100644 index 000000000..a6a12cd10 Binary files /dev/null and b/media/2024_02_26_byte_jam_monday_night_bytes/doop.png differ diff --git a/media/2024_02_26_byte_jam_monday_night_bytes/lexbailey.png b/media/2024_02_26_byte_jam_monday_night_bytes/lexbailey.png new file mode 100644 index 000000000..907119b41 Binary files /dev/null and b/media/2024_02_26_byte_jam_monday_night_bytes/lexbailey.png differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Alef.jpg b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Alef.jpg new file mode 100644 index 000000000..4a3cb9be2 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Alef.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BFlorry.jpg b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BFlorry.jpg new file mode 100644 index 000000000..195ca5cb7 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BFlorry.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BadFelix.jpg b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BadFelix.jpg new file mode 100644 index 000000000..f358618d7 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BadFelix.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Eslo.jpg b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Eslo.jpg new file mode 100644 index 000000000..82a4874ee Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Eslo.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Stuk.jpg b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Stuk.jpg new file mode 100644 index 000000000..353856366 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Stuk.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_gemppu.jpg b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_gemppu.jpg new file mode 100644 index 000000000..eae1423d5 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_gemppu.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_papu.jpg b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_papu.jpg new file mode 100644 index 000000000..9907458d3 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_papu.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_pumpuli.jpg b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_pumpuli.jpg new file mode 100644 index 000000000..fbe4928a3 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_pumpuli.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Alef.jpg b/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Alef.jpg new file mode 100644 index 000000000..c3969c3f4 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Alef.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_BFlorry.jpg b/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_BFlorry.jpg new file mode 100644 index 000000000..fe235f6c3 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_BFlorry.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Eslo.jpg b/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Eslo.jpg new file mode 100644 index 000000000..cf20306b4 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Eslo.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_pumpuli.jpg b/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_pumpuli.jpg new file mode 100644 index 000000000..d8466a556 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_pumpuli.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r3_final/r3_Eslo.jpg b/media/2024_03_02_shader_showdown_instanssi/r3_final/r3_Eslo.jpg new file mode 100644 index 000000000..65dffe950 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r3_final/r3_Eslo.jpg differ diff --git a/media/2024_03_02_shader_showdown_instanssi/r3_final/r3_pumpuli.jpg b/media/2024_03_02_shader_showdown_instanssi/r3_final/r3_pumpuli.jpg new file mode 100644 index 000000000..d612feff6 Binary files /dev/null and b/media/2024_03_02_shader_showdown_instanssi/r3_final/r3_pumpuli.jpg differ diff --git a/media/2024_03_03_byte_jam_instanssi/aldroid.gif b/media/2024_03_03_byte_jam_instanssi/aldroid.gif new file mode 100644 index 000000000..983c49e64 Binary files /dev/null and b/media/2024_03_03_byte_jam_instanssi/aldroid.gif differ diff --git a/media/2024_03_03_byte_jam_instanssi/muffintrap.gif b/media/2024_03_03_byte_jam_instanssi/muffintrap.gif new file mode 100644 index 000000000..c465a0a14 Binary files /dev/null and b/media/2024_03_03_byte_jam_instanssi/muffintrap.gif differ diff --git a/media/2024_03_03_byte_jam_instanssi/pumpuli.gif b/media/2024_03_03_byte_jam_instanssi/pumpuli.gif new file mode 100644 index 000000000..971942d89 Binary files /dev/null and b/media/2024_03_03_byte_jam_instanssi/pumpuli.gif differ diff --git a/media/2024_03_03_byte_jam_instanssi/suule.gif b/media/2024_03_03_byte_jam_instanssi/suule.gif new file mode 100644 index 000000000..2d4554b29 Binary files /dev/null and b/media/2024_03_03_byte_jam_instanssi/suule.gif differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_BFlorry.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_BFlorry.jpg new file mode 100644 index 000000000..2832e1930 Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_BFlorry.jpg differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_MuffinHop.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_MuffinHop.jpg new file mode 100644 index 000000000..c27f8304e Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_MuffinHop.jpg differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.jpg new file mode 100644 index 000000000..a6b0c0062 Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.jpg differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg new file mode 100644 index 000000000..693631353 Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg new file mode 100644 index 000000000..94a38cda2 Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg new file mode 100644 index 000000000..1e1a8867a Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_papu.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_papu.jpg new file mode 100644 index 000000000..abf82503d Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_papu.jpg differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_pumpuli.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_pumpuli.jpg new file mode 100644 index 000000000..72a4b580b Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_pumpuli.jpg differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_saempl.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_saempl.jpg new file mode 100644 index 000000000..816785412 Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_saempl.jpg differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg new file mode 100644 index 000000000..528557953 Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg differ diff --git a/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.jpg b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.jpg new file mode 100644 index 000000000..0d38e4c14 Binary files /dev/null and b/media/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.jpg differ diff --git a/media/2024_03_11_byte_jam_monday_night_bytes/aldroid.gif b/media/2024_03_11_byte_jam_monday_night_bytes/aldroid.gif new file mode 100644 index 000000000..b71bdec09 Binary files /dev/null and b/media/2024_03_11_byte_jam_monday_night_bytes/aldroid.gif differ diff --git a/media/2024_03_11_byte_jam_monday_night_bytes/catnip.gif b/media/2024_03_11_byte_jam_monday_night_bytes/catnip.gif new file mode 100644 index 000000000..b913d1c96 Binary files /dev/null and b/media/2024_03_11_byte_jam_monday_night_bytes/catnip.gif differ diff --git a/media/2024_03_11_byte_jam_monday_night_bytes/pumpuli.gif b/media/2024_03_11_byte_jam_monday_night_bytes/pumpuli.gif new file mode 100644 index 000000000..57569c809 Binary files /dev/null and b/media/2024_03_11_byte_jam_monday_night_bytes/pumpuli.gif differ diff --git a/media/2024_03_11_byte_jam_monday_night_bytes/vurpo.gif b/media/2024_03_11_byte_jam_monday_night_bytes/vurpo.gif new file mode 100644 index 000000000..a296638dc Binary files /dev/null and b/media/2024_03_11_byte_jam_monday_night_bytes/vurpo.gif differ diff --git a/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_Catnip.jpg b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_Catnip.jpg new file mode 100644 index 000000000..b0d3edec8 Binary files /dev/null and b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_Catnip.jpg differ diff --git a/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_aldroid.jpg b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_aldroid.jpg new file mode 100644 index 000000000..d309c57b4 Binary files /dev/null and b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_aldroid.jpg differ diff --git a/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_nusan.jpg b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_nusan.jpg new file mode 100644 index 000000000..fac3d7c7f Binary files /dev/null and b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_nusan.jpg differ diff --git a/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_ompuco.jpg b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_ompuco.jpg new file mode 100644 index 000000000..59233254f Binary files /dev/null and b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_ompuco.jpg differ diff --git a/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_peregrine.jpg b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_peregrine.jpg new file mode 100644 index 000000000..f5b916330 Binary files /dev/null and b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_peregrine.jpg differ diff --git a/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_totetmatt.jpg b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_totetmatt.jpg new file mode 100644 index 000000000..bb92c2c53 Binary files /dev/null and b/media/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_totetmatt.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/cosamentale-qualif-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/cosamentale-qualif-rev2024.jpg new file mode 100644 index 000000000..16e83d09d Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/cosamentale-qualif-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/dok-qualif-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/dok-qualif-rev2024.jpg new file mode 100644 index 000000000..b925c2313 Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/dok-qualif-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/evvvvil-final-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/evvvvil-final-rev2024.jpg new file mode 100644 index 000000000..d8b1d6843 Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/evvvvil-final-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/evvvvil-qualif-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/evvvvil-qualif-rev2024.jpg new file mode 100644 index 000000000..3cf400430 Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/evvvvil-qualif-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/musk-qualif-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/musk-qualif-rev2024.jpg new file mode 100644 index 000000000..f5b12efa9 Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/musk-qualif-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/nusan-final-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/nusan-final-rev2024.jpg new file mode 100644 index 000000000..302a2b4d1 Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/nusan-final-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/nusan-qualif-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/nusan-qualif-rev2024.jpg new file mode 100644 index 000000000..36ac749f3 Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/nusan-qualif-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/ponk-final-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/ponk-final-rev2024.jpg new file mode 100644 index 000000000..f7ba7da2d Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/ponk-final-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/ponk-qualif-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/ponk-qualif-rev2024.jpg new file mode 100644 index 000000000..5d1fd81a0 Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/ponk-qualif-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/totetmatt-qualif-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/totetmatt-qualif-rev2024.jpg new file mode 100644 index 000000000..76659a774 Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/totetmatt-qualif-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/wrighter-qualif-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/wrighter-qualif-rev2024.jpg new file mode 100644 index 000000000..11dd6ef2a Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/wrighter-qualif-rev2024.jpg differ diff --git a/media/2024_03_29_shader_showdown_revision_2024/z0rg-qualif-rev2024.jpg b/media/2024_03_29_shader_showdown_revision_2024/z0rg-qualif-rev2024.jpg new file mode 100644 index 000000000..f4874de21 Binary files /dev/null and b/media/2024_03_29_shader_showdown_revision_2024/z0rg-qualif-rev2024.jpg differ diff --git a/media/2024_03_30_byte_jam_revision_2024/gasman.gif b/media/2024_03_30_byte_jam_revision_2024/gasman.gif new file mode 100644 index 000000000..13b5b601a Binary files /dev/null and b/media/2024_03_30_byte_jam_revision_2024/gasman.gif differ diff --git a/media/2024_03_30_byte_jam_revision_2024/jtruk.gif b/media/2024_03_30_byte_jam_revision_2024/jtruk.gif new file mode 100644 index 000000000..6c43aa2cd Binary files /dev/null and b/media/2024_03_30_byte_jam_revision_2024/jtruk.gif differ diff --git a/media/2024_03_30_byte_jam_revision_2024/nusan.gif b/media/2024_03_30_byte_jam_revision_2024/nusan.gif new file mode 100644 index 000000000..27e8b06cb Binary files /dev/null and b/media/2024_03_30_byte_jam_revision_2024/nusan.gif differ diff --git a/media/2024_03_30_byte_jam_revision_2024/tobach.gif b/media/2024_03_30_byte_jam_revision_2024/tobach.gif new file mode 100644 index 000000000..6f984fcca Binary files /dev/null and b/media/2024_03_30_byte_jam_revision_2024/tobach.gif differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_0b5vr.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_0b5vr.jpg new file mode 100644 index 000000000..e524284c5 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_0b5vr.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Exca.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Exca.jpg new file mode 100644 index 000000000..f781f0783 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Exca.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Kamoshika.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Kamoshika.jpg new file mode 100644 index 000000000..1153e2fcb Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Kamoshika.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_LechugaFeliz.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_LechugaFeliz.jpg new file mode 100644 index 000000000..945ad2d6d Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_LechugaFeliz.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Marex.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Marex.jpg new file mode 100644 index 000000000..746312884 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Marex.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_MrSynAckSter.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_MrSynAckSter.jpg new file mode 100644 index 000000000..5e05824bf Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_MrSynAckSter.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Zavie.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Zavie.jpg new file mode 100644 index 000000000..fa9012148 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Zavie.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_aldroidia.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_aldroidia.jpg new file mode 100644 index 000000000..64da6ecb6 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_aldroidia.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_alien.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_alien.jpg new file mode 100644 index 000000000..f6458f6a9 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_alien.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ciosai_tw.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ciosai_tw.jpg new file mode 100644 index 000000000..72703267a Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ciosai_tw.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cosamentale.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cosamentale.jpg new file mode 100644 index 000000000..ff4d06937 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cosamentale.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cpdt.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cpdt.jpg new file mode 100644 index 000000000..0f6c60718 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cpdt.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_diffty.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_diffty.jpg new file mode 100644 index 000000000..65fee08e8 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_diffty.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_dok.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_dok.jpg new file mode 100644 index 000000000..e1a557e3a Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_dok.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ebu.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ebu.jpg new file mode 100644 index 000000000..1c2bc7b2b Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ebu.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ferris.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ferris.jpg new file mode 100644 index 000000000..40f75e368 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ferris.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_gam0022.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_gam0022.jpg new file mode 100644 index 000000000..770488d8f Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_gam0022.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ivan_dianov.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ivan_dianov.jpg new file mode 100644 index 000000000..2508be84d Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ivan_dianov.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_kali.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_kali.jpg new file mode 100644 index 000000000..22e41f3dd Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_kali.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_klos.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_klos.jpg new file mode 100644 index 000000000..1dad3c639 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_klos.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_krafpy.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_krafpy.jpg new file mode 100644 index 000000000..e001f650e Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_krafpy.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_luckyxxl.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_luckyxxl.jpg new file mode 100644 index 000000000..65f45d9d9 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_luckyxxl.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_musk.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_musk.jpg new file mode 100644 index 000000000..f7d0a198c Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_musk.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_nusan.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_nusan.jpg new file mode 100644 index 000000000..7dafd2547 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_nusan.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_peregrine.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_peregrine.jpg new file mode 100644 index 000000000..aeb117146 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_peregrine.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_pumpuli.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_pumpuli.jpg new file mode 100644 index 000000000..343ab0434 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_pumpuli.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_rubix.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_rubix.jpg new file mode 100644 index 000000000..296ee4168 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_rubix.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_scrapper.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_scrapper.jpg new file mode 100644 index 000000000..b872c304f Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_scrapper.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_totetmatt.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_totetmatt.jpg new file mode 100644 index 000000000..cfa90cb0f Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_totetmatt.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wbcbz7.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wbcbz7.jpg new file mode 100644 index 000000000..d52daf19e Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wbcbz7.jpg differ diff --git a/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wrighter.jpg b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wrighter.jpg new file mode 100644 index 000000000..77e9cbb20 Binary files /dev/null and b/media/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wrighter.jpg differ diff --git a/media/2024_04_02_byte_jam_monday_night_bytes/jokerx.gif b/media/2024_04_02_byte_jam_monday_night_bytes/jokerx.gif new file mode 100644 index 000000000..0beea1070 Binary files /dev/null and b/media/2024_04_02_byte_jam_monday_night_bytes/jokerx.gif differ diff --git a/media/2024_04_02_byte_jam_monday_night_bytes/jtruk.gif b/media/2024_04_02_byte_jam_monday_night_bytes/jtruk.gif new file mode 100644 index 000000000..2a2bda9a7 Binary files /dev/null and b/media/2024_04_02_byte_jam_monday_night_bytes/jtruk.gif differ diff --git a/media/2024_04_02_byte_jam_monday_night_bytes/pumpuli.gif b/media/2024_04_02_byte_jam_monday_night_bytes/pumpuli.gif new file mode 100644 index 000000000..6f89ee1e1 Binary files /dev/null and b/media/2024_04_02_byte_jam_monday_night_bytes/pumpuli.gif differ diff --git a/media/2024_04_02_byte_jam_monday_night_bytes/suule.png b/media/2024_04_02_byte_jam_monday_night_bytes/suule.png new file mode 100644 index 000000000..7b626a940 Binary files /dev/null and b/media/2024_04_02_byte_jam_monday_night_bytes/suule.png differ diff --git a/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.jpg b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.jpg new file mode 100644 index 000000000..50d2e3fb0 Binary files /dev/null and b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.jpg differ diff --git a/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_aldroidia.jpg b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_aldroidia.jpg new file mode 100644 index 000000000..338f8c926 Binary files /dev/null and b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_aldroidia.jpg differ diff --git a/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_catnip.jpg b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_catnip.jpg new file mode 100644 index 000000000..d64ec5858 Binary files /dev/null and b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_catnip.jpg differ diff --git a/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_dok.jpg b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_dok.jpg new file mode 100644 index 000000000..e5bbed0f3 Binary files /dev/null and b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_dok.jpg differ diff --git a/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.jpg b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.jpg new file mode 100644 index 000000000..86e718362 Binary files /dev/null and b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.jpg differ diff --git a/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.jpg b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.jpg new file mode 100644 index 000000000..d6b9eab95 Binary files /dev/null and b/media/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.jpg differ diff --git a/media/2024_04_15_byte_jam_monday_night_bytes/muffintrap.png b/media/2024_04_15_byte_jam_monday_night_bytes/muffintrap.png new file mode 100644 index 000000000..4d13fce7e Binary files /dev/null and b/media/2024_04_15_byte_jam_monday_night_bytes/muffintrap.png differ diff --git a/media/2024_04_15_byte_jam_monday_night_bytes/pumpuli.png b/media/2024_04_15_byte_jam_monday_night_bytes/pumpuli.png new file mode 100644 index 000000000..c6aba2513 Binary files /dev/null and b/media/2024_04_15_byte_jam_monday_night_bytes/pumpuli.png differ diff --git a/media/2024_04_15_byte_jam_monday_night_bytes/vurpo.png b/media/2024_04_15_byte_jam_monday_night_bytes/vurpo.png new file mode 100644 index 000000000..68f64c748 Binary files /dev/null and b/media/2024_04_15_byte_jam_monday_night_bytes/vurpo.png differ diff --git a/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.jpg b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.jpg new file mode 100644 index 000000000..e373a9f85 Binary files /dev/null and b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.jpg differ diff --git a/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ToBach.jpg b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ToBach.jpg new file mode 100644 index 000000000..d5129b50d Binary files /dev/null and b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ToBach.jpg differ diff --git a/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_alkama.jpg b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_alkama.jpg new file mode 100644 index 000000000..bad7f1457 Binary files /dev/null and b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_alkama.jpg differ diff --git a/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_catnip.jpg b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_catnip.jpg new file mode 100644 index 000000000..adc41c1c3 Binary files /dev/null and b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_catnip.jpg differ diff --git a/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ciosai_tw.jpg b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ciosai_tw.jpg new file mode 100644 index 000000000..e92bac4a3 Binary files /dev/null and b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ciosai_tw.jpg differ diff --git a/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_dok.jpg b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_dok.jpg new file mode 100644 index 000000000..1f3466c6b Binary files /dev/null and b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_dok.jpg differ diff --git a/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_nusan.jpg b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_nusan.jpg new file mode 100644 index 000000000..b27962f57 Binary files /dev/null and b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_nusan.jpg differ diff --git a/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.jpg b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.jpg new file mode 100644 index 000000000..937894587 Binary files /dev/null and b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.jpg differ diff --git a/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.jpg b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.jpg new file mode 100644 index 000000000..49cc396ef Binary files /dev/null and b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.jpg differ diff --git a/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_wrighter.jpg b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_wrighter.jpg new file mode 100644 index 000000000..18b3b9e47 Binary files /dev/null and b/media/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_wrighter.jpg differ diff --git a/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/bfox.png b/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/bfox.png new file mode 100644 index 000000000..ee02a9010 Binary files /dev/null and b/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/bfox.png differ diff --git a/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/gogin.png b/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/gogin.png new file mode 100644 index 000000000..c4a3f5f0b Binary files /dev/null and b/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/gogin.png differ diff --git a/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nikhotmsk.png b/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nikhotmsk.png new file mode 100644 index 000000000..a1c802dfd Binary files /dev/null and b/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nikhotmsk.png differ diff --git a/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nyuk.png b/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nyuk.png new file mode 100644 index 000000000..1420010b4 Binary files /dev/null and b/media/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nyuk.png differ diff --git a/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/bfox.png b/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/bfox.png new file mode 100644 index 000000000..531819e59 Binary files /dev/null and b/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/bfox.png differ diff --git a/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/gogin.png b/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/gogin.png new file mode 100644 index 000000000..1e64e5516 Binary files /dev/null and b/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/gogin.png differ diff --git a/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nikhotmsk.png b/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nikhotmsk.png new file mode 100644 index 000000000..f49d96d6f Binary files /dev/null and b/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nikhotmsk.png differ diff --git a/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nyuk.png b/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nyuk.png new file mode 100644 index 000000000..be331d5cf Binary files /dev/null and b/media/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nyuk.png differ diff --git a/media/2024_05_04_zx_spectrum_jam_synergy/gasman.png b/media/2024_05_04_zx_spectrum_jam_synergy/gasman.png new file mode 100644 index 000000000..ead0550bc Binary files /dev/null and b/media/2024_05_04_zx_spectrum_jam_synergy/gasman.png differ diff --git a/media/2024_05_04_zx_spectrum_jam_synergy/lordcoxis.png b/media/2024_05_04_zx_spectrum_jam_synergy/lordcoxis.png new file mode 100644 index 000000000..e7a455cef Binary files /dev/null and b/media/2024_05_04_zx_spectrum_jam_synergy/lordcoxis.png differ diff --git a/media/2024_05_04_zx_spectrum_jam_synergy/mr_spiv.png b/media/2024_05_04_zx_spectrum_jam_synergy/mr_spiv.png new file mode 100644 index 000000000..7d037c6a2 Binary files /dev/null and b/media/2024_05_04_zx_spectrum_jam_synergy/mr_spiv.png differ diff --git a/media/2024_05_04_zx_spectrum_jam_synergy/rzxm.png b/media/2024_05_04_zx_spectrum_jam_synergy/rzxm.png new file mode 100644 index 000000000..428973fb5 Binary files /dev/null and b/media/2024_05_04_zx_spectrum_jam_synergy/rzxm.png differ diff --git a/media/2024_05_04_zx_spectrum_jam_synergy/sq.png b/media/2024_05_04_zx_spectrum_jam_synergy/sq.png new file mode 100644 index 000000000..e047abf2a Binary files /dev/null and b/media/2024_05_04_zx_spectrum_jam_synergy/sq.png differ diff --git a/media/2024_05_04_zx_spectrum_jam_synergy/superogue.png b/media/2024_05_04_zx_spectrum_jam_synergy/superogue.png new file mode 100644 index 000000000..31f651325 Binary files /dev/null and b/media/2024_05_04_zx_spectrum_jam_synergy/superogue.png differ diff --git a/media/2024_05_04_zx_spectrum_jam_synergy/tmk.png b/media/2024_05_04_zx_spectrum_jam_synergy/tmk.png new file mode 100644 index 000000000..9d8fb0ecb Binary files /dev/null and b/media/2024_05_04_zx_spectrum_jam_synergy/tmk.png differ diff --git a/media/2024_05_06_byte_jam_monday_night_bytes/alice.png b/media/2024_05_06_byte_jam_monday_night_bytes/alice.png new file mode 100644 index 000000000..f42e94c0d Binary files /dev/null and b/media/2024_05_06_byte_jam_monday_night_bytes/alice.png differ diff --git a/media/2024_05_06_byte_jam_monday_night_bytes/catnip.png b/media/2024_05_06_byte_jam_monday_night_bytes/catnip.png new file mode 100644 index 000000000..ddf415147 Binary files /dev/null and b/media/2024_05_06_byte_jam_monday_night_bytes/catnip.png differ diff --git a/media/2024_05_06_byte_jam_monday_night_bytes/gasman.png b/media/2024_05_06_byte_jam_monday_night_bytes/gasman.png new file mode 100644 index 000000000..c80eeeabc Binary files /dev/null and b/media/2024_05_06_byte_jam_monday_night_bytes/gasman.png differ diff --git a/media/2024_05_06_byte_jam_monday_night_bytes/jtruk.png b/media/2024_05_06_byte_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..19ba07008 Binary files /dev/null and b/media/2024_05_06_byte_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2024_05_06_byte_jam_monday_night_bytes/pumpuli.png b/media/2024_05_06_byte_jam_monday_night_bytes/pumpuli.png new file mode 100644 index 000000000..20caf1825 Binary files /dev/null and b/media/2024_05_06_byte_jam_monday_night_bytes/pumpuli.png differ diff --git a/media/2024_05_10_byte_jam_outline/aldroid.gif b/media/2024_05_10_byte_jam_outline/aldroid.gif new file mode 100644 index 000000000..f01128cd3 Binary files /dev/null and b/media/2024_05_10_byte_jam_outline/aldroid.gif differ diff --git a/media/2024_05_10_byte_jam_outline/alice.gif b/media/2024_05_10_byte_jam_outline/alice.gif new file mode 100644 index 000000000..fd8a1ff7e Binary files /dev/null and b/media/2024_05_10_byte_jam_outline/alice.gif differ diff --git a/media/2024_05_10_byte_jam_outline/gasman.gif b/media/2024_05_10_byte_jam_outline/gasman.gif new file mode 100644 index 000000000..b8603c755 Binary files /dev/null and b/media/2024_05_10_byte_jam_outline/gasman.gif differ diff --git a/media/2024_05_10_byte_jam_outline/jtruk.gif b/media/2024_05_10_byte_jam_outline/jtruk.gif new file mode 100644 index 000000000..a97f19a5f Binary files /dev/null and b/media/2024_05_10_byte_jam_outline/jtruk.gif differ diff --git a/media/2024_05_13_byte_jam_monday_night_bytes/catnip.png b/media/2024_05_13_byte_jam_monday_night_bytes/catnip.png new file mode 100644 index 000000000..5f880e2ea Binary files /dev/null and b/media/2024_05_13_byte_jam_monday_night_bytes/catnip.png differ diff --git a/media/2024_05_13_byte_jam_monday_night_bytes/jtruk.png b/media/2024_05_13_byte_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..790a7ffc6 Binary files /dev/null and b/media/2024_05_13_byte_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2024_05_13_byte_jam_monday_night_bytes/pumpuli.png b/media/2024_05_13_byte_jam_monday_night_bytes/pumpuli.png new file mode 100644 index 000000000..8fb0f51d9 Binary files /dev/null and b/media/2024_05_13_byte_jam_monday_night_bytes/pumpuli.png differ diff --git a/media/2024_05_13_byte_jam_monday_night_bytes/tobach.png b/media/2024_05_13_byte_jam_monday_night_bytes/tobach.png new file mode 100644 index 000000000..90404c4e9 Binary files /dev/null and b/media/2024_05_13_byte_jam_monday_night_bytes/tobach.png differ diff --git a/media/2024_05_13_byte_jam_monday_night_bytes/vurpo.png b/media/2024_05_13_byte_jam_monday_night_bytes/vurpo.png new file mode 100644 index 000000000..ca46bd824 Binary files /dev/null and b/media/2024_05_13_byte_jam_monday_night_bytes/vurpo.png differ diff --git a/media/2024_05_14_shader_jam_atparty/2024-06-15-provod-atparty-improv.jpg b/media/2024_05_14_shader_jam_atparty/2024-06-15-provod-atparty-improv.jpg new file mode 100644 index 000000000..893c033fa Binary files /dev/null and b/media/2024_05_14_shader_jam_atparty/2024-06-15-provod-atparty-improv.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_Koltes.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_Koltes.jpg new file mode 100644 index 000000000..60cae9883 Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_Koltes.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_Marex.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_Marex.jpg new file mode 100644 index 000000000..928b5d1aa Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_Marex.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_a1dr0idia.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_a1dr0idia.jpg new file mode 100644 index 000000000..1d87b5a3c Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_a1dr0idia.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroid.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroid.jpg new file mode 100644 index 000000000..72da1c70e Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroid.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroidia.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroidia.jpg new file mode 100644 index 000000000..e7569fb50 Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroidia.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_evvvvil.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_evvvvil.jpg new file mode 100644 index 000000000..cc29d6622 Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_evvvvil.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g012.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g012.jpg new file mode 100644 index 000000000..d95f9856d Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g012.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g33kou.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g33kou.jpg new file mode 100644 index 000000000..493a4a00f Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g33kou.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_lamogui.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_lamogui.jpg new file mode 100644 index 000000000..060241769 Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_lamogui.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_nusan.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_nusan.jpg new file mode 100644 index 000000000..a7b5dc493 Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_nusan.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_peregrine.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_peregrine.jpg new file mode 100644 index 000000000..af5be5b69 Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_peregrine.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt.jpg new file mode 100644 index 000000000..44d310383 Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_alkama.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_alkama.jpg new file mode 100644 index 000000000..54663cfc2 Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_alkama.jpg differ diff --git a/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_nfp.jpg b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_nfp.jpg new file mode 100644 index 000000000..ef3102fc5 Binary files /dev/null and b/media/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_nfp.jpg differ diff --git a/media/2024_07_19_shader_jam_bornhack/CIOSAI_tw.jpg b/media/2024_07_19_shader_jam_bornhack/CIOSAI_tw.jpg new file mode 100644 index 000000000..ca0029d5a Binary files /dev/null and b/media/2024_07_19_shader_jam_bornhack/CIOSAI_tw.jpg differ diff --git a/media/2024_07_19_shader_jam_bornhack/Mushbie.jpg b/media/2024_07_19_shader_jam_bornhack/Mushbie.jpg new file mode 100644 index 000000000..49c60400b Binary files /dev/null and b/media/2024_07_19_shader_jam_bornhack/Mushbie.jpg differ diff --git a/media/2024_07_19_shader_jam_bornhack/Okarin.jpg b/media/2024_07_19_shader_jam_bornhack/Okarin.jpg new file mode 100644 index 000000000..5ca5e6dcb Binary files /dev/null and b/media/2024_07_19_shader_jam_bornhack/Okarin.jpg differ diff --git a/media/2024_07_19_shader_jam_bornhack/immibis 1.jpg b/media/2024_07_19_shader_jam_bornhack/immibis 1.jpg new file mode 100644 index 000000000..ebc054d3c Binary files /dev/null and b/media/2024_07_19_shader_jam_bornhack/immibis 1.jpg differ diff --git a/media/2024_07_19_shader_jam_bornhack/immibis 2.jpg b/media/2024_07_19_shader_jam_bornhack/immibis 2.jpg new file mode 100644 index 000000000..d28965579 Binary files /dev/null and b/media/2024_07_19_shader_jam_bornhack/immibis 2.jpg differ diff --git a/media/2024_07_19_shader_jam_bornhack/immibis&anuril.jpg b/media/2024_07_19_shader_jam_bornhack/immibis&anuril.jpg new file mode 100644 index 000000000..edb384fd8 Binary files /dev/null and b/media/2024_07_19_shader_jam_bornhack/immibis&anuril.jpg differ diff --git a/media/2024_07_19_shader_jam_bornhack/iron.jpg b/media/2024_07_19_shader_jam_bornhack/iron.jpg new file mode 100644 index 000000000..76b6fa112 Binary files /dev/null and b/media/2024_07_19_shader_jam_bornhack/iron.jpg differ diff --git a/media/2024_07_19_shader_jam_bornhack/jn.jpg b/media/2024_07_19_shader_jam_bornhack/jn.jpg new file mode 100644 index 000000000..9becb7b56 Binary files /dev/null and b/media/2024_07_19_shader_jam_bornhack/jn.jpg differ diff --git a/media/2024_07_19_shader_jam_bornhack/null(1).jpg b/media/2024_07_19_shader_jam_bornhack/null(1).jpg new file mode 100644 index 000000000..9c8814442 Binary files /dev/null and b/media/2024_07_19_shader_jam_bornhack/null(1).jpg differ diff --git a/media/2024_07_19_shader_jam_bornhack/null.jpg b/media/2024_07_19_shader_jam_bornhack/null.jpg new file mode 100644 index 000000000..c5ba58bc6 Binary files /dev/null and b/media/2024_07_19_shader_jam_bornhack/null.jpg differ diff --git a/media/2024_07_22_shader_byte_jam_monday_night_bytes/enfys-fieldfxmonday-1.gif b/media/2024_07_22_shader_byte_jam_monday_night_bytes/enfys-fieldfxmonday-1.gif new file mode 100644 index 000000000..1e34f7b08 Binary files /dev/null and b/media/2024_07_22_shader_byte_jam_monday_night_bytes/enfys-fieldfxmonday-1.gif differ diff --git a/media/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Catnip.jpg b/media/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Catnip.jpg new file mode 100644 index 000000000..83e8498d7 Binary files /dev/null and b/media/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Catnip.jpg differ diff --git a/media/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Ciosai.jpg b/media/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Ciosai.jpg new file mode 100644 index 000000000..7d620a549 Binary files /dev/null and b/media/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Ciosai.jpg differ diff --git a/media/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_peregrine.jpg b/media/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_peregrine.jpg new file mode 100644 index 000000000..208bd390b Binary files /dev/null and b/media/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_peregrine.jpg differ diff --git a/media/2024_07_22_shader_byte_jam_monday_night_bytes/roeltje-bytejam1.gif b/media/2024_07_22_shader_byte_jam_monday_night_bytes/roeltje-bytejam1.gif new file mode 100644 index 000000000..51d480da4 Binary files /dev/null and b/media/2024_07_22_shader_byte_jam_monday_night_bytes/roeltje-bytejam1.gif differ diff --git a/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_LittleTheremin.jpg b/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_LittleTheremin.jpg new file mode 100644 index 000000000..66feec1b8 Binary files /dev/null and b/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_LittleTheremin.jpg differ diff --git a/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldro1d1a.jpg b/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldro1d1a.jpg new file mode 100644 index 000000000..8a44157ae Binary files /dev/null and b/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldro1d1a.jpg differ diff --git a/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg b/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg new file mode 100644 index 000000000..e0f5e76c1 Binary files /dev/null and b/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg differ diff --git a/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg b/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg new file mode 100644 index 000000000..fbec655e0 Binary files /dev/null and b/media/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/PotcFdk.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/PotcFdk.gif new file mode 100644 index 000000000..4d4761cb7 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/PotcFdk.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/Roeltje.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/Roeltje.gif new file mode 100644 index 000000000..0276d9860 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/Roeltje.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/aldroid.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/aldroid.gif new file mode 100644 index 000000000..03b604a0a Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/aldroid.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug1.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug1.gif new file mode 100644 index 000000000..510a74b27 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug1.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug2.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug2.gif new file mode 100644 index 000000000..e36d2e332 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug2.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug3.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug3.gif new file mode 100644 index 000000000..9a422c495 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug3.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug4.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug4.gif new file mode 100644 index 000000000..dd3c8c3b1 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/chordbug4.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/enfys1.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/enfys1.gif new file mode 100644 index 000000000..5e9dfd257 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/enfys1.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/enfys2.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/enfys2.gif new file mode 100644 index 000000000..343dc024e Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/enfys2.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bouncing bytewall.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bouncing bytewall.gif new file mode 100644 index 000000000..896767d04 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bouncing bytewall.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bytewall ad.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bytewall ad.gif new file mode 100644 index 000000000..2145c47c0 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bytewall ad.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - embossed-neon.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - embossed-neon.gif new file mode 100644 index 000000000..28d74919f Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - embossed-neon.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - grunge-spiral.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - grunge-spiral.gif new file mode 100644 index 000000000..51aa26816 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - grunge-spiral.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - mosaic-mirage.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - mosaic-mirage.gif new file mode 100644 index 000000000..215acf5f3 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/jtruk - mosaic-mirage.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/pumpuli.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/pumpuli.gif new file mode 100644 index 000000000..90815aa16 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/pumpuli.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/rubix.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/rubix.gif new file mode 100644 index 000000000..dfd0238a6 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/rubix.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/trifox1.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/trifox1.gif new file mode 100644 index 000000000..a4155a298 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/trifox1.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/trifox2.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/trifox2.gif new file mode 100644 index 000000000..703a5ee1d Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/trifox2.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/trifox3.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/trifox3.gif new file mode 100644 index 000000000..cf715754a Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/trifox3.gif differ diff --git a/media/2024_08_16_byte_jam_byte_wall_evoke/trifox4.gif b/media/2024_08_16_byte_jam_byte_wall_evoke/trifox4.gif new file mode 100644 index 000000000..9aa5bcb34 Binary files /dev/null and b/media/2024_08_16_byte_jam_byte_wall_evoke/trifox4.gif differ diff --git a/media/2024_08_26_byte_jam_monday_night_bytes/catnip.png b/media/2024_08_26_byte_jam_monday_night_bytes/catnip.png new file mode 100644 index 000000000..8c85f4d5c Binary files /dev/null and b/media/2024_08_26_byte_jam_monday_night_bytes/catnip.png differ diff --git a/media/2024_08_26_byte_jam_monday_night_bytes/enfys.png b/media/2024_08_26_byte_jam_monday_night_bytes/enfys.png new file mode 100644 index 000000000..d7ced5952 Binary files /dev/null and b/media/2024_08_26_byte_jam_monday_night_bytes/enfys.png differ diff --git a/media/2024_08_26_byte_jam_monday_night_bytes/g33kou.png b/media/2024_08_26_byte_jam_monday_night_bytes/g33kou.png new file mode 100644 index 000000000..b207fc564 Binary files /dev/null and b/media/2024_08_26_byte_jam_monday_night_bytes/g33kou.png differ diff --git a/media/2024_08_26_byte_jam_monday_night_bytes/henearxn.png b/media/2024_08_26_byte_jam_monday_night_bytes/henearxn.png new file mode 100644 index 000000000..c941d72cd Binary files /dev/null and b/media/2024_08_26_byte_jam_monday_night_bytes/henearxn.png differ diff --git a/media/2024_08_26_byte_jam_monday_night_bytes/jtruk.png b/media/2024_08_26_byte_jam_monday_night_bytes/jtruk.png new file mode 100644 index 000000000..de7ff78f0 Binary files /dev/null and b/media/2024_08_26_byte_jam_monday_night_bytes/jtruk.png differ diff --git a/media/2024_08_26_byte_jam_monday_night_bytes/lynn.png b/media/2024_08_26_byte_jam_monday_night_bytes/lynn.png new file mode 100644 index 000000000..c7e540cae Binary files /dev/null and b/media/2024_08_26_byte_jam_monday_night_bytes/lynn.png differ diff --git a/media/2024_08_26_byte_jam_monday_night_bytes/stormcaller.png b/media/2024_08_26_byte_jam_monday_night_bytes/stormcaller.png new file mode 100644 index 000000000..bdaafc55f Binary files /dev/null and b/media/2024_08_26_byte_jam_monday_night_bytes/stormcaller.png differ diff --git a/media/2024_08_26_byte_jam_monday_night_bytes/vurpo.png b/media/2024_08_26_byte_jam_monday_night_bytes/vurpo.png new file mode 100644 index 000000000..749d84234 Binary files /dev/null and b/media/2024_08_26_byte_jam_monday_night_bytes/vurpo.png differ diff --git a/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_CIOSAI_tw.jpg b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_CIOSAI_tw.jpg new file mode 100644 index 000000000..d6b601e3a Binary files /dev/null and b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_CIOSAI_tw.jpg differ diff --git a/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg new file mode 100644 index 000000000..b9640e9fe Binary files /dev/null and b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg differ diff --git a/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg new file mode 100644 index 000000000..107e29679 Binary files /dev/null and b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg differ diff --git a/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg new file mode 100644 index 000000000..97542bd1d Binary files /dev/null and b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg differ diff --git a/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_peregrine.jpg b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_peregrine.jpg new file mode 100644 index 000000000..bf2c23d01 Binary files /dev/null and b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_peregrine.jpg differ diff --git a/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg new file mode 100644 index 000000000..c8332f388 Binary files /dev/null and b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg differ diff --git a/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.jpg b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.jpg new file mode 100644 index 000000000..150a041a3 Binary files /dev/null and b/media/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.jpg differ diff --git a/media/2024_09_13_byte_jam_skrolli/aldroid.gif b/media/2024_09_13_byte_jam_skrolli/aldroid.gif new file mode 100644 index 000000000..6bd4620b7 Binary files /dev/null and b/media/2024_09_13_byte_jam_skrolli/aldroid.gif differ diff --git a/media/2024_09_13_byte_jam_skrolli/geekou.gif b/media/2024_09_13_byte_jam_skrolli/geekou.gif new file mode 100644 index 000000000..7dcab95a2 Binary files /dev/null and b/media/2024_09_13_byte_jam_skrolli/geekou.gif differ diff --git a/media/2024_09_13_byte_jam_skrolli/moziz.gif b/media/2024_09_13_byte_jam_skrolli/moziz.gif new file mode 100644 index 000000000..2afb3b457 Binary files /dev/null and b/media/2024_09_13_byte_jam_skrolli/moziz.gif differ diff --git a/media/2024_09_13_byte_jam_skrolli/muffintrap.gif b/media/2024_09_13_byte_jam_skrolli/muffintrap.gif new file mode 100644 index 000000000..5d0bf7e30 Binary files /dev/null and b/media/2024_09_13_byte_jam_skrolli/muffintrap.gif differ diff --git a/media/2024_09_13_byte_jam_skrolli/pumpuli.gif b/media/2024_09_13_byte_jam_skrolli/pumpuli.gif new file mode 100644 index 000000000..2c53ba507 Binary files /dev/null and b/media/2024_09_13_byte_jam_skrolli/pumpuli.gif differ diff --git a/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg b/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg new file mode 100644 index 000000000..9d259fc26 Binary files /dev/null and b/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.jpg differ diff --git a/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg b/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg new file mode 100644 index 000000000..2830c5f5c Binary files /dev/null and b/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.jpg differ diff --git a/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg b/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg new file mode 100644 index 000000000..aa564bc72 Binary files /dev/null and b/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.jpg differ diff --git a/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg b/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg new file mode 100644 index 000000000..067683bdf Binary files /dev/null and b/media/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.jpg differ diff --git a/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_0b5vr.jpg b/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_0b5vr.jpg new file mode 100644 index 000000000..b705e8ac5 Binary files /dev/null and b/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_0b5vr.jpg differ diff --git a/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_Kamoshika.jpg b/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_Kamoshika.jpg new file mode 100644 index 000000000..9f96cdba3 Binary files /dev/null and b/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_Kamoshika.jpg differ diff --git a/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_gam0022.jpg b/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_gam0022.jpg new file mode 100644 index 000000000..61dea59df Binary files /dev/null and b/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_gam0022.jpg differ diff --git a/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_renard.jpg b/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_renard.jpg new file mode 100644 index 000000000..7e4602d7e Binary files /dev/null and b/media/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_renard.jpg differ diff --git a/media/3d33zs.jpg b/media/3d33zs.jpg new file mode 100644 index 000000000..1061c83fe Binary files /dev/null and b/media/3d33zs.jpg differ diff --git a/media/3dGXRW.jpg b/media/3dGXRW.jpg new file mode 100644 index 000000000..53726c54f Binary files /dev/null and b/media/3dGXRW.jpg differ diff --git a/media/3dffz4.jpg b/media/3dffz4.jpg new file mode 100644 index 000000000..f0351ebf8 Binary files /dev/null and b/media/3dffz4.jpg differ diff --git a/media/3djfzG.jpg b/media/3djfzG.jpg new file mode 100644 index 000000000..6c00004f6 Binary files /dev/null and b/media/3djfzG.jpg differ diff --git a/media/3l2GDK.jpg b/media/3l2GDK.jpg new file mode 100644 index 000000000..bc8418ea8 Binary files /dev/null and b/media/3l2GDK.jpg differ diff --git a/media/3l3Bzl.jpg b/media/3l3Bzl.jpg new file mode 100644 index 000000000..828be518a Binary files /dev/null and b/media/3l3Bzl.jpg differ diff --git a/media/3lBcWy.jpg b/media/3lBcWy.jpg new file mode 100644 index 000000000..018ae69c9 Binary files /dev/null and b/media/3lBcWy.jpg differ diff --git a/media/3s2fzV.jpg b/media/3s2fzV.jpg new file mode 100644 index 000000000..b618cc2d3 Binary files /dev/null and b/media/3s2fzV.jpg differ diff --git a/media/3sGSR3.jpg b/media/3sGSR3.jpg new file mode 100644 index 000000000..0bca1d6ff Binary files /dev/null and b/media/3sGSR3.jpg differ diff --git a/media/3sdXWB.jpg b/media/3sdXWB.jpg new file mode 100644 index 000000000..9d5cbbb8d Binary files /dev/null and b/media/3sdXWB.jpg differ diff --git a/media/3stGRH.jpg b/media/3stGRH.jpg new file mode 100644 index 000000000..8796af940 Binary files /dev/null and b/media/3stGRH.jpg differ diff --git a/media/3syfRV.jpg b/media/3syfRV.jpg new file mode 100644 index 000000000..663829fbe Binary files /dev/null and b/media/3syfRV.jpg differ diff --git a/media/3syyzm.jpg b/media/3syyzm.jpg new file mode 100644 index 000000000..cffcc99f7 Binary files /dev/null and b/media/3syyzm.jpg differ diff --git a/media/3tBcWm.jpg b/media/3tBcWm.jpg new file mode 100644 index 000000000..0d8fff777 Binary files /dev/null and b/media/3tBcWm.jpg differ diff --git a/media/3tsBD7.jpg b/media/3tsBD7.jpg new file mode 100644 index 000000000..9ea781e29 Binary files /dev/null and b/media/3tsBD7.jpg differ diff --git a/media/3ttfRX.jpg b/media/3ttfRX.jpg new file mode 100644 index 000000000..7ef7cc590 Binary files /dev/null and b/media/3ttfRX.jpg differ diff --git a/media/4ct3RB.jpg b/media/4ct3RB.jpg new file mode 100644 index 000000000..8a91819fd Binary files /dev/null and b/media/4ct3RB.jpg differ diff --git a/media/4ctSWH.jpg b/media/4ctSWH.jpg new file mode 100644 index 000000000..1dad56ab4 Binary files /dev/null and b/media/4ctSWH.jpg differ diff --git a/media/4fdGzB.jpg b/media/4fdGzB.jpg new file mode 100644 index 000000000..9b5191e7c Binary files /dev/null and b/media/4fdGzB.jpg differ diff --git a/media/4ftSWH.jpg b/media/4ftSWH.jpg new file mode 100644 index 000000000..dea6ae194 Binary files /dev/null and b/media/4ftSWH.jpg differ diff --git a/media/4syyzK.jpg b/media/4syyzK.jpg new file mode 100644 index 000000000..1cd5af094 Binary files /dev/null and b/media/4syyzK.jpg differ diff --git a/media/7dBGRc.jpg b/media/7dBGRc.jpg new file mode 100644 index 000000000..d26e28b00 Binary files /dev/null and b/media/7dBGRc.jpg differ diff --git a/media/7l2GWV.jpg b/media/7l2GWV.jpg new file mode 100644 index 000000000..435ee91f9 Binary files /dev/null and b/media/7l2GWV.jpg differ diff --git a/media/7l2yDV.jpg b/media/7l2yDV.jpg new file mode 100644 index 000000000..a7f1090aa Binary files /dev/null and b/media/7l2yDV.jpg differ diff --git a/media/7l3SRB.jpg b/media/7l3SRB.jpg new file mode 100644 index 000000000..15bbe7558 Binary files /dev/null and b/media/7l3SRB.jpg differ diff --git a/media/7ldyRs.jpg b/media/7ldyRs.jpg new file mode 100644 index 000000000..e9f75a856 Binary files /dev/null and b/media/7ldyRs.jpg differ diff --git a/media/7lj3DV.jpg b/media/7lj3DV.jpg new file mode 100644 index 000000000..e5c32a0df Binary files /dev/null and b/media/7lj3DV.jpg differ diff --git a/media/7lj3W3.jpg b/media/7lj3W3.jpg new file mode 100644 index 000000000..b2728d112 Binary files /dev/null and b/media/7lj3W3.jpg differ diff --git a/media/7ljcWV.jpg b/media/7ljcWV.jpg new file mode 100644 index 000000000..98c1021a5 Binary files /dev/null and b/media/7ljcWV.jpg differ diff --git a/media/7ll3R4.jpg b/media/7ll3R4.jpg new file mode 100644 index 000000000..fc22289c4 Binary files /dev/null and b/media/7ll3R4.jpg differ diff --git a/media/7lt3zn.jpg b/media/7lt3zn.jpg new file mode 100644 index 000000000..916c1b5c2 Binary files /dev/null and b/media/7lt3zn.jpg differ diff --git a/media/7s23DD.jpg b/media/7s23DD.jpg new file mode 100644 index 000000000..7a70473e5 Binary files /dev/null and b/media/7s23DD.jpg differ diff --git a/media/7sS3WD.jpg b/media/7sS3WD.jpg new file mode 100644 index 000000000..2c1c9062d Binary files /dev/null and b/media/7sS3WD.jpg differ diff --git a/media/7sc3zj.jpg b/media/7sc3zj.jpg new file mode 100644 index 000000000..3c6e90ee5 Binary files /dev/null and b/media/7sc3zj.jpg differ diff --git a/media/7t23DK.jpg b/media/7t23DK.jpg new file mode 100644 index 000000000..892ce9962 Binary files /dev/null and b/media/7t23DK.jpg differ diff --git a/media/7tcXzS.jpg b/media/7tcXzS.jpg new file mode 100644 index 000000000..9f10a68f3 Binary files /dev/null and b/media/7tcXzS.jpg differ diff --git a/media/7td3zn.jpg b/media/7td3zn.jpg new file mode 100644 index 000000000..0c5a428cb Binary files /dev/null and b/media/7td3zn.jpg differ diff --git a/media/7tf3Rr.jpg b/media/7tf3Rr.jpg new file mode 100644 index 000000000..9ca2bf19c Binary files /dev/null and b/media/7tf3Rr.jpg differ diff --git a/media/7tjSWt.jpg b/media/7tjSWt.jpg new file mode 100644 index 000000000..d24553489 Binary files /dev/null and b/media/7tjSWt.jpg differ diff --git a/media/7ttGRr.jpg b/media/7ttGRr.jpg new file mode 100644 index 000000000..2fcf49cc4 Binary files /dev/null and b/media/7ttGRr.jpg differ diff --git a/media/Dd2GWD.jpg b/media/Dd2GWD.jpg new file mode 100644 index 000000000..f309a7246 Binary files /dev/null and b/media/Dd2GWD.jpg differ diff --git a/media/DdGXW1.jpg b/media/DdGXW1.jpg new file mode 100644 index 000000000..9e511258e Binary files /dev/null and b/media/DdGXW1.jpg differ diff --git a/media/DdKXWh.jpg b/media/DdKXWh.jpg new file mode 100644 index 000000000..0e91538fc Binary files /dev/null and b/media/DdKXWh.jpg differ diff --git a/media/DdSGRG.jpg b/media/DdSGRG.jpg new file mode 100644 index 000000000..dbd5f29a9 Binary files /dev/null and b/media/DdSGRG.jpg differ diff --git a/media/DldBzl.jpg b/media/DldBzl.jpg new file mode 100644 index 000000000..8237d6ba3 Binary files /dev/null and b/media/DldBzl.jpg differ diff --git a/media/DldfRl.jpg b/media/DldfRl.jpg new file mode 100644 index 000000000..f21281b5d Binary files /dev/null and b/media/DldfRl.jpg differ diff --git a/media/DldfRs.jpg b/media/DldfRs.jpg new file mode 100644 index 000000000..6f25abbd6 Binary files /dev/null and b/media/DldfRs.jpg differ diff --git a/media/Dlt3z2.jpg b/media/Dlt3z2.jpg new file mode 100644 index 000000000..be43dde86 Binary files /dev/null and b/media/Dlt3z2.jpg differ diff --git a/media/DsGXW1.jpg b/media/DsGXW1.jpg new file mode 100644 index 000000000..6a7b68afb Binary files /dev/null and b/media/DsGXW1.jpg differ diff --git a/media/DsVSRK.jpg b/media/DsVSRK.jpg new file mode 100644 index 000000000..1f4f61720 Binary files /dev/null and b/media/DsVSRK.jpg differ diff --git a/media/DsjGWD.jpg b/media/DsjGWD.jpg new file mode 100644 index 000000000..d64474ad4 Binary files /dev/null and b/media/DsjGWD.jpg differ diff --git a/media/Dtd3z2.jpg b/media/Dtd3z2.jpg new file mode 100644 index 000000000..1245c7e35 Binary files /dev/null and b/media/Dtd3z2.jpg differ diff --git a/media/DtjcRd.jpg b/media/DtjcRd.jpg new file mode 100644 index 000000000..9155464af Binary files /dev/null and b/media/DtjcRd.jpg differ diff --git a/media/M32cRc.jpg b/media/M32cRc.jpg new file mode 100644 index 000000000..0ebf510b6 Binary files /dev/null and b/media/M32cRc.jpg differ diff --git a/media/MdScRy.jpg b/media/MdScRy.jpg new file mode 100644 index 000000000..2ac3e113a Binary files /dev/null and b/media/MdScRy.jpg differ diff --git a/media/MdcBzf.jpg b/media/MdcBzf.jpg new file mode 100644 index 000000000..3e47ca972 Binary files /dev/null and b/media/MdcBzf.jpg differ diff --git a/media/Mdyfzc.jpg b/media/Mdyfzc.jpg new file mode 100644 index 000000000..a9f617842 Binary files /dev/null and b/media/Mdyfzc.jpg differ diff --git a/media/MfcXDH.jpg b/media/MfcXDH.jpg new file mode 100644 index 000000000..0d44e3dc0 Binary files /dev/null and b/media/MfcXDH.jpg differ diff --git a/media/Mfjfzc.jpg b/media/Mfjfzc.jpg new file mode 100644 index 000000000..6bbc6cbf7 Binary files /dev/null and b/media/Mfjfzc.jpg differ diff --git a/media/MlVfWG.jpg b/media/MlVfWG.jpg new file mode 100644 index 000000000..ccb7d6145 Binary files /dev/null and b/media/MlVfWG.jpg differ diff --git a/media/MscBRs.jpg b/media/MscBRs.jpg new file mode 100644 index 000000000..07bc99b8e Binary files /dev/null and b/media/MscBRs.jpg differ diff --git a/media/MscBzs.jpg b/media/MscBzs.jpg new file mode 100644 index 000000000..b9481cdfe Binary files /dev/null and b/media/MscBzs.jpg differ diff --git a/media/Ndj3Wm.jpg b/media/Ndj3Wm.jpg new file mode 100644 index 000000000..1f9622af0 Binary files /dev/null and b/media/Ndj3Wm.jpg differ diff --git a/media/NdjGDm.jpg b/media/NdjGDm.jpg new file mode 100644 index 000000000..aafa59289 Binary files /dev/null and b/media/NdjGDm.jpg differ diff --git a/media/Nl23WV.jpg b/media/Nl23WV.jpg new file mode 100644 index 000000000..387e323ff Binary files /dev/null and b/media/Nl23WV.jpg differ diff --git a/media/Nl2XDd.jpg b/media/Nl2XDd.jpg new file mode 100644 index 000000000..0f52907a6 Binary files /dev/null and b/media/Nl2XDd.jpg differ diff --git a/media/Nl2yzt.jpg b/media/Nl2yzt.jpg new file mode 100644 index 000000000..660dbd0ab Binary files /dev/null and b/media/Nl2yzt.jpg differ diff --git a/media/Nl3SRB.jpg b/media/Nl3SRB.jpg new file mode 100644 index 000000000..3e0a669c4 Binary files /dev/null and b/media/Nl3SRB.jpg differ diff --git a/media/Nl3XRB.jpg b/media/Nl3XRB.jpg new file mode 100644 index 000000000..e319fc4e8 Binary files /dev/null and b/media/Nl3XRB.jpg differ diff --git a/media/Nl3XzB.jpg b/media/Nl3XzB.jpg new file mode 100644 index 000000000..90795e9d3 Binary files /dev/null and b/media/Nl3XzB.jpg differ diff --git a/media/NlBcRd.jpg b/media/NlBcRd.jpg new file mode 100644 index 000000000..ca7cb5214 Binary files /dev/null and b/media/NlBcRd.jpg differ diff --git a/media/NlByzt.jpg b/media/NlByzt.jpg new file mode 100644 index 000000000..b7d51dda4 Binary files /dev/null and b/media/NlByzt.jpg differ diff --git a/media/NlK3Rc.jpg b/media/NlK3Rc.jpg new file mode 100644 index 000000000..a81db1f35 Binary files /dev/null and b/media/NlK3Rc.jpg differ diff --git a/media/NlSyWt.jpg b/media/NlSyWt.jpg new file mode 100644 index 000000000..731628539 Binary files /dev/null and b/media/NlSyWt.jpg differ diff --git a/media/NlXGDH.jpg b/media/NlXGDH.jpg new file mode 100644 index 000000000..865b9ab5b Binary files /dev/null and b/media/NlXGDH.jpg differ diff --git a/media/Nlj3DK.jpg b/media/Nlj3DK.jpg new file mode 100644 index 000000000..c20346dc0 Binary files /dev/null and b/media/Nlj3DK.jpg differ diff --git a/media/Nlj3WV.jpg b/media/Nlj3WV.jpg new file mode 100644 index 000000000..016dcd4bb Binary files /dev/null and b/media/Nlj3WV.jpg differ diff --git a/media/NljGzV.jpg b/media/NljGzV.jpg new file mode 100644 index 000000000..54edfb564 Binary files /dev/null and b/media/NljGzV.jpg differ diff --git a/media/NljXzh.jpg b/media/NljXzh.jpg new file mode 100644 index 000000000..677d68d57 Binary files /dev/null and b/media/NljXzh.jpg differ diff --git a/media/NsSXWd.jpg b/media/NsSXWd.jpg new file mode 100644 index 000000000..1faf0c0a5 Binary files /dev/null and b/media/NsSXWd.jpg differ diff --git a/media/NsfXRf.jpg b/media/NsfXRf.jpg new file mode 100644 index 000000000..f3b207a1c Binary files /dev/null and b/media/NsfXRf.jpg differ diff --git a/media/NsjSzh.jpg b/media/NsjSzh.jpg new file mode 100644 index 000000000..6c4b24667 Binary files /dev/null and b/media/NsjSzh.jpg differ diff --git a/media/Nt2GWV.jpg b/media/Nt2GWV.jpg new file mode 100644 index 000000000..73589a7f9 Binary files /dev/null and b/media/Nt2GWV.jpg differ diff --git a/media/Nt2XDd.jpg b/media/Nt2XDd.jpg new file mode 100644 index 000000000..04577a273 Binary files /dev/null and b/media/Nt2XDd.jpg differ diff --git a/media/Nt33RN.jpg b/media/Nt33RN.jpg new file mode 100644 index 000000000..bc1b4e87c Binary files /dev/null and b/media/Nt33RN.jpg differ diff --git a/media/Ntj3WV.jpg b/media/Ntj3WV.jpg new file mode 100644 index 000000000..f5c3bf1b7 Binary files /dev/null and b/media/Ntj3WV.jpg differ diff --git a/media/NtjXzh.jpg b/media/NtjXzh.jpg new file mode 100644 index 000000000..8a9431053 Binary files /dev/null and b/media/NtjXzh.jpg differ diff --git a/media/Ntjczd.jpg b/media/Ntjczd.jpg new file mode 100644 index 000000000..3a45fd31d Binary files /dev/null and b/media/Ntjczd.jpg differ diff --git a/media/WdKBWD.jpg b/media/WdKBWD.jpg new file mode 100644 index 000000000..50ce8ee05 Binary files /dev/null and b/media/WdKBWD.jpg differ diff --git a/media/WdVBWD.jpg b/media/WdVBWD.jpg new file mode 100644 index 000000000..aefa1f9bd Binary files /dev/null and b/media/WdVBWD.jpg differ diff --git a/media/WlScWy.jpg b/media/WlScWy.jpg new file mode 100644 index 000000000..76e6e8869 Binary files /dev/null and b/media/WlScWy.jpg differ diff --git a/media/WlX3Rj.jpg b/media/WlX3Rj.jpg new file mode 100644 index 000000000..f343333aa Binary files /dev/null and b/media/WlX3Rj.jpg differ diff --git a/media/WljBWc.jpg b/media/WljBWc.jpg new file mode 100644 index 000000000..2f394771a Binary files /dev/null and b/media/WljBWc.jpg differ diff --git a/media/WltBRs.jpg b/media/WltBRs.jpg new file mode 100644 index 000000000..fbd4c62fa Binary files /dev/null and b/media/WltBRs.jpg differ diff --git a/media/WlyfzV.jpg b/media/WlyfzV.jpg new file mode 100644 index 000000000..5542db5bf Binary files /dev/null and b/media/WlyfzV.jpg differ diff --git a/media/WsGyDW.jpg b/media/WsGyDW.jpg new file mode 100644 index 000000000..f2da58ec3 Binary files /dev/null and b/media/WsGyDW.jpg differ diff --git a/media/WscGzf.jpg b/media/WscGzf.jpg new file mode 100644 index 000000000..010b23f1a Binary files /dev/null and b/media/WscGzf.jpg differ diff --git a/media/WsjBzG.jpg b/media/WsjBzG.jpg new file mode 100644 index 000000000..ff87bd4de Binary files /dev/null and b/media/WsjBzG.jpg differ diff --git a/media/WsyyD1.jpg b/media/WsyyD1.jpg new file mode 100644 index 000000000..b0af7498e Binary files /dev/null and b/media/WsyyD1.jpg differ diff --git a/media/WtVyWy.jpg b/media/WtVyWy.jpg new file mode 100644 index 000000000..6cb5392b1 Binary files /dev/null and b/media/WtVyWy.jpg differ diff --git a/media/WtcBzl.jpg b/media/WtcBzl.jpg new file mode 100644 index 000000000..66c68f333 Binary files /dev/null and b/media/WtcBzl.jpg differ diff --git a/media/WtsSWN.jpg b/media/WtsSWN.jpg new file mode 100644 index 000000000..6d8e731ca Binary files /dev/null and b/media/WtsSWN.jpg differ diff --git a/media/WtsfWr.jpg b/media/WtsfWr.jpg new file mode 100644 index 000000000..b45da01ac Binary files /dev/null and b/media/WtsfWr.jpg differ diff --git a/media/XX2yRt.jpg b/media/XX2yRt.jpg new file mode 100644 index 000000000..8fdbce028 Binary files /dev/null and b/media/XX2yRt.jpg differ diff --git a/media/XcyGRz.jpg b/media/XcyGRz.jpg new file mode 100644 index 000000000..c61bcd243 Binary files /dev/null and b/media/XcyGRz.jpg differ diff --git a/media/XdByzy.jpg b/media/XdByzy.jpg new file mode 100644 index 000000000..0211a658d Binary files /dev/null and b/media/XdByzy.jpg differ diff --git a/media/XdGczK.jpg b/media/XdGczK.jpg new file mode 100644 index 000000000..b53a77d70 Binary files /dev/null and b/media/XdGczK.jpg differ diff --git a/media/XfVGRh.jpg b/media/XfVGRh.jpg new file mode 100644 index 000000000..168851509 Binary files /dev/null and b/media/XfVGRh.jpg differ diff --git a/media/XfcGR2.jpg b/media/XfcGR2.jpg new file mode 100644 index 000000000..803feaa9c Binary files /dev/null and b/media/XfcGR2.jpg differ diff --git a/media/cart_1868.gif b/media/cart_1868.gif new file mode 100644 index 000000000..fff6f8cb0 Binary files /dev/null and b/media/cart_1868.gif differ diff --git a/media/cart_1869.gif b/media/cart_1869.gif new file mode 100644 index 000000000..3625c42cc Binary files /dev/null and b/media/cart_1869.gif differ diff --git a/media/cart_1871.gif b/media/cart_1871.gif new file mode 100644 index 000000000..fdfea34ce Binary files /dev/null and b/media/cart_1871.gif differ diff --git a/media/cart_1872.gif b/media/cart_1872.gif new file mode 100644 index 000000000..1e1c62c48 Binary files /dev/null and b/media/cart_1872.gif differ diff --git a/media/cart_1873.gif b/media/cart_1873.gif new file mode 100644 index 000000000..f4fd1cb42 Binary files /dev/null and b/media/cart_1873.gif differ diff --git a/media/cart_1874.gif b/media/cart_1874.gif new file mode 100644 index 000000000..9da488c8e Binary files /dev/null and b/media/cart_1874.gif differ diff --git a/media/cart_1913.gif b/media/cart_1913.gif new file mode 100644 index 000000000..50f8b0a00 Binary files /dev/null and b/media/cart_1913.gif differ diff --git a/media/cart_2020.gif b/media/cart_2020.gif new file mode 100644 index 000000000..1a6d36c1e Binary files /dev/null and b/media/cart_2020.gif differ diff --git a/media/cart_2021.gif b/media/cart_2021.gif new file mode 100644 index 000000000..0b5f72c1d Binary files /dev/null and b/media/cart_2021.gif differ diff --git a/media/cart_2148.gif b/media/cart_2148.gif new file mode 100644 index 000000000..7c5a351eb Binary files /dev/null and b/media/cart_2148.gif differ diff --git a/media/cart_2151.gif b/media/cart_2151.gif new file mode 100644 index 000000000..3011be7b4 Binary files /dev/null and b/media/cart_2151.gif differ diff --git a/media/cart_2152.gif b/media/cart_2152.gif new file mode 100644 index 000000000..e3df9510b Binary files /dev/null and b/media/cart_2152.gif differ diff --git a/media/cart_2154.gif b/media/cart_2154.gif new file mode 100644 index 000000000..88500eaa7 Binary files /dev/null and b/media/cart_2154.gif differ diff --git a/media/cart_2221.gif b/media/cart_2221.gif new file mode 100644 index 000000000..8ba5960be Binary files /dev/null and b/media/cart_2221.gif differ diff --git a/media/cart_2241.gif b/media/cart_2241.gif new file mode 100644 index 000000000..4086c5717 Binary files /dev/null and b/media/cart_2241.gif differ diff --git a/media/cart_2242.gif b/media/cart_2242.gif new file mode 100644 index 000000000..c73ef6b6f Binary files /dev/null and b/media/cart_2242.gif differ diff --git a/media/cart_2243.gif b/media/cart_2243.gif new file mode 100644 index 000000000..8e03a7e3e Binary files /dev/null and b/media/cart_2243.gif differ diff --git a/media/cart_2267.gif b/media/cart_2267.gif new file mode 100644 index 000000000..69c6ff27b Binary files /dev/null and b/media/cart_2267.gif differ diff --git a/media/cart_2268.gif b/media/cart_2268.gif new file mode 100644 index 000000000..22cd42c76 Binary files /dev/null and b/media/cart_2268.gif differ diff --git a/media/cart_2269.gif b/media/cart_2269.gif new file mode 100644 index 000000000..58b871f01 Binary files /dev/null and b/media/cart_2269.gif differ diff --git a/media/cart_2270.gif b/media/cart_2270.gif new file mode 100644 index 000000000..5b6e632e6 Binary files /dev/null and b/media/cart_2270.gif differ diff --git a/media/cart_2271.gif b/media/cart_2271.gif new file mode 100644 index 000000000..8df492bc4 Binary files /dev/null and b/media/cart_2271.gif differ diff --git a/media/cart_2308.gif b/media/cart_2308.gif new file mode 100644 index 000000000..6f982711a Binary files /dev/null and b/media/cart_2308.gif differ diff --git a/media/cart_2309.gif b/media/cart_2309.gif new file mode 100644 index 000000000..ab7a73fc5 Binary files /dev/null and b/media/cart_2309.gif differ diff --git a/media/cart_2315.gif b/media/cart_2315.gif new file mode 100644 index 000000000..032b5df17 Binary files /dev/null and b/media/cart_2315.gif differ diff --git a/media/cart_2319.gif b/media/cart_2319.gif new file mode 100644 index 000000000..b2b611fde Binary files /dev/null and b/media/cart_2319.gif differ diff --git a/media/cart_2320.gif b/media/cart_2320.gif new file mode 100644 index 000000000..c34523404 Binary files /dev/null and b/media/cart_2320.gif differ diff --git a/media/cart_2321.gif b/media/cart_2321.gif new file mode 100644 index 000000000..63eb31a0a Binary files /dev/null and b/media/cart_2321.gif differ diff --git a/media/cart_2404.gif b/media/cart_2404.gif new file mode 100644 index 000000000..62f318afb Binary files /dev/null and b/media/cart_2404.gif differ diff --git a/media/cart_2597.gif b/media/cart_2597.gif new file mode 100644 index 000000000..f9f4fe604 Binary files /dev/null and b/media/cart_2597.gif differ diff --git a/media/cart_2600.gif b/media/cart_2600.gif new file mode 100644 index 000000000..109dce9ce Binary files /dev/null and b/media/cart_2600.gif differ diff --git a/media/cart_2602.gif b/media/cart_2602.gif new file mode 100644 index 000000000..c64ade5ed Binary files /dev/null and b/media/cart_2602.gif differ diff --git a/media/cart_2604.gif b/media/cart_2604.gif new file mode 100644 index 000000000..81360b630 Binary files /dev/null and b/media/cart_2604.gif differ diff --git a/media/cart_2610.gif b/media/cart_2610.gif new file mode 100644 index 000000000..4e658ca29 Binary files /dev/null and b/media/cart_2610.gif differ diff --git a/media/cart_2654.gif b/media/cart_2654.gif new file mode 100644 index 000000000..38e50095d Binary files /dev/null and b/media/cart_2654.gif differ diff --git a/media/cart_2925.gif b/media/cart_2925.gif new file mode 100644 index 000000000..9c19533cc Binary files /dev/null and b/media/cart_2925.gif differ diff --git a/media/cart_2953.gif b/media/cart_2953.gif new file mode 100644 index 000000000..add8f2c3c Binary files /dev/null and b/media/cart_2953.gif differ diff --git a/media/cart_3057.gif b/media/cart_3057.gif new file mode 100644 index 000000000..ec415d2c0 Binary files /dev/null and b/media/cart_3057.gif differ diff --git a/media/cart_3072.gif b/media/cart_3072.gif new file mode 100644 index 000000000..89613f6da Binary files /dev/null and b/media/cart_3072.gif differ diff --git a/media/cart_3073.gif b/media/cart_3073.gif new file mode 100644 index 000000000..1b40b5bcd Binary files /dev/null and b/media/cart_3073.gif differ diff --git a/media/cart_3112.gif b/media/cart_3112.gif new file mode 100644 index 000000000..dffb3b5d8 Binary files /dev/null and b/media/cart_3112.gif differ diff --git a/media/cart_3421.gif b/media/cart_3421.gif new file mode 100644 index 000000000..aa28874db Binary files /dev/null and b/media/cart_3421.gif differ diff --git a/media/cart_3491.gif b/media/cart_3491.gif new file mode 100644 index 000000000..bf9c503ae Binary files /dev/null and b/media/cart_3491.gif differ diff --git a/media/cart_3494.gif b/media/cart_3494.gif new file mode 100644 index 000000000..2a5dfcadc Binary files /dev/null and b/media/cart_3494.gif differ diff --git a/media/cart_3495.gif b/media/cart_3495.gif new file mode 100644 index 000000000..e1c606440 Binary files /dev/null and b/media/cart_3495.gif differ diff --git a/media/cart_3496.gif b/media/cart_3496.gif new file mode 100644 index 000000000..492b71833 Binary files /dev/null and b/media/cart_3496.gif differ diff --git a/media/cart_3497.gif b/media/cart_3497.gif new file mode 100644 index 000000000..369ffa8fd Binary files /dev/null and b/media/cart_3497.gif differ diff --git a/media/cart_3499.gif b/media/cart_3499.gif new file mode 100644 index 000000000..e6234fd51 Binary files /dev/null and b/media/cart_3499.gif differ diff --git a/media/cd23WD.jpg b/media/cd23WD.jpg new file mode 100644 index 000000000..c8ce13481 Binary files /dev/null and b/media/cd23WD.jpg differ diff --git a/media/cd2GWD.jpg b/media/cd2GWD.jpg new file mode 100644 index 000000000..431b61a93 Binary files /dev/null and b/media/cd2GWD.jpg differ diff --git a/media/cdKSDh.jpg b/media/cdKSDh.jpg new file mode 100644 index 000000000..53b7ace14 Binary files /dev/null and b/media/cdKSDh.jpg differ diff --git a/media/cdSGWz.jpg b/media/cdSGWz.jpg new file mode 100644 index 000000000..87cc89044 Binary files /dev/null and b/media/cdSGWz.jpg differ diff --git a/media/clcBDS.jpg b/media/clcBDS.jpg new file mode 100644 index 000000000..2247686fe Binary files /dev/null and b/media/clcBDS.jpg differ diff --git a/media/cld3z2.jpg b/media/cld3z2.jpg new file mode 100644 index 000000000..3f1ecf651 Binary files /dev/null and b/media/cld3z2.jpg differ diff --git a/media/cldBRl.jpg b/media/cldBRl.jpg new file mode 100644 index 000000000..4acbfdc77 Binary files /dev/null and b/media/cldBRl.jpg differ diff --git a/media/cltGW8.jpg b/media/cltGW8.jpg new file mode 100644 index 000000000..02cb0a3ca Binary files /dev/null and b/media/cltGW8.jpg differ diff --git a/media/cltcWM.jpg b/media/cltcWM.jpg new file mode 100644 index 000000000..1cf29d849 Binary files /dev/null and b/media/cltcWM.jpg differ diff --git a/media/cs2GWD.jpg b/media/cs2GWD.jpg new file mode 100644 index 000000000..4aaed9a72 Binary files /dev/null and b/media/cs2GWD.jpg differ diff --git a/media/csB3Dw.jpg b/media/csB3Dw.jpg new file mode 100644 index 000000000..b333dd4fe Binary files /dev/null and b/media/csB3Dw.jpg differ diff --git a/media/csBGWm.jpg b/media/csBGWm.jpg new file mode 100644 index 000000000..bc5bdde65 Binary files /dev/null and b/media/csBGWm.jpg differ diff --git a/media/csjGDD.jpg b/media/csjGDD.jpg new file mode 100644 index 000000000..f3500b801 Binary files /dev/null and b/media/csjGDD.jpg differ diff --git a/media/ct2czh.jpg b/media/ct2czh.jpg new file mode 100644 index 000000000..5c535471b Binary files /dev/null and b/media/ct2czh.jpg differ diff --git a/media/ctBcR1.jpg b/media/ctBcR1.jpg new file mode 100644 index 000000000..e8e4f1886 Binary files /dev/null and b/media/ctBcR1.jpg differ diff --git a/media/ctdBzl.jpg b/media/ctdBzl.jpg new file mode 100644 index 000000000..21bc6fe25 Binary files /dev/null and b/media/ctdBzl.jpg differ diff --git a/media/ctjyzd.jpg b/media/ctjyzd.jpg new file mode 100644 index 000000000..b3f655779 Binary files /dev/null and b/media/ctjyzd.jpg differ diff --git a/media/ctt3z2.jpg b/media/ctt3z2.jpg new file mode 100644 index 000000000..e9a88a34e Binary files /dev/null and b/media/ctt3z2.jpg differ diff --git a/media/ddySWh.jpg b/media/ddySWh.jpg new file mode 100644 index 000000000..5b5513c51 Binary files /dev/null and b/media/ddySWh.jpg differ diff --git a/media/dlcGRs.jpg b/media/dlcGRs.jpg new file mode 100644 index 000000000..65659da6c Binary files /dev/null and b/media/dlcGRs.jpg differ diff --git a/media/dldyz2.jpg b/media/dldyz2.jpg new file mode 100644 index 000000000..6d7dd612b Binary files /dev/null and b/media/dldyz2.jpg differ diff --git a/media/dsySW1.jpg b/media/dsySW1.jpg new file mode 100644 index 000000000..1e7ee378e Binary files /dev/null and b/media/dsySW1.jpg differ diff --git a/media/dsyXW1.jpg b/media/dsyXW1.jpg new file mode 100644 index 000000000..2f32dc841 Binary files /dev/null and b/media/dsyXW1.jpg differ diff --git a/media/dt3GRf.jpg b/media/dt3GRf.jpg new file mode 100644 index 000000000..094943b67 Binary files /dev/null and b/media/dt3GRf.jpg differ diff --git a/media/dtd3zf.jpg b/media/dtd3zf.jpg new file mode 100644 index 000000000..21ab2db59 Binary files /dev/null and b/media/dtd3zf.jpg differ diff --git a/media/dtjcDm.jpg b/media/dtjcDm.jpg new file mode 100644 index 000000000..d39ef5e74 Binary files /dev/null and b/media/dtjcDm.jpg differ diff --git a/media/fdGyz1.jpg b/media/fdGyz1.jpg new file mode 100644 index 000000000..26c04f86c Binary files /dev/null and b/media/fdGyz1.jpg differ diff --git a/media/fdSGWw.jpg b/media/fdSGWw.jpg new file mode 100644 index 000000000..68c0574a0 Binary files /dev/null and b/media/fdSGWw.jpg differ diff --git a/media/fdtGz2.jpg b/media/fdtGz2.jpg new file mode 100644 index 000000000..a462a8015 Binary files /dev/null and b/media/fdtGz2.jpg differ diff --git a/media/fl23DK.jpg b/media/fl23DK.jpg new file mode 100644 index 000000000..30e8278f6 Binary files /dev/null and b/media/fl23DK.jpg differ diff --git a/media/fl2XDd.jpg b/media/fl2XDd.jpg new file mode 100644 index 000000000..a4f02f364 Binary files /dev/null and b/media/fl2XDd.jpg differ diff --git a/media/fl3yRS.jpg b/media/fl3yRS.jpg new file mode 100644 index 000000000..eb185411d Binary files /dev/null and b/media/fl3yRS.jpg differ diff --git a/media/flcSRB.jpg b/media/flcSRB.jpg new file mode 100644 index 000000000..6213ebe4b Binary files /dev/null and b/media/flcSRB.jpg differ diff --git a/media/flj3DK.jpg b/media/flj3DK.jpg new file mode 100644 index 000000000..ebbe8305a Binary files /dev/null and b/media/flj3DK.jpg differ diff --git a/media/flj3WV.jpg b/media/flj3WV.jpg new file mode 100644 index 000000000..c8e1d8faf Binary files /dev/null and b/media/flj3WV.jpg differ diff --git a/media/fljGWV.jpg b/media/fljGWV.jpg new file mode 100644 index 000000000..75de385e7 Binary files /dev/null and b/media/fljGWV.jpg differ diff --git a/media/flyer_210626.png b/media/flyer_210626.png new file mode 100644 index 000000000..23bb37f82 Binary files /dev/null and b/media/flyer_210626.png differ diff --git a/media/fs2Szh.jpg b/media/fs2Szh.jpg new file mode 100644 index 000000000..74e87b35b Binary files /dev/null and b/media/fs2Szh.jpg differ diff --git a/media/fs2XWc.jpg b/media/fs2XWc.jpg new file mode 100644 index 000000000..9e2fce5c1 Binary files /dev/null and b/media/fs2XWc.jpg differ diff --git a/media/fsjGDD.jpg b/media/fsjGDD.jpg new file mode 100644 index 000000000..64a371b05 Binary files /dev/null and b/media/fsjGDD.jpg differ diff --git a/media/ft23DK.jpg b/media/ft23DK.jpg new file mode 100644 index 000000000..58ebdcf92 Binary files /dev/null and b/media/ft23DK.jpg differ diff --git a/media/ft2GWV.jpg b/media/ft2GWV.jpg new file mode 100644 index 000000000..add8f6303 Binary files /dev/null and b/media/ft2GWV.jpg differ diff --git a/media/ft2czd.jpg b/media/ft2czd.jpg new file mode 100644 index 000000000..d3fee8629 Binary files /dev/null and b/media/ft2czd.jpg differ diff --git a/media/ftcGz8.jpg b/media/ftcGz8.jpg new file mode 100644 index 000000000..0682dc70e Binary files /dev/null and b/media/ftcGz8.jpg differ diff --git a/media/ftfGWH.jpg b/media/ftfGWH.jpg new file mode 100644 index 000000000..691425eb5 Binary files /dev/null and b/media/ftfGWH.jpg differ diff --git a/media/ftj3WV.jpg b/media/ftj3WV.jpg new file mode 100644 index 000000000..e39f49f66 Binary files /dev/null and b/media/ftj3WV.jpg differ diff --git a/media/ftjGWV.jpg b/media/ftjGWV.jpg new file mode 100644 index 000000000..674644514 Binary files /dev/null and b/media/ftjGWV.jpg differ diff --git a/media/l32cz3.jpg b/media/l32cz3.jpg new file mode 100644 index 000000000..9ca5af972 Binary files /dev/null and b/media/l32cz3.jpg differ diff --git a/media/ldl3W2.jpg b/media/ldl3W2.jpg new file mode 100644 index 000000000..9c707394e Binary files /dev/null and b/media/ldl3W2.jpg differ diff --git a/media/ldyfzc.jpg b/media/ldyfzc.jpg new file mode 100644 index 000000000..4d31350bd Binary files /dev/null and b/media/ldyfzc.jpg differ diff --git a/media/lfKGzR.jpg b/media/lfKGzR.jpg new file mode 100644 index 000000000..a579cef59 Binary files /dev/null and b/media/lfKGzR.jpg differ diff --git a/media/llKyRz.jpg b/media/llKyRz.jpg new file mode 100644 index 000000000..bd9cec81c Binary files /dev/null and b/media/llKyRz.jpg differ diff --git a/media/llVfWG.jpg b/media/llVfWG.jpg new file mode 100644 index 000000000..f0adfdb17 Binary files /dev/null and b/media/llVfWG.jpg differ diff --git a/media/ltVfWG.jpg b/media/ltVfWG.jpg new file mode 100644 index 000000000..d00ed85c3 Binary files /dev/null and b/media/ltVfWG.jpg differ diff --git a/media/md23Dw.jpg b/media/md23Dw.jpg new file mode 100644 index 000000000..b7ac4d92b Binary files /dev/null and b/media/md23Dw.jpg differ diff --git a/media/md23WD.jpg b/media/md23WD.jpg new file mode 100644 index 000000000..cde08c784 Binary files /dev/null and b/media/md23WD.jpg differ diff --git a/media/md2GDD.jpg b/media/md2GDD.jpg new file mode 100644 index 000000000..d6d64eb96 Binary files /dev/null and b/media/md2GDD.jpg differ diff --git a/media/md2GWW.jpg b/media/md2GWW.jpg new file mode 100644 index 000000000..38969272a Binary files /dev/null and b/media/md2GWW.jpg differ diff --git a/media/mdS3Dw.jpg b/media/mdS3Dw.jpg new file mode 100644 index 000000000..d22cc7175 Binary files /dev/null and b/media/mdS3Dw.jpg differ diff --git a/media/mdj3DW.jpg b/media/mdj3DW.jpg new file mode 100644 index 000000000..94a0afa55 Binary files /dev/null and b/media/mdj3DW.jpg differ diff --git a/media/ml3GzX.jpg b/media/ml3GzX.jpg new file mode 100644 index 000000000..136b41ec1 Binary files /dev/null and b/media/ml3GzX.jpg differ diff --git a/media/mlByzG.jpg b/media/mlByzG.jpg new file mode 100644 index 000000000..c55b7d0d4 Binary files /dev/null and b/media/mlByzG.jpg differ diff --git a/media/mlc3W7.jpg b/media/mlc3W7.jpg new file mode 100644 index 000000000..c614ceca8 Binary files /dev/null and b/media/mlc3W7.jpg differ diff --git a/media/msBGWw.jpg b/media/msBGWw.jpg new file mode 100644 index 000000000..f98f23054 Binary files /dev/null and b/media/msBGWw.jpg differ diff --git a/media/mt2yDm.jpg b/media/mt2yDm.jpg new file mode 100644 index 000000000..7bbe66208 Binary files /dev/null and b/media/mt2yDm.jpg differ diff --git a/media/mtdfzl.jpg b/media/mtdfzl.jpg new file mode 100644 index 000000000..bcf1dc3b4 Binary files /dev/null and b/media/mtdfzl.jpg differ diff --git a/media/poshbrolly/0df72jzsgYK6KuNHDQrd.jpg b/media/poshbrolly/0df72jzsgYK6KuNHDQrd.jpg new file mode 100644 index 000000000..53e83c646 Binary files /dev/null and b/media/poshbrolly/0df72jzsgYK6KuNHDQrd.jpg differ diff --git a/media/poshbrolly/3c4qvyeWUUKk6pgwtsU2.jpg b/media/poshbrolly/3c4qvyeWUUKk6pgwtsU2.jpg new file mode 100644 index 000000000..5025b9654 Binary files /dev/null and b/media/poshbrolly/3c4qvyeWUUKk6pgwtsU2.jpg differ diff --git a/media/poshbrolly/4DJCGUFQATcQkmQWjsR8.jpg b/media/poshbrolly/4DJCGUFQATcQkmQWjsR8.jpg new file mode 100644 index 000000000..16111f6d1 Binary files /dev/null and b/media/poshbrolly/4DJCGUFQATcQkmQWjsR8.jpg differ diff --git a/media/poshbrolly/4Eb8KCGwRlgyiGBJlzRX.jpg b/media/poshbrolly/4Eb8KCGwRlgyiGBJlzRX.jpg new file mode 100644 index 000000000..b04d552be Binary files /dev/null and b/media/poshbrolly/4Eb8KCGwRlgyiGBJlzRX.jpg differ diff --git a/media/poshbrolly/4eTDcSYGzKdjlFmbBJ6b.jpg b/media/poshbrolly/4eTDcSYGzKdjlFmbBJ6b.jpg new file mode 100644 index 000000000..2d8e7358c Binary files /dev/null and b/media/poshbrolly/4eTDcSYGzKdjlFmbBJ6b.jpg differ diff --git a/media/poshbrolly/6ceIHFLMaJHE2ogyGcbD.jpg b/media/poshbrolly/6ceIHFLMaJHE2ogyGcbD.jpg new file mode 100644 index 000000000..ed87bb5ea Binary files /dev/null and b/media/poshbrolly/6ceIHFLMaJHE2ogyGcbD.jpg differ diff --git a/media/poshbrolly/Cv3f6I8URvIBu9pPQ0H6.jpg b/media/poshbrolly/Cv3f6I8URvIBu9pPQ0H6.jpg new file mode 100644 index 000000000..539da5f86 Binary files /dev/null and b/media/poshbrolly/Cv3f6I8URvIBu9pPQ0H6.jpg differ diff --git a/media/poshbrolly/DNowQUOsn9fMYU2CKvLh.jpg b/media/poshbrolly/DNowQUOsn9fMYU2CKvLh.jpg new file mode 100644 index 000000000..c6d2e3cc7 Binary files /dev/null and b/media/poshbrolly/DNowQUOsn9fMYU2CKvLh.jpg differ diff --git a/media/poshbrolly/PwKaiF5tj9Hzh6BrSWIh.jpg b/media/poshbrolly/PwKaiF5tj9Hzh6BrSWIh.jpg new file mode 100644 index 000000000..ee5dbf5b3 Binary files /dev/null and b/media/poshbrolly/PwKaiF5tj9Hzh6BrSWIh.jpg differ diff --git a/media/poshbrolly/TKSM7upc3kIUFHks8z3m.jpg b/media/poshbrolly/TKSM7upc3kIUFHks8z3m.jpg new file mode 100644 index 000000000..117235f66 Binary files /dev/null and b/media/poshbrolly/TKSM7upc3kIUFHks8z3m.jpg differ diff --git a/media/poshbrolly/W1D0W7QzxmVIyoa2T28x.jpg b/media/poshbrolly/W1D0W7QzxmVIyoa2T28x.jpg new file mode 100644 index 000000000..af0036565 Binary files /dev/null and b/media/poshbrolly/W1D0W7QzxmVIyoa2T28x.jpg differ diff --git a/media/poshbrolly/WCCKltsoFfdpkZbSAylR.jpg b/media/poshbrolly/WCCKltsoFfdpkZbSAylR.jpg new file mode 100644 index 000000000..6755d8a12 Binary files /dev/null and b/media/poshbrolly/WCCKltsoFfdpkZbSAylR.jpg differ diff --git a/media/poshbrolly/wdh0cfgKU4rLwP9mlqCI.jpg b/media/poshbrolly/wdh0cfgKU4rLwP9mlqCI.jpg new file mode 100644 index 000000000..0d8b2913a Binary files /dev/null and b/media/poshbrolly/wdh0cfgKU4rLwP9mlqCI.jpg differ diff --git a/media/sdBSDt.jpg b/media/sdBSDt.jpg new file mode 100644 index 000000000..4bf499df3 Binary files /dev/null and b/media/sdBSDt.jpg differ diff --git a/media/sdKyzh.jpg b/media/sdKyzh.jpg new file mode 100644 index 000000000..43473fb8d Binary files /dev/null and b/media/sdKyzh.jpg differ diff --git a/media/sdjGWm.jpg b/media/sdjGWm.jpg new file mode 100644 index 000000000..2becb2992 Binary files /dev/null and b/media/sdjGWm.jpg differ diff --git a/media/sl2yW3.jpg b/media/sl2yW3.jpg new file mode 100644 index 000000000..60fa513ee Binary files /dev/null and b/media/sl2yW3.jpg differ diff --git a/media/sl3XDM.jpg b/media/sl3XDM.jpg new file mode 100644 index 000000000..3136e54b1 Binary files /dev/null and b/media/sl3XDM.jpg differ diff --git a/media/sl3XWM.jpg b/media/sl3XWM.jpg new file mode 100644 index 000000000..fe071c869 Binary files /dev/null and b/media/sl3XWM.jpg differ diff --git a/media/slc3z7.jpg b/media/slc3z7.jpg new file mode 100644 index 000000000..9e588e77a Binary files /dev/null and b/media/slc3z7.jpg differ diff --git a/media/sld3zn.jpg b/media/sld3zn.jpg new file mode 100644 index 000000000..de1dd7ac0 Binary files /dev/null and b/media/sld3zn.jpg differ diff --git a/media/sltGRr.jpg b/media/sltGRr.jpg new file mode 100644 index 000000000..869e9709b Binary files /dev/null and b/media/sltGRr.jpg differ diff --git a/media/ss2GDw.jpg b/media/ss2GDw.jpg new file mode 100644 index 000000000..30532e756 Binary files /dev/null and b/media/ss2GDw.jpg differ diff --git a/media/ss2XDd.jpg b/media/ss2XDd.jpg new file mode 100644 index 000000000..c709ceb51 Binary files /dev/null and b/media/ss2XDd.jpg differ diff --git a/media/ssjSDV.jpg b/media/ssjSDV.jpg new file mode 100644 index 000000000..7af2c064d Binary files /dev/null and b/media/ssjSDV.jpg differ diff --git a/media/ssjXWV.jpg b/media/ssjXWV.jpg new file mode 100644 index 000000000..fa17598e4 Binary files /dev/null and b/media/ssjXWV.jpg differ diff --git a/media/st23DK.jpg b/media/st23DK.jpg new file mode 100644 index 000000000..0a7b2e557 Binary files /dev/null and b/media/st23DK.jpg differ diff --git a/media/stBcWy.jpg b/media/stBcWy.jpg new file mode 100644 index 000000000..65388ef0c Binary files /dev/null and b/media/stBcWy.jpg differ diff --git a/media/stcSDM.jpg b/media/stcSDM.jpg new file mode 100644 index 000000000..dd6345ff9 Binary files /dev/null and b/media/stcSDM.jpg differ diff --git a/media/stcSRB.jpg b/media/stcSRB.jpg new file mode 100644 index 000000000..8422f0546 Binary files /dev/null and b/media/stcSRB.jpg differ diff --git a/media/stcSW7.jpg b/media/stcSW7.jpg new file mode 100644 index 000000000..ca07dacb5 Binary files /dev/null and b/media/stcSW7.jpg differ diff --git a/media/stjGDV.jpg b/media/stjGDV.jpg new file mode 100644 index 000000000..eaeab6ca8 Binary files /dev/null and b/media/stjGDV.jpg differ diff --git a/media/stjSWt.jpg b/media/stjSWt.jpg new file mode 100644 index 000000000..885e39f72 Binary files /dev/null and b/media/stjSWt.jpg differ diff --git a/media/stl3z4.jpg b/media/stl3z4.jpg new file mode 100644 index 000000000..b6bb6c65f Binary files /dev/null and b/media/stl3z4.jpg differ diff --git a/media/tdKcWh.jpg b/media/tdKcWh.jpg new file mode 100644 index 000000000..e04606713 Binary files /dev/null and b/media/tdKcWh.jpg differ diff --git a/media/tdjcWz.jpg b/media/tdjcWz.jpg new file mode 100644 index 000000000..8f3950ebe Binary files /dev/null and b/media/tdjcWz.jpg differ diff --git a/media/tl3yRj.jpg b/media/tl3yRj.jpg new file mode 100644 index 000000000..f94750036 Binary files /dev/null and b/media/tl3yRj.jpg differ diff --git a/media/tlSfDV.jpg b/media/tlSfDV.jpg new file mode 100644 index 000000000..203480599 Binary files /dev/null and b/media/tlSfDV.jpg differ diff --git a/media/tlyBWw.jpg b/media/tlyBWw.jpg new file mode 100644 index 000000000..c6b0819ab Binary files /dev/null and b/media/tlyBWw.jpg differ diff --git a/media/tsyBWD.jpg b/media/tsyBWD.jpg new file mode 100644 index 000000000..8c0b4f2f3 Binary files /dev/null and b/media/tsyBWD.jpg differ diff --git a/media/tt3yRj.jpg b/media/tt3yRj.jpg new file mode 100644 index 000000000..f38c909e6 Binary files /dev/null and b/media/tt3yRj.jpg differ diff --git a/media/ttcyzl.jpg b/media/ttcyzl.jpg new file mode 100644 index 000000000..c0af6206f Binary files /dev/null and b/media/ttcyzl.jpg differ diff --git a/media/wlGczK.jpg b/media/wlGczK.jpg new file mode 100644 index 000000000..eba9ba0e5 Binary files /dev/null and b/media/wlGczK.jpg differ diff --git a/media/wsGBWw.jpg b/media/wsGBWw.jpg new file mode 100644 index 000000000..5caf9461a Binary files /dev/null and b/media/wsGBWw.jpg differ diff --git a/media/wsV3DG.jpg b/media/wsV3DG.jpg new file mode 100644 index 000000000..29f433711 Binary files /dev/null and b/media/wsV3DG.jpg differ diff --git a/media/wsccWj.jpg b/media/wsccWj.jpg new file mode 100644 index 000000000..c605e3607 Binary files /dev/null and b/media/wsccWj.jpg differ diff --git a/media/wtGfWw.jpg b/media/wtGfWw.jpg new file mode 100644 index 000000000..0ca2fd947 Binary files /dev/null and b/media/wtGfWw.jpg differ diff --git a/media/wtSXDw.jpg b/media/wtSXDw.jpg new file mode 100644 index 000000000..4bc0c4974 Binary files /dev/null and b/media/wtSXDw.jpg differ diff --git a/media/wtXcW2.jpg b/media/wtXcW2.jpg new file mode 100644 index 000000000..41020a637 Binary files /dev/null and b/media/wtXcW2.jpg differ diff --git a/media/wtsGzl.jpg b/media/wtsGzl.jpg new file mode 100644 index 000000000..03465ebc4 Binary files /dev/null and b/media/wtsGzl.jpg differ diff --git a/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_final_f0x.glsl b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_final_f0x.glsl new file mode 100644 index 000000000..3d13d6740 --- /dev/null +++ b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_final_f0x.glsl @@ -0,0 +1,83 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +/* vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 );*/ + +void main(void) +{ + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + + uv+=vec2(sin(fGlobalTime),sin(fGlobalTime*1.3))*.3; + + uv*= 1+texture( texFFT, abs(uv.y) ).r * 11.100; + + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 uv2=uv; +float c = length(uv)-fGlobalTime*.1; +float b = atan(uv.x / uv.y) / 3.14+fGlobalTime*.1+c; + + +uv=vec2(b,c); + +float a=texture( texNoise, uv/4 ).r*2; +float a2=texture( texNoise, uv/8 ).r*2; + a2+=fGlobalTime*.1; + a=texture( texNoise, vec2(a,a2) ).r*2; + a=1./(a+1); + a=pow(a,13)*13; + + a*=1-sin(21*length(uv)); + + float g=max(sin(uv2.x*22+fGlobalTime*11.1),sin(uv.y*22+uv2.y*22+fGlobalTime*.1)); + + g*=texture( texNoise, vec2(a,a2) ).r*4; + + + g-=.95; + g*=333; + a=max(a,g); + + + vec3 col=vec3(a*3,a*2,a); + + out_color = vec4(col,1); +} + +// LEFT \ No newline at end of file diff --git a/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_final_wbcbz7.glsl b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_final_wbcbz7.glsl new file mode 100644 index 000000000..6c08ca0f5 --- /dev/null +++ b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_final_wbcbz7.glsl @@ -0,0 +1,109 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + + +float t = fGlobalTime; + + +int ca[22*7] = int[22*7]( +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,0, +0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0, +0,1,0,0,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,0,0, +0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0, +0,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +); + +// RE+_RERECYCLIIIIING GHAHAHAHAHAHAHAHAHAHAHAHHAHAHAHAHAH + +void main(void) +{ + vec2 uvraw = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + uvraw.x += 2.6*texture(texFFT, 0.3).r * mod(int(uvraw.y*36.4), 3); + uvraw.y += 1.6*texture(texFFT, 0.1).r * mod(int(uvraw.x*23.4), 3); + + + vec2 uv = uvraw - 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + + vec3 acc = vec3(0.0); + + for (int i = 0; i < 3*3; i++) { + + float color; + + if (mod(fGlobalTime, 5.4) < 1.5) + + + color = mod((uv.x+uv.y + t) * 2.5, 1.0) < 0.5 ? 1.0 : 0.0; + + else if (mod(fGlobalTime, 2.4) < 1.5) + color = mod((abs(uv.x)*abs(uv.y) + t) * 5.5, 1.0) < 0.5 ? 1.0 : 0.0; + + else + color = mod((abs(uv.x)+abs(uv.y) + t) * 5.5, 1.0) < 0.5 ? 1.0 : 0.0; + + + + acc += vec3(color) * (0.45 + 0.8 * vec3(0.6*mod(int(uvraw.y*366.4), 3), 0.27*mod(int(uvraw.y*35.4), 3), 0.9*mod(int(uvraw.y*23.4), 3))); + } + + if (mod(fGlobalTime, 0.9) < 0.2) + acc *= 0.1+(0.2*float(ca[int((1-uvraw.y) * 7)*22 + int(uvraw.x * 22)])); + else + acc *= 0.01 + (0.2*float(ca[int((1-uvraw.y) * 7)*22 + int(uvraw.x * 22)])); + + + acc = acc * (1.0 / 3*3) * (1.0 - 0.6*dot(uv, uv)); + + + // vingette + out_color = vec4(acc, 1.0); + + + + + /* + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; + */ + + + +} + +// RIGHT \ No newline at end of file diff --git a/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_semifinal_dart.glsl b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_semifinal_dart.glsl new file mode 100644 index 000000000..818cb1715 --- /dev/null +++ b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_semifinal_dart.glsl @@ -0,0 +1,92 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +vec2 rot(vec2 p, float a) +{ + float c = cos(a); float s = sin(a); + return p * mat2(c, -s, s, c); +} + +float vmax(vec3 p) +{ + return max(p.x, max(p.y, p.z)); +} + + +float scene(vec3 p) +{ + //p.zx = rot(p.zx, fGlobalTime * 0.1); + p.xy = rot(p.xy, fGlobalTime); + float c = 2.; + p = mod(p + c *0.5, c ) - c *0.5; + p.zx = rot(p.zx, p.y * 1.8 + fGlobalTime); + p.xy = rot(p.xy, p.x * 1.8 + fGlobalTime); + float b1 = vmax( abs(p) - vec3(0.5)); + float f = texture(texFFT, 0.3).r; + float s1 = length(p) - ((1. * sin(fGlobalTime * 4 ) * 0.05 ) + 0.7); + return max(b1, -s1); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y) * 2 - 1; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 o = vec3(0,0, fGlobalTime * 5); + + + vec3 r = normalize(vec3(uv, 3) ); + + r.zx = rot(r.zx, sin (fGlobalTime * 2 ) * 0.4 ); + r.xy = rot(r.xy, sin (fGlobalTime * 4 ) * 0.4 ); + + + float sh; + + float t = 0; +int i; + for (i = 0; i < 100; ++ i) + { + vec3 p = o + r * t; + float d = scene(p); + if (d < 0.01) { + break; + } + + t += d; + + } + sh = 1 - i / 100.; + + float f = texture(texFFT, uv.y).r; + + //vec3 c = vec3(sh,sh, 0); + + float fog = 1 / (1 + sh * sh + 0.0); + + vec3 c = vec3(0.5) + vec3(0.7) * cos( 2*3.14 * (vec3(0.8 + f) * sh + vec3(0.3,0.5,0.7) ) ); + + c = mix(c, vec3(0), fog); + + out_color = vec4(c, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_semifinal_kotsoft.glsl b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_semifinal_kotsoft.glsl new file mode 100644 index 000000000..ab30794ef --- /dev/null +++ b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_semifinal_kotsoft.glsl @@ -0,0 +1,53 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + vec4 dance=texture(texFFT,0.7); + float f1 = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + float f2 = cos(v.y*20)+sin(v.x*15); + float f3 = length(v.y-0.7); + //float f3=0.5; + float dancc=dance.x*0.44; + float c=f1+f2+f3*0.003; + + return vec4(sin(c * dancc *0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, dance.x*0.9 ); +} +void main(void) +{ + float time=fGlobalTime; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.2*sin(time*0.9)+0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x*2*sin(time*0.6), 1); + + + vec2 m; + vec4 dance=texture(texFFT,0.7); + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv*fGlobalTime*60*dance.x) * .3; + float d = m.y; + + //float f = texture( texFFT, d ).r * 100; + float f=0.0; + m.x += fGlobalTime; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + + out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour1_dart.glsl b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour1_dart.glsl new file mode 100644 index 000000000..82bd668a3 --- /dev/null +++ b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour1_dart.glsl @@ -0,0 +1,89 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +vec2 rot(vec2 p, float a) +{ + float s = sin(a), c =cos(a); + return p * mat2(c, -s, s, c); +} + +float vmax( vec3 p) { + + return max(p.x, max(p.y, p.z) ); + } + +float scene(vec3 p) +{ +// p = mod( p , 2) + 1; + + float s1 = length(p ) + 4.2; + + + + p.xy = rot(p.xy, p.y * 0.3 + fGlobalTime ); + p.zx = rot(p.zx, p.y * 0.3 + fGlobalTime ); + float b1 = vmax( abs(p - 0.2) - vec3(0.7, 0.8, 0.8) ); + + + return mix(s1, b1, fract(fGlobalTime * 0.01 )); +} + +vec4 trace(vec3 o, vec3 r) +{ + float t; + vec3 p; + for(int i=0; i < 100; ++ i ) + { + p = o + r * t; + float d = scene(p); + if (d < 0.01) { + p.x = i / 100.; + return vec4(p, t); + } + t += d * 0.2; + if (t > 100 ) + break; + } + + p.x = 1.0; + return vec4(p, t); +} + + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y) * 2. - 1.; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 o = vec3(0,0,-10.); + vec3 r = normalize( vec3(uv, 2) ); + + vec4 p = trace(o, r); + + float x = p.w * 0.1; + vec3 c = vec3(0.5) + vec3(0.5)*cos(2. * 3.14 * ( vec3(0.3) * x + vec3(0.0, 0.2, 0.5) ) ); + //c = vec3(p.w); + + out_color = vec4(c, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour1_wbcbz7.glsl b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour1_wbcbz7.glsl new file mode 100644 index 000000000..8be78de87 --- /dev/null +++ b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour1_wbcbz7.glsl @@ -0,0 +1,74 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + + +float t = fGlobalTime; + +void main(void) +{ + + vec2 uv_raw = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + + uv.x += 1.1*texture(texFFT, 0.00).r *mod(int(uv.y * 23.5), 6); + uv.y += 1.1*texture(texFFT, 0.00).r *mod(int(uv.x * 23.5), 6); + + + + // row stuff + + vec3 buf = vec3(0.0); + + for (int i = 0; i < 9; i++) { + vec2 ab = abs(uv*(0.9+0.01*i)); + + float color = 0.0; + if (mod (t, 2.5) < 1.3) { + color = mod((ab.x + ab.y + t) * 4.4, 1.0) < 0.5 ? 1.0 : 0.0; + } else + if (mod (t, 4.5) < 1.3) { + color = mod((dot(ab.x, ab.y) + t) * 2.4, 1.0) < 0.5 ? 1.0 : 0.0; + } else { + color = mod((dot(ab.x, mod(7.5*ab.y+t, 2) + mod(t, 0.3)) + t) * 8.4, 1.0) < 0.5 ? 1.0 : 0.0; + } + buf += clamp(color * vec3( + mod(0.4 + 0.6*int((uv.x + t) * 12.3)/18.3, 1.0), + mod(0.4 + 0.6*int((uv.y + t) * 18.3)/3.3, 1.0), + mod(0.4 + 0.6*int((uv.y + t) * 18.3)/15.3, 1.0)), 0.0, 1.0); + } + + vec4 o = vec4(buf / 9, 1.0); + + + // vingette + out_color = o * (1.0 - (0.7*dot(uv, uv))); + + + +} \ No newline at end of file diff --git a/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour2_f0x.glsl b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour2_f0x.glsl new file mode 100644 index 000000000..ca681b6fa --- /dev/null +++ b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour2_f0x.glsl @@ -0,0 +1,88 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +/* + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; +*/ + +vec3 chess(vec2 uv) +{ + float a=max(sin(uv.x*2.7),sin(uv.y*555)); + float b=max(sin(uv.x*3.8),sin(uv.y*12)); + float c=max(sin(uv.x*5.9),sin(uv.y*3)); + vec3 r; + r.x=a; + r.y=b; + r.z=c; + return r; + } + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float f = texture( texFFT, sin(length(uv)/12) ).r * 12; + uv.x+=f; + vec3 a; + vec2 c=vec2(sin(fGlobalTime/2),sin(fGlobalTime/2))*.3; + float x= atan(uv.x+c.x,uv.y+c.y); + float y=length(uv)-fGlobalTime/10; + + c=vec2(sin(fGlobalTime/2.3),sin(fGlobalTime/2.5))*.3; + x+= atan(uv.x+c.x,uv.y+c.y); + y+=length(uv)-fGlobalTime/10; + + c=vec2(sin(fGlobalTime/2.9),sin(fGlobalTime/3.5))*.3; + x+= atan(uv.x+c.x,uv.y+c.y); + y+=length(uv)-fGlobalTime/10; + + + a=chess(vec2(x,y)); + + + vec3 v=vec3(0,0,1); + vec3 v2=a; + a*=dot(v,v2); + a*=1+pow(-reflect(v,a),a); + // a*=3-3*length(uv); + out_color = vec4(a,1.0); +} + +// LEFT COMPUTER \ No newline at end of file diff --git a/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour2_kotsoft.glsl b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour2_kotsoft.glsl new file mode 100644 index 000000000..91a7c59a3 --- /dev/null +++ b/shader_file_sources/2019_10_25_shader_showdown_cafe/shadershow_tour2_kotsoft.glsl @@ -0,0 +1,57 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +/* +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +*/ +void main(void) +{ + float f1=length(sin(0.01*gl_FragCoord.x+sin(fGlobalTime*2))+cos(0.01*gl_FragCoord.y+cos(fGlobalTime*3))); + float f2=0.1*sin(0.05*gl_FragCoord.x+texture(texFFT,0.7).x*4);//+cos(0.01*gl_FragCoord.y); + //float f3=sqrt(sin(gl_FragCoord.x*gl_FragCoord.x*0.005*(fGlobalTime*0.001)+gl_FragCoord.y*gl_FragCoord.y*0.005*(fGlobalTime*0.001))); + vec4 dance=texture(texFFT,0.7); + float f3=sqrt(sin(gl_FragCoord.x*gl_FragCoord.x*0.005*(fGlobalTime*0.0005+(dance.x*0.7))+gl_FragCoord.y*gl_FragCoord.y*0.005*(fGlobalTime*0.0005+(dance.x*0.7))+sin(fGlobalTime*0.5))); + //float f3=sq + + float f=f1+f3*0.3+f2; + float dancc=dance.x*0.3; + vec4 t=vec4(sin(f*0.5+fGlobalTime+dancc),cos(0.5*f+0.5*fGlobalTime+dancc),sin(0.22*f+fGlobalTime*0.5+dancc)+cos(0.5*f+fGlobalTime*0.4+dancc),1.0); + out_color=t; + + /* + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; + */ +} \ No newline at end of file diff --git a/shader_file_sources/2020_06_19_shader_showdown_nova/sender_nova_wrighter.glsl b/shader_file_sources/2020_06_19_shader_showdown_nova/sender_nova_wrighter.glsl new file mode 100644 index 000000000..783daf72b --- /dev/null +++ b/shader_file_sources/2020_06_19_shader_showdown_nova/sender_nova_wrighter.glsl @@ -0,0 +1,100 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define T fGlobalTime*2. + +#define pi acos(-1.) + +#define pal(a,b,c,d,e) (a + b*sin(c*d + e)) + +#define rot(j) mat2(cos(j),-sin(j),sin(j),cos(j)) + +#define pmod(p,j) mod(p - 0.5*j,j) - 0.5*j + +float sdBox(vec3 p, vec3 s){ + p = abs(p) - s; + return max(p.x,max(p.y,p.z)); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv*=1.5; + + vec3 col = vec3(0,0.2,0.5); + + float tt = T*0.1; + + uv += vec2(cos(tt*0.7 + cos(tt/2.)), sin(tt*0.9) + sin(tt*0.6))/1.; + + + + vec3 p = vec3(uv,1); + + + p /= dot(p,p); + + p.x += tt*0.003; + p.y += tt*0.003; + p.xz *= rot(0.25*pi - sin(T/2.)/20. + tt*0.1); + + p.xy *= rot(0.25*pi + sin(T/2.)/20.); + + + + //p.xz = vec2(atan(p.y,p.x)*pi*2./7.,log(length(p.xy) )); + + p = pmod(p,0.3); + + + // + col = mix(col,vec3(0.1,0.1,0.5),smoothstep(0.001,0.,abs(length(p-0.1)-0.1)-0.02)); + + + // + float db = sdBox(p - 0.01,vec3(0.1)); + db = abs(db) - 0.01; + + col = mix(col,vec3(0.0,0.8,0.5)*1.,smoothstep(0.001,0.,db)); + + // + db = sdBox(p,vec3(0.1)); + col = mix(col,vec3(0.1,0.4,0.1)*4.,smoothstep(0.001,0.,db)); + + // + db = length(p)- 0.1; + + db = abs(db)-0.01; + col = mix(col,vec3(0.9,0.4,0.5)*0.1,smoothstep(0.001,0.,db)); + + // circ + db = length(p + 0.05)-0.05; + db = abs(db) - 0.01; + + + col = mix(col,vec3(0.9,0.4,0.1)*4.,smoothstep(0.001,0.,db)); + + + + + + col = pow(col,vec3(0.454545)); + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2020_07_11_shader_showdown_solskogen/sender_solskogen2020_wrighter.glsl b/shader_file_sources/2020_07_11_shader_showdown_solskogen/sender_solskogen2020_wrighter.glsl new file mode 100644 index 000000000..6b56cfa6a --- /dev/null +++ b/shader_file_sources/2020_07_11_shader_showdown_solskogen/sender_solskogen2020_wrighter.glsl @@ -0,0 +1,107 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + + +// POTATEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +// EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +//EEEEEEEEE + + +#define T fGlobalTime +#define pi acos(-1.) + +#define pmod(p,j) mod(p,j) - 0.5*j +#define rot(j) mat2(cos(j),-sin(j),sin(j),cos(j)) + +vec3 glow = vec3(0); + +float map(vec3 p){ + float d = 10e6; + + float dFl = abs(abs(p.y) - 0.9); + + p.xy *= rot(sin(p.z*0.4 + sin(p.x + p.z)*1.)*.8); + + + vec2 disp = vec2(sin(p.z*0.4 + T),sin(p.z*0.7 + sin(p.x)*2. + T))*0.2; + + float dPa = length(p.xy - vec2(0.8,0) - disp); + float dPb = length(p.xy + vec2(0.8,0) - disp); + + vec3 q = vec3(pmod(p.xz*1.1,2.), 1); + + float iters = 3. + sin(T*0.4 + p.z*0.2)*1; + for(float i = 0.; i < 7.; i++){ + float dqq = dot(q.xy,q.xy); + vec3 nq = abs(q)/dqq; + nq.x -= 0.1; + nq.xy *= rot(0.5); + q = mix(q,nq,smoothstep(1.,0.,i - iters)); + } + + float dFr = length(q.x)/q.z; + + + d = min(d,dFl); + d = min(d,dPa); + d = min(d,dPb); + + d -= dFr*0.8; + + d = abs(d) + 0.002; + d *= 0.3; + + glow += 0.003/(0.001 + d*d*200.); + glow.b += 0.03/(0.03 + dPa*dPa*1.); + glow.gb += 0.03/(0.03 + dPb*dPb*1.); + + return d; +} + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col = vec3(0); + + vec3 ro = vec3(0); + ro.z += T; + + vec3 rd = normalize(vec3(uv, 1)); + + rd.xy *= rot(sin(T*0.5)*0.2); + + vec3 p = ro; + + float t = 0.; + + for(int i = 0; i < 90; i++){ + float d = map(p); + p += rd*d; + t += d; + } + + + col = col + 1.; + + col -= glow*0.01; + + col = pow(col,vec3(0.454545)); + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_blackle.glsl b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_blackle.glsl new file mode 100644 index 000000000..2329f33ba --- /dev/null +++ b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_blackle.glsl @@ -0,0 +1,113 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 erot(vec3 p, vec3 ax, float ro) { + return mix(dot(ax,p)*ax,p,cos(ro))+sin(ro)*cross(ax,p); +} + +float box(vec2 p, vec2 d) { + p = abs(p)-d; + return length(max(p,0.)) + min(0,max(p.x,p.y)); +} + +vec3 tree(vec3 p) { + for (int i = 0; i < 8; i++) { + //p.y -= 1.; + p.x = abs(p.x); + vec2 roter = normalize(vec2(.4,1.)); + p.xz -= roter*max(dot(p.xz,roter),0.)*2.; + p.z += .25; + p = erot(p,vec3(0,0,1),fGlobalTime); + } + return p; +} + +float pillar; +float scene(vec3 p) { + vec3 p2 = vec3(asin(sin(p.xy)*.5),p.z); + vec3 p3 = vec3(p.xy,p.z-1.25); + vec2 id = floor(p.xy/4.)*4.+2; + p3.xy -= id; + p3 = erot(p3, vec3(0,0,1),id.x); + p3=tree(p3); + vec2 crds = vec2(length(p3.xy),p3.z); + pillar = box(crds, vec2(.02,.25))-.01; + float ball = length(p2)-1; + return min(pillar,ball); +} + +vec3 norm(vec3 p) { + mat3 k = mat3(p,p,p)-mat3(.001); + return normalize(scene(p) - vec3( scene(k[0]),scene(k[1]),scene(k[2]) )); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + //uv *= 20.; + + //out_color.xyz = sin(vec3(box(tree(uv), vec2(0.,1.)))*20)*.5+.5; + + float t = cos(fGlobalTime)*.3; + float yrt = sin(t)*.2+.5; + vec3 cam = normalize(vec3(1,uv)); + vec3 init = vec3(-8,0,0); + + init = erot(init,vec3(0,1,0), yrt); + cam = erot(cam ,vec3(0,1,0), yrt); + init = erot(init,vec3(0,0,1), t); + cam = erot(cam, vec3(0,0,1), t); + init.x += asin(sin(fGlobalTime*.1))/.05; + vec3 p = init; + bool hit = false; + float dist; + for (int i = 0; i < 200 && !hit; i++) { + dist = scene(p); + hit = dist*dist < 1e-6; + p += dist*cam*.7; + } + bool pl = pillar == dist; + float fog = smoothstep(40.,10.,distance(p,init)); + vec3 n = norm(p); + vec3 r = reflect(cam,n); +#define AO(p, d, s) smoothstep(-s,s,scene(p+d*s)) + float ao = AO(p,n,.1)*AO(p,n,.3)*AO(p,n,.5); + float ro = AO(p,r,.1)*AO(p,r,.3); + + vec3 ldir = normalize(vec3(1)); + + vec3 p2 = p+ldir*.1; + float mdd = 100.; + for (int i = 0; i < 50; i++) { + float dd = scene(p2); + mdd = min(abs(dd),mdd); + p2 += dd*ldir; + } + float diff = length(sin(n*2.)*.4+.6)/sqrt(3.); + float spec = length(sin(r*5.)*.4+.6)/sqrt(3.); + float fres = 1.-abs(dot(cam,n))*.98; + float specpow = .2; + vec3 diffcol = vec3(.05,.05,.05); + if (pl) { + diffcol = vec3(.7,.05,.05); + specpow = 1.5; + ao *= smoothstep(-1.,1.,dot(ldir,n)); + ro *= smoothstep(-1.,0.,dot(ldir,n)); + } else { + ao *= smoothstep(0.,0.1,mdd); + } + + vec3 col = diffcol*diff*ao + pow(spec,10.)*fres*specpow*ro; + vec3 fogcol = vec3(.3,.4,.6); + out_color.xyz = sqrt(hit ? mix(fogcol,col,fog) : fogcol); +} \ No newline at end of file diff --git a/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_evvvvil.glsl b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_evvvvil.glsl new file mode 100644 index 000000000..c65ed71dd --- /dev/null +++ b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_evvvvil.glsl @@ -0,0 +1,118 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(.00035,-.00035); float t,tt,b,bb,g,gg;vec3 np,bp,op,pp,po,no,al,ld; +vec4 c=vec4(0,5,20,.2); +float bo(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +vec2 fb( vec3 p ) +{ + vec2 h,t=vec2(bo(p,vec3(2,5,2)),5); + t.x=min(t.x,length(p.xz)-.1); + t.x=max(abs(t.x)-.5,abs(p.y)-.5); + + h=vec2(bo(p,vec3(2,5,2)),6); + h.x=max(abs(h.x)-.3,abs(p.y)-.7); + t=t.x120) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>120) t.y=0; + return t; +} +#define a(d) clamp(mp(po+no*d).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +tt=mod(fGlobalTime,62.82); + c.z*=mix(1.,-.17,ceil(sin(tt))); + vec3 ro=vec3(cos(tt*c.w+c.x)*c.z,5.,sin(tt*c.w+c.x)*c.z), + cw=normalize(vec3(0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + co=fo=vec3(.15,.1,.13)-length(uv)*.1-rd.y*.1; + ld=normalize(vec3(.2,.3,-.5)); + + z=tr(ro,rd);t=z.x; + if(z.y>0){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x); + + + al=mix(vec3(.1,.2,.7),vec3(.1,.3,1.),sin(np.z)*.5+.5)+ceil(abs(sin(np.z*5))-.2)*.5; + if(z.y<5)al=vec3(0); + if(z.y>5)al=vec3(1); + float dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),40); + co=mix(sp+al*(a(.05)*a(.1)+.2)*(dif+s(2)),fo,min(fr,.5)); + co=mix(fo,co,exp(-.0002*t*t*t)); + } + + out_color = vec4(pow(co+g*.2*vec3(.1,.2,.7),vec3(.45)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_flopine.glsl b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_flopine.glsl new file mode 100644 index 000000000..c8fd1975f --- /dev/null +++ b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_flopine.glsl @@ -0,0 +1,111 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define PI 3.141592 +#define TAU 6.2831 + +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define mo(puv,d) puv = abs(puv)-d; if(puv.y>puv.x) puv=puv.yx +#define rep(puv, per, nm) puv = puv-per*clamp(round(puv/per),-nm,nm) + +#define BPM (100./60.) +#define time fGlobalTime +#define dt(speed) fract(time*speed) +#define switanim(sp) floor(sin(dt(sp)*TAU)+1.) +#define bouncy(sp) sqrt(abs(sin(dt(sp)*TAU))) + +float box (vec3 p, vec3 c) +{ + vec3 q = abs(p)-c; + return min(0.,max(q.x,max(q.y,q.z)))+length(max(q,0.)); +} + +float sc (vec3 p, float d) +{ + p = abs(p); + p = max(p,p.yzx); + return min(p.x,min(p.y,p.z))-d; +} + +int mat; float g1=0.; +float SDF (vec3 p) +{ + p.yz *= rot(-atan(1./sqrt(2.))); + p.xz *= rot(PI/4.); + + rep(p.yz, 8., 2.); + + mo(p.xz, vec2(1.)); + p.x -= 0.5; + float a = bouncy(BPM/8.)*3.; + p.xz += vec2(cos(a), sin(a*0.8)); + //p.xz *= rot(); + mo(p.yz, vec2(1.5)); + + float spheres = max(-sc(p,0.2),length(p)-0.8); + g1 += 0.001/(0.001+spheres*spheres); + float cages = max(-sc(p,0.8),box(p,vec3(1.))); + float d = min(spheres,cages); + + if (d == spheres) mat = 1; + if (d == cages) mat = 2; + + return d; +} + + +vec3 getnorm(vec3 p) +{vec2 eps = vec2(0.001,0.); + return normalize(SDF(p)-vec3(SDF(p-eps.xyy),SDF(p-eps.yxy),SDF(p-eps.yyx))); + } + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float size = (switanim(BPM/8.)< 0.5) ? 5.:25.; + + vec3 ro = vec3(uv*size,-50.), p = ro, rd = vec3(0.,0.,1.), col = vec3(0.), l = vec3(-1.,2.,-2.), n; + + bool hit = false; float shad = 0.; + +for(float i=0.; i<64.; i++) +{ + float d = SDF(p); + if (d<0.001) + { + n = getnorm(p); + hit = true; + if (mat == 2) rd = reflect(rd,n)*0.8+0.2; + //break; + } + p += d*rd*0.7; +} + +if (hit) +{ + //vec3 n = getnorm(p); + float lighting = max(dot(n,normalize(l)),0.); + if (mat == 1) col = mix(vec3(0.4,0.,0.5),vec3(0.,0.5,0.6),lighting); + if (mat == 2) col = vec3(0.); + } +float a = dt(BPM/8.)*TAU; + col += g1*texture(texNoise,uv*5.+vec2(cos(a),sin(a))).r*vec3(0.8,0.5,0.1); + out_color = vec4(sqrt(col),1.); +} \ No newline at end of file diff --git a/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_visy.glsl b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_visy.glsl new file mode 100644 index 000000000..b88626589 --- /dev/null +++ b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_visy.glsl @@ -0,0 +1,82 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const int STEPS = 255; +const float NEAR = 0.0; +const float FAR = 100.; + +const float EPSILON = 0.001; + +const float PI = 3.14159265; +const float PHI = 1.618033988; + +float hash1(float n) { return fract(sin(n)*43758.5453123); } + +float iTime; + +float scene(vec3 p, float r) { + vec3 pos = fract(p*vec3(cos(p.x*0.5),sin(p.y*0.9),0.1)*cos(iTime*0.1+p.z*4.)); + float result = length(pos-0.5) - r; + return result; +} + + +float march(vec3 eye, vec3 dir, float near, float far) { + float depth = near; + + for (int i = 0; i < STEPS; i++) { + float dist = scene(eye + depth * dir, 0.5); + + if (dist < EPSILON) { + return depth; + } + + depth+=dist; + if(depth >= far) { + return far; + } + } + + return far; +} + +void main(void) +{ + iTime = fGlobalTime; + + vec3 eye = vec3(0,0,5.0); + vec3 up = vec3(0,1,0); + vec3 right = vec3(1,0,0); + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + if (uv.x < 0.5) uv.x = 1.0-uv.x; + + uv*=2.0; + + float aspect = v2Resolution.x / v2Resolution.y; + + vec3 origin = (right * uv.x * aspect + up * uv.y - eye); + vec3 dir = normalize(cross(right, up)); + + float dist = march(origin, dir, NEAR, FAR); + + vec3 col = cos(abs(sin(iTime*0.1)*0.5)*dist*90.)-vec3(dist,dist,dist*0.2); + + col = clamp(col,0.0,1.0); + + out_color = vec4(col,1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_wrighter.glsl b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_wrighter.glsl new file mode 100644 index 000000000..07309e6e5 --- /dev/null +++ b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_wrighter.glsl @@ -0,0 +1,138 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasingfdgdgds +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define xor(a,b,c) min(max(a,-(b)), max(-(a) + c, b)) + + +vec4 intersectPlane(vec3 ro, vec3 rd, vec3 n){ + n = normalize(n); + + float dron = dot(ro, n); + if(dron > 0.){ + ro -= n * dron*2.; + rd = -rd; + } + + float nominator = dot(ro,n); + + float denominator = dot(rd,n); + + if (denominator > 1e-9) { + return vec4( -nominator / denominator, n); + + } else { + return vec4(99.); + } +} + +vec3 getRd(vec3 ro, vec3 lookAt, vec2 uv){ + vec3 dir = normalize(lookAt - ro); + vec3 right = normalize(cross(vec3(0,1,0), dir)); + vec3 up = normalize(cross(dir, right)); + return normalize(dir + right*uv.x + up*uv.y); +} +#define rot(j) mat2(cos(j),-sin(j),sin(j),cos(j)) + +#define T fGlobalTime + + +float map(vec3 p){ + float d = 10e6; + + + float m = sin(p.y*4. + T); + + d = length(p) - 0.1 + sin(p.y*15.)*0.1; + + d = xor(d,length(p.xz) + 0.01 + m *0.1,0.1); + + d = xor(d,max(length(p.x) + 0.01 + m *0.1, abs(p.y)),0.4); + + + + //d = xor(d, -length(p) - 0.1,0.6); + + + d -= 0.1; + d = abs(d) + 0.005 ; + + return d; +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + + vec3 col = vec3(0.3,0.1,0.1); + + col.xz += uv*0.2; + col.xy += uv*0.1; + + vec3 ro = vec3(0.3,0.4,-0.3)*1.6; + + + ro.xz *= rot(T*0.1 + cos(T + sin(T)*0.4)*0.2 - cos(T*0.4)*0.2); + + ro.xy *= rot(T*0.1 - cos(T - sin(T*0.5)*0.4)*0.3 - cos(T*0.2)*0.5); + + + + vec3 lookAt = vec3(0); + + vec3 rd = getRd(ro, lookAt, uv); + + + + float mi = -0.5; + float ma = 0.5; + float it = 40.; + + float d = 10e5; + float df = dFdx(uv.x); + + vec2 luv = uv; + + for(float i = 0.; i < it ; i++){ + vec3 lro = ro + vec3(0,mi + i*(ma - mi)/it,0); + float plane = intersectPlane(lro,rd,vec3(0,1,0)).x; + + vec3 p = lro + rd*plane; + + float m = map(vec3(p.x,i*(ma - mi)/it - 1.,p.z)); + + m -= texture(texNoise,p.xz).x*0.03 + texture(texNoise,p.xz*4.).x*0.01 + texture(texTex2,p.xz*1.).x*0.003; + + + if(m < d){ + luv = p.xz; + df = length(vec2(dFdx(plane),dFdy(plane))); + d = m; + } + + } + + + col += smoothstep(df,0.,d)*(1 - texture(texNoise,luv*1.).y*4.); + + col = pow(col,vec3(0.454545)); + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_yx.glsl b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_yx.glsl new file mode 100644 index 000000000..1d5a04bc8 --- /dev/null +++ b/shader_file_sources/2020_09_11_shader_royale_inercia_test/grabber_shaderroyale_yx.glsl @@ -0,0 +1,140 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define iTime (fGlobalTime*.3) + +#define pi uintBitsToFloat(0x40490FDB) + +mat2 rotate(float a) +{ + float c=cos(a),s=sin(a); + return mat2(c,s,-s,c); +} + +float tick(float t) +{ + t = fract(t); + t = smoothstep(0,1,t); + t = smoothstep(0,1,t); + return t; +} + +float square(vec2 p, float r) +{ + p=abs(p)-r; + return max(p.x,p.y); +} + +float squircle(vec2 p, float r) +{ + float c = length(p)-r; + float b = square(p,r); + return mix(c,b,tick(sin(iTime)*.5+.5)); +} + +float sdf(vec2 p, float i) +{ + float l = length(p); + + p=-abs(p); + p -= tick(iTime+l*.1); + + //p = sin(p*pi+iTime*10.)*.5; + + p = fract(p+.5)-.5; + + float T = iTime*6.+i*pi/3.+l*2.; + + float r = tick(sin(T)*.5+.5)*.2+.1; + float d = 1e9; + d = min(d,length(p.x)+sin(T)*.05); + d = min(d,length(p.y)+sin(T)*.05); + p *= rotate(T*.5); + d = min(d,abs(squircle(p,r))-.02); + return d; + //return abs(length(p)-1.)-.1; +} + +void main(void) +{ + const float speed = 2.; + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv *= 2; + + uv *= rotate(atan(uv.x,uv.y)*0.25); + uv += uv; + uv = abs(uv); + uv = vec2(max(uv.x,uv.y),min(uv.x,uv.y)); + //uv *= rotate(atan(uv.x,uv.y)*2); + + vec3 cam = vec3(0,0,-10); + vec3 dir = normalize(vec3(uv,5)); + + cam.yz *= rotate(sin(iTime*.3)); + dir.yz *= rotate(sin(iTime*.3)); + cam.xz *= rotate(iTime*.1); + dir.xz *= rotate(iTime*.1); + + float t1 = (cam.y/-dir.y); + float t2 = (cam.z/-dir.z); + float t3 = (cam.x/-dir.x); + t1=t1>0?t1:10000; + t2=t2>0?t2:10000; + t3=t3>0?t3:10000; + + vec2 uv1 = cam.xz+dir.xz*t1; + vec2 uv2 = cam.xy+dir.xy*t2; + vec2 uv3 = cam.yz+dir.yz*t3; + + //uv1 = fract(uv1+.5)-.5; + //uv2 = fract(uv2+.5)-.5; + //uv3 = fract(uv3+.5)-.5; + + float d1 = sdf(uv1,0); + float d2 = sdf(uv2,1); + float d3 = sdf(uv3,2); + + float f1 = pow(.9,t1); + float f2 = pow(.9,t2); + float f3 = pow(.9,t3); + + vec3 color = vec3(0); + color += vec3(smoothstep(0,abs(length(fwidth(uv1))*5),-d1)) * f1 * vec3(1,0,0); + color += vec3(smoothstep(0,abs(length(fwidth(uv2))*5),-d2)) * f2 * vec3(0,1,0); + color += vec3(smoothstep(0,abs(length(fwidth(uv3))*5),-d3)) * f3 * vec3(0,0,1); + + color += vec3(3,1,1)*.005/abs(d1) * f1; + color += vec3(1,3,1)*.005/abs(d2) * f2; + color += vec3(1,1,3)*.005/abs(d3) * f3; + + color.r += (sin(max(uv1.x,uv1.y))*.2+.2) * f1; + color.g += (sin(max(uv2.x,uv2.y))*.2+.2) * f2; + color.b += (sin(max(uv3.x,uv3.y))*.2+.2) * f3; + + color = pow(color,vec3(2.)); + + //color.xy = (color.xy-.5)*rotate(iTime)+.5; + + color /= 1.-dot(uv,uv)*.06; + //color = clamp(color,0,1); + //color *= 1.-dot(uv,uv)*.05; + + out_color = vec4(1.-color, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_FMS_Cat.glsl b/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_FMS_Cat.glsl new file mode 100644 index 000000000..7ec4fc524 --- /dev/null +++ b/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_FMS_Cat.glsl @@ -0,0 +1,204 @@ +#version 410 core + +#define BEAT (time*170.0/60.0) +#define PI 3.14159265 +#define time fGlobalTime +#define lofi(x,d) (floor((x)/(d))*(d)) +#define saturate(a) (clamp((a),0.,1.)) +#define linearstep(a,b,t) (saturate(((t)-(a))/((b)-(a)))) + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +float seed; + +layout(location = 0) out vec4 o; // out_color must be written in order to see anything + +float fractsin(float v) +{ + return fract(sin(v*121.445)*34.59); +} + +float rand() +{ + seed=fractsin(seed); + return seed; +} + +vec3 randsphere() +{ + float t=PI*2.*rand(); + float p=acos(rand()*2.-1.); + return vec3(sin(p)*sin(t),cos(p),sin(p)*cos(t)); +} + +float easeceil(float t, float fac) +{ + return floor(t)+.5+.5*cos(PI*exp(fac*fract(t))); +} + +mat2 rot2d(float t) +{ + return mat2(cos(t),-sin(t),sin(t),cos(t)); +} + +vec3 ifs(vec3 p,vec3 rot,vec3 shift) +{ + vec3 pt=abs(p); + vec3 t=shift; + for(int i=0;i<6;i++) + { + pt=abs(pt)-abs(lofi(t*pow(1.8,-float(i)),1.0/512.0)); + t.yz=rot2d(rot.x)*t.yz; + t.zx=rot2d(rot.y)*t.zx; + t.xy=rot2d(rot.z)*t.xy; + pt.xy=pt.x= 0 && scene <= 5 ? low low: 1.); + for(int i = 0; i < 10; i++){ + p.xz *= rot(t*(1+i*.1)); + p.yz *= rot(t*(.1+i*.25)); + p.xy *= rot(t*((1.+i)*.55)); + //p.x = abs(p.x)-1.5-(i*.1); + //p.z = abs(p.z)-2.-(i*.46); + p.x = smin(p.x, (4+i*.24)-p.x, 1.6); + p.z = smin(p.z , (1.5+i*.1)-p.z, 1.6); + + } +} + +float map(vec3 p){ + float d; + + // :') + float rp = 20. -sin(time+p.y*.25)*.5+.5; + float pl = p.y +rp; + vec3 p1 = p; + kk(p1); + float r1 = 1. high high high high high high high high high; + //float r2b = 2; + + //vec3 p2 = p; + //float bg = ec(p1, r1); + float e1 = ec(p1, r1); + + vec3 r2 = vec3(2.4, 5., 4.); + float c1 = sb(p1-vec3(1., 0., 1.), r2); + { + d = min(e1, c1); + //d = e1; + d = min(pl, d); + } + + return d; +} + +vec3 nm(vec3 p){ + vec2 e = vec2(0.01, 0.0); + return normalize( map(p)-vec3(map(p-e.xyy), map(p-e.yxy), map(p-e.yyx)) ); +} + + +void cam(inout vec3 c){ + //c.xy *= rot(time*2. low low); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float fov = 1.; + vec3 s = vec3(0., 0., -80); + vec3 t = vec3(0., 0., 0.); + // :0 OMG! VAMOS CTM!!!!!!!! + vec3 cz = normalize(t-s); + vec3 cx = normalize(cross(cz, vec3(0., -1., 0.))); + vec3 cy = normalize(cross(cz, cx)); + + //vec3 r = normalize(vec3(uv, fov)); + + vec3 r = normalize(cx*uv.x + cy*uv.y + cz*fov); + + + //cam(s); + //cam(t); + cam(r); + vec3 p = s; + float at; + float md = 0.000001; + for(int i = 0; i < 105.; i++){ + float d = map(p); + if(d < md) d = md; + p+=d*r; + at += .1/(.5+d); + } + + float fog = 1-max(length(p-s)/90., 0.); + vec3 l = vec3(0., 0., -2); + vec3 n = nm(p); + vec3 dif = vec3(clamp(dot(l, n), 0. ,1.)); + + vec3 col = dif; + + col *= at*vec3(.2, .8, .65)*.4; + col += mix(vec3(fog), vec3(1., 0.5, 0.5), .1); + col *= fog; + col = smoothstep(0., 1., col); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_evvvvil.glsl b/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_evvvvil.glsl new file mode 100644 index 000000000..ae22b8902 --- /dev/null +++ b/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_evvvvil.glsl @@ -0,0 +1,137 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(.0035,-.0035);float t,tt,b,bb,g,gg,ggg;vec3 np,bp,pp,op,po,no,al,ld; +float bo(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +vec4 c=vec4(0,12,15,.2); +vec2 fb( vec3 p) +{ + bp=p; + bp.x=abs(bp.x)-2; + bp.xz*=r2(.785); + b=sin(op.z*.4+tt); + vec2 h,t=vec2(bo(bp,vec3(2)),6); + t.x=abs(abs(t.x)-.5)-.3; + t.x=max(t.x,abs(p.y)-1); + t.x=max(t.x,-(abs(p.x)-1)); + + h=vec2(bo(bp,vec3(2,10,2)),5); + h.x=abs(abs(h.x)-.5)-.15; + h.x=max(h.x,abs(p.y)-2.-b); + h.x=max(h.x,-(abs(p.x)-1)); + h.x*=0.7; + t=t.x100) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>100) t.y=0; + return t; +} +#define a(d) clamp(mp(po+no*d).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +tt=mod(fGlobalTime,62.83); + //float f = texture( texFFT, d ).r * 100; + +vec3 ro=mix(vec3(cos(tt*c.w+c.x)*c.z,c.y,sin(tt*c.w+c.x)*c.z), +vec3(cos(tt*.3)*7,20,sin(tt*.5)*20),ceil(sin(tt*.5))), + cw=normalize(vec3(0,2,0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.6)),co,fo; + co=fo=vec3(.1,.12,.15)-length(uv)*.1-rd.y*.2; +ld=normalize(vec3(.2,.5,-.3)); + z=tr(ro,rd);t=z.x; + if(z.y>0){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x);al=vec3(1,.1,.2); + if(z.y<5) al=vec3(0); + if(z.y>5) al=vec3(1); + if(z.y>6) al=vec3(.5); + float dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),40); + co=mix(sp+al*(a(.05)*a(.1)+.2)*(dif+s(.4)*.2),fo,min(fr,.5)); + co=mix(fo,co,exp(-.00005*t*t*t)); + } + out_color = vec4(pow(co+g*.2*vec3(.1,.2,.9)+gg*.1*vec3(.7,.3,.2)+ggg*.2,vec3(.55)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_fizzer.glsl b/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_fizzer.glsl new file mode 100644 index 000000000..9762b2483 --- /dev/null +++ b/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_fizzer.glsl @@ -0,0 +1,147 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float seg(vec2 p,vec2 a,vec2 b){ + return distance(p,mix(a,b,clamp(dot(p-a,normalize(b-a))/distance(a,b),0.,1.))); + } + + vec2 path(float t){ + return vec2(cos(t*2.3),sin(t*2.2)+cos(t*4.112)*.4)*(2.+cos(t*1.7)*.5); + } + +vec3 trail(vec2 p,float tofs) + { + + vec3 out_color; + float d=1e4; + vec2 q0,q1; + int N=120; + for(int i=0;i<40;++i) + { + q1=path((fGlobalTime+tofs)-float(i)*.1)+vec2(cos((fGlobalTime+tofs)*.02+float(i) * .1)*.1, + sin((fGlobalTime+tofs)*.025+float(i) * .771))*.1; + // NOT raymarching!!! :) + if(i>0) + { + d=min(d,seg(p,q0,q1)-(1.-float(i)/float(N)*40.)*.1); + } + q0=q1; + } + + out_color.rgb=(.5+cos(vec3(1,2,3)*fGlobalTime)+tofs*4.5)/(max(1e-4,d)*10.+.01)*.5; + + out_color.rgb+=(.5+cos(vec3(1,2,3)*fGlobalTime))/(max(1e-4,d)*.1+1.)*.1;return out_color; + } + + + + bool ddd(vec3 p) + { + //p+=10; + //p=mod(p,20)-10; + return length(p.xy)>60; + } + +vec4 trace(vec3 ro,vec3 rd) + { + vec3 cell=floor(ro); + vec3 invrd=vec3(1)/rd; + vec3 t=((cell+max(sign(rd),0.))-ro)*invrd; + for(int i=0;i<250;++i) + { + vec3 pt=t; + int face=(t.xp6.x) p6.xz = p6.zx; + p6.x -= 22; + p6.z = abs(p6.z)-6-sin(bp.y*.03 + time)*5-sin(bp.y*.1 + time)*10; + p6.z = abs(p6.z)-3-sin(bp.y*.07 + time)*5-sin(bp.y*.2 + time*1.3)*4; + + float d7 = length(p6.xz) - 1; + d7=max(d7,0.2); + d = min(d, d7); + aco += vec3(0.8,0.5,1) * 0.008*exp(fract(-time*2)) / (0.05 + abs(d7)); + + + + + + d *= 0.7; + + p.x += tick(time, 1)*4; + + if(d<0.1) { + for(int i=1; i<11; ++i) { + + p-= 0.8; + float ss = 9/i; + vec3 id = repid(p, vec3(ss)); + vec3 p2 = repeat(p, vec3(ss)); + p2 += rnd(id)*0.2; + + float d2 = length(p2)-ss*0.3; + + + + d=max(d, -d2); + + p.xz *= rot(0.7); + p.yz *= rot(0.6); + } + + vec3 p4 = repeat(p + time*4, vec3(8)); + float d4 = max(abs(p4.x)-0.1, d); + aco += vec3(0.4,0.5,1.9) * 0.026 / (0.15 + abs(d4)); + float d5 = max(abs(p4.y)-0.1, d); + aco += vec3(0.8,0.5,0.4) * 0.016 / (0.15 + abs(d5)); + d = min(d, d4); + d = min(d, d5); +} + + return d; +} + +float gao(vec3 p, vec3 n, float s) { + + return clamp(map(p+n*s)/s, 0,1); +} + +float pulse = floor(time*0.5); + +void cam(inout vec3 p) { + + float t=time * 0.3 + curve(pulse, 0.6)*27.3; + p.yz *= rot(t*0.7); + p.xz *= rot(t); +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float alpha = 1.0; + float gd = 10+curve(time, 0.1)*50; + float se = curve(time - length(uv)*0.5, 0.15); + if(se>0.6) { + //uv.x += floor(uv.y*gd)*time*0.1; + vec2 tmp = smoothstep(0.8,0.9,fract(uv*gd)); + uv=floor(uv*gd)/gd; + + alpha = mix(1,max(tmp.x,tmp.y)*.5+.5,se); + } + + uv.y += pow(curve(time, 0.3),2.0)*0.2; + + uv *= 1.0+curve(time - length(uv), 0.3)*.3; + + if(curve(time, 2.0)>0.6) uv=abs(uv); + + vec3 s=vec3(0,0,-6 - curve(pulse, 0.5)*10); + s.x += (curve(pulse, 0.4)-.5)*8; + s.y += (curve(pulse, 0.7)-.5)*8; + vec3 r=normalize(vec3(-uv, 1 + sin(time*curve(pulse, 0.3)*2.0)*.5)); + + cam(s); + cam(r); + + vec3 p=s; + for(int i=0; i<100; ++i) { + float d=map(p); + if(d<0.001) break; + if(d>100.0) break; + p+=r*d; + } + + float fog=1-clamp(length(p-s)/100, 0,1); + + vec3 col=vec3(0); + + col += aco*.9; + + vec2 off=vec2(0.01,0); + vec3 n=normalize(map(p)-vec3(map(p-off.xyy), map(p-off.yxy), map(p-off.yyx))); + + float ao = gao(p,n,0.3); + ao *= gao(p,n,0.6)*.5+.5; + ao *= gao(p,n,1.2)*.5+.5; + + for(int i=1; i<30; ++i) { + float dd=0.1*i; + col += map(p+r*dd) * fog * 0.06 * vec3(dd+0.3,0.6,0.9+dd*.3) * ao; + } + + float fre=pow(1-abs(dot(n,r)), 3); + col += fre * vec3(1,.5,.7) * 1.4 * (0.5-0.5*n.y) * ao * fog; + + col += (1-fog) * mix(vec3(0), vec3(0.5,0.6,0.7), pow(abs(r.x), 4)) * 2; + col += (1-fog) * mix(vec3(0), vec3(0.7,0.6,0.3), pow(abs(r.z), 4)) * 2; + + float t5 = time*.3; + col.xz *= rot(t5); + col.xy *= rot(t5*.7); + col=abs(col); + + col *= alpha; + + vec3 bcol = col; + + if(abs(length(uv)-0.3-curve(floor(time*5)*.4, 0.4))<0.05) col = 1-col; + if(abs(length(uv)-0.4-curve(floor(time*5)*.4, 0.5))<0.05) col = 1-col; + + uv *= 0.4; + for(int i=0; i<3; ++i) { + + uv *= rot(0.7+time*0.2); + uv = abs(uv)-curve(time, 0.3)*0.3; + uv *= 1.2; + + if(abs(uv.y)<0.003) col = 1-col; + } + + //col = mix(col, bcol, clamp(curve(time, 0.3)*2,0,1)); + + col *= 1.2-length(uv); + + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_provod.glsl b/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_provod.glsl new file mode 100644 index 000000000..ea1af22a7 --- /dev/null +++ b/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_provod.glsl @@ -0,0 +1,160 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const vec3 E=vec3(0.,.01,1.); +float t = fGlobalTime; + +float fft(float f) {f+=.5; return texture(texFFT, f/textureSize(texFFT,0)).r; } +float ffti(float f) {f+=.5; return texture(texFFTIntegrated, f/textureSize(texFFT,0)).r; } +float ffts(float f) {f+=.5; return texture(texFFTSmoothed, f/textureSize(texFFT,0)).r; } + +float h1(float v){return fract(sin(v)*55789.54387);} +float ns(vec2 v){return texture(texNoise,(v+.5)/textureSize(texNoise,0)).r;} + +mat2 rm(float a){return mat2(cos(a),sin(a),-sin(a),cos(a));} + +float rep1(float p, float s){return mod(p,s) - s*.5;} +vec3 rep3(vec3 p, vec3 s){return mod(p,s) - s*.5;} +float vmax(vec3 v) { return max(max(v.x,v.y),v.z); } +float box3(vec3 p, vec3 s){return vmax(abs(p) -s);} + +float dbox= 1e6; +float dbl = 1e6; +float w(vec3 p) { + dbox = -box3(p,vec3(6.)); + float R = length(p); + + float lsz = .4; + float maxl = 8.; + + float r = mod(R - ffti(4.)*.3, lsz * maxl); + + float Rlay = floor(R/lsz)+1.; + float lay = floor(r/lsz)+1.; + + p.zy *= rm(t*.3+ffti(lay)*.04); + p.xz *= rm(t*.5+ffti(lay)*.03); + + float pr = rep1(r, lsz); + float ar = abs(pr); + + dbl = ar - .03*Rlay; + dbl = max(dbl, abs(p.z) - .03*Rlay); + dbl += ns(vec2(atan(p.x,p.y)*4., p.z)*100.)*.04*Rlay; + + dbl = min(dbl, lsz * .5 - ar + .1); + dbl = max(dbl, R - maxl*lsz); + + //return min(dbl, dbox); + return dbl; + //return max(dbl, -(length(p)-1.)); +} + +vec3 wn(vec3 p) { + return normalize( + vec3(w(p+E.yxx),w(p+E.xyx),w(p+E.xxy)) + -w(p)); +} + +float tr(vec3 o, vec3 D, float l, float L) { + for (float i = 0.0; i < 200.; ++i) { + float d = w(o+D*l); + l +=d; + if (d< .001*l || l > L) break; + } + + return l; +} + +float occ(vec3 p, vec3 n, float N, float L) { + float v=1.; + L/=N; + for(float i=1.;i FAR){ + break; + } + } + + vec3 col = vec3(0.0); + if( t <= FAR){ + col = vec3(0.8, 0.3, 0.5); + + float m = mod(p.z+time*8.0, 8.0)-4.0; + if(m > 0.0 && m > 2.0){ + col = col.bgr; + } + else if(m < 0.0 && m < -2.0){ + col = col.gbb; + } + /*else if((m > 0.0 && m > 1.0) ||(m < 0.0 && m < -1.0)){ + col = vec3 (0.0); + }*/ + if(id == 1){ + col = vec3(0.4, 0.2, 0.5); + } + } + float f = texture(texFFTSmoothed, pallo(p, 0.8)-offset).r*500.0; + return col*t*0.5 * (f+vec3(0.2, 0.6, 0.6)); +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv = -1.0 + 2.0*uv; + uv.x *= v2Resolution.x/v2Resolution.y; + + vec3 ro = vec3(0.0, 0.0, 6.5-mod(time, 4.0)); + vec3 rt = vec3(0.0, 0.0, -FAR); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z)*vec3(uv, radians(50.0))); + vec3 col = march(ro, rd); + + + /*uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 );*/ + + col = smoothstep(0.2, 0.9, col); + col = pow(col, 1.0/vec3(2.2)); + out_color = vec4(col, 1.0);//f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_wrighter.glsl b/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_wrighter.glsl new file mode 100644 index 000000000..b874139cc --- /dev/null +++ b/shader_file_sources/2020_10_02_shader_royale_inercia/grabber_inerciaroyale_wrighter.glsl @@ -0,0 +1,193 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define T fGlobalTime + +#define pi acos(-1.) +#define xor(a,b,e) min( max(a, -b), max(-a + e, b)) + +#define rot(j) mat2(cos(j),-sin(j),sin(j),cos(j)) + +#define pal(a,b,c,d,e) ((a) + (b)*sin((c)*(d) + (e))) + +#define kick(T,k) floor(T) + pow(fract(T),k) + +#define dmin(a,b) a.x < b.x ? a : b + +#define pmod(p,md) mod(p - 0.5*md, md) - 0.5*md + +vec3 glow = vec3(0); + +float sdBox(vec3 p, vec3 s){ + p = abs(p) - s; + return max(p.x,max(p.y,p.z)); +} + +vec2 map(vec3 p){ + vec2 d = vec2(10e5); + + float id = 0.; + + p.y = pmod(p.y, 9.); + + float dc = length(p) - 0.2; + + d.x = min(d.x,dc); + + + p.x += pow(abs(sin(p.x + T)),20.)*0.5; + + for(int i = 0; i < 6; i++){ + p = abs(p) - vec3(0.2, .8 + sin(kick(T*0.5,5.))*0.5, float(mod(i,2) - 1.)*0.2)+ sin(T)*0.1; + + p.xz *= rot(0.25*pi); + + + float od = xor(d.x,sdBox(p,vec3(0.25)), -0.5); + + //od = xor(d.x,length(p.yx), -0.2); + + + //d.x = xor(d.x,length(p.yz) - 0.4,4.2); + if(od < d.x){ + d.x = od; + id++; + } + } + + d.x = abs(d.x*0.6) + 0.004; + + + glow += 0.2/(0.005 + d.x*d.x*40.)*pal(0.5,0.5,vec3(5 + kick(T*0.2,4.),1,2), 1., id + T*0.2); + + vec4 q = vec4(p,1); + + + for(int i = 0; i < 2; i++){ + p = abs(p) - 0.; + + p.xz *= rot(0.5*pi); + + + float od = xor(d.x,length(p.xz) - 0.01,0.42); + od = xor(od,length(p.xy) - 0.01,0.12); + + if (od < d.x){ + d.y = 4.; + d.x = od; + + d.x = xor(d.x,length(p) - .06,-1.52); + + } + + } + + //d = dmin(d,vec2(length(p.xy) - 0.01,4.)); + + //d = dmin(d,vec2(length(p.zy) - 0.01,4.)); + + + p -= 0.5; + d = dmin(d,vec2(length(p) - 0.51,4.)); + + + q /= dot(q.xyz,q.xyz); + + for(int i = 0; i < 5; i++){ + float dpp = dot(q.xyz,q.xyz); + //q.xyz = abs(q.xyz) - vec3(0.1,0.5,0.6); + q.xyz = pmod(q.xyz, 1.5); + + //q.xz *= rot(0.25*pi + q /= dpp; + + + } + + + float db = length(q.xy)*q.w; + //db = abs(db*0.6) + 0.002; + + //d = dmin(d,vec2(db,4.)); + + //glow -= 0.1/(0.005 + db*db*40.)*pal(0.5,0.5,vec3(1,2,3), 1., 1); + + + return d; +} + +vec3 getnormal(vec3 p){ + vec2 t = vec2(0.001,0.); + return normalize(p - vec3( + map(p-t.xyy).x, + map(p-t.yxy).x, + map(p-t.yyx).x + )); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col = vec3(0.9,0.7 + length(uv)*sin(kick(T,2.))*.2,0.2); + + // cam + vec3 ro = vec3(0); + ro.x = sin(cos(T)); + ro.y = cos(T*0.4 + sin(T)); + ro.z = sin(cos(T*0.5)); + ro = normalize(ro)*1.9; + + ro.y += T; + + vec3 lookAt = vec3(0,0 + ro.y + 2.,0); + vec3 dir = normalize(lookAt - ro); + vec3 right = normalize(cross(vec3(0,1,0), dir)); + vec3 up = normalize(cross(dir,right)); + vec3 rd = normalize(dir + right*uv.x + up*uv.y); + + + + vec3 p = ro; + float t = 0.; + vec2 d; + + + for(int i = 0;i < 130; i++){ + d = map(p); + + if(d.x < 0.001){ + if (d.y == 4){ + vec3 n = getnormal(p); + //col += 0.1; + + } + + } + + p += rd*d.x; + + } + + col -= glow*0.001; + + col = pow(col,vec3(0.454545)); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_Exca.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_Exca.glsl new file mode 100644 index 000000000..d0ce6620d --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_Exca.glsl @@ -0,0 +1,150 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D a_logo; +uniform sampler2D asm_inverse; +uniform sampler2D asm_text; +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float fft() +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv.x = length(uv.x-0.5); + float fft = texture(texFFTSmoothed, floor(uv.x*50.)/50.).r*25.; + fft *= step(uv.y, fft); + + return fft; + +} + +vec3 repeat( vec3 p , vec3 q) +{ + return mod(p + 0.5*q, q)-0.5*q; +} + +float ground(vec3 p, float off) +{ + return p.y - off; +} + +float sphere( vec3 p, float r) +{ + return length(p)-r; +} + +float box( vec3 p, vec3 b) +{ + vec3 q = abs(p)-b; + return length(max(q,0))+ + min(max(q.x,max(q.y, q.z)),0); +} + +vec2 U( vec2 a, vec2 b) +{ + return vec2( + min(a.x, b.x), + step(a.x, b.x)*a.y + step(b.x, a.x)*b.y + ); +} + +vec2 map( vec3 p, float ffts, float ffta) +{ + float h = texture(texNoise, p.xz*0.1).r*1.; + h+=abs( + sin(p.x+fGlobalTime )*0.05+ + sin(p.x*2.+p.z+fGlobalTime*2. )*0.03 + ); + h*=1.+ffts; + vec2 gr1 = vec2(ground(p , h), h); + + vec2 s1 = vec2( + sphere( p+vec3(0,-1,0), 0.5), + 3. + ); + + vec2 b1 = vec2( + box( repeat(p,vec3(8,0,8)) + vec3(0, -1, 0), vec3(0.4)), + 3. + ); + + b1 = mix(s1, b1, ffts*10.); + + vec2 union = U(b1,gr1); + + return union;//gr1; +} + + + +vec3 getcam( vec2 uv, vec3 cam, vec3 target, float fov) +{ + vec3 forward = normalize( target - cam); + vec3 right = normalize( cross(vec3(0,1,0), forward)); + vec3 up = normalize( cross(forward, right)); + + return normalize( vec3( fov*forward + right*uv.x + up * uv.y )); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float fftS = texture(texFFTSmoothed, 0.15).r*25.; + float fftA = texture(texFFT, 0.15).r*25.; + + vec3 col = vec3(0.); + + float time = fGlobalTime*3.; + + vec3 cam = vec3( + sin(time*0.1)*3., + sin(time*0.1)*0.5+3.7, + cos(time*0.1)*3 + ); + vec3 target = vec3( + 0, + sin(time*0.1)*0.5+1.0, + 0-time*0. + ); + vec3 rd = getcam(uv, cam, target, 0.8); + + + + float t = 0; + for(int i = 0; i < 100; i++) + { + vec3 p = cam + rd*t; + vec2 r = map(p, fftS, fftA); + if(r.x < 0.01) + { + if(r.y < 0.5) + col = mix( vec3(0.05, 0.01,0.)+smoothstep(0.05,0.5,fftS), vec3(0.4,0.5,1.0),r.y*2.); + else if(r.y > 2.5) + col = vec3(1.,0,0); + break; + } + t += r.x; + if(t> 30.) break; + } + + col = mix( col, vec3(0.2,0.3,0.6), smoothstep(5., 30., t)); + + + float ffbar = fft(); + col=mix(col, col+fft()*vec3(1,1,1), step(0.1,ffbar)); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_FMS_Cat.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_FMS_Cat.glsl new file mode 100644 index 000000000..47468795d --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_FMS_Cat.glsl @@ -0,0 +1,327 @@ +#version 410 core + +#define PI 3.14159265 +#define saturate(x) clamp(x,0.,1.) +#define linearstep(a,b,t) ( saturate( ( (t)-(a) ) / ( (b)-(a) ) ) ) +#define lofi(i,j) ( floor( (i) / (j) ) * (j) ) + +float time; +float seed; + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float fractSin(float t){ + return fract(sin(t*114.514)*1919.810); +} + +float random(){ + seed=fractSin(seed); + return seed; +} + +vec3 randomSphere(){ + float a=2.*PI*random(); + float b=acos(random()*2.-1.); + return vec3(cos(a)*sin(b),cos(b),sin(a)*sin(b)); +} + +vec3 randomHemisphere(vec3 n){ + vec3 r=randomSphere(); + return dot(r,n)<.0?-r:r; +} + +mat2 r2d(float t){ + return mat2(cos(t),sin(t),-sin(t),cos(t)); +} + +struct Heck{ + vec2 coord; + vec2 cell; + float len; +}; + +vec2 uv2heck(vec2 v){ + v.y*=2./sqrt(3.); + v.x+=v.y*.5; + return v; +} + +vec2 heck2uv(vec2 v){ + v.y/=2./sqrt(3.); + v.x-=v.y*.5; + return v; +} + +Heck doHeck(vec2 v,float scale){ + Heck heck; + + v=uv2heck(v)*scale; + + heck.cell.x=lofi(v.x,1.); + heck.cell.y=lofi(v.y+heck.cell.x+2.0,3.)-heck.cell.x-2.0; + heck.coord=v-heck.cell-vec2(0,1); + + bool a=heck.coord.x 2.){ + float det = texture(texFFTSmoothed, 0.01).x* 60.; + uv = floor(uv/det)*det; + } + + vec3 s = vec3(0., 0., -25.); + float fov =.7-sin(time*.5)*.25-.25; + vec3 r = normalize(vec3(-uv, fov)); + vec3 col = vec3(0.); + + cam(s); + cam(r); + + + vec3 p = s; + float i = 0.; + float pred = 1.; + // NO LE PUEDO BAJAR EL BRILLO CTM XDDDD + for(;i < 100.;i++){ + float d = map(p); + if(d<0.0001){ + float fog = 1.-i/200.; + vec3 n = nm(p); + vec3 l = normalize(vec3(-1.)); + float toc = floor(mod(time, 10.)); + float pi = acos(-1.); + if(toc < 3 && toc > 1) + col += .6-max(dot(l,n),0.)*fog*vec3(.45, 0.3456, 0.4)*pi*sin(time*5.)*.4; + if(toc > 3){ + col += .5-max(dot(l,n),0.)*vec3(.456, .456, .2)*pi*sin(time)*5.*.2; + } + + col += .5-max(dot(l,n),0.)*vec3(.4, .3, .3)*pi*sin(time)*5.*.26; + col += .1/(100.+i)*vec3(0.4, 0.3,0.65)*sin(time)*.94-.1; + col *= .6; + col += 1.-length(p)/65.; + col += at*.005*vec3(1., .5,.2); + pred *= 0.9; + r = reflect(n, l); + d = 0.01; + if(pred < 0.001) break; + } + if(d>100.)break; + p+=d*r; + } + + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_NR4.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_NR4.glsl new file mode 100644 index 000000000..2d4fa8fdb --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_NR4.glsl @@ -0,0 +1,136 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +void rand(in vec2 uv, out float d){ + //d = fract(sin( +} + +float iScale; +const vec3 c = vec3(1.,0.,-1.); + +void dbox3(in vec3 x, in vec3 b, out float d) { + vec3 da = abs(x)-b; + d = length(max(da, c.yyy))+min(max(max(da.x,da.y),da.z), 0.); +} + +void add(in vec2 sda, in vec2 sdb, out vec2 sdf) { + sdf = sda.x 20) break; + } + + return c0 + c1; +} + +void main(void) +{ + + float n = texture(texFFTSmoothed, 0).x; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv = sin(fGlobalTime / 2) > 0 ? uv : abs(uv); + + vec3 ro= vec3(cos(fGlobalTime * 4) / 4 + 0.2,0,1.2 + n * 10); + vec3 rd = normalize(vec3(uv, 0) - ro); + + out_color = vec4( tr(ro, rd), 1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_branch.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_branch.glsl new file mode 100644 index 000000000..f466f58c7 --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_branch.glsl @@ -0,0 +1,147 @@ +#version 410 core +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing + +#define iTime fGlobalTime +#define iResolution v2Resolution +#define fragCoord gl_FragCoord +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float sdSphere(vec3 p, float s){ + return length(p) - s; +} +float sdBox(vec3 p, vec3 b) { + vec3 q = abs(p) - b; + + return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0); +} + +float map(vec3 p) { + float d = 1e10; + float t= mod(iTime,20.); + for(float i=1.0; i < 24.; i++) { + p.z *= 0.1; + if(t<5.0) { + p.x += sin(p.z * 12. + iTime + i) * i; // state 0 + p.y += cos(p.z * 12. + iTime + i) * i; // state 1 + d = min(d, sdSphere(p, 0.5 + sin(i * 12. + iTime + p.z) + texture(texFFTSmoothed,0.3).x*12.)); + } + else if(t<10.0) { + float angle = i/32. + (p.z * 12.) * 0.2; + float s= sin(angle); + float c =cos(angle); + mat2 rotMat = mat2(c,s,-s,c); + p.xy *= rotMat; + p.x += sin(p.z * 12. + iTime + i) * i; // state 0 + p.y += cos(p.z * 12. + iTime + i) * i; // state 1 + + d = min(d, sdBox(p, vec3( 0.2 + sin(i * 3. + iTime + p.z) ) + texture(texFFTSmoothed,0.1).x*0.3 )); + } + else if(t<15.0) { + float angle = i/32. + (p.z * 12.) * 0.2; + float s= sin(angle); + float c =cos(angle); + mat2 rotMat = mat2(c,s,-s,c); + p.xy *= rotMat; + p.x += sin(p.z * 12.) * min(p.z*0.2,6.); // state 0 + p.y += cos(p.z * 12.) * min(p.z*0.2,6.); // state 1 + + d = min(d, sdBox(p, vec3( 0.2 + sin(i * 3. + iTime + p.z) + texture(texFFTSmoothed,0.3).x*1.2 ) )); + } else { + p.x += sin(p.z * 12. + iTime + i); // state 0 + p.y += cos(p.z * 12. + iTime + i) * i * 0.2; // state 1 + d = min(d, sdSphere(p, 0.5 )); + } + + } + return d; +} + +float rand(vec2 c) { + return fract(sin(dot(c.xy,vec2(12.9898,78.233))) * 41231.51222); + //i don't remember exactly... hopefully this is good enough + +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5 ; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv = (fragCoord.xy - 0.5 * iResolution.xy) / iResolution.y; + vec2 uv2=uv; + float vessa = mod(iTime*2.,13.121); + if(vessa<3.0) { + uv += 0.333; + } + if(vessa>10.0) { + uv -= 0.333; + } + float kickoff = floor(mod(iTime,12.0)); + if(kickoff < 2.) { + kickoff = 12.; + } + if(kickoff < 4.) { + kickoff = -1.; + } + if(mod(iTime*0.6,12.0)<3.0) { + float angle = rand(floor(uv*1.5 + 0.5)) * 3. + iTime * 4.; + float s= sin(angle); + float c =cos(angle); + mat2 rotMat = mat2(c,s,-s,c); + uv *=rotMat; + } + + + float vignette = 1.0 / max( 0.25 + 0.9 * dot(uv,uv), 1.0); + vec3 rayOrigin = vec3(0.); + vec3 rayDirection = normalize(vec3(uv*(1.333 + 0.5*sin(iTime+length(uv) * 0.2) + kickoff),1.0)); + vec3 col = vec3(0.0); + float dist = 0.0; + float t = 0.01; + float d; + vec3 p = vec3(0.0); + + + + for(int i=0; i <64; i++) { + p = rayOrigin + t * rayDirection; + d = map(p); + t +=d; + + + } + if(d < 0.01) { + col = vec3(1.0) * floor(mod(p.z*4. + iTime * 12., 2.0)); + col = mix(col, vec3(0.0), max(0.0, p.z - 2. - texture(texFFT, 0.4).r * 12. ) * 0.05); + } + float homer = mod(iTime*0.333 + floor(mod(uv2.x + 0.5,2.0)),4.); + if(homer<1.0) { + col = vec3(1.0,0.5,0.7) - col; + } + if(homer<2.0) { + col = vec3(0.5,0.2,0.7) - col; + } + if(homer<3.0) { + col = vec3(0.5,0.7,0.7) * col; + } + if(length(uv2.x)<0.80 ) { + if(length(uv2.x)>0.795) { + col = vec3(0.15); + } + } + if(length(uv2.y)<0.47 ) { + if(length(uv2.y)>0.465) { + col = vec3(0.15); + } + } + if(mod(iTime*12.,4.)<1.0 && mod(iTime,12.) < 2.0) { + col.r = floor(col.r*3.) / 2.; + col.g = floor(col.g*3.) / 2; + col.b = floor(col.b*3.) / 2; + } + out_color = vec4(col,1.0) * vignette + rand(uv2 + mod(iTime*12.,3.0))*0.13 ; +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_cosamentale.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_cosamentale.glsl new file mode 100644 index 000000000..997fe0c67 --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_cosamentale.glsl @@ -0,0 +1,125 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float time = fGlobalTime; +mat2 rot(float t){ float c = cos(t); float s = sin(t); return mat2(c,-s,s,c);} +float hs(vec2 t){return fract(sin(dot((t),vec2(874.,45.)))*7845.236+time);} +float rd(float t){return fract(sin(dot(floor(t),45.))*7845.236);} +float no (float t){ return mix(rd(t),rd(t+1.),smoothstep(0.,1.,fract(t)));} +float it(float t){float r =0.; float a = 0.5; for (int i = 0 ; i < 3 ;i++){ + r += no(t/a)*a; a*=0.5;} return r;} + vec3 rer (vec3 p, float r){float at = atan(p.z,p.x); + float t = 6.28/r; + float a = mod(at,t)-0.5*t; + vec2 v = vec2(cos(a),sin(a))*length(p.xz); + return vec3 (v.x,p.y,v.y);} + float cap (vec3 p , vec3 a, vec3 b){ vec3 pa = p-a; vec3 ba = b-a; + float h = clamp(dot(pa,ba)/dot(ba,ba),0.,1.); + return length ( pa-ba*h);} +float no(vec3 p) { vec3 f = floor(p); p = smoothstep(0.,1.,fract(p)); +vec3 se = vec3 (7.,65.,154.); +vec4 v1 = dot(f,se)+vec4(0.,se.y,se.z,se.y+se.z); +vec4 v2 = mix(fract(sin(v1)*4587.236), fract(sin(v1+se.x)*4587.236) ,p.x); + vec2 v3 = mix(v2.xz,v2.yw,p.y); + return mix(v3.x,v3.y,p.z);} + float fmb (vec3 p){ return smoothstep(0.,1.,no(p+no(p)*8.));} +float map(vec3 p,float v4) { vec3 b = p; + for (int i = 0 ; i < 11; i++){ + b = vec3(1.8)*abs(b/dot(b,b))-vec3(0.7,0.3,0.6); + } + float v1 = length(b)-0.5+v4*0.1; + float v2 = length(p)-6.; + return max(v1,-v2); + } + + float zl (vec3 p,float m1){ p = rer(p,4.); + return smoothstep(3.+pow(length(p.y),1.1)*0.7,0.,length(p.xz))*5.5+smoothstep(3.+m1*10.,0.,length(p))*15.+smoothstep(0.7,0.1,length(p.zy))*10.;} + + + float zo (vec3 p, float v5 , float m1){ + vec3 p2 = p; + p.y += sin(p.x+p.z+time*3.); + p.xz *= rot(time*-4.+p.y*0.7*sign(p.y)); + float tt = no(p*3.); + p.y = abs(p.y); + p = rer (p,4.); + return smoothstep(0.,tt*0.9,cap(p+vec3(tt*-2.,0.,0.),vec3(0.,1.5,0.),vec3 (0.,8.,0.)))*smoothstep(0.1+m1*5.,0.7+m1*5.,length(p2));} + /* vec3 n (float p) {vec2 e =vec2(0.01,0.); + return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx)));} */ +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float m1 = smoothstep(0.3,0.7,sin(time*0.3)*0.5+0.5); + float v4 = it(time*1.5); + float v1 = pow(it(time*4.),1.)*1.; + float v2 = v4*6.28*mix(1.,0.3,m1); + float v3 = it(time*1.1)*1.3*mix(1.,0.3,m1); + + float v5 = it(time); + float m2 = sin (time*5.)*0.5+0.5; + +vec3 e = vec3(0.,0.,-5.5); + vec3 e2 = vec3(0.,0.,mix(-200.,-85.5,m1)); + vec3 r = normalize(vec3(uv,0.5+v4*0.5)); + e.xz *= rot(v2); + r.xz *= rot(v2); + e.yz *= rot(v3); + r.yz *= rot(v3); + e2.xz *= rot(v2); + + e2.yz *= rot(v3); + + + vec3 r2 = r; + + int n1 = int(mix(20.,0.,m1)); + float fstp = 10./n1; + vec3 fr = fstp*r; + float prog = fstp+mix(0.8,1.,hs(uv)); + vec3 lp = e+r*prog; + float val; float opa = 1.; + for( int i = 0 ; i < n1 ; i++){ + if(prog > 10.){break;} + if(opa<0.01){break;} + vec3 lp2 = lp; + lp2.xz *= rot(lp.y*0.5+time*0.1); + opa *= zo(lp,v5,m1)*mix(0.95,1.01,fmb(lp2*3.)); + val += zl(lp,m1)*opa; + lp += fr; + prog += fstp; + } + float c1 = val*0.015*v1; + c1 += opa*0.15; + + vec3 p = e2; + float dd =0.; + int n2 = int(mix(0.,64.,m1)); + for(int i = 0 ; i 80.){break;} + if(d<0.01){break;} + p += r*d; + dd +=d; + } + float s1 = smoothstep(20.,80.,dd); + float r1 =mix(c1,s1,m1); + vec3 c2 = mix(vec3(1.),3.*abs(1.-2.*fract(r1*0.7+0.3+v4*0.1+length(uv)*0.2+vec3(0.,-1./3.,1./3.)))-1.,0.2)*r1; + vec3 c3 = smoothstep(vec3(-0.1,-0.1,-0.05),vec3(1.,1.,1.),c2); + vec3 c4 = mix(c3,1.-c3,smoothstep(0.7,0.8,it(time*8.))); + out_color = vec4(c4,0.); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_dok.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_dok.glsl new file mode 100644 index 000000000..9204740a7 --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_dok.glsl @@ -0,0 +1,94 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform float fmknobB1; +uniform float fmknobB2; +uniform float fmknobB3; +uniform float fmknobB4; +uniform float fmknobB5; +uniform float fmknobB6; +uniform float fmknobC1; +uniform float fmknobC2; +uniform float fmknobC3; +uniform float fmknobC4; +uniform float fmknobC5; +uniform float fmknobC6; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define PI2 (2*3.1416) + +#define vol 0.001 + +mat2 rot2(float a) {return mat2(cos(a), -sin(a), sin(a), cos(a));} + +float ht(vec2 uv, float a, float v) +{ + uv *= 10; + uv *= rot2(a); + uv.x += 0.5 * floor(uv.y); + return step(length(fract(uv) - 0.5), v / 2); +} + +void main(void) +{ + vec2 uv = (gl_FragCoord.xy - 0.5 * v2Resolution.xy) / v2Resolution.y; + vec3 col = vec3(0); + vec2 sc = uv; + vec2 pv = uv; + vec2 tv = uv; + vec2 cv= uv; + + float circle = length(cv) - fGlobalTime + texture(texFFTIntegrated, 0.01).r * 100 * vol; + float dist_2 = 2.5 * sin(fGlobalTime / 100.0) * tan(fGlobalTime / 2); + for (int i= 0 ;i < 10; i++) { + float a = PI2 * (i/10.0); + cv.x += dist_2* sin(fGlobalTime + a); + cv.y += dist_2 * cos(fGlobalTime +a); + circle = min(circle, + length(cv) - fGlobalTime + texture(texFFTIntegrated, 0.01).r * 100 * vol + ); + } + + float dist = 1.5; + tv.x += 0.001 * tan(fGlobalTime); + tv.x += dist * sin(fGlobalTime); + tv.y += dist * cos(fGlobalTime); + + /* zoom */ + uv *= mix(0.5, 2.0, 0.5 + 0.5 * sin(fGlobalTime / 10)); + /* roto */ + uv *= rot2(0.0025 * fGlobalTime); + + float speed = fGlobalTime; + uv.y += 0.05 * sin(uv.x * 1.0 * PI2+ speed); + uv.y = fract(uv.y * 10.0); + col.r = ht(uv, PI2 * sin(fGlobalTime / 10.0), uv.y); + + col.rgb = col.rrr; + float lsize = 10.0 * (0.5 + 0.5 * sin(fGlobalTime / 10)); + col.rgb *= step(mix(0.4, 0.4, 0.5 + 0.5 * sin(vol * texture(texFFTIntegrated, 0.01).r)), fract(length(tv * lsize))); + if (fract(circle) < 0.5) + col.rgb = col.rgb; + else + col.rgb = 1.0 - col.rrr; + + + if ((texture(texFFTIntegrated, 0.01).r * vol) > 0.8) + col.rgb = 1.0 - col.rgb; + + vec2 off; + off.x += dist * sin(fGlobalTime / 10); + off.y += dist * cos(fGlobalTime / 10); + +// sc = vec2(length(sc), atan(sc.x,sc.y)/PI2)); + if (ht(sc+off, 0, length(sc)) > 0.5) + col = 1.0 - col; + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_monsieursoleil.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_monsieursoleil.glsl new file mode 100644 index 000000000..c49f8a1e7 --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_monsieursoleil.glsl @@ -0,0 +1,195 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define mod01 floor(mod(time, 4.0)) +#define mod02 floor(mod(time, 4.0)) +#define mod03 floor(mod(time * 2.0, 4.0)) +#define mod04 floor(mod(time * 2.0, 8.0)) + +struct matter +{ + float m; + vec3 col; + int type; + float dist; + float glow; + bool reflected; + +}; + +mat2 rot(float a) +{ + float ca = cos(a); + float sa = sin(a); + + return mat2(ca, sa, -sa, ca); +} + +float box(vec3 p, vec3 s) +{ + p = abs(p) - s; + return max(p.x, max(p.y, p.z)); +} + +vec2 repeat(vec2 p, float rep) +{ + return (fract(abs(p)/rep - 0.5) - 0.5) * rep; +} + +vec2 id(vec2 p, float rep) +{ + return (floor(abs(p)/rep - 0.5) - 0.5) * rep; +} + +float rnd(vec2 x) +{ + return fract(dot(sin(x * 352.1263 + x.yx * 5623.2365), vec2(451.2365))); +} + +float rnd(float x) +{ + return fract(sin(x * 352.1263 + x * 5623.2365)); +} + +float curve(float x) +{ + return mix(rnd(x), rnd(x + 1.0), fract(time)); +} + +void map(inout matter mat, vec3 p) +{ + p.xy *= rot( p.z * (0.001 - sin(abs(time * 0.000025)) * 0.075) + (mod03 * 8.5) + time * 1.25) * 2.25; + + float repV = 0.25 + sin(abs(mod03 * 0.1)) * 2.0; + vec3 p01 = p, p02 = p, p03 = p, p04 = p; + + vec2 id0111 = id(p01.xz, repV * 22.0); + + vec2 id011 = id(p01.xz, repV * 4.0); + vec2 id01 = id(p01.xz, repV); + p01.xz = repeat(p01.xz, repV); + + float rnd01 = rnd(id01 * 32.0); + float rnd011 = rnd(id011 * 32.0); + float rnd0111 = rnd(id0111 * 132.0); + + vec2 id02 = id(p02.yz, repV); + p02.yz = repeat(p02.yz, repV); + + float rnd02 = rnd(id02 * 32.0); + + vec2 id031 = id(p03.yz, repV * 8.0); + vec2 id03 = id(p03.yz, repV); + p03.yz = repeat(p03.yz, repV); + + float rnd03 = rnd(id03 * 32.0); + float rnd031 = rnd(id031 * 32.0); + + vec2 id041 = id(p04.xz, repV * 6.0); + p04.xz = repeat(p04.xz, repV); + float rnd041 = rnd(id041 * 32.0); + + float scaleV = 0.4 * sin(abs(time * 1.5)) + 0.75; + + float mat01 = box(p01 + vec3(0.0,26.0 + 4.0 * sin(p.z * 0.1 + time) + rnd0111 * 4.0, 0.0), vec3(scaleV) + vec3(0.8 * rnd01 + 0.575 * mod01 * rnd01) - vec3(0.0, rnd011 * 8.55 * sin(time * 2.0), 0.0) - vec3(0.0, 2.0 * rnd0111, 0.0)) ; + + float mat02 = box(p02 + vec3(55.0 - fract(time * 0.45) * 32.0, 0.0 , 0.0), vec3(scaleV) * 0.8 * rnd02 * (mod02 + 0.25) - vec3(rnd031 * sin(abs(time * 4.0)) * 7.0)); + + float mat03 = box(p03 + vec3(-45.0 - fract(time * 0.05 + mod03) * 38.0, 0.0, 0.0), vec3(scaleV * 0.8 * rnd03 * (mod02 + 0.25))); + + float mat04 = box(p04 + vec3(0.0, -45.0 + 2.0 * sin(p.z * 0.25 + time + (mod03)) , 0.0), vec3(0.1) + vec3(0.1 + 0.275 - sin(time * rnd041))); + + mat.m = min(mat01, mat02); + mat.m = min(mat.m, mat03); + mat.m = min(mat.m, mat04); + + mat.glow += 0.15/(0.05+abs(mat.m)); +} +vec3 normals(vec3 p) +{ + vec2 uv = vec2(0.01, 0.0); + + matter m01, m02, m03, m04; + + map(m01, p); + map(m02, p - uv.xyy); + map(m03, p - uv.yxy); + map(m04, p - uv.yyx); + + return normalize(m01.m - vec3(m02.m, m03.m, m04.m)); + +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 o = vec3(0.0, 5.0, 5.0 + time * 85.0 + mod01 * 5.0), t = vec3(00., 2.5 * sin(time * 0.5) + 4.0, time * 85.0 + mod01 * 5.0 ); + vec3 fr = normalize(t-o); + vec3 ri = normalize(cross(vec3(0.0, 1.0, 0.0), fr)); + vec3 up = normalize(cross(fr, ri)); + vec3 dir = normalize(fr + ri * uv.x + up * uv.y); + vec3 p = o + dir * 0.25; + + + matter mat; + for(int i = 0; i < 100; ++i) + { + map(mat, p); + + if(mat.m < 0.01) + { + mat.m = 0.15; + mat.glow *= 0.95; + mat.dist -= 0.1 * mat.dist; + if(!mat.reflected) + { + vec3 n= normals(p); + dir = reflect(-n, dir); + mat.m = 2.5; + mat.reflected = true; + mat.glow *= 5.95; + } + + } + + + vec3 selCol = vec3(1.0, 1.0, 1.0) * 1.0; + if(mod01 > 1.0) + { + selCol = vec3(0.0, 0.5, 1.0); + } + if(mod01 > 2.0) + { + selCol = vec3(0.0, 0.5, 1.0); + } + + mat.col += mat.glow * (0.00012 - (sin(abs(p.z * 0.001 + time * 2.25)) * 0.000155)) * selCol * 0.2325; + p+= mat.m * dir * 0.5; + mat.dist += 0.5; + + } + + mat.col += pow(clamp((mat.dist/100.0), 0.0, 1.0), 1.2) * mix(vec3(0.0, 0.5, 1.0), vec3(1.0, 0.0, 0.0), sin(abs(time * 0.1 + (mat.dist/100.0 * 2.5)))) * ((0.8 * mod04)/8.0); + + mat.col = pow(mat.col, vec3(1.0/2.2)); + + out_color = vec4(mat.col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_nusan.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_nusan.glsl new file mode 100644 index 000000000..b53efbf97 --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_nusan.glsl @@ -0,0 +1,232 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = mod(fGlobalTime*.6, 300); + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +float rnd(float t) { + return fract(sin(t*425.551)*974.512); +} + +float rnd(vec2 uv) { + return fract(dot(sin(uv*352.742+uv.yx*254.741),vec2(642.541))); + +} + + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1), pow(smoothstep(0,1,fract(t)), 10)); + +} + +vec3 fractal(vec3 p, float t) { + + float s=2 + (curve(time, .3)-0.5)*.1; + for(int i=0; i<3; ++i) { + p.xz *= rot(t); + p.yz *= rot(t*1.3); + p.xz=abs(p.xz)-s*(1+vec2(rnd(i),rnd(i+.1))); + s*=0.7; + } + + return p; +} + +float tick(float t) { + float g=fract(t); + g=smoothstep(0,1,g); + g=pow(g,10); + return floor(t)+g; +} + + + +float smin(float a, float b, float h) { + float k=clamp((a-b)/h*0.5+0.5,0,1); + return mix(a,b,k) - k*(1-k)*h; +} + +vec3 repeat(vec3 p, vec3 s) { + return (fract(p/s+0.5)-0.5)*s; +} + +float center = 10000; +float map(vec3 p) { + + + p.y += curve(time*3 - length(p.xz)*0.02, 1)*8; + + float t=tick(time)*2; + + float d=box(fractal(p, t*.3), vec3(0.3,1.3,0.4)); + float d2=box(fractal(p+vec3(1), t*.4), vec3(0.3,1.3,0.4)*2); + + d = abs(max(d,d2))-0.2; + + float d5 = box(fractal(p-vec3(0,10,0), t*.1), vec3(5,5,1000.0)); + d = min(d, d5); + center = d; + + + d = smin(d, -p.y+5, 1 + curve(time, 0.3)*15); + + vec3 p2=p; + + p2.xz = abs(p2.xz)-40; + p2.xz = abs(p2.xz)-20; + p2.xz = abs(p2.xz)-10*curve(time, .3); + + p2.xz *= rot(p2.y*curve(time, 0.4)*0.5-time); + + float sd = -abs(p.y)*0.3+3; + d = min(d, box(p2, vec3(sd,10,sd))); + + + vec3 p3=p; + p3=repeat(p3, vec3(13)); + float d3 = length(p3)-.1-sin(p.x*.3)*.3-sin(p.y*.2)*.3-sin(p.z*.1)*.3 - sin(length(p)*0.03-time)*.1; + d3 = max(d3, p.y); + d = min(d, d3); + + d=abs(d)-0.1; + return d; +} + +void cam(inout vec3 p) { + + float t=time*0.3; + p.yz *= rot(.4 + sin(t*.2)*.4); + p.xz *= rot(t); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv *= 1+max(0,curve(time - length(uv),.2)-.7)*.6; + uv.y -= curve(time, .2)*.1; + + float di2 = pow(curve(time, .8),4)*3-length(uv)-.1; + bool circ = di2<0; + bool truc = curve(time, 6)<.7; + vec2 nu = vec2(0); + vec2 nuv = uv; + if(!truc) nuv.x = abs(nuv.x)*fract(time); + + float di = 1000; + for(int i=0; i<4; ++i) { + nuv *= rot(curve(time+i*0.32,1.2)*2); + nuv.y += curve(time+.7+i*.1,.5)-.5; + nu += sign(nuv)*(1+i*0.2); + nuv=abs(nuv); + di = min(di, min(nuv.x,nuv.y)); + nuv-=0.4*rnd(nu); + } + + float pulse = floor(time*0.7); + + if(circ && truc) uv += nu*(0.03+0.03*curve(time+.7,.3))*.5; + + vec3 s=vec3((curve(time+2.3,.8)-.5)*20 ,-10,-30 - curve(time, 1.3)*40); + vec3 r=normalize(vec3(-uv, .5 + curve(pulse, .7)*2)); + + cam(s); + cam(r); + + vec3 p=s; + vec3 col = vec3(0); + float mu=mix(0.9,1.0,rnd(uv)); + + bool band = rnd(nu)>0.7 && circ; + if(rnd(pulse+.7)<.4) band=true; + + vec3 diff=vec3(1,0.4,0.5); + float t2 = tick(time*.5)*.7; + diff.xz *= rot(t2); + diff.yz *= rot(t2*.7); + diff=abs(diff); + + float de = 0.01*(1+sin(abs(uv.x*3)-time*4)*0.8); + + vec3 diff2 = vec3(1); + bool maa=false; + for(int i=0; i<100; ++i) { + float d=map(p); + if(d<0.001) { + if(band) { + d=0.1; + if(center<10) { + diff.xz *= rot(.1); + diff=abs(diff); + maa=abs(center-10)<1; + } + } else { + vec2 off=vec2(0.01,0); + if(center<10) { + diff2 = vec3(.3,8,10)*curve(time, .75); + maa=abs(center-10)<1; + } + vec3 n=normalize(d-vec3(map(p-off.xyy), map(p-off.yxy), map(p-off.yyx))); + r=reflect(r,n); + } + d=0.1; + //break; + } + if(d>100.0) break; + p+=r*d*mu; + if(band) { + col += diff*0.3*de/(de+.1+abs(d)); + } else { + col += diff2*vec3(0.7,0.7,0.7)*0.1*de/(de+abs(d)); + } + } + + if(circ) col *= smoothstep(0.0,0.01,di); + if(circ) col *= smoothstep(0.0,0.02,abs(di2)); + if(maa) { + col *= .2; + } + + if(rnd(pulse)<1.3 && abs(uv.y)<.1) { + float t4 = time + uv.x; + col.yz *= rot(t4); + col.xz *= rot(t4*1.3); + col=abs(col); + } + + col *= 1.2-length(uv); + + col=smoothstep(0,1,col); + col=pow(col, vec3(0.4545)); + + //col += map(p-r); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_provod.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_provod.glsl new file mode 100644 index 000000000..ce387a92d --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_provod.glsl @@ -0,0 +1,107 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float t = fGlobalTime; +vec3 E=vec3(0.,.01,1.); + +#define rm(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +float vmax(vec3 v) { return max(max(v.x, v.y), v.z); } +#define bx(p,s) vmax(abs(p)-s) + +#define T(S,p) texture(S,(p+.5)/textureSize(S,0)) +#define fft(p) T(texFFT,p).r +#define ffti(p) T(texFFTIntegrated,p).r +#define ffts(p) T(texFFTSmoothed,p).r + +float w(vec3 p) { + p.xz *= rm(p.y); + //p.zy *= rm(p.x*.1); + + p.zy *= rm(ffts(3.) * 3.); + + //p.xy *= rm(ffts(8.) * 3.); + + float d = p.y + 1.; + d = min(d, bx(p, vec3(.3, 2., .3))); + float ri = max(abs(p.y)-.1, max(length(p.xz) - 1., .9 - length(p.xz))); + d = min(d, ri); + + + + return d;//min(p.y + 1., length(p) - 1.); +} + +vec3 wn(vec3 p) { + return normalize(vec3( + w(p+E.yxx), + w(p+E.xyx), + w(p+E.xxy)) - w(p)); +} + +float tr(vec3 O, vec3 D, float l, float L) { + for (int i = 0; i < 100; ++i) { + float d = w(O+D*l); + l+=d; + if (d<.001*l||l>L) break; + } + return l; +} + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + t = fGlobalTime; + + vec3 C = vec3(0.); + vec3 O=vec3(1., 1.2 + .4 * cos(t), 6.), D=normalize(vec3(uv, -2.)); + + mat2 my = rm(cos(t) * .01); + + //O.xz *= my; + D.xz *= my; + + D.yz *= rm(cos(t*.7) * .02 + .1); + + float L=10.,l=tr(O,D,0.,L); + + + if (l < L) { + vec3 p = O + D * l; + vec3 N = wn(p); + + vec3 ma = vec3(1.); + vec3 ld = normalize(vec3(1.)); + vec3 lc = vec3(1.); + float ms = 100.; + + ma = vec3(1.) * mix(.9, .01, step(.5, + mod(dot(p, normalize(vec3(5.,4.,3.)) + ) + ffti(.5), 1.))); + + float s = step(10., tr(p, ld, .1, 10.)); + C += ma * lc * max(0., dot(ld, N)) * s; + + //C += ma * lc * max(0., dot(ld, N)); + //C += ma * lc * pow(max(0., dot(N,ld-D)), ms); + + C *= 1. - l/L; + } + + out_color = vec4(sqrt(C), 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_visy.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_visy.glsl new file mode 100644 index 000000000..6873a6f28 --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_visy.glsl @@ -0,0 +1,44 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +void main(void) +{ + float t = (fGlobalTime*1000.)*0.1; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1)*(2.5+cos(t*uv.x)*0.001); + + float e = 0.0; + + float m = t*4.; + + float vv = 0.5*cos(t*0.1*uv.y*0.02); + vec4 c = vec4(-2.0); + + int ii = 0; + for(float i=0.0;i<10.0;i+=0.5+vv) { + e += distance(uv,vec2(0.0,0.0))*fract(i*(0.1*m)*cos(uv.x*uv.y)*0.5); + c += vec4(e+fract(i*t*2.1+uv.y*10.),e-distance(uv.y,uv.y*cos(fract(uv.y*t)))*1.1,e*0.7,1.0)*4.0; + ii++; + } + + c/=ii; + + c/=distance(uv,vec2(c.r,c.g))*abs(cos(c.g)*3.0); + + out_color = 0.8-c; +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_wrighter.glsl b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_wrighter.glsl new file mode 100644 index 000000000..3d6c08d91 --- /dev/null +++ b/shader_file_sources/2020_12_04_shader_royale_shader_royale2/grabber_inerciaroyale_wrighter.glsl @@ -0,0 +1,126 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +float r11(float g){return fract(sin(g*3.223)*43.20);} + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +// WRIGHTER HERE +// I HAVE NO CLUE WHAT IM GONNA MAKE LOL + +#define rot(j) mat2(cos(j), sin(j), -sin(j),cos(j)) +#define pi acos(-1.) + +float sdLine(vec2 p, vec2 a, vec2 b){ + vec2 dir = normalize(b - a); + float slope = atan(dir.y,dir.x); + vec2 op = p; + p -= a; + p = p*rot(slope); + float d = length(p.y); + + d = max(d, -p.x); + + d = max(d, p.x - (b-a).length*0.3 ); + return d; + } +#define xor(a,b,c) min(max(a,-b), max(-a + c,b)) + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float T = fGlobalTime; + float tbetween = 6.; + float seg = floor(T/tbetween); + + vec3 col = vec3(0); + vec2 p = uv; + float d = 10e5; + float dir = floor(r11(seg)*8)*pi/4.; + + + float id = seg; + + for (int chrab = 0; chrab < 8 ; chrab ++){ + + p = uv; + p += ( normalize(p)*.2*float(r11(id*241.512) < 0.5)+ chrab*0.04*sin(T))*1.7*length(p); + p *= rot(dir); + if (r11(id*1.2 + 0.5) < 0.5){ + d = 10e5; + + } + //T = fGlobalTime; + for ( int i = 0; i < 6 + r11(id)*10. ; i ++){ + + T += (1.*r11(id) + 0.1); + float r = r11(id + i + 1.45463*i*id); + + + if (r < 0.05){ + p *= rot((0.2 + T*0.0001*r11(id + 0.4) + (T)*0.4*r11(id + i))*pi); + //p = abs(p) - 0.5; + } + p -= (T - seg*tbetween)*0.01*(r11(id + i*0.04)); + + for (int k = 0; k < (7*r11(id*42.231+i) + 4.); k++){ + vec2 luv = p; + luv.y += r11(i*421.1*id); + d = xor(d,sdLine(p,vec2(-0.4,0),vec2(0.4,0)) - .05*r11(id+i*0.042), 0.1*r11(id + i)); + } + if(r11(id*i + 0.4) < 0.4){ + d = xor(d, abs(length(p) - r11(id + i)) - 3.6*r11(id*21.4 + i*float(r11(id)> 0.5)), .7*r11(id)); + } + p.y -= r11(id*1.231)*0.1; + p.x -= r11(id*1.231 + i)*0.5*sign(r11(id + i*4.)*2. - 1.); + + if (r11(id) > 0.7){ + d = xor(d,p.y,0.1); + } + + if (r11(id + 0.24) < 0.1){ + d = xor(d,p.x,0.4); + } + + + } + + #define pal(a,b,c,d,e) ((a) + (b)*sin((c)*(d) + e)) + float coco = smoothstep(0.004,0.,d); + + if(r11(id*6.02351) > 0.5){ + + //col += pal(0.5,0.5); + col += coco*pal(0.5,0.5,vec3(4.7,1.4,1.4),1 + vec3(sin(T*0.24),cos(T*0.1),sin(T*0.5)),id + T*0.1 + chrab*0.1); + + } else { + col[int(mod(chrab,3))] += coco; + } + + } + + if(r11(id*1.02351) > 0.5){ + //col = 1- col; + } + + + + + col = pow(col,vec3(0.4545)); + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_FMS_Cat.glsl b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_FMS_Cat.glsl new file mode 100644 index 000000000..acd058d38 --- /dev/null +++ b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_FMS_Cat.glsl @@ -0,0 +1,324 @@ +#version 410 core + +#define saturate(x) ( clamp(x,0.,1.) ) +#define linearstep(a,b,t) ( saturate( ( (t)-(a) ) / ( (b)-(a) ) ) ) +#define lofi(x,d) ( floor( (x)/(d) ) * (d) ) + +const float PI=3.14159265; +const float foldcos=cos(PI/5.); +const float foldrem=sqrt(.75-foldcos*foldcos); +const vec3 foldvec=vec3(-.5,-foldcos,foldrem); +const vec3 foldface=normalize(vec3(0,foldrem,foldcos)); + +float time; +float seed; +vec3 glow; + +float fractSin(float s){ + return fract(sin(s*114.514)*1919.810); +} + +float random(){ + seed=fractSin(seed); + return seed; +} + +vec3 randomSphere(){ + float a=random()*2.*PI; + float b=acos(random()*2.-1.); + return vec3(cos(a)*sin(b),cos(b),sin(a)*sin(b)); +} + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +mat2 r2d(float t){ + return mat2(cos(t),sin(t),-sin(t),cos(t)); +} + +float smin(float a,float b,float k){ + float h=linearstep(k,0.,abs(a-b)); + return min(a,b)-h*h*h*k/6.; +} + +vec3 fold(vec3 p){ + for(int i=0;i<5;i++){ + p.xy=abs(p.xy); + p-=2.*min(0.,dot(foldvec,p))*foldvec; + } + return p; +} + +vec3 catColor(float t){ + return .5+.5*cos(vec3(0.,2.,4.)-t); +} + +vec4 mapSpike(vec3 p){ + vec3 pt=p; + + float fart=sin(PI*exp(-5.0*mod(time,2.4))); + + pt.yz=r2d(.7*time)*pt.yz; + pt.zx=r2d(time+pt.y*sin(time))*pt.zx; + pt.xy=r2d(.2*pt.z*cos(time))*pt.xy; + pt=fold(pt); + float dotFace=dot(foldface,pt); + float l=length(dotFace*foldface-pt); + float r=.4-.2*sqrt(dotFace); + float d=l-r; + d=smin(d,length(pt)-1.-.7*fart,1.); + d=max(d,length(pt)-4.); + + glow+=.5*catColor(4.+exp(-10.0*d))*d*exp(-10.0*d); + + return vec4(d,0,0,0); +} + +vec4 mapPhantom(vec3 p){ + vec3 pt=p; + + float fart=sin(PI*exp(-5.0*mod(time-length(pt)*.1,2.4))); + pt-=normalize(pt)*fart; + + pt.zx=r2d(4.+time+.6*pt.y*sin(time))*pt.zx; + pt.xy=r2d(2.+.6*pt.z*cos(time))*pt.xy; + pt.yz=r2d(3.+.7*time)*pt.yz; + pt=fold(pt); + float dotFace=dot(foldface,pt); + float l=length(dotFace*foldface-pt); + float r=.2*sqrt(dotFace); + float d=l-r; + d=smin(d,length(pt)-1.,1.); + d=max(abs(d),.2); + + glow+=(.01+.2*fart)*catColor(3.+exp(-10.0*d)+8.0*exp(-length(pt)))*d*exp(-3.0*d); + + return vec4(d,0,0,0); +} + +vec4 mapCrystal(vec3 p){ + vec3 pt=p; + + pt.zx=r2d(.2*time)*pt.zx; + float a=atan(pt.x,pt.z); + pt.zx=r2d(-lofi(a+PI/6.,PI/3.))*pt.zx; + pt.z-=5.; + pt.zx=r2d(-time)*pt.zx; + + pt.y*=.5; + pt.y+=.1*texture(texNoise,pt.zx).x; + pt.y-=sign(pt.y)*min(abs(pt.y),1.); + + pt=fold(pt); + float dotFace=dot(foldface,pt); + float d=dotFace-.6; + + glow+=.2*catColor(3.5+exp(-10.0*d))*d*exp(-5.0*d); + + return vec4(d,1,0,0); +} + +vec4 map(vec3 p){ + vec4 i=vec4(1E9); + vec4 i2; + + i2=mapSpike(p); + i=i2.x4.; + float modetime=mod(mod(fGlobalTime,6.),4.); + float modetime2=mod(mod(time,6.),4.); + + vec3 col=vec3(0); + + vec3 cp=vec3(1,.3,2.5); + cp.zx=r2d(-2.0*exp(-2.0*modetime2))*cp.zx; + if(mode){ + cp*=2.6; + } + vec3 ct=vec3(1,.3,0); + vec3 cd=normalize(ct-cp); + vec3 cx=normalize(cross(cd,vec3(0,1,0))); + vec3 cy=cross(cx,cd); + + vec2 camp=p; + float mos=0.1*exp(-5.0*modetime); + camp=lofi(camp+mos*.5,mos); + camp=r2d(.4)*camp; + + vec3 ro=cp; + vec3 rd=normalize(cx*camp.x+cy*camp.y+cd); + vec3 fp=ro+rd*length(cp-ct)*.8; + ro+=.02*randomSphere(); + rd=normalize(fp-ro); + + float rl=.1; + vec3 rp=ro+rd*rl; + vec4 isect; + + for(int i=0;i<128;i++){ + glow*=0.; + isect=map(rp); + col+=exp(-.1*rl)*glow; + rl+=.3*isect.x; + rp=ro+rd*rl; + } + + if(isect.x<1E-2){ + if(isect.y==0.){ + + vec3 n=nSpike(rp,vec2(0,2E-1)); + float f=1.-abs(dot(rd,n)); + f=f*f; + col=vec3(f)*catColor(4.+3.*f); + + }else if(isect.y==1.){ + + vec3 n=nCrystal(rp,vec2(0,1E-2)); + float f=1.-abs(dot(rd,n)); + f=f*f; + col=7.0*vec3(f)*catColor(4.-2.*f); + + } + } + + float overlay; + { + float d=dOverlay(p*.7); + float pix=1.0/v2Resolution.y; + overlay=pow(linearstep(pix,-pix,d),2.2); + col+=.4*vec3(.02,.02,1.)*exp(-(0.1+.05*sin(40.0*time))/pix*max(0.,d)); + } + col=mix(col,1.-2.*col.yzx,overlay); + + if(mode){ + col=.5-1.*col.yzx; + } + + float flicker=step(fract(fGlobalTime*20.),.5); + col=pow(col,vec3(.4545)); + col*=1.+.05*length(p)*flicker; + col*=1.+.5*flicker*smoothstep(.2,.7,texture(texNoise,p*vec2(.5,.01)+time*vec2(.1,2.)).x); + col=vec3( + smoothstep(.1,.9,col.x), + smoothstep(.1,.8,col.y), + smoothstep(-.1,1.1,col.z) + ); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_LechugaFeliz.glsl b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_LechugaFeliz.glsl new file mode 100644 index 000000000..235beabbb --- /dev/null +++ b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_LechugaFeliz.glsl @@ -0,0 +1,176 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +#define time mod(fGlobalTime, 25.) +#define m -texture(texFFTSmoothed, 0.01).x *10. +#define t1 time*20. +#define rot(a) mat2(cos(a), sin(a) ,-sin(a), cos(a)) +#define pi acos(-1.) + +float rand(vec2 uv){ + return fract(sin(dot(uv*.23244*uv.yx*.15756, vec2(234534.4234234)))*2345653.23423423); +} +const float rep = 75.; + +float acumNeu = 1.; +//const float rep5 = 60.; +float base (inout vec3 p, inout float id){ + vec3 p1 = p; + p1.xy *= rot(radians(pi)+time*.1); + p1.y += t1*1.; + + vec2 g = floor(p1.xy/rep-.5); + id = rand(g+4.324); + p1.x += sin(p1.y * 0.144+t1*.05) * 2.-.5; + p1.z += sin(p1.y*0.96554+t1*.06)*.5-.5; + p1 = (fract(p1/rep-.5)-.5)*rep; + p1.x = abs(p1.x)-8.; + p = p1; + float neu = length(p1.xz)-.6 ; + + acumNeu += 5./(.1+neu*neu); + return neu; +} + +float smin(float a, float b, float k){ + float h = max(k-abs(a-b), 0.)/k; + return min(a, b)-pow(h, 3.)*k*(1.0/6.0); +} + +float boom(vec3 p){ + vec3 p1 = p; + float id; + float d = base(p1, id); + + float e = length(p1)-1.5-id m m m * sin(p1.x+t1)*sin(p1.y+t1-id)*sin(p1.z+t1)*2.5-.5; + + return smin(d, e, 10.); +} + +float acum1 = .0; +const float rep3 = 50.; +const float MAX_DIST = 200.; +float neurons(vec3 p){ + float d = boom(p); + vec3 p1 = p; + + p1.z += t1; + p1 = (fract(p1/rep3-.5)-.5)*rep3; + + float r = 0.; + for(int i = 0; i < 2; i++) r += mod(.5+time*20., .2); + float b = length(p1)-r m m m m m; + + acum1 += 10./(.2+b*b); + return d; + //return min(d, b); +} + +float sb(vec3 p, vec3 s){ + vec3 q = abs(p)-s m m m; + return max(max(q.y, q.z), q.x); +} +const float rep2 = 20.; + + + +bool coli = false; +float laststands(vec3 p){ + float d = neurons(p); + vec3 p1 = p; + + vec2 g = floor(p1.xz/rep2-.5); + float id = rand(g+4.324); + p1 = (fract(p1/rep2-.5)-.5)*rep2; + + + p1.x = abs(p1.x)-.2 m m m m m m m m m m m m m; // MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM + p1.xy -= time*.1; + p1.xz *= rot(time); + p1.yz *= rot(time); + p1.x += sin(time)*5.5-.5; + float b = sb(p1, vec3(.5, .5, 1.)+(id*2.))*.68+sin(time+id*2.)*.5-.5; + coli = b < 50.; + + p1.y -= 50.5; + d = min(max(d, p1.y-5.2), b); + + return d; +} + + +bool coli2 = false; +float map(vec3 p){ + float d = laststands(p); + // not idea how to contine... mmmmm m mm mm m m m + + vec3 p1 = p; + float dd = p1.z*.234234; + p1.x += sin(time+dd); + p1.z += sin(time+dd); + float rrr = 50.-sin(time+p1.x*2.)*sin(time+p1.y)*cos(p1.z+time)*.25-.0001 m m m m m m m m; + float cil = length(p1.xy)-rrr ; + //coli2 = cil < .5; + return max(d, cil); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 s = vec3(0.0001, -2.0001, -6.), r = normalize(vec3(-uv, 1.)); + s.yz *= rot(time); + s.xy *= rot(cos(time+s.x*10./pi))*3.; + s.z -= t1; + // + + vec3 p = s, col = vec3(0.); + float i = 0.; + const float MAX = 100.; + const vec2 off = vec2(0.0145645, 0.); + vec3 n; + for(; i < MAX; i++){ + float d = map(p); + if(abs(d) < 0.001){ + + n = normalize(d-vec3(map(p-off.xyy), map(p-off.yxy) , map(p-off.yyx))); + if(coli || coli2){ + r = reflect(n,r); + d+=10.5; + //d*=.1; + } + else break; + } + if(d > MAX) break; + p+=d*r; + } + + n = normalize(map(p)-vec3(map(p-off.xyy), map(p-off.yxy) , map(p-off.yyx))); + vec3 l = normalize(vec3(-1.)); + + //col += 1.-i/MAX; + col += clamp(dot(n, l), 0., 1.)*vec3(.1)*.01; + col += acum1*vec3(0.24, .2, .4)*.777; + col += acumNeu*vec3(1., 0., 0.)*.04; + col *= 1.-max(length(p-s)/MAX_DIST, 0.)*vec3(0., .0003, 0.)*.005; + col = smoothstep(0., 1.,col); + //col += rand(uv); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_NR4.glsl b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_NR4.glsl new file mode 100644 index 000000000..e0d99d182 --- /dev/null +++ b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_NR4.glsl @@ -0,0 +1,120 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +const float pi = acos(-1.); +const vec3 c = vec3(1.,0.,-1.); + +void rand(in vec2 x, out float r) +{ + x.x -= 1.e3; + r = fract(sin(dot(vec2(1333.1232e6*x.x,32211231.212354),x))); +} + +float dbox(in vec3 x, in vec3 a) +{ + vec3 b = abs(x)-a; + return length(max(b,0.)); +} + +float dline(in vec3 x, in vec3 p1, in vec3 p2) +{ + float t = clamp(dot(x-p1,p2-p1),0.,1.); + return t; +} + +float scene(in vec3 x) +{ + x.z = abs(x.z); + + x.y += .3*fGlobalTime; + const float ms = .2; + vec2 y = mod(x.xy, ms)-.5*ms; + + vec2 pt = vec2(atan(y.y,y.x),acos(y.y/length(vec3(y,x.z)))); + + float s = min(x.z,length(vec3(y,x.z)-.1*c.yyx)-.1); + //s = min(s, dline( + return s; + +} + +vec3 normal(in vec3 x) +{ + const float dx = 1.e-4; + float s = scene(x); + return normalize(vec3(scene(x+dx*c.xyy), scene(x+dx*c.yxy), scene(x+dx*c.yyx))-s); +} + +void main(void) +{ + vec2 uv = (gl_FragCoord.xy-.5*v2Resolution.xy)/v2Resolution.y; + vec3 o = c.yzx, + t = .9*c.yyx, + r = c.xyy, + u = cross(normalize(t-o),-r), + dir = normalize(t-o), + col, + l = c.xzx, + n, + x; + t += uv.x*r + uv.y*u; + dir = normalize(t-o); + + float d = 0., + s; + int i=0, + N = 250; + + for(i=0; imd) return vec3(d,i,0); + d+=h; + } + return vec3(d,i,0); +} + +vec3 norm(vec3 p) { + vec2 e=vec2(0,.01); + return normalize(scene(p)-vec3(scene(p-e.yxx),scene(p-e.xyx),scene(p-e.xxy))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 tg=vec3(0),eye=5.*vec3(1.,.7,1.); + eye.xz+=2*vec2(sin(t),cos(t)); + vec3 f=normalize(tg-eye); + vec3 s=normalize(cross(vec3(.5+.25*sin(t),1,0),f)); + vec3 u=normalize(cross(f,s)); + vec3 dir=normalize(f*.8+uv.x*s+uv.y*u); + + vec3 lp=3*vec3(1); + + vec3 col=vec3(0); + vec3 m=march(eye,dir,.001,200,500.); + float ddd=m.x; + if(m.z==1) { + vec3 p=eye+dir*m.x; + vec3 n=norm(p); + vec3 ld=normalize(lp-p); + float diff=abs(dot(n,ld)); + float spec=pow(abs(dot(dir, reflect(ld, n))), 30.); + float fres=sat(max(0., 1-dot(n, -dir))); + if(mat==1) { + col+=sat((diff+spec)*fres); + } + if(mat==2) { + col+= .01*vec3(spec)*acos(-dir)*(1-exp2(.01*ddd)); + } + col*=pow(m.y/50, 2.); + } else { + col += smoothstep(0., .2, dir.y) * acos(-dir); + float den=dot(dir, vec3(0,1,0)); + if(abs(den)>.01) { + float t= dot(-eye, vec3(0,1,0)) / den; + if(t>0) { + vec3 p=dir*t; + col+= .1 * smoothstep(0., .9, -dir.y) * ( step(.96, fract(p.x*2))+step(.96, fract(p.z*2)) ); + } + } + } + col+=acos(-dir)*g*.01; + + out_color.rgb = pow(col, vec3(1./2.2)); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_evvvvil.glsl b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_evvvvil.glsl new file mode 100644 index 000000000..1a3246d7e --- /dev/null +++ b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_evvvvil.glsl @@ -0,0 +1,128 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(.00035,-.00035);float t,tt,b,bb,g,gg,tnoi;vec3 np,op,bp,pp,po,no,al,ld; +float smin(float a,float b,float k){ + float h=max(k-abs(a-b),0.); + return min(a,b)-h*h*.25/k;} +float smax(float b,float a,float k){ + float h=max(k-abs(-a-b),0.); + return min(-a,b)+h*h*.25/k;} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +vec4 c=vec4(0,5,10,.1); +vec2 mp( vec3 p,float ga ) +{ + op=p; + float spe=0.5; + + tnoi=texture(texNoise,op.xz*.1+vec2(0,tt*spe)).r; + vec2 h,t=vec2(p.y+5+tnoi*3.+cos(op.x*.1)*5.+cos(op.z*.1),6); + bp=p+vec3(0,2+sin(op.z*.1),0); + bp.x=abs(bp.x)-15; + t.x=smin(t.x,length(bp.xy)-4+tnoi+sin(op.z*.1+spe)+sin(op.z+tt*spe)*.1,4.); + bp.z=mod(bp.z+tt*5,5)-2.5; + //t.x=smax(length(bp.xz)-.1,t.x,.5); + t.x=smin(t.x,length(bp.xz)-1+bp.y*.1+tnoi+sin(op.y*15)*0.005,.5); + float blo=length(bp-vec3(0,5+sin(op.z*.1+spe),0))-.3; +g+=0.1/(0.1+blo*blo*40)*ga; + t.x=min(t.x,blo); + //t.x=smax(length(bp.xz)-.5,t.x,1.5); + t.x*=0.5; + pp=p; + pp.xy*=r2(sin(op.z*.1)); + pp.xz*=r2(sin(op.z*.1)*.2); + pp=vec3(atan(pp.x,pp.y)*4,pp.z,length(pp.xy)-7); + pp.xy=mod(pp.xy+vec2(0,tt*spe*10.),2)-1; + h=vec2(length(pp)-0.5,5); + + h.x*=0.7; + t=t.x120) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>120) t.y=0; + return t; +} +#define a(d) clamp(mp(po+no*d,0).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d,0).x/d) +//const vec3[5] cam=vec3[](vec3(),vec3(),vec3()); +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +tt=mod(fGlobalTime,62.83); + // float f = texture( texFFT, d ).r * 100; + +// vec3 ro=vec3(cos(tt*c.w+c.x)*c.z,c.y,sin(tt*c.w+c.x)*c.z), + vec3 ro=mix( + vec3(cos(tt*.5)*2,0,-10), + vec3(cos(tt*.5)*2-15,10,-10),ceil(sin(tt*.5)) + ), + + cw=normalize(vec3(0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + co=fo=vec3(.1,.15,.1)-length(uv)*.1; + ld=normalize(vec3(.2,.5,-.3)); + z=tr(ro,rd); + t=z.x; + if(z.y>0){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy,0).x+ + e.yyx*mp(po+e.yyx,0).x+ + e.yxy*mp(po+e.yxy,0).x+ + e.xxx*mp(po+e.xxx,0).x);al=mix(vec3(.7,.4,.0),vec3(.1,.1,.9),ceil(sin(tt*.5))); + if(z.y<5)al=vec3(0); + if(z.y>5)al=vec3(1)-tnoi*3.; + float dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),30); + co=mix(sp+al*(a(.15)*a(.05)+.2)*(dif+s(2)),fo,min(fr,.5)); + co=mix(fo,co,exp(-.00001*t*t*t)); + } + co=mix(co,co.xzy,length(uv*2.)); + out_color = vec4(pow(co+g*.2*vec3(.1,.2,.7),vec3(.45)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_hArDy.glsl b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_hArDy.glsl new file mode 100644 index 000000000..0afb71fc8 --- /dev/null +++ b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_hArDy.glsl @@ -0,0 +1,224 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float PI=acos(-1); +vec4 D=vec4(99.); +float e,ee,eee; + + + +#define t fGlobalTime +#define tt 0//int(fGlobalTime*.2)%2 +#define Z 222 +#define I 222 +#define V(a,b,c) mix(clamp(abs(fract(a+vec3(1,2,3)/3)*6-3)-1,0,1),vec3(1),b)*c +#define S(a,b,c) -log(exp(-c*a)+exp(-c*b))/c +#define W(a,b) cos(b)*a+sin(b)*vec2(-a.y,a.x) +#define C(a,b) max(max(abs(a.x)-b.x,abs(a.y)-b.y),abs(a.z)-b.z) +#define B(a,b) (length(a)-b) + + + +float M(vec3 p) +{ + +if(tt==0) +{ + +//11111111111111111111111111111111111111 + + float + a=1, + b=.5, + c=2 + ; + + vec3 pp=vec3(mod(p.xy+6,12)-6,p.z); + + pp.x+=sin(t*.7-e*2.57+p.z*.43)+sin(t*.4-e*3.64+p.z*.17)+sin(t*.4+e*4.57+p.z*.43); + pp.y+=sin(t*.6+e*2.75+p.z*.33)+sin(t*.5+e*3.79+p.z*.31)+sin(t*.8-e*4.30+p.z*.33); + + pp.xy=W(pp.xy,PI*sin(t+e*.05+p.z*.03)); + + D.y= + S( + C(pp,vec3(1,.2,10000000)), + C(pp,vec3(.2,1,10000000)), + 3 + ) + ; + + p=mod(p,12)-6; + + D.x= + S( + S( + min( + C(p,vec3(a,a,100000000)), + C(p,vec3(b,c,100000000)) + ), + min( + C(p,vec3(a,10000000,a)), + C(p,vec3(b,10000000,c)) + ), + 1 + ), + min( + C(p,vec3(100000000,a,a)), + C(p,vec3(100000000,c,b)) + ), + 1 + ) + ; +} +// 2222222222222222222222222222222222222222222 +else +if(tt==1) +{ + vec3 ppp=p; + +// ppp.xz=W(ppp.xz,t*.3+e*.3); +// ppp.yz=W(ppp.yz,t*.4+e*.5); + +// vec3 pp=p; + vec3 pp=mod(p+6,12)-6; + p=mod(p,12)-6; + + D.x= +// (int(pp.x/12)+int(pp.y/12)+int(pp.z/12))%2==0 + max( + B(p,3), + -C(p,vec3(1,1,1)) + ); + + D.y= + max( + C(pp,vec3(2,2,2)), + -B(pp,1.5) + ) + ; + +} +//3333333333333333333333333333333333333333333333333 +else +if(tt==2) +{ + p.x+=3*sin((p.z/6)*.3+t*.7+e*.33); + p.y+=3*cos((p.z/6)*.4+t*.5+e*.55); + + p.z=mod(p.z,12)-6; + + D.y= + max( + C(p,vec3(19,19,1)), + -C(p,vec3(9,9,10002)) + ); +} + +return +min( + D.x, + D.y +) +; +} + + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + +e = texture( texFFTIntegrated, .007 ).r; +ee = texture( texFFTSmoothed, .4 ).r * 100; +ee = texture( texFFT, .4 ).r * 100; + +int i=0,j=1; +float d,z,f,ccc=1; + +vec3 + r=normalize(vec3(uv,1)), + c=vec3(0,0,0), + p=vec3(4*sin(t+e*.1),4*cos(t+e*.1),t*5+e*3), + l=vec3(.5,.7,-1), + ll=vec3(-.5,-.7,-1), + q=p, + n +; + +f=sign(M(p)); + +r.xz=W(r.xz,.7*sin(t*.7+e*.47)); +r.yz=W(r.yz,.7*cos(t*.8+e*.25)); +r.xy=W(r.xy,.7*sin(t*.5+e*.33)); + +while(++i5)break; + +//if(D.x= (rep/2.0)) c = abs(c); + return c; +} + +void map(inout matter mat, vec3 p) +{ + float f = texture( texFFT, 0.10 ).r * 100; + float mat01, mat02, mat03; + vec3 p01 = p; + + float scale = 4.0 - abs(sin(p.z * 0.5 + mod01)); + + p01 += vec3(0.5 * cos(time), 0.5 * cos(time), 0.0); + + p01.xy *= rot(time * 0.0025 * sin(p.z * 0.5)); + float a01 = pModPolar(p01.xy, 64.0); + float rn = rnd(a01 * 32.0) * 2.0; + + p01.x -= scale; + p01.z = rep(p01.z, 10.0 * Mi04); + + mat01 = sphere(p - vec3(0.0, 0.0, time - 2.0), 0.05 + 0.25 * mod01 + 0.5 * f); + mat02 = -tunnel(p.xy + vec2(0.5 * cos(time), 0.5 * cos(time)), scale + 0.5 * clamp(f, 0.0, 1.0)); + + mat03 = box(p01, vec3(0.25 + 1.05 * rn * clamp(f, 0.0, 1.0), 1.0 * Mi05, 1.0 * Mi06 )); + + if(mod(a01, 12.0) > 6.0) + mat.glow += 0.85/(0.05+abs(mat03)); + + mat.glow += 0.15/(0.05+abs(mat01)); + + mat.m = min(mat02, mat03); + +} + +float shadows(vec3 p, vec3 dir, float maxSteps, int steps, float limit) +{ + matter mat; + for(int i = 0; i < steps; ++i) + { + map(mat, p); + + if(mat.dist > maxSteps) + return 1.0; + + if(mat.m < limit) + return 0.0; + + p += dir * mat.m; + mat.dist += mat.m; + } + + return 1.0; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 o = vec3(0.25 * cos(time), 0.25 * cos(time), time + 5.0 + mod01), t = vec3(0.25 * cos(time),0.25 * cos(time), time + mod01); + vec3 fr = normalize(t-o); + vec3 ri = normalize(cross(vec3(0.0, 1.0, 0.0), fr)); + vec3 up = normalize(cross(fr, ri)); + vec3 dir = normalize(fr + uv.x * ri + uv.y * up); + vec3 p = o + dir * 0.25; + + matter mat; + float steps = (150.0 * Mi02) / 100.0; + + for(int i = 0; i < 50; i++) + { + p.xy *= rot(Mi09 * 0.001); + + map(mat, p); + + vec3 ldir = liPos -p; + vec3 lDirn = normalize(ldir); + float ll = length(ldir); + + float shad = shadows(p, lDirn, 30.0, 20, 0.1); + + mat.col += (0.3/(0.1 + abs(ll))) * shad * mix(vec3(1.0, 1.0, 1.0), vec3(1.0, 0.5, 1.0), sin(p.z * 2.5)); + + if(mat.m < 0.01) + { + break; + } + + mat.col += mix(vec3(1.0, 0.5, 0.0), vec3(0.0, 0.5, 1.0), sin(p.z * 0.5 + mod01)) * mat.glow * 0.01 * Mi03; + p += dir * steps; + mat.dist += steps; + } + mat.col *= clamp(1.0 - (mat.dist * 0.015 + abs(sin(p.z * 5.0)) * 0.55), 0.0, 1.05); + + mat.col *= 1.0 - (0.25 * abs(sin(p.z * 2.0))); + + out_color = vec4(mat.col * Mi01, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_provod.glsl b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_provod.glsl new file mode 100644 index 000000000..757fe0c63 --- /dev/null +++ b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_provod.glsl @@ -0,0 +1,194 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float t=fGlobalTime; +const vec3 E=vec3(0.,.01,1.); +#define T(t,s) texture(t,(s+.5)/textureSize(t,0)) +#define fft(s) T(texFFT, s).r +#define ffts(s) T(texFFTSmoothed, s).r +#define ffti(s) T(texFFTIntegrated, s).r +#define fbm(s) T(texNoise, s).r +float ha(float f){return fract(sin(f)*54783.5743);} +float ha(vec2 f){return ha(dot(f,vec2(19.453,41.247)));} +float no(float f){float F=floor(f);f-=F;f*=f*(3.-2.*f); + return mix(ha(F),ha(F+1.),f); +} +float no(vec2 f){vec2 F=floor(f);f-=F;f*=f*(3.-2.*f); + return mix( + mix(ha(F+E.xx),ha(F+E.zx),f.x), + mix(ha(F+E.xz),ha(F+E.zz),f.x), f.y); +} +float smin(float a, float b, float k){ + float h=max(k-abs(a-b),0.)/k; + return min(a,b)-h*h*k/4.; +} +float vmax(vec3 p){return max(max(p.x,p.y),p.z);} +float bo(vec3 p,vec3 s){return vmax(abs(p)-s);} +#define rm(a) mat2(cos(a),sin(a),-sin(a),cos(a)); + +float allofyouare(vec3 p) { + float r = length(p.xy); + float a = atan(p.x, p.y) / 6.2832; + a = fract(a*6.); + p.xy = r * vec2(cos(a), sin(a)); + return bo(p, vec3(.05, .5, .05)); +} + +float d, dsp, dwedro, dmorkow; +float ins=1.; +float w(vec3 p) { +// d=1e6; + + vec2 uv = p.xz; + float hh = no(uv*.3);// + ffti(5.) * .4; + uv += (vec2(no(hh),no(hh+40.5))-.5) * 8.; + float h=no(uv*.7); + h += .3 * smoothstep(.3, .6, fbm(p.xz*40.)); + + //d=smin(d,,.5); + + p.x -= 2.; p.y += .5; + vec3 bp=p;bp.xy*=rm(.8);bp.xz*=rm(.5); + + d=bo(bp,vec3(.5)); + + p.y-=.9; + bp=p;bp.xy*=rm(-.3);bp.xz*=rm(.5); + d=smin(d,bo(bp,vec3(.3)),.1); + + p.y-=.6; + bp=p;bp.xy*=rm(-.9);bp.xz*=rm(.5); + d=smin(d,bo(bp,vec3(.2)),.1); + d-=fbm(p.xy*95.)*.3; + + d = smin(d, p.y+2.+h*.5, .4); + + d += fbm(p.xz*256.*1.)*.08; + + dwedro=length(p.zx)-.25 + p.y*.08; + dwedro=max(dwedro, p.y - .8); + dwedro=max(dwedro, .3 - p.y); + d=min(d,dwedro); + + vec3 mp = p; mp.z+=.1; + mp.xy *= rm(t+ffts(5.) * 10.); + dmorkow = bo(mp, vec3(.03,.03,.7)); + d=min(d,dmorkow); + + p.x+=2.; + bp=p;bp.xz*=rm(t);bp.xy*=rm(ffti(4.)); + dsp=bo(bp,vec3(.7));//ins*(length(p) - 1.); + dsp-=.1 * sin(ffti(7.)*2. + bp.y * 5.); + dsp *=.8; + + //dsp = allofyouare(p); + + dsp*=ins; + d=min(d,dsp); + return d; +} + +vec3 wn(vec3 p){ + return normalize(vec3( + w(p+E.yxx)-w(p-E.yxx), + w(p+E.xyx)-w(p-E.xyx), + w(p+E.xxy)-w(p-E.xxy))); +} + +float tr(vec3 O,vec3 D,float l,float L){ + for(int i=0;i<200;++i){ + float d=w(O+D*l); + l+=d; + if(d<.001*l||l>L)break; + } + return l; +} + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 sd=normalize(vec3(1.,2.,3.2)); + vec3 sc=vec3(.9,.8,.78)*1.; + vec3 skyc=vec3(.3,.7,.9); + + vec3 C=vec3(0.); + vec3 O=vec3(1.,0.,5.),D=normalize(vec3(uv,-1.)); + O.x += (no(t)-.5)*.2; + O.y += (no(t+5.4)-.5)*.1; + O.z += (no(t+15.8)-.5)*.3; + + vec3 kc = vec3(1.); + for(int r=0;r<3;++r) { + float L=20.,l=tr(O,D,0.,L); + if (l>L) { + C += kc*skyc; + break; + } + + vec3 p=O+D*l; + float m=(d==dsp)?1.:(d==dwedro)?2.:(d==dmorkow)?3.:0.; + vec3 n=wn(p); + vec3 c=vec3(0.); + vec3 md=vec3(1.); + vec4 ms=vec4(vec3(1.), 50.); + float occ=1.; + float sh = step(10.,tr(p,sd,.01,10.)); + + if (m==1.) { + md=vec3(1.,0.,0.); + } else if(m==2.){ + md=vec3(.2,.5,1.); + } else if(m==3.) { + md=vec3(.9,.3,.1); + } else { + vec2 uv = p.xz * 64.; + /* + n = normalize(n + .4 * vec3( + no(uv)-.5, + no(uv+2.)-.5, + no(uv+4.)-.5)); + */ + //n = normalize(mix(n, -D, step(.9, no(uv)))); + } + + c+=md*sc*max(0., dot(n,sd))*sh; + c+=md*vec3(.3)*max(0., -n.y); + if (ms.a > 0.) { + c += ms.rgb * sc * pow(max(0.,dot(normalize(sd-D),n)), ms.a); + } + c+=occ*skyc*.1; + //c*=1.-vec3(l/L); + c=mix(c, skyc, pow(l/L, 3.)); + + C+=c*kc; + + if (m!=1.) + break; + + ins=-ins; + O=p-n*.01; + D=refract(D,n,.9); + //D=reflect(D,n); + kc*=.8; + //break; + } + + C*=smoothstep(1.2,.4,length(uv)); + + out_color = vec4(sqrt(C), 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_sp4ghet.glsl b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_sp4ghet.glsl new file mode 100644 index 000000000..c90bc8974 --- /dev/null +++ b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_sp4ghet.glsl @@ -0,0 +1,224 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float PI = 3.14159265; +const float TAU = 2*PI; +const vec3 up = vec3(0,1,0); +float time = mod(fGlobalTime, 6000.); +float bass = texture(texFFTSmoothed, .003).r * 15.; + +mat2 r2d(float t){ + float c = cos(t), s = sin(t); + return mat2(c,s,-s,c); +} + +float mapbg(vec3 q){ + vec3 p=q; + p *= 2; + p.xy *= r2d(time*TAU*.01); + float ns = sin(p.x+sin(p.y+sin(p.z))); + q += ns; + return length(q) - 1.; +} +vec3 grad(float t){ + t += time*.01; + t += bass; + vec3 a = vec3(.5), b = a, c = vec3(.2, .6, .4), d = vec3(.3,.7,.8); + return a + b*cos(TAU*(c*t + d)); +} + +void chmin(inout vec4 d, vec4 o){ + d=d.x= far) { + return far; + } + } + + return far; +} + +void main(void) +{ + iTime = mod(fGlobalTime, 300)*3.0; + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + uv*=10.5; + uv.x*=0.5; + + float aspect = v2Resolution.x / v2Resolution.y; + + vec3 eye = vec3(4.5,0.0,iTime*0.1); + vec3 up = vec3(0.0,1.0,0.0); + vec3 right = vec3(1,0,0.0); + + vec3 origin = (right * uv.x * aspect + up * uv.y - eye); + + vec3 dir = normalize(cross(right,up)); + float dist = cos(march(origin, dir, NEAR, FAR)); + + float esa = 0.0+abs(fract(iTime*0.1+dist*0.1)*10.); + esa-=fract(texture(texFFTIntegrated,uv.x*0.0005).r*4.)*fract(iTime*0.1*uv.y*0.1)*0.2; + dist*=esa*0.1; + + vec4 col = 1.0-vec4(dist*abs(cos(iTime*0.1)),dist*esa,dist*1.2,1.0); + out_color = col; +} \ No newline at end of file diff --git a/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_wrighter.glsl b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_wrighter.glsl new file mode 100644 index 000000000..cc8feac8a --- /dev/null +++ b/shader_file_sources/2020_12_31_shader_royale_hogmanay/grabber_inerciaroyale_wrighter.glsl @@ -0,0 +1,278 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +#define T fGlobalTime +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) +#define pi acos(-1.) + +vec3 getPath(vec3 p){ + return vec3(normalize(vec2(sin(T*0.5), cos(T*0.7))), 0.); +} + +mat3 getOrtho(vec3 ro, vec3 lookAt){ + vec3 dir = normalize(lookAt - ro); + vec3 right = normalize(cross(vec3(0,1,0), dir)); + vec3 up = normalize(cross(dir, right)); + return mat3(right, up, dir); + } +vec3 getRd(vec3 ro, vec3 lookAt, vec2 uv){ + vec3 dir = normalize(lookAt - ro); + vec3 right = normalize(cross(vec3(0,1,0), dir)); + vec3 up = normalize(cross(dir, right)); + return normalize( dir + right*uv.x + up*uv.y); + } + +#define pmod(p,a) mod(p - 0.5*a, a) - 0.5*a + + +vec2 getF(vec3 po){ + vec4 p = vec4(po,1); + + float sc = 1.29; + + p.z = pmod(p.z,4.); + + + p.xy = pmod(p.xy,5.); + + for(int i = 0; i < 4; i++){ + + p = abs(p); + + if(i == 3 || i ==4){ + + p.x = pmod(p.x,10)/dot(p.xyz,p.xyz); + } + p.xyz -= vec3(0.18, 2.4,9.2); + p.xy *= rot(sin(T)*0.4 + 0.5); + + + if(p.x > p.y) p.xy = p.yx; + if(p.y > p.z) p.yz = p.zy; + if(p.x > p.z) p.xz = p.zx; + + p *= sc; + + } + p /= sc; + + vec2 d = vec2(10e4); + + d.x = length(p.xy)/p.w - 0.01; + + return d; +} + +vec2 map(vec3 p){ + vec2 d = vec2(10e4); + + vec3 v = p; + + d = getF(v); + + + //d.x = length(v.xy) - 0.1; + return d; +} + +float nois(vec3 p){ + + float n = 0.; + float amp = 1.; + float gain = 0.5; + + float lac = 1.5; + mat3 r = getOrtho(vec3(0), vec3(1,-1.5,0.5)); + float warp = 0.2; + float warpTrk = 0.5; + + for(int i = 0; i < 5; i++){ + + p += sin(p*warp)*warpTrk*amp; + n += abs(dot(sin(p), cos(p.zxy)))*amp; + + p *= r; + p *= lac; + amp *= gain; + } + + + return n; +} + +float voln; +float mapCloud(vec3 cloudP){ + float d= 0.; + + d = voln = nois(cloudP*3. + vec3(T*1.,T*1.,-T)*1.02); + + + d = pow(smoothstep(0.,1.,d),2.); + return d*0.2; +} + + +float mapBall(vec3 p){ + p.z -= T; + p -= getPath(p)*2.; + float di = length(p.xy) - .4 - nois(p*6.)*0.1; + float d = smoothstep(0.14,0., di) ; + + + return d; +} + + +vec3 getNormal(vec3 p){ +vec2 t = vec2(0.001,0); +return normalize( map(p).x - vec3( + map(p - t.xyy).x, + map(p - t.yxy).x, + map(p - t.yyx).x +)); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 col = vec3(0); + + vec3 ro = vec3(0); + + ro.z += T; + + ro += getPath(ro); + + ro.xy += normalize(vec2(sin(T)+ cos(T*0.4),cos(T*1.) + sin(T*0.6)))*1.7; + + + vec3 lookAt = vec3(0,0,ro.z + 3); + + lookAt += getPath(lookAt); + + mat3 vp = getOrtho(ro, lookAt); + + + vec3 lDir = normalize(vec3(1)); + //vec3 rd = normalize(vec3(uv,1))*vp; + vec3 rd = getRd(ro, lookAt, uv); + + vec3 p = ro; + float t = 0.; bool hit = false; + vec2 d = vec2(10e5); + for(int i = 0; i < 150; i++){ + d = map(p); + if(d.x < 0.001){ + hit = true; + break; + } + + + p = ro + rd * (t += d.x*0.5); + } + + vec3 cloudP = ro; + float cloudSteps = 20.; + float cloudStepSz = min(t,25.)/cloudSteps; + vec3 cloudAccum = vec3(0); + float cloudT = 0.; + for (float i = 0.; i < cloudSteps; i++){ + float dens = mapCloud(cloudP); + //float densO = mapCloud(cloudP + lDir*0.2); + + //float diff = clamp(dens - dens,0.,1); + + dens *= (1. - cloudT)*cloudStepSz; + + + + cloudT += dens; + cloudAccum += dens*vec3(0.5,0.4,0.8)*(0.5 + 0.5*sin(vec3(3,2,1) + 3.*sin(voln*3. + cloudP.z)) )*1.64; + cloudP += rd*cloudStepSz; + if(cloudT > 1.){ + break; + } + + } + + vec3 ballP = ro; + float ballSt = 4.; + float ballStSz = min(t,4.)/ballSt; + vec3 ballAccum = vec3(0); + float ballT = 0.; + for (float i = 0.; i < ballSt; i++){ + float dens = mapBall(ballP); + float densO = mapBall(ballP + lDir*0.44); + + float diff = clamp(dens - densO*0.4,0.,1.); + //float abs = vec3(); + + vec3 c = vec3(0.6,0.2,0.5); + + c = mix(c*c*0.4, c,diff); + + dens *= (1. - ballT)*ballStSz; + + ballT += dens; + //ballAccum += dens*vec3(0.5,0.4,0.8)*(0.5 + 0.5*sin(vec3(3,2,1) + 3.*sin(voln*1. + ballP.z)) )*1.64; + ballAccum += dens*c; + + ballP += rd*ballStSz; + if(ballT > 1.){ + //break; + } + + } + + + vec3 hitCol = vec3(0); + if(hit){ + vec3 n = getNormal(p); + + #define ao(a) smoothstep(0.,1., map(p + n*a).x/a) + + float AO = ao(0.5)*ao(.4)*ao(.12)*1.; + + hitCol += 0.5 + n; + + + hitCol *= AO; + } + + col += hitCol*1.; + + col = mix(col,cloudAccum,pow(smoothstep(0.,1.,cloudT ),1.)); + col = mix(col,ballAccum,pow(smoothstep(0.,1.,ballT ),1.)); + + + //col += ballAccum; + + col += 1.; + col.xz *= rot(sin(T + t*0.5 + length(uv))*0.02); + + col.yz *= rot(sin(T+t*0.5)*0.04); + col -= 1.; + + col = pow(col,vec3(0.454545)); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Exca.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Exca.glsl new file mode 100644 index 000000000..4b3207ace --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Exca.glsl @@ -0,0 +1,215 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 getcam( vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize(target - cam); + vec3 right = normalize(cross(vec3(0,1,0), forward)); + vec3 up = normalize(cross(forward, right)); + + return normalize( uv.x * right + uv.y * up + fov*forward); +} + +vec3 repeat( vec3 p, vec3 q) +{ + vec3 b = mod(p + 0.5*q,q) - 0.5*q; + return b; +} + +float smin( float a, float b, float k) +{ + float h = clamp(0.5 + 0.5 *(b-a)/k, 0.0, 1.0); + return mix( b,a,h) - k*h*(1.-h); +} + +float box( vec3 p, vec3 b) +{ + vec3 q = abs(p)-b; + return length (max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0); +} + +float sphere( vec3 p, float r ) +{ + return length(p) - r; +} + +float ground( vec3 p, float y) +{ + return p.y - y; +} + +vec2 U(vec2 a, vec2 b) +{ + return vec2( min(a.x, b.x), mix(a.y, b.y, step(b.x, a.x))); +} + +vec3 map( vec3 p, float fft, float fftS) +{ + + float spoff = sin(p.x) + cos(p.z*5.+fGlobalTime+p.y*3.); + float sp1 = sphere( p-vec3( + sin(fGlobalTime*0.75+fftS*2.5), + 1.5+cos(fGlobalTime*0.25), + cos(fGlobalTime*0.5) + ), 0.5+spoff*0.05); + float sp2 = sphere( p-vec3( + sin(fGlobalTime*0.5), + 1.5, + cos(fGlobalTime*0.55+fftS*2.5) + ), 0.5+spoff*0.05); + sp1 = smin(sp1,sp2,0.5); + + float sp3 = sphere( p-vec3( + sin(fGlobalTime*0.25), + 1.5+cos(fGlobalTime*0.25+fftS*2.5)*0.5, + cos(fGlobalTime*0.35) + ), 0.5+spoff*0.05); + + sp1 = smin(sp3,sp1,0.5); + + float h = texture(texNoise, p.xz*.1+vec2(fftS*0.06+fGlobalTime*0.01,-fftS*0.16+fGlobalTime*0.012 )).r*1.0; + h += texture(texNoise, p.xz*.1+vec2(fGlobalTime*0.017,+fGlobalTime*0.02 )).r*0.5; + + float g1 = ground(p, h); + + float b1 = box( p - vec3(3,0,0), vec3(1,10,1)); + sp1 = min(b1,sp1); + + vec2 obu = vec2( sp1, 0.0); + vec2 grn = vec2( g1, 1.0); + + return vec3(U(obu,grn),h); +} + +vec3 march( vec3 cam, vec3 rd, out vec3 p, float fft, float fftS) +{ + float t = 0.0; + for(int i = 0; i < 200; i++) + { + p = cam + rd*t; + vec2 r = map(p,fft,fftS).xy; + t+=r.x; + if(r.x < 0.001) + { + return vec3(r,t); + } + if(t > 20.) + { + return vec3(0, -1,t); + } + } +} + +vec3 normal(vec3 p, float fft, float fftS) +{ + vec2 c = map(p,fft,fftS).xy; + vec2 e = vec2( 0.01, 0); + return normalize( vec3( + map(p+e.xyy,fft,fftS).x, + map(p+e.yxy,fft,fftS).x, + map(p+e.yyx,fft,fftS).x + ) - c.x ); +} + +float light( vec3 n, vec3 p, vec3 l) +{ + return max(0.0, dot( n, normalize( l - p))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float fft = texture(texFFT, 0.2).r; + float fftS = texture(texFFTIntegrated, 0.2).r; + + vec3 cam = vec3( + sin(fftS*4)*2., + 1.25+cos( fftS* (0.25+sin(fGlobalTime*0.01)*0.25 ))*0.5, + 8); + vec3 target = vec3(0,0.5+cam.y,0); + vec3 p = vec3(0); + vec3 rd = getcam(cam,target,uv,2.0+sin(fftS*3.)*1.85); + vec3 res = march(cam, rd, p, fft, fftS); + + float ambient = 0.5; + + vec3 light1 = vec3( + sin(fGlobalTime)*10, + 10., + cos(fGlobalTime*0.4)*10 + ); + + vec3 col = vec3(0.); + if(res.y < -0.5) + { + col = vec3(0.25); + } + else if(res.y < 0.5) + { + vec3 n = normal(p, fft, fftS); + vec3 ref = reflect(rd,n); + vec3 pp = vec3( 0); + vec3 rr = march( p+n, ref,pp,fft, fftS); + + if( rr.y < -0.5) + { + col += mix(vec3( 0.2, 0.2, 0.7), vec3(0.), sin( 55*p.x+5*p.z +fftS*5. )*cos( 35*p.x+65*p.z +fftS+fGlobalTime )); + } + else if(rr.y < 0.5) + { + vec3 nn = normal(pp,fft, fftS); + vec3 ref2 = reflect(ref,nn); + vec3 ppp = vec3( 0); + vec3 rrr = march( pp+nn, ref2,ppp,fft, fftS); + + if( rrr.y < -0.5) + { + col = vec3(0.25); + } + else if(rrr.y < 0.5) + { + col = vec3(0.5); + } + else if(rrr.y < 1.5) + { + col = mix(vec3(1.0,0.6,0.),vec3(0.0,0.0,0.0),ppp.y*3.-fft*150.) * (ambient+light( normal(ppp,fft, fftS), ppp, light1)); + } + col = mix( col, vec3(0.4) * (ambient+light( nn, pp, light1)), 0.5); + } + else if(rr.y < 1.5) + { + col = mix(vec3(1.0,0.6,0.),vec3(0.0,0.0,0.0),pp.y*3.-fft*150.) * (ambient+light( normal(pp,fft, fftS), pp, light1)); + } + col = mix( col, vec3(0.0) * (ambient+light( n, p, light1)), 0.5); + //col *= vec3(1.0,1.05,1.) * (ambient+light( n, p, light1)); + //col = vec3(0.4)*n * (ambient+light( n, p, light1)); + + } + else if(res.y < 1.5) + { + col = mix(vec3(1.0,0.76,0.),vec3(0.0,0.0,0.0),p.y*5.-fft*150.) * (ambient+light( normal(p,fft, fftS), p, light1)); + } + + col = mix( col, vec3(0.0,0.05,0.15), smoothstep( 0., 15., res.z)); + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Flopine.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Flopine.glsl new file mode 100644 index 000000000..4abd5e183 --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_Flopine.glsl @@ -0,0 +1,196 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define PI acos(-1.) +#define TAU 6.283581 +#define ITER 50. + +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define crep(p,c,l) p=p-c*clamp(round(p/c),-l,l) + +#define dt(sp,off) fract((fGlobalTime+off)*sp) +#define bouncy(sp,off) sqrt(sin(dt(sp,off)*PI)) +#define sw(sp,off) floor(sin(dt(sp,off)*TAU)*PI) + +struct obj +{ + float d; + vec3 cs; + vec3 cl; +}; + +obj minobj (obj a, obj b) +{ + if (a.dp.x) p = p.yx; +} + +float box (vec3 p, vec3 c) +{ + vec3 q = abs(p)-c; + return min(0.,max(q.x,max(q.y,q.z)))+length(max(q,0.)); +} + +float sc (vec3 p, float d) +{ + p=abs(p); + p=max(p,p.yzx); + return min(p.x,min(p.y,p.z))-d; +} + +obj prim1 (vec3 p) +{ + p.x = abs(p.x)-3.; + float per = 0.9; + float id = round(p.y/per); + p.xz *= rot(sin(dt(0.8,id*1.2)*TAU)); + crep(p.y, per,4.); + mo(p.xz,vec2(0.3)); + p.x += bouncy(2.,0.)*0.8; + float pd = box(p,vec3(1.5,0.2,0.2)); + return obj(pd,vec3(0.5,0.,0.),vec3(1.,0.5,0.9)); +} + +obj prim2 (vec3 p) +{ + p.y = abs(p.y)-6.; + p.z = abs(p.z)-4.; + mo(p.xz, vec2(1.)); + vec3 pp = p; + mo(p.yz, vec2(0.5)); + p.y -= 0.5; + float p2d = max(-sc(p,0.7),box(p,vec3(1.))); + p = pp; + p2d = min(p2d, max(box(p,vec3(bouncy(2.,0.))*4.),sc(p,0.2))); + return obj(p2d, vec3(0.2),vec3(1.)); +} + +obj prim3 (vec3 p) +{ + p.y -= 1.5; + p.z = abs(p.z)-10.; + float per = 0.8; + vec2 id = round(p.xy/per)-.5; + float height = 1.*bouncy(2.,sin(length(id*0.05))); + float p3d = box(p,vec3(2.,2.,0.2)); + crep(p.xy,per,2.); + p3d = stmin(p3d,box(p+vec3(0.,0.,height*0.9),vec3(0.15,.15,height)),0.2,3.); + return obj (p3d, vec3(0.1,0.7,0.),vec3(1.,0.9,0.)); +} + +obj prim4 (vec3 p) +{ + p.y = abs(p.y)-5.; + mo(p.xz, vec2(1.)); + float scale = 1.5; + p *= scale; + float per = 2.*(bouncy(0.5,0.)); + crep(p.xz,per,2.); + float p4d = max(box(p,vec3(0.9)),sc(p,0.25)); + return obj (p4d/scale, vec3(0.1,0.2,0.4),vec3(0.1,0.8,0.9)); +} + +float squared (vec3 p,float s) +{ + mo(p.zy,vec2(s)); + return box(p,vec3(0.2,10.,0.2)); +} + +obj prim5 (vec3 p) +{ + p.x = abs(p.x)-8.; + float id = round(p.z/7.); + crep(p.z,7.,2.); + float scarce = 3.; + float p5d=1e10; + for(int i=0;i<4; i++) + { + p.x += bouncy(1.,id*0.9)*0.6; + p5d = min(p5d,squared(p,scarce)); + p.yz *= rot(PI/4.); + scarce -= 1.; + } + return obj(p5d,vec3(0.5,0.2,0.1),vec3(1.,0.9,0.1)); +} + +obj SDF (vec3 p) +{ + p.yz *= rot(-atan(1./sqrt(2.))); + p.xz *= rot(PI/4.); + + obj scene = prim1(p); + scene = minobj(scene,prim2(p)); + scene = minobj(scene,prim3(p)); + scene = minobj(scene,prim4(p)); + scene = minobj(scene, prim5(p)); + return scene; +} + + +vec3 getnorm (vec3 p) +{ + vec2 eps = vec2(0.001,0.); + return normalize(SDF(p).d-vec3(SDF(p-eps.xyy).d,SDF(p-eps.yxy).d,SDF(p-eps.yyx).d)); +} + +void main(void) +{ + vec2 uv = (2.*gl_FragCoord.xy-v2Resolution.xy)/ v2Resolution.y; + + //if (sw(0.1,0.)<0.5) mo(uv,vec2(0.5)); + + vec3 ro = vec3(uv*5.,-30.),rd = vec3(0.,0.,1.), + p = ro, + col = texture(texFFTSmoothed, length(uv*0.2)).xxx*30., + l = normalize(vec3(1.,1.4,-2.)); + + obj O; bool hit = false; + + for (float i=0.; i100.0) break; + + p+=r*d*.8; + + } + + vec3 col=vec3(0); + if(hit) { + vec3 id2=id; + vec2 off=vec2(0.01,0); + vec3 n=normalize(map(p)-vec3(map(p+off.xyy), map(p+off.yxy), map(p+off.yyx))); + vec3 l=normalize(vec3(1,-3,2)); + if(dot(l,n)<0) l=-l; + vec3 h=normalize(l+r); + float spec=max(0,dot(n,h)); + + float fog=1-clamp(length(p-s),0,1); + + float ao=gao(p,n,.1)*gao(p,n,.2)*gao(p,n,.4)*gao(p,n,.8); + col += max(0,dot(n,l)) * (0.3 + pow(spec,10) + pow(spec,50)) * ao * 3; + + for(int i=1; i<15; ++i) { + float dist=i*.07; + col += max(0,map(p+r*dist)) * vec3(.5+dist,0.5,0.5) * .8 * ao; + } + + off.x=0.04; + vec3 n2=normalize(map(p)-vec3(map(p+off.xyy), map(p+off.yxy), map(p+off.yyx))); + col += vec3(id2.x,id2.y*.5+.4,.7)*pow(curve(time-id2.z, .7),4)*.1*length(n-n2); + + //col+=map(p-r*.2)*4; + } + + col += pow(atm*3.,vec3(2.)); + + col += max(col.yzx-1,0); + col += max(col.zxy-1,0); + + col *= 1.2-length(uv); + + float t4 = time*.3+uv.y*.6+floor(abs(uv.x+col.x*.1)*3)*17; + col.xz*=rot(t4); + col.yz*=rot(t4*1.3); + col=abs(col); + + col=smoothstep(0.0,1.,col); + col=pow(col, vec3(.4545)); + + vec2 uv2=gl_FragCoord.xy / v2Resolution.xy; + uv2-=.5; + uv2*=.92+rnd(uv2)*.03; + uv2+=.5; + vec3 c2=texture(texPreviousFrame, uv2).xyz; + float t3=0.0; + c2.xz *= rot(.05+t3); + c2.xy *= rot(.02+t3); + c2=abs(c2); + float fac=clamp(1.5-length(uv)*1.3,0,1); + fac=min(fac, pow(fract(time*.5),2.)); + col *= 0.3+fac*.7; + col += c2*.9*(1-fac); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_anticore.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_anticore.glsl new file mode 100644 index 000000000..098e5282c --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_anticore.glsl @@ -0,0 +1,193 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float n(float x) { + return texture(texFFT, x).x; +} + +float ns(float x) { + return texture(texFFTSmoothed, x).x; +} + +float smin(float a, float b, float k) { + float h = max(k - abs(a-b), 0.) / k; + return min(a, b) - (h * h * k / 4); +} + +mat2 rot(float a) { + float c = cos(a); + float s = sin(a); + return mat2(c, s, -s, c); +} + +float sdSphere (vec3 p, vec3 pos, float r) { return length(p + pos) - r; } + +float sdBox(vec3 p, vec3 pos, vec3 b) { + vec3 q = abs(p + pos) - b; + return length(max(q, 0)) + min(max(q.x, max(q.y, q.z)), 0); +} + +float sdTwist(vec3 p, vec3 pos) { + p += pos; + p.xz *= rot(p.y + fGlobalTime * 5); + //p.x += sin(p.y / 10 + fGlobalTime) / 2; + + return sdBox(p, vec3(0,0,0), vec3(0.4, 999, 0.4)) - ns(0.4) * 50 * sin(p.z); +} + +float sdTwists(vec3 p, vec3 pos) { + p += pos; + p.yz *= rot(3.1415 / 2); + p.xz *= rot(p.y / 10); + float d = 999; + d = min(d, sdTwist(p, vec3(0,0,4 + sin (p.y / 2) * 0.5 ))); + d = min(d, sdTwist(p, vec3(0,0,-4 + sin (p.y / 2) * 0.5))); + d = min(d, sdTwist(p, vec3(4 + sin (p.y / 2) * 0.5,0,0))); + d = min(d, sdTwist(p, vec3(-4 + sin (p.y / 2) * 0.5,0,0))); + return d; +} + +float sdBlob (vec3 p, vec3 pos) { + int scount = 8; + float d = 999; + for (int i = 0; i < scount; i++) { + d = smin(d, sdSphere(p, pos + vec3(sin(i + fGlobalTime * 1.7),cos(i + fGlobalTime * 2.1),sin(i + fGlobalTime) / 2), 0.01), 0.5); + } + + return d; + +} + +vec2 map(vec3 p) { + float blob = sdBlob(p, vec3(sin(fGlobalTime) * 0.1, cos(fGlobalTime) * 0.1, sin(fGlobalTime) + 1)); + float tun = sdTwists(p, vec3(0, 0, 20)); + + if (blob < tun) { + return vec2(blob,0); + } else { + return vec2(tun,1); + } +} + +vec3 norm (vec3 p) { + const float E = 0.01; + const vec2 k = vec2(1, -1); + return normalize( + k.xyy * map( p + k.xyy * E).x + + k.yyx * map( p + k.yyx * E).x + + k.yxy * map( p + k.yxy * E).x + + k.xxx * map( p + k.xxx * E).x + ); +} + + +vec3 bg(vec2 uv) { + float ldiv = 6; + float gain = 15; + float sinmul = 5; + float xmul = 0.01; + float ymul = 0.02; + float diff = 0.5; + vec3 col = vec3(0.6, 0.4, 0.5); + float cols = 6; + + vec3 bgc = col * cols * vec3( + ns(length(uv / ldiv) + sin(uv.x * sinmul + fGlobalTime) * xmul + sin(uv.y * sinmul + fGlobalTime) * ymul), + ns(length(uv / ldiv) + sin(uv.x * (sinmul - diff) + fGlobalTime) * xmul + sin(uv.y * (sinmul - diff) + fGlobalTime) * ymul), + ns(length(uv / ldiv) + sin(uv.x * (sinmul - diff * 2) + fGlobalTime) * xmul + sin(uv.y * (sinmul - diff * 2) + fGlobalTime) * ymul) + ); + + return mix(vec3(0), bgc, length(uv * gain)); +} + +vec3 blobSub(vec3 p, vec3 n, float d, float td, vec2 uv) { + return vec3(0.3, 0.3, 0.9) * exp(-abs(d)) * 0.04 * (0.4 + ns(0) * 10); +} + +vec3 blobSurf(vec3 p, vec3 n, float d, float td, vec2 uv) { + return n * 0.05; +} + +vec3 fog(vec3 c, vec3 fc, float d, float md) { + return mix(c, fc, min(md / d, 0)); +} + +vec3 dirlight(vec3 n, vec3 lc, vec3 ld) { + return lc * dot(ld, n); +} + +vec3 tunCol(vec3 p, vec3 n, float d, float td, vec2 uv) { + vec3 c = vec3(1) * 0.2 + bg(n.xy / 2) * 1.4 + dirlight(n, vec3(1,0,0), vec3(1, 1, 0)) * 0.5 + + dirlight(n, vec3(1,1,0), vec3(-1, 1, 0)) * 0.5; + return fog(c, bg(uv), td, 50); +} + + + +vec3 tr(vec3 ro, vec3 rd, vec2 uv) { + float td = 1; + vec2 h; + vec3 blobc = vec3(0); + vec3 blobglo = vec3(0); + + for (int i = 0; i < 150; i++) { + h = map(ro + rd * td); + if (h.x < 1 && h.x > 0) { + if (h.y == 0) { + blobglo += vec3(0.7, 0.2, 0.6) * 0.02; + } + } + + if (h.x > 0.01) { + td += h.x; + } else { + td += 0.01; + } + + + + + if (h.x < 0.01) { + + vec3 ip = ro + rd * td; + vec3 inorm = norm(ip); + + if (h.x > 0 && h.y == 0) { + blobc += blobSurf(ip, inorm, h.x, td, uv); + } + + if (h.y == 0) { + blobc += blobSub(ip, inorm, h.x, td, uv); + } else { + return tunCol(ip, inorm, h.x, td, uv); + } + } + } + + return bg(uv) + blobc + blobglo; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(0,0,2); + vec3 rd = normalize(vec3(uv, 0) - ro); + + out_color = vec4(tr(ro, rd, uv), 1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_cosamentale.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_cosamentale.glsl new file mode 100644 index 000000000..b90d27ef6 --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_cosamentale.glsl @@ -0,0 +1,147 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float time = fGlobalTime; +float rd(vec3 p){return fract(sin(dot(floor(p),vec3(45.,65.,269.)))*7845.236);} +mat2 rot(float t){float c = cos(t); float s = sin(t); return mat2 (c,-s,s,c);} +float bl (vec2 p, vec2 b){ vec2 q = abs(p)-b; + return length(max(vec2(0.),q))+min(0.,max(q.x,q.y));} + float box (vec3 p, vec3 b){ vec3 q = abs(p)-b; + return length(max(vec3(0.),q))+min(0.,max(q.x,max(q.z,q.y)));} + + float zl1 ;float zl2;float bl2;float zl3; float bl3; +float map(vec3 p,vec3 tm){ + vec3 pb =p; + vec3 pc = p; + pc.xy *= rot(tm.y); + vec3 pnc =pc; + + vec3 pn = p; + vec3 pl = p; + p = abs(p); + p -= 1.; + if(p.x>p.y)p.xy=p.yx; + if(p.x>p.z)p.xz=p.zx; + vec3 p2 = p; + vec3 rp1 = vec3 (2.); + p = mod(p,rp1)-0.5*rp1; + vec3 rp2 = vec3 (4.); + p2 = mod(p2,rp2)-0.5*rp2; + float d1 = bl(p.zy,vec2(0.2)); + float d2 = bl(pn.xz,vec2(5.)); + float d4 = bl(p2.xz,vec2(0.1)); + float dl =min(d1,d4); + float d3 = max(min(d1,d4),-d2); + zl1 = max(d4,-d2); + //return d3; + pc = abs(pc); + pc += 3.; + if(pc.x40.){break;} + if(d<0.01){break;} + p += r*d; + dd +=d; + } + vec3 n = nor(p,tm); + float tex = rd(p*30.); + float s = smoothstep(40.,0.,dd); + float dn = smoothstep(0.,2.,length(p.y))*smoothstep(0.,2.,length(p.x))*smoothstep(0.,2.,length(p.z)); + float ml = distance(0.5,fract(p.x*0.1+time*2.)); + float l1 = smoothstep(2.,0.,zl1)*0.2+smoothstep(3.,0.,zl1)*0.1*smoothstep(0.,0.5,ml)*dn; + l1 += smoothstep(1.,0.,zl1)*1.5*smoothstep(0.25,0.26,ml); + float l2 = smoothstep(0.05,0.,zl2)*2.+bl2*0.05; + float l3 = smoothstep(0.05,0.,zl3)*2.+bl3*0.5; + float ld = clamp(dot(n,-r),0.,1.); + float fres = pow(1.-ld,3.+tex*6.)*0.1; + float spec = pow(ld,5.+tex*10.)*0.2; + float b = sqrt(24.); + float c = 0.; + float d = pow(length(uv.y),2.)*0.03+0.0001; + float r0 = (fres+spec+l1+l2+l3)*s; + for(float j = -0.5*b;j <=0.5*b;j++) + for(float k = -0.5*b;k <=0.5*b;k++){ + c += texture(texPreviousFrame,uc+vec2(j,k)*d).a; + } + c /= 24.; + float tr = step(0.7,fract(time*0.3)); + + vec3 r1 = mix(vec3(1.),3.*abs(1.-2.*fract(c*0.4+mix(0.45,0.85,tr)+vec3(0.,-1./3.,1./3.)))-1.,mix(0.25,0.8,tr))*c; + vec3 r2 = pow(r1,mix(vec3(0.55,0.8,0.7),vec3(1.2),length(uv.y))); + + out_color =vec4(r2,r0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_hArDy.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_hArDy.glsl new file mode 100644 index 000000000..236732a15 --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_hArDy.glsl @@ -0,0 +1,623 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float PI=acos(-1); +float e,ee,eee; +vec4 D=vec4(99); + +#define t fGlobalTime +#define Z 166 +#define I 133 + +#define V(a,b,c) mix(clamp(abs(fract(a+vec3(1,2,3)/3)*6-3)-1,0,1),vec3(1),b)*c +#define S(a,b,c) -log(exp(-c*a)+exp(-c*b))/c +#define W(a,b) cos(b)*a+sin(b)*vec2(-a.y,a.x) +#define B(a,b) (length(a)-b) +#define C(a,b) max(max(a.x-b.x,a.y-b.y),a.z-b.z) +#define F(a,b) (a.x+a.y+a.z-b)/3 +#define E(a,b,c) max(length(a.xy)-b,a.z-c) +#define H(a,b,c) max(max(a.x*.5+a.y,a.x+a.y*.5)-b,a.z-c) + + +vec2 Y(vec2 p, float b) +{ + vec2 a=W(p,-PI/(b*2)); +return W(p,floor(atan(a.x,a.y)/PI*b)*(PI/b)); +} + + + + + + + +float M(vec3 p) +{ + float a=length(p)*.05; + + D.y=-B(p,17+sin(p.x+t*.1+e*.3)+cos(p.y+t*.13+e*.23)+sin(p.z+t*.16+e*.27)); + + D.x=B(p,2); + + p.xz=W(p.xz,PI*sin(t*.1+e*.3-a)); + p.yz=W(p.yz,PI*cos(t*.13+e*.23-a)); + p.xy=W(p.xy,PI*sin(t*.16+e*.27-a)); + + p.xz=Y(p.xz,3+2*sin(t*.1+e*.3)); + p.yz=Y(p.yz,3+2*cos(t*.1+e*.3)); + + D.x= + S( + S( + S( + D.x, + E(abs(p),.1,5), + 7 + ), + H(abs(p-vec3(0,0,5)),.2,.2), + 3 + ), + F(abs(p-vec3(0,0,6)),.75), + 3 + ) + ; + + + +return .5* +min( + D.x, + D.y +) +; +} + + + + + + +//##################################################################### + + + + + + + +float M2(vec3 p) +{ + float + a=floor(p.z/20), + b=-E(abs(p),17,100000000), + c=H(abs(p),1,100000000) + ; + + D.x=c; + + + p.xy=W(p.xy,PI*sin(t*.16+e*.5-a*1.7-length(p.xy)*.05)); + + p.xy=Y(p.xy,3+.5*floor(4*sin(a*1.7))); + + p.z=mod(p.z,20)-10; + + D.x= + S( + S( + S( + D.x, + H(abs(p),3,1), + 1 + ), + H(abs(p.zxy),.8,17), + 3 + ), + b, + .5 + ) + ; + + + +return .4* + D.x +; +} + + + + + + + + +//##################################################################### + + + + + + + +float M3(vec3 p) +{ + D.x=B(p,2); + + p.xz=W(p.xz,PI*sin(t*.16+e*.5-length(p.xy)*.02)); + p.yz=W(p.yz,PI*cos(t*.13+e*.4-length(p.xy)*.02)); + p.xy=W(p.xy,PI*sin(t*.17+e*.3-length(p.xy)*.02)); + + p.xz=Y(p.xz,4); + p.yz=Y(p.yz,4); + + D.x= + S( + S( + D.x, + H(abs(p.xyz),.3-.2*sin(length(p)*1.5+t+e*7),17), + 3 + ), + -C(abs(p),vec3(19,19,19)), +// -B(p,19), + .5 + ) + ; + + + +return .4* + D.x +; +} + + + + +//##################################################################### + + + + + + + +float M4(vec3 p) +{ + + D.x=F(abs(p),2); + + p.xz=W(p.xz,PI*sin(t*.16+e*.15-length(p.xy)*.03)); + p.yz=W(p.yz,PI*cos(t*.13+e*.14-length(p.xy)*.03)); + p.xy=W(p.xy,PI*sin(t*.17+e*.13-length(p.xy)*.03)); + + p.xz=Y(p.xz,8); + p.yz=Y(p.yz,8); + + D.x= + S( + S( + S( + D.x, + E(abs(p.xyz),.01-.005*sin(length(p)*.1+t+e*7),17), + 9 + ), +// -C(abs(p),vec3(19,19,19)), + -B(p,19), + .5 + ), +// B(p-vec3(0,0,mod(t*9+atan(p.x,p.y),19)),.3), +// B(p-vec3(0,0,mod(t*9,19)),.3), + B(abs(p-vec3(0,0,mod(t*7,19))),.1), + 3 + ) + ; + + + +return .4* + D.x +; +} + + + + + + + + + + + +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + +e = texture( texFFTIntegrated, .007 ).r*.5; +ee = texture( texFFTSmoothed, .4 ).r * 100; +eee = texture( texFFT, .4 ).r * 100; + +int i=0,j=1; + +float d,z,f,g=0, + tt=mod(e,16), +// T=mod(t,8) + T=mod(t,16) +// T=13 +; + +vec3 c=vec3(0); + + + +if(T<4) +{ +vec3 + r=normalize(vec3(uv,1)), + p=vec3(0,0,-11+5*sin(t*.1+e*.3)), + l=vec3(.7,.5,-1), + ll=vec3(-.7,-.5,-1), + q=p, + n +; + +p+=r; + +r.xz=W(r.xz,.5*sin(t*.1+e*.5)); +r.yz=W(r.yz,.3*cos(t*.13+e*.4)); + + + +f=sign(M(p)); + +while(++i5)break; + + f=-f; +// r=refract(r,n,.57); + r=refract(r,n,.7); + p+=r; +} +} + + +} +else +if(T<8) +{ + +//---------------------------------------------------------------------------------- + +float a=(tt<8?10:27)+5*sin(t*.1+e*.3); +//float a=10+5*sin(t*.1+e*.3); + +vec3 + r=normalize(vec3(uv,1)), + p=vec3( + a*sin(t*.1+e*.3), + a*cos(t*.1+e*.3), + t*3+e*6 + ), + l=vec3(.7,.5,-1), + ll=vec3(-.7,-.5,-1), + q=p, + n +; + +p+=3*r; + +r.xz=W(r.xz,sin(t*.1+e*.3)); +r.yz=W(r.yz,cos(t*.1+e*.3)); + + + +f=sign(M2(p)); + +while(++i5)break; + + f=-f; +// r=refract(r,n,.57); + r=refract(r,n,.7); + p+=r; +} +} + + +} +else +if(T<12) +{ + +//---------------------------------------------------------------------------------- + +float a=(tt<8?10:33)+5*sin(t*.3+e*.7); +//float a=10+5*sin(t*.1+e*.3); + +vec3 + r=normalize(vec3(uv,1)), + p=vec3( + 0, + 0, + -a + ), + l=vec3(.7,.5,-1), + ll=vec3(-.7,-.5,-1), + q=p, + n +; + +p+=r; + +r.xz=W(r.xz,.5*sin(t*.1+e*.17)); +r.yz=W(r.yz,.3*cos(t*.13+e*.13)); + + + +f=sign(M3(p)); + +while(++i5)break; + + f=-f; +// r=refract(r,n,.57); + r=refract(r,n,.7); + p+=r; +} +} + + +} + +else +//if(T<12) +{ + +//---------------------------------------------------------------------------------- + + + + + + + + + + + + + + +//float a=(tt<8?10:33)+5*sin(t*.3+e*.7); +float a=10+5*sin(t*.1+e*.3); + +vec3 + r=normalize(vec3(uv,1)), + p=vec3( + 0, + 0, + -a + ), + l=vec3(.7,.5,-1), + ll=vec3(-.7,-.5,-1), + q=p, + n +; + +p+=r; + +r.xz=W(r.xz,.5*sin(t*.1+e*.17)); +r.yz=W(r.yz,.3*cos(t*.13+e*.13)); + + + +f=sign(M4(p)); + +while(++i5)break; + + f=-f; +// r=refract(r,n,.57); + r=refract(r,n,.7); + p+=r; +} +} + + +} + + + + + + + + + + + + + +c=mix(c,pow(c,vec3(99)),.5); + +c+=pow(g,2)*V(.1,.1,eee*.00025); + + +//out_color = vec4(pow(c,vec3(.45)),1); +//out_color = vec4(pow(c,vec3(.7)),1)*(1-pow(dot(uv,uv),3)); +out_color = +mix( + 1.5*vec4(pow(c,vec3(.7)),1)*(1-pow(dot(uv,uv),3)), + texture(texPreviousFrame,gl_FragCoord.xy/v2Resolution), + .9 +); + + +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_monsieursoleil.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_monsieursoleil.glsl new file mode 100644 index 000000000..0303ecc01 --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_monsieursoleil.glsl @@ -0,0 +1,174 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define mod01 floor(mod(time * 2.0, 4.0)) + +struct matter +{ + float m; + float gg; + float dist; +}; + +mat2 rot(float a) +{ + float ca = cos(a); + float sa = sin(a); + + return mat2(ca, sa, -sa, ca); +} + +vec3 hash33(vec3 p) +{ + float n = sin(dot(p, vec3(7.0, 15.0, 112.0))); +return fract(vec3(2356.0, 23564.0, 36521.0) * n); +} + +float box(vec3 p, vec3 s) +{ + p = abs(p) - s; + return max(p.x, max(p.y, p.z)); +} + +vec2 rep(vec2 p, vec2 r) +{ + return (fract(p/r-0.5)-0.5)*r; +} + +vec2 repId(vec2 p, vec2 r) +{ + return (floor(p/r-0.5)-0.5)*r; +} + +float rnd2(vec2 uv) +{ + return fract(dot(sin(uv * 126.232 + uv.yx * 465.2354), vec2(1256.3265))); +} + +void map(inout matter mat, vec3 p) +{ + float mat01, rand01; + vec3 p01 = p, p02 = p; + float f = texture( texFFT, 0.1 ).r * 10; + + p02 -= vec3(0.0, 10.0 - 8.0 * sin(p.z * 0.10 + time *0.5), 0.0); + p01 += vec3(0.0, 2.0 - 1.0 * sin(p.z * 0.05 + time), 0.0); + + vec2 id01 = repId(p01.xz, vec2(0.85)); + p01.xz = rep(p01.xz, vec2(0.85)); + float rnd01 = rnd2(id01) + f * 0.05; + + vec2 id02 = repId(p02.xz, vec2(0.85)); + p02.xz = rep(p02.xz, vec2(0.85)); + float rnd02 = rnd2(id02) + f * 0.05; + + mat01 = box(p01, vec3(0.65, 2.15 * rnd01 * abs(sin((time * 0.5 * rnd01) + mod01 + 1.55) * sin(rnd01 + (f * 0.85))), 0.65)); + + mat01 = min(mat01, box(p02, vec3(0.45, 1.55 * rnd01 * abs(sin((time * 0.5 * rnd01) + mod01 + 1.55) * sin(rnd01 + (f * 0.85))), 0.45))); + + mat.gg += 0.15/(0.05+abs(mat01)); + + + + mat.m = mat01; +} + +vec3 normals(vec3 p) +{ + vec2 uv = vec2(0.01, 0.0); + + matter m01, m02, m03, m04; + + map(m01, p); + map(m02, p - uv.xyy); + map(m03, p - uv.yxy); + map(m04, p - uv.yyx); + + return normalize(m01.m - vec3(m02.m, m03.m, m04.m)); +} + + +float shadow(vec3 p, vec3 l, int steps, float minL, float maxL) +{ + matter mat; + + for(int i = 0; i< 100; ++i) + { + map(mat, p); + + mat.dist += mat.m; + if(mat.m < minL) + return 1.0; + + if(mat.dist > maxL) + return 0.0; + + + } + + return 0.0; +} + +void main(void) +{ + vec3 l = normalize(vec3(10.0, 10.0, 5.0)); + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 o = vec3(25.0 * cos(time * 0.25 + mod01), 0.0, 3.0 * sin(time * 0.25 + mod01)), t = vec3(0.0, -2.0, 0.0); + vec3 fr = normalize(t-o); + vec3 ri = normalize(cross(vec3(0.0, 1.0, 0.0), fr)); + vec3 up = normalize(cross(fr, ri)); + vec3 dir = normalize(fr + uv.x * ri + uv.y * up); + vec3 p = o + dir * 0.25; + + dir *= 0.985 + hash33(p)* 0.02; + + matter mat; + vec3 col= vec3(1.0); + + for(int i = 0; i < 100; ++i) + { + p.xy *= rot(p.z * 0.0002); + + map(mat, p); + + vec3 n = normals(p); + float s = shadow(p+n*0.2, l, 30, 0.2, 20.0); + + col -= dot(n, l) * pow( mat.gg * 0.0115 , 30.0) * mix(vec3(1.0), vec3(1.0) * 0.1, mat.dist); + col -= s * vec3(1.0, 1.0, 0.0) * 0.01; + + if(abs(mat.m) < 0.05) + { + mat.m = 1.65; + } + + p+= (mat.m * 0.2) * dir; + mat.dist += mat.m; + } + + col *= (1.0 - mat.dist/250.0); + + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_provod.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_provod.glsl new file mode 100644 index 000000000..3155bb577 --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_provod.glsl @@ -0,0 +1,186 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +float t=fGlobalTime,dt=fFrameTime; + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float vmax(vec3 v){return max(max(v.x,v.y),v.z);} +#define box(v,s) vmax(abs(v) - (s)) + +#define Rm(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define T(t,s) texture(t,(s)/textureSize(t,0)) +#define P(s) T(texPreviousFrame, s) +#define N(s) T(texNoise, s).r +#define fft(s) T(texFFT, s).r +#define ffts(s) T(texFFTSmoothed, s).r +#define ffti(s) T(texFFTIntegrated, s).r +float h(float f) { return fract(sin(f)*45734.4378); } +#define rep(p,s) (mod(p,s)-(s)*.5) + +vec3 ptrans(vec3 p) { + p.x += 2.* sin(.4 * ffti(10) + t * .3); + p.xz *= Rm(t + ffti(6) * 1.); + p.xy *= Rm(t*.7); + p.z += 2.* sin(.2 * ffti(10) + t * .3); + return p; +} + +float w(vec3 p) { + vec3 bp = ptrans(p); + float d = box(bp, vec3(.3 + 1.5 * ffts(7) * 17.)); + + vec3 pf = p; + pf.y -= h(floor(ffti(15))) * 100.; + pf.xy *= Rm(ffti(8)*.1 - t - p.z*(-.005+ .01 * ffts(7.))); + float d2 = box(rep(pf+vec3(0., 0., -t*100.), vec3(10., 10., 40.)), vec3(.2)); + if (ffts(5.) > .21) + d = min(d, d2); + else d = d2; + + + return d; +} + + +float pv(vec2 pix, vec2 RES) { + float v = 0.; + vec2 uv=pix/RES*2. - 1.; uv.x*=RES.x/RES.y; + + float a = N(pix) * 20.; + vec2 off = 2. * vec2(cos(a), sin(a)) * (.5 + 60.*ffts(5)); + off -= uv*2.; + v += P(pix + off).a; + v -= dt * 3. * (.1 + 20. * ffts(7.)); + + vec3 O=vec3(0., 0., 5.), D=normalize(vec3(uv, -2.)), p; + float L=100.,l=0.,d; + for (float i=0.;i<100.;++i){ + d=w(p=O+D*l); l+=d; + if (d<.001*l||l>L)break; + } + if (l .9) + { + O.y += 2.; + D.yz *= Rm(.5); + } + vec3 kc = vec3(1.); + float sd = h(pix.x+pix.y+t+s); + for(float b=0.;b<2.;b++){ + float ly = D.y < .0 ? - O.y / D.y : 1e6; + float lz = D.z < .0 ? - O.z / D.z : 1e6; + float r = 0.; + vec3 p, n, c=vec3(0.); + if (ly < lz) { + if (ly > 100.) break; + p = O + D * ly; + n = vec3(0., 1., 0.); + //c = vec3(fract(p.xz), 0.); + //c = vec3(0.,1.,0.); + vec2 uv = p.xz * 100; + r = N(uv); + r *= (.6 + .4 * step(.7, fract(t+dot(normalize(vec2(1.)), uv/100.)))); + } else { + if (lz > 100.) break; + p = O + D * lz; + n = vec3(0., 0., 1.); + //C += kc * vec3(fract(p.xy), 0.); + vec2 uv = p.xy * TS / 4.; //uv.x /= TS.x / TS.y; + uv.x /= TS.x / TS.y; + + //uv.x += 100.; + uv = floor(uv); + //uv = clamp(uv, vec2(0.), TS); + #define pxl(p,s) (floor((p)/(s))*(s)) + float ps = 1. + max(0., floor(1. + ffts(8) * 200. + 8. * sin(N(floor(uv/1.))))); + uv = pxl(uv, ps); + + //uv.x -= floor(ffts(uv.y/100.) * 10.)*100.; + + c = vec3( + pf(uv+.7).a, + pf(uv).a, + pf(uv-.4).a); + + //c = vec3(1.,0.,0.); + } + C += kc * c; + + O = p + .01 * n; + D = normalize(mix( + reflect(D, n), + vec3(h(sd+=D.y),h(sd+=D.z),h(sd+=D.x)) - .5, + r)); + kc *= .9; + } + } + + C/=NS; + + C = mix(C, vec3( + pf(pix-.3).r, + pf(pix).g, + pf(pix+.9).b + ), min(1., length(uv) * .9 * (50. * ffts(17)))); + + C *= smoothstep(1.3, .9, length(uv)); + + out_color = vec4(sqrt(C), A); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_rimina.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_rimina.glsl new file mode 100644 index 000000000..a37f37630 --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_rimina.glsl @@ -0,0 +1,158 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.5).r; + +const float E = 0.001; +const float FAR = 40.0; +const int STEPS = 64; + +vec3 glow = vec3(0.0); + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +float box(vec3 p, vec3 r){ + vec3 d = abs(p)-r; + + return length(max(d, 0.0) + min(max(d.x, max(d.y, d.z)), 0.0)); +} + +float scene(vec3 p){ + + vec3 pp = p; + + float size = FAR+2.0; + pp.z = mod(pp.z+size*0.5, size)-size*0.5; + pp.x = mod(pp.x+size*0.25, size*0.5)-size*0.25; + + for(int i = 0; i < 4; ++i){ + pp = abs(pp) - vec3(4.0, 5.0+fract(fft), 5.0); + rot(pp.xy, time*0.5+fft); + rot(pp.yz, fft); + rot(pp.xz, fft*0.1); + } + + float a = box(pp, vec3(1.0, 1.0, FAR)); + float b = box(pp - vec3(3.0, 2.0, 1.0), vec3(1.0, 1.0, FAR*0.1)); + float c = sphere(pp - vec3(6.0, 1.0, 0.0), 1.5); + + float m = mod(pp.z, 8.0)-4.0; + + vec3 col = vec3(0.2, 0.6, 0.5); + if(m > 0.0 && m > 2.0){ + col = col.rgr; + } + else if( m < 0.0 && m < -2.0){ + col = vec3(0.0); + } + + vec3 g = col.rrg*0.08 / (0.01+abs(a)); + g += col * 0.01 / (0.01+abs(b)); + g += vec3(0.5, 0.1, 0.2)*0.05 / (0.01+abs(c)); + + g *= 0.333; + + glow += g; + + a = max(abs(a), 0.9); + b = max(abs(b), 0.5); + c = max(abs(c), 0.01); + + return min(a, min(b, c)); +} + +float march(vec3 ro, vec3 rd, out vec3 p){ + p = ro; + float t = E; + + for(int i = 0; i < STEPS; ++i){ + float d = scene(p); + t += d; + + if(d < E || t > FAR){ + break; + } + + p += rd*d; + } + + return t; +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = -1.0 + 2.0*uv; + q.x *= v2Resolution.x/v2Resolution.y; + + vec3 ro = vec3(time*0.1, -2.0, time*0.5); + vec3 rt = vec3(-FAR, 2.0, -FAR); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z)*vec3(q, radians(60.0))); + + vec3 p = ro; + float t = march(ro, rd, p); + + vec3 col = vec3(0.0); + + float m = mod(t+time*0.1, 8.0)-4.0; + if(m < 0.0 && m < -2.0){ + col = vec3(0.8, 0.1, 0.5); + } + else if(m > 0.0 && m > 2.0){ + col = vec3(0.3, 0.1, 0.8); + } + + if(t < FAR){ + col *= vec3(0.4, 0.5, 0.8); + } + + col += glow; + + vec3 prev = texture(texPreviousFrame, uv).rgb; + col = mix(prev, col, 0.5); + + prev = texture(texPreviousFrame, uv*0.25+fract(fft)).rgb; + + col = mix(prev, col, 0.75); + + //col = 1.0- col; + + col = smoothstep(0.05, 1.1, col); + + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_totetmatt.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_totetmatt.glsl new file mode 100644 index 000000000..a2d6c9673 --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_totetmatt.glsl @@ -0,0 +1,124 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float bbox(vec2 uv, vec2 a, vec2 b, float t){ + float l = length(b-a); + vec2 d = (b-a)/l; + vec2 q = uv - (a+b)*.5; + + q = mat2(d.x,-d.y,d.y,d.x)*q; + float tt =texture(texFFT,abs(q.x+q.y*20.)*.01).r*.2; + q = abs(q) - vec2(l+(t/tt)*.0001,t-tt*tt)*.5; + return length(max(q,vec2(0.))) + min(max(q.x,q.y),0.); + } + + + float left_fu(vec2 uv){ + float h = bbox(uv,vec2(-.1,-.2), vec2(-.1,.1),.01); + + float t = bbox(uv,vec2(-.2,.2), vec2(.0,.2),.01); + h = min(t,h); + + t = bbox(uv,vec2(.0,.2), vec2(-.2,.1),.01); + h = min(t,h); + + t = bbox(uv,vec2(-.05,.1), vec2(.01,.05),.01); + h = min(t,h); + + t = bbox(uv,vec2(-.15,.30), vec2(-.10,.25),.01); + h = min(t,h); + return h; + } + + float right_fu(vec2 uv){ + float h = bbox(uv,vec2(.35,.25), vec2(.05,.25),.01); + + float t = abs(bbox(uv,vec2(.3,.13), vec2(.1,.13),.1))-.01; + h = min(t,h); + + + uv +=vec2(.05,.0); + t = bbox(uv,vec2(.25,.00), vec2(.25,-.20),.01); + h = min(t,h); + uv *=.5; + + t = abs(bbox(uv,vec2(.2,-.05), vec2(.05,-.05),.1))-.001; + h = min(t,h); + + t = bbox(uv,vec2(.2,-.05), vec2(.05,-.05),.001); + h = min(t,h); + return h; + + } + float fu(vec2 uv){ + float h = left_fu(uv); + float r = right_fu(uv); + h = min(h,r); + + + return h ; + + } + +vec3 pal(float t){ + + return vec3(.5)+.5*cos(2.*3.141592*(1.*t+vec3(.0,.3,.7))); + } + + + float mandel(vec2 uv){ + float tt = texture(texFFT,.3).r*5.; + vec2 c = vec2(.41-tt,.42+tt); + vec2 z = uv; + float limit = 200.; + float cpt = 0.; + + for(float i = 0.;i<=limit; i++){ + + z = vec2(z.x*z.x-z.y*z.y,2.*z.x*z.y)+c; + if(length(z) >2) break; + cpt ++; + + } + + return cpt /limit; + } +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float t1 = texture(texFFTSmoothed,.3).r*100.; + + float t2 = texture(texFFTSmoothed,.7).r*100.; + uv *=(fract(-fGlobalTime*.5+length(uv))); + uv *=2.; + uv.x +=fract(fGlobalTime+t1*.1); + uv.y += sin(fGlobalTime)+t2*10.; + vec2 id = floor(uv); + uv = fract(uv)-.5; + float d = fu(uv); + float mandal = mandel(abs(uv)+.1); + d = abs(.01/(d)); + if(mod(id.x,2.) ==0.){ + d = 1.-d; + } + vec3 col = vec3(d)*pal(mandal*10.+d*.001+fract(fGlobalTime)+uv.x); + out_color = vec4(sqrt(col),1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_visy.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_visy.glsl new file mode 100644 index 000000000..084637190 --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_visy.glsl @@ -0,0 +1,65 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float fMidiK1; +uniform float fMidiK2; +uniform float fMidiK3; +uniform float fMidiK4; +uniform float fMidiK5; +uniform float fMidiK6; +uniform float fMidiK7; +uniform float fMidiK8; +uniform float fMidiS1; +uniform float fMidiS2; +uniform float fMidiS3; +uniform float fMidiS4; +uniform float fMidiS5; +uniform float fMidiS6; +uniform float fMidiS7; +uniform float fMidiS8; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv2 = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec4 fe = texture(texPreviousFrame,uv2); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = tan(fe.g*1.1)*1. + abs(cos(sin(uv.x+fe.g*1.01)) * 0.1); + + float t = fGlobalTime*0.4; + float bi = texture(texFFTIntegrated, m.y*cos(t*0.1)*10.).r*0.01; + + float d = m.y; + + float f = texture( texFFT, d ).r * 1; + m.x += sin( fGlobalTime ) * 0.7; + m.y += fGlobalTime * 0.65; + float ef = t*(t*sin(t*5.*cos(bi*abs(cos(t*0.1))*0.1+t*0.9)*0.1*cos(uv.y*4.))*0.9)*0.7; + float ef2 = (t*sin(t*5.*sin(bi*abs(cos(t*0.2))*0.2+t*0.9)*0.1*cos(uv.y*4.))*0.9)*0.7; + + out_color = vec4(0.8,0.5,0.8,ef*0.1+ef2*0.8)-vec4(ef2/fe.b*1.,ef2*fe.r,ef*fe.g,1.0)*0.1*fe*tan(fe.a*1000.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.glsl b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.glsl new file mode 100644 index 000000000..88027a393 --- /dev/null +++ b/shader_file_sources/2021_02_12_shader_royale_omzg/grabber_inerciaroyale_wrighter.glsl @@ -0,0 +1,98 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + + + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +#define iTime fGlobalTime +#define R v2Resolution +#define U fragCoord +#define T(u) texture(texPreviousFrame, (u)/R) + +mat3 getOrthBas( vec3 dir){ + vec3 r = normalize(cross(vec3(0,1,0), dir)); + vec3 u = normalize(cross( dir, r)); + return mat3(r,u,dir); + } + +float cyclicNoise(vec3 p){ + float n = 0.; + p *= getOrthBas(normalize(vec3(-4,2.,-2 + sin(iTime)*0.1))); + float lac = 1.5; + float amp = 1.; + float gain = 0.5; + + mat3 r = getOrthBas(normalize(vec3(-4,2.,-2))); + + + for(int i = 0; i < 8; i++){ + p += cos(p + 2 + vec3(0,0,iTime))*0.5; + n += dot(sin(p),cos(p.zxy + vec3(0,0,iTime)))*amp; + + p *= r*lac; + amp *= gain; + } + return n; + } + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + #define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + + vec2 U = gl_FragCoord.xy; + + U -= 0.5*R; + //U *= rot(iTime*0.01); + U *= 0.99 + sin(iTime)*0.00 - dot(U/R,U/R)*0.05; + U += 0.5*R; + out_color = T(U); + #define getGrad(axis) vec2(e[axis]-w[axis],n[axis]-s[axis]) + float offs = 20. + sin(iTime + length(uv)*1.5)*40; + vec4 n = T(U + vec2(0,1)*offs); + vec4 s = T(U + vec2(0,-1)*offs); + vec4 e = T(U + vec2(1,0)*offs); + vec4 w = T(U + vec2(-1,0)*offs); + + vec2 grad = getGrad(0); + + float noisb = cyclicNoise(vec3(U/R*2.,1. + iTime*0.2 + sin(iTime)*1.)); + + grad *= rot(noisb*0.2*sin(iTime) - iTime*0.); + vec2 uu = U; + uu += grad*22. + noisb*1.; + out_color = T(uu); + n = T(uu + vec2(0,1)); + s = T(uu + vec2(0,-1)); + e = T(uu + vec2(1,0)); + w = T(uu + vec2(-1,0)); + + #define pal(a,b,c,d,e) ((a) + (b)*sin((c)*(d) + (e))) + + float nois = cyclicNoise(vec3(uu/R*40.,1. + iTime*0.2 + sin(iTime)*1.)); + + vec3 nc = nois*pal(0.5,vec3(1.,0.2,1.),1,vec3(3,0 + nois*20.,4 + sin(iTime) + 2),nois*10. + iTime); + out_color = mix(out_color,vec4(nc,1),0.01); + //out_color += cyclicNoise(vec3(uv*20.,1)); + if(iTime < 0.4){ + out_color = vec4(0); + } +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_27_shader_jam_challenge/shaderchallenge_butadiene.glsl b/shader_file_sources/2021_02_27_shader_jam_challenge/shaderchallenge_butadiene.glsl new file mode 100644 index 000000000..c1f2976ea --- /dev/null +++ b/shader_file_sources/2021_02_27_shader_jam_challenge/shaderchallenge_butadiene.glsl @@ -0,0 +1,107 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +float time = fGlobalTime; +float PI = 3.1415926535; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + + +vec2 pmod(vec2 p,float n){ + float np = 2.0*PI/n; + float r = atan(p.x,p.y)-0.5*np; + r = mod(r,np)-0.5*np; + return length(p.xy)*vec2(cos(r),sin(r)); + + } + +float func(float x, float y, float z) { + z = fract(z), x /= pow(2.,z), x += z*y; + float v = 0.; + for(int i=0;i<6;i++) { + v += asin(sin(x)) * (1.-cos((float(i)+z)*1.0472)); + v /= 2., x /= 2., x += y; + } + return v * pow(2.,z); +} + + +mat2 rot (float r){ + + return mat2(cos(r),sin(r),-sin(r),cos(r)); + } + + vec3 outco(vec2 p){ + vec3 col = vec3(0); + vec2 ssp = p; + float iter = 6.; + float sit = 1.+floor(mod(time*108/60.,iter)); + for(int i = 0;i<6;i++){ + if(sit>i){ + p *= rot(PI*float(i)/iter); + p = pmod(p,3.); + + col += vec3(func(p.x,time*3.,-0.1*time)); + p = ssp; + } + + } + col /= sit; + col *= (12.+sit)/12.; + return col; + } + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 p =uv- 0.5; + p /= vec2(v2Resolution.y / v2Resolution.x, 1); +vec2 sp = p; + vec3 col = vec3(0); + + p *= 100.; + + vec3 param = vec3(p.x,p.y,-10.+20.*fract(0.5*time)); + + col.r = func(param.x,param.y,param.z); + + + col.g = func(param.z,param.x,param.y); + + + col.b = func(param.x,time,time*0.); + col.r = col.b; + col.g = col.b; + //col = clamp(col,0.,1.); + col = vec3(0); + p = sp; + p += 0.1*func(uv.x*100.,uv.y*100.,time)*pow(abs(sin(8.*time*108/60.)),16.); + float scale = 800.; + p *= scale; + vec2 ep = 0.5*scale*vec2(0.01,0.01)*(uv-0.5); + col.r += outco(p).r; + p += ep; + col.g += outco(p).r; + p -=2.*ep; + col.b += outco(p).r; +// float c = func(); + + //col = vec3(c); + + col *= 0.2+pow(abs(sin(4.*time*108/60.)),2.); + col = 1.5*pow(col,vec3(1.4,1.4,1.2)); + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_02_27_shader_jam_challenge/shaderchallenge_fms_cat.glsl b/shader_file_sources/2021_02_27_shader_jam_challenge/shaderchallenge_fms_cat.glsl new file mode 100644 index 000000000..4b435d37f --- /dev/null +++ b/shader_file_sources/2021_02_27_shader_jam_challenge/shaderchallenge_fms_cat.glsl @@ -0,0 +1,166 @@ +#version 410 core + +#define PI 3.14159265 +#define lofi(i,j) ( floor( (i)/(j) )*(j) ) +#define saturate(i) clamp((i),0.,1.) + +float time; +float seed; + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 r2d(float t){ + return mat2(cos(t),sin(t),-sin(t),cos(t)); +} + +float fs(float s){ + return fract(sin(114.514*s)*1919.810); +} + +float random(){ + seed=fs(seed); + return seed; +} + +vec3 randomsphere(){ + float a=2.*PI*random(); + float b=acos(random()*2.-1.); + return vec3(cos(a)*sin(b),cos(b),sin(a)*sin(b)); +} + +vec3 randomhemisphere(vec3 n){ + vec3 d=randomsphere(); + return dot(d,n)<0.?-d:d; +} + +float func(float x, float y, float z) { + z = fract(z), x /= pow(2.,z), x += z*y; + float v = 0.; + for(int i=0;i<6;i++) { + v += asin(sin(x)) * (1.-cos((float(i)+z)*1.0472)); + v /= 2., x /= 2., x += y; + } + return v * pow(2.,z); +} + +vec4 isectplane(vec3 p,vec3 rd,vec3 n){ + float d=dot(n,p)/dot(n,rd); + d=d<0.?1E9:d; + return vec4(d,1,0,0); + // oboetenaiyo~~~~~ + // wakaruyo +} + +void main(void) +{ + vec2 uv=gl_FragCoord.xy/v2Resolution; + vec2 p = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y)*2.-1.; + p /= vec2(v2Resolution.y / v2Resolution.x, 1); + + time=fGlobalTime; + seed=texture(texNoise,p).x+time; + random(); + + vec3 ro=vec3(0,2,5); + vec3 ro0=ro; + vec3 rd=normalize(vec3(p,-1.)); + rd.yz=r2d(.1*sin(time))*rd.yz; + rd.zx=r2d(.1*sin(1.6+.5*time))*rd.zx; + vec3 rd0=rd; + + float g=0.; + float rem=1.; + float samples=1.; + + vec3 col=vec3(0.); + + for(int i=0;i<64;i++){ + float rl=1E-2; + vec3 rp=ro+rd*rl; + vec4 isect=vec4(1E9); + vec3 isectn=vec3(0.); + vec4 isectb; + + { + vec3 n=vec3(0,0,1); + isectb=isectplane(vec3(0.,0.,-1.)-rp,rd,n); + if(isectb.x 10.0) return vec3(-1); + + } + return vec3(-1); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec4 col = vec4(0.); + + vec4 previous = texture(texPreviousFrame, uv); + + beat = floor( fGlobalTime*2.0); + beatStep = fract( fGlobalTime*2.0); + + fft = texture(texFFT, 0.2).r; + fftS = texture(texFFTSmoothed, 0.2).r; + fftI = texture(texFFTIntegrated, 0.1).r; + + float bm = mod( beat/4.0, 6.0); + + float time = mod(fGlobalTime,100.0); + + vec3 cam = vec3(1,1,1); + float cabeat = floor(beat/8.0); + vec3 target = vec3( + sin(cabeat*11.4)*10., + sin(cabeat*5.2)*10., + sin(cabeat*3.46)*10 + ); + + + if(bm < 0.5) { + cam.x += time; + target.x+=time; + } + else if(bm < 1.5) { + cam.y += time; + target.y+=time; + } + else if(bm < 2.5) { + cam.z += time; + target.z+=time; + } + else if(bm < 3.5) { + cam.z -= time; + target.z-=time; + } + else if(bm < 4.5) { + cam.x -= time; + target.x-=time; + } + + vec3 light = vec3(0,4, sin(fGlobalTime)); + vec3 rd = getcam(cam, target, uv, 1.0); + + vec3 bg = vec3(1.0, 0.7,0.2); + if(bm < 0.5) { + bg *= 0.0; + } + else if(bm < 1.5) { + bg *= fft*255.; + } + else if(bm < 2.5) { + + } + else if(bm < 3.5) { + cam.z -= time; + target.z-=time; + } + else if(bm < 4.5) { + cam.x -= time; + target.x-=time; + } + + + + + float travel = 0.0; + vec3 r = march(cam, rd, travel); + vec3 p = cam + rd*travel; + if(r.y < -0.5) + { + // bg + + } + else if(r.y < 0.5) + { + vec3 n = normal(p); + col.rgb =vec3( 1.0,0.5,0.2) * (0.25+diffuse(p, light, n)) * (fftS*50.+0.2); + + + + vec3 refd = reflect( rd, n); + float reft = 0.0; + vec3 refr = march( p + n*0.1, refd, reft); + vec3 refc = vec3(0.0); + vec3 refp = reft *refd + p+n*0.1; + if(refr.y < -0.5){} + else if(refr.y < 0.5){ + vec3 rn = normal(p); + refc.rgb =vec3( 1.0,0.5,0.2) * (0.25+diffuse(refp, light, rn)) * (fftS*50.+0.5); + refc.rgb *=1.0+ 15.0 / length( 100.*sin(fftI - refp.x*5.0+time) ) * (0.2+fftS*350.0); + refc.rgb *=1.0+ 15.0 / length( 100.*sin(fftI - refp.z*5.0-time) ) * (0.2+fftS*350.0); + } + refc.rgb = mix(refc, bg, smoothstep( 8.0, 10.0, reft)); + col.rgb = mix(col.rgb, refc, 0.5); + col.rgb *=1.0+ 15.0 / length( 100.*sin(fftI - p.x*5.0+time) ) * (0.2+fftS*350.0); + col.rgb *=1.0+ 15.0 / length( 100.*sin(fftI - p.z*5.0-time) ) * (0.2+fftS*350.0); + } + + col.rgb = mix(col.rgb, bg, smoothstep( 8.0, 9.0, travel)); + + if(bm < 0.5) col.rgb = col.rbg; + else if(bm < 1.5) col.rgb = col.brg; + else if(bm < 2.5) col.rgb = col.bgr; + else if(bm < 3.5) col.rgb = col.gbr; + else if(bm < 4.5) col.rgb = col.grb; + + col.rgb += previous.rgb*smoothstep(0.5, 0.0, fftS*512.)*0.5; + + out_color = col; +} + + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_ghost/rimina.glsl b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_ghost/rimina.glsl new file mode 100644 index 000000000..b759166f9 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_ghost/rimina.glsl @@ -0,0 +1,233 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; + +float fft = texture(texFFTIntegrated, 0.5).r; + +const float FAR = 40.0; +const int STEPS = 60; +const float E = 0.001; + +const float PI = 3.14159265; + +vec3 glow = vec3(0.0); + +// Sign function that doesn't return 0 +float sgn(float x) { + return (x<0.0)?-1.0:1.0; +} + +vec2 sgn(vec2 v) { + return vec2((v.x<0.0)?-1.0:1.0, (v.y<0.0)?-1.0:1.0); +} + + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +float box(vec3 p, vec3 r){ + vec3 d = abs(p)-r; + + return length(max(d, 0.0) + min(max(d.x, max(d.y, d.z)), 0.0)); +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +// Mirror at an axis-aligned plane which is at a specified distance from the origin. +//THANK YOU MERCURY!!!! +float pMirror (inout float p, float dist) { + float s = sgn(p); + p = abs(p)-dist; + return s; +} + +// Mirror in both dimensions and at the diagonal, yielding one eighth of the space. +// translate by dist before mirroring. +//THANK YOU MERCURY!!!! +vec2 pMirrorOctant (inout vec2 p, vec2 dist) { + vec2 s = sgn(p); + pMirror(p.x, dist.x); + pMirror(p.y, dist.y); + if (p.y > p.x) + p.xy = p.yx; + return s; +} + +// Repeat around the origin by a fixed angle. +// For easier use, num of repetitions is use to specify the angle. +//THANK YOU MERCURY!!!! +float pModPolar(inout vec2 p, float repetitions) { + float angle = 2.0*PI/repetitions; + float a = atan(p.y, p.x) + angle/2.0; + float r = length(p); + float c = floor(a/angle); + a = mod(a,angle) - angle/2.0; + p = vec2(cos(a), sin(a))*r; + // For an odd number of repetitions, fix cell index of the cell in -x direction + // (cell index would be e.g. -5 and 5 in the two halves of the cell): + if (abs(c) >= (repetitions/2.0)) c = abs(c); + return c; +} + +float scene(vec3 p){ + + vec3 pp = p; + + vec3 dd = vec3(4.0, 2.0, 4.0); + + pp.xz = mod(pp.xz + vec2(10.0), vec2(20.0))-vec2(10.0); + + + + pModPolar(pp.xz, 12.0); + rot(pp.xz, time*0.5 + fft); + pMirrorOctant(pp.xz, dd.xz*0.5); + + pp.y = mod(pp.y + 10.0, 20.0)-10.0; + + float c = sphere(pp-vec3(10.0, 2.0, 0.0), 4.0); + + for(int i = 0; i < 8; ++i){ + pp = abs(pp)-vec3(5.0, 3.0, 2.0); + rot(pp.xy, time*0.25 + fft*1.5); + rot(pp.yz, fft); + rot(pp.xz, fft*10.0); + } + + float a = box(pp, vec3(0.5, 0.5, FAR*2.0)); + float b = box(pp, vec3(1.0, 2.0, FAR*2.0)); + + + vec3 g = vec3(0.5, 0.0, 0.0)*0.05 / (0.01+abs(a)); + g += vec3(0.2, 0.2, 0.8)*0.05 / (0.01+abs(b)); + g *= 0.5; + glow += g; + + + b = max(abs(b), 0.5); + + return min(c, min(a, b)); +} + + +float march(vec3 ro, vec3 rd, out vec3 p){ + p = ro; + float t = E; + + for(int i = 0; i < STEPS; ++i){ + float d = scene(p); + t += d; + + if(d < E || t > FAR){ + break; + } + + p += rd*d; + } + + return t; +} + +vec3 normals(vec3 p){ + vec3 eps = vec3(E, 0.0, 0.0); + return normalize(vec3( + scene(p+eps.xyy) - scene(p-eps.xyy), + scene(p+eps.yxy) - scene(p-eps.yxy), + scene(p+eps.yyx) - scene(p-eps.yyx) + )); +} + +vec3 shade(vec3 ro, vec3 rd, vec3 n, vec3 ld){ + float l = max(dot(n, ld), 0.0); + vec3 a = reflect(n, ld); + float s = pow(max(dot(rd, a), 0.0), 10.0); + + return l*vec3(0.8, 0.5, 0.5)*0.4 + s*vec3(0.8, 0.5, 0.8)*0.6; +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = -1.0 + 2.0*uv; + q.x *= v2Resolution.x/v2Resolution.y; + + vec3 ro = vec3(1.2, time*2.0, 2.0); + vec3 rt = vec3(0.0, 10.0+ro.y, -1.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x, y, z)*vec3(q, radians(60.0))); + + vec3 p = ro; + float t = march(ro, rd, p); + + vec3 col = vec3(0.1, 0.1, 0.3); + vec3 ld = normalize(rt-ro); + vec3 lp = vec3(0.0, 20.0*sin(time*0.5), 10.0*cos(time*0.5)); + vec3 lt = ro; + vec3 ld2 = normalize(lt-lp); + + if(t < FAR){ + vec3 n = normals(p); + col = shade(ro, rd, n, ld);// + vec3(0.2, 0.2, 0.25); + col + shade(ro, rd, n, ld2); + col *= 0.5; + col += vec3(0.1, 0.0, 0.2); + + rd = reflect(rd, n); + ro = p + n*2.0*E; + t = march(ro, rd, p); + if(t < FAR){ + col += shade(ro, rd, n, ld); + col += shade(ro, rd, n, ld2); + col *= 0.5; + col += vec3(0.1, 0.0, 0.2); + } + } + + col += glow*0.5; + + vec3 pframe = texture(texPreviousFrame, uv*0.25+fft).rgb; + col += pframe; + col *= 0.2; + + vec2 uvv = uv; + rot(uvv, time); + + vec3 logo = texture(texRevision, uv).rgb; + + col = smoothstep(0.0, 1.0, col); + + col += logo*vec3(0.5); + + + col *= smoothstep(0.8, 0.4*0.799, distance(uv, vec2(0.5))*(0.6 + 0.4)); + + + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_ghost/visy.glsl b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_ghost/visy.glsl new file mode 100644 index 000000000..d7c3c0deb --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_ghost/visy.glsl @@ -0,0 +1,179 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float fMid1; +uniform float fMid2; +uniform float fMid3; +uniform float fMid4; +uniform float fMid5; +uniform float fMid6; +uniform float fMid7; +uniform float fMid8; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +vec4 mod289(vec4 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; } + + +float mod289(float x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; } + +vec4 permute(vec4 x) { + return mod289(((x*34.0)+1.0)*x); +} + +float permute(float x) { + return mod289(((x*34.0)+1.0)*x); +} + +vec4 taylorInvSqrt(vec4 r) +{ + return 1.79284291400159 - 0.85373472095314 * r; +} + +float taylorInvSqrt(float r) +{ + return 1.79284291400159 - 0.85373472095314 * r; +} + +vec4 grad4(float j, vec4 ip) +{ + const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0); + vec4 p,s; + + p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0; + p.w = 1.5 - dot(abs(p.xyz), ones.xyz); + s = vec4(lessThan(p, vec4(0.0))); + p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www; + + return p; +} + +#define F4 0.309016994374947451 + +float snoise(vec4 v) +{ + + const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4 + 0.276393202250021, // 2 * G4 + 0.414589803375032, // 3 * G4 + -0.447213595499958); // -1 + 4 * G4 + + vec4 i = floor(v + dot(v, vec4(F4)) ); + vec4 x0 = v - i + dot(i, C.xxxx); + + vec4 i0; + vec3 isX = step( x0.yzw, x0.xxx ); + vec3 isYZ = step( x0.zww, x0.yyz ); + + i0.x = isX.x + isX.y + isX.z; + i0.yzw = 1.0 - isX; + + i0.y += isYZ.x + isYZ.y; + i0.zw += 1.0 - isYZ.xy; + i0.z += isYZ.z; + i0.w += 1.0 - isYZ.z; + + vec4 i3 = clamp( i0, 0.0, 1.0 ); + vec4 i2 = clamp( i0-1.0, 0.0, 1.0 ); + vec4 i1 = clamp( i0-2.0, 0.0, 1.0 ); + + vec4 x1 = x0 - i1 + C.xxxx; + vec4 x2 = x0 - i2 + C.yyyy; + vec4 x3 = x0 - i3 + C.zzzz; + vec4 x4 = x0 + C.wwww; + + i = mod289(i); + float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x); + vec4 j1 = permute( permute( permute( permute ( + i.w + vec4(i1.w, i2.w, i3.w, 1.0 )) + + i.z + vec4(i1.z, i2.z, i3.z, 1.0 )) + + i.y + vec4(i1.y, i2.y, i3.y, 1.0 )) + + i.x + vec4(i1.x, i2.x, i3.x, 1.0 )); + + vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ; + + vec4 p0 = grad4(j0, ip); + vec4 p1 = grad4(j1.x, ip); + vec4 p2 = grad4(j1.y, ip); + vec4 p3 = grad4(j1.z, ip); + vec4 p4 = grad4(j1.w, ip); + + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + p4 *= taylorInvSqrt(dot(p4,p4)); + + vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0); + vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0); + m0 = m0 * m0; + m1 = m1 * m1; + return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 ))) + + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ; + + } + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + + +void main(void) +{ + float f; + for (int i = 0; i < 16; i++) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv-=0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv*=1.+distance(vec2(0.0),uv*(texture(texPreviousFrame,gl_FragCoord.xy*0.).gb*0.5))*cos(fGlobalTime*0.5)*4.; + + + f = fGlobalTime*0.005; + + + float s = 1.0+sin(fGlobalTime*0.1*fMid2+uv.x)*1.; + float s2 = 1.0+sin(fGlobalTime*0.1*fMid3+uv.x)*1.; + float s3 = 1.0+sin(fGlobalTime*0.1*fMid4+uv.x)*1.; + + s+=f; + s2+=f; + s3+=f; + + float ox = fGlobalTime*6.; + float oy = -fGlobalTime*1.; + + + float zz = distance(vec2(s*0.5*cos(fGlobalTime*0.5*float(i)*0.1))*cos(uv.x*cos(fGlobalTime*0.1)),vec2(s2,s3))*1.; + + // torus mapping: 2d periodic tiling texture by embedding a 4d torus + float noise = snoise(vec4(sin(ox+uv.x*s+zz), cos(ox+uv.x*s-zz), sin(oy+uv.y*s-zz), cos(oy+uv.y*s+zz))); + float noise2 = snoise(vec4(sin(ox+uv.x*s2+zz), cos(ox+uv.x*s2-zz), sin(oy+uv.y*s2-zz), cos(oy+uv.y*s2+zz))); + float noise3 = snoise(vec4(sin(ox+uv.x*s3+zz), cos(ox+uv.x*s3-zz), sin(oy+uv.y*s3-zz), cos(oy+uv.y*s3+zz))); + + vec3 col = vec3(noise,noise2, noise3); + out_color += vec4(col,1.0); + } + + out_color/=1; + out_color=vec4(out_color.r*1.4+f*0.001,out_color.b*0.6+f*0.001,out_color.g*2.5+f*0.001,1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/eimink.glsl b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/eimink.glsl new file mode 100644 index 000000000..8da28fa13 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/eimink.glsl @@ -0,0 +1,130 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +const int STEPS = 64; +const float E = 0.0001; +const float FAR = 40.0; + +vec3 glow = vec3(0); + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +void rot(inout vec2 p, float a) { + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +float sphere (vec3 p, float s) +{ + return length(p)-s; +} + +float box(vec3 p, vec3 r) +{ + vec3 d = abs(p) - r; + return length(max(d,0.) + min(max(d.x, max(d.y,d.z)),0.0)); +} + +float tun2(vec3 p){ + vec3 pp = p; + vec3 t = vec3(2.) - abs(vec3(length(pp.xz),length(p.xy),1.0)); + return max(t.x,t.y)+.1; + return min(max(t.x,t.y),0.0); +} + +float scene(vec3 p) +{ + vec3 pp = p; + float m = texture(texFFT,165).r*50; + float ms = texture(texFFTIntegrated,85).r; + for (int i = 0; i < 5; ++i) + { + pp = abs(pp) - vec3(1.,4.,5.); + rot(pp.xy, fGlobalTime+texture( texFFTSmoothed, pp.x ).r*10); + rot(pp.yz, fGlobalTime*0.1+texture(texFFTSmoothed, p.x).r*5.); + } + float a = box(pp, vec3(1.,.4,4.)); + float b = sphere(pp, m); + rot(pp.xz,fGlobalTime); + float c = box(pp, vec3(6.,8.,12.)); + rot(p.xz,m); + rot(p.xy,fGlobalTime+ms); + float d = abs(box(p,vec3(3.+sin(m*4.),.5,.5))); + float e = abs(box(p,vec3(1.5,.5,3.+cos(ms)))); + float f = abs(box(p,vec3(1.5,3.+sin(m)+tan(ms*2.),.5))); + float h = min(tun2(pp),.7); + float g = max(h,min(f,min(d,e))); + glow += vec3(.8,.4,.2)*0.01/(0.09+abs(a)); + glow += vec3(.4,.8,.1)*0.01/(0.9+abs(c)); + glow += vec3(.1,.2,.8)*0.1/(0.01+abs(g+h)); + return max(g,min(c,min(a,b))); +} + +vec3 march (vec3 ro, vec3 rd) +{ + vec3 p = ro; + float t = E; + vec3 col = vec3(0); + for (int i = 0; i < STEPS; ++i) { + float d = scene(p); + t += d; + if ( d < E || t > FAR) { + break; + } + p += rd*d; + } + if (t < FAR) + { + col = normalize(p)*vec3(.2,.2,.6)*.9; + } + return col; +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = -1.0+2.0*uv; + q.x *= v2Resolution.x/v2Resolution.y; + + vec3 cp = vec3(0.,0.,10.); + vec3 ct = vec3(0.,0.,0.); + + vec3 cf = normalize(ct-cp); + vec3 cr = normalize(cross(vec3(0.,1.,0.),cf)); + vec3 cu = normalize(cross(cf,cr)); + vec3 rd = normalize(mat3(cr,cu,cf)*vec3(q,radians(60.0))); + rot(cp.xy,fGlobalTime); + vec3 c = march(cp,rd); + c += glow; + c += texture( texPreviousFrame, uv).xyz*.2; + + vec2 m; + m.x = atan(q.x / q.y) / 3.14; + m.y = 1 / length(q) * .2; + float d = m.y; + + float f = texture( texFFTSmoothed, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + out_color = vec4(c,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/lechugafeliz.glsl b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/lechugafeliz.glsl new file mode 100644 index 000000000..aabbbcc0a --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/lechugafeliz.glsl @@ -0,0 +1,141 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texLogo; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define rot(a) mat2(cos(a), sin(a), -sin(a), cos(a)) +float time = mod(fGlobalTime*.015, 50.); +float sb(vec3 p, vec3 s){p=abs(p)-s; return max(max(p.y, p.x), p.z);} +bool isCub; +float rand(float x){return fract(sin(x*345345.44345345))*1.2;} +float rand2(vec2 x){return fract(sin(dot(x, x.yx+.44345345)));} +float smin(float a, float b, float k){return 0.;} +float c(float t, float s){t/=s; return mix(rand(floor(t)), rand(floor(t+1)), smoothstep(0.,1., fract(t)));} +#define m texture(texFFTSmoothed, 0.00001) +#define pi 3.14153459356546 // aaaaaaa +float glow; +float fractal(vec3 p){float d; + + float cut = sb(p, vec3(20.)); + //reflective cub + float pm = sb(p, vec3(1.)); + isCub = pm < 0.5; + + vec3 p2 = p; + float tt = c(time*2., 200.)*1.5+time; + + for(float i = 0.; i < 3; i++){ + p2.xz *= rot(tt*.123); + p2.yz *= rot(tt*.523); + p2.xy *= rot(time*34.213); + p2 = abs(p2)-3.-i*.1+sin(time)*1.5+.5; + //p2+=mod(time+tt, 1.45*pi); + } + float ccuv=sb(p2, vec3(0.234234 , 0.5467676, 4.5+m.r)); + + glow += .1/(.1+ccuv*ccuv); + d = 30-abs(p.y)-1.*sin(time+p.y)*cos(time+p.z)*sin(time+p.x)*.5; + d =min(d,ccuv); + d = max(-cut,d); + return d *.84; +} + +float glow2; +float map1(vec3 p){float d; + + const float re = 30.; + vec3 p1 = p; + float id = rand2(floor(p1.xz/re+.5)-.5)*re; + p1.xz = (fract(p1.xz/re+.5)-.5)*re; + d = fractal(p1*id*.1); + + vec3 p2 = p; + p2 = abs(p2)-50.; + float sf =fractal(p2); + glow2 += 2./(.1+sf*sf); + d = max(sf, d); + + return d; +} + +bool isTube; +float glowTube; +float map(vec3 p){float d = map1(p); + + vec3 p1 = p; + p1.xy = abs(p1.xy)-30.; + p1.z += time*200.; + float dd = p1.z*.12312; + p1.x += sin(smoothstep(0., 1.,floor(dd+1)))*10.; + p1.y += sin(dd*2.)*1.5; + float tube = length(p1.xy)-2.; + d = min(tube,d); + isTube = tube<.05; + glowTube +=1./(1.+sqrt(tube*tube*tube)); + return d; +} +const vec2 e = vec2(0.01, 0.); +vec3 nm (vec3 p){return map(p)-normalize(vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx)));} + +float getao(vec3 p, vec3 n, float d){ + return clamp(map(p+n*d)/d, 0., 1.); + } +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float tt = c(time, 20.)*2.; + vec2 uv2 = abs(uv)-20.; + time += cos(tt)+rand(dot(uv2, uv2.yx*54325.123123)); + + float t1 = time*1000.; + float scene = mod(time, .4); + //if(scene <= 1) + //uv = cos(abs(uv*20.)+2.+time)*2.; + vec3 s = vec3(0.000001, .000001+(sin(t1*.005)*50.), -90.); + vec3 t = vec3(0.001+sin(t1*.032)*40.5+.5, 0.0001-sin(atan(t1*.234))*10., .0001); + vec3 cz = normalize(t-s); + vec3 cx = normalize(cross(cz, vec3(0.,1., 0.))); + vec3 cy = normalize(cross(cz, cx)); + vec3 r = normalize(cx*uv.x+cy*uv.y+cz*.3555); + s.z += t1; + //s.x += sin(time+s.y); + vec3 col = vec3(0.), p = s; + float i = 0.; const float MAX= 128.; float d; + for(; i < MAX; i ++) if(d = map(p), p+=d*r, abs(d) < 0.001) { + if(isTube){ + vec3 n = nm(p);r = reflect(r, n-texture(texFFTSmoothed, 0.01).rgb*10.); + d -= 150.; + } + else break; + } + vec3 n = nm(p); + col += clamp(dot(n, normalize(vec3(-uv, 1.))), 0.2, .4); + col += glow*m.gbr*vec3(0.345345, -sin(tt*2.)*.5+0.5684568*tt, 1.-cos(time)*.25+.5); + col += glow2 * vec3(0.334234, .135345, .0)*m.rgb; + col += glowTube*(1.-vec3(0.2, 0.1,sin(tt))); + col += dot(col, n.yxz)*vec3(1., 0.,0.)*cos(time)*.85; + for(int i = 0; i < 4; i++){ + col *= getao(p,n,i+.1)*.4; + } + col *= 3-max(length(p-s)/200., 0.); + col.r = smoothstep(0.2, 0.4,col.r); + out_color = sqrt(vec4(col, 1.946745)); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/nusan.glsl b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/nusan.glsl new file mode 100644 index 000000000..8b9f3886e --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_lynn/nusan.glsl @@ -0,0 +1,168 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time=fGlobalTime*.6; + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +float rnd(float t) { + return fract(sin(t*452.331)*877.574); +} + +vec3 rnd(vec3 t) { + return fract(sin(t*452.331+t.yzx*324.512+t.zxy*741.544)*877.574); +} + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1), pow(smoothstep(0,1,fract(t)),10)); +} + +vec3 add=vec3(0); +float map(vec3 p) { + + p.y += (curve(time-length(p.xz)*.01,.2)-.5)*10.; + + vec3 bp=p; + vec3 off=vec3(3,curve(time, .7)*5,0); + p+=off; + float t=time*.3; + p.xy *= rot(t+sin(p.z*.3+time)*.2); + p.zy *= rot(t*.7+sin(p.x*.3+time*.7)*.2); + p-=off; + + float push=sin(time*0.7)*2+1.5; + + float d3=10000; + float mm=10000; + for(int i=0; i<4; ++i) { + float t=curve(time+i, 0.9)*3+time*.4+i; + p.xz *= rot(t); + p.xy *= rot(t*.7); + p=abs(p); + if(i<3) d3=min(d3, length(p.xz-.7)-.01); + mm=min(mm, min(p.x, min(p.y,p.z))); + p-=push*.7; + } + + float d=box(p, vec3(.4)); + add += vec3(1,.3,.7) * 0.0003/(0.01+abs(d)); + + float d2 = max(abs(length(bp)-7*push)-.4,.7*push-mm); + add += vec3(.5,.4,1) * 0.0007/(0.1+abs(d2)); + + d=min(d,d2); + + add += vec3(.5,.4,.7) * 0.0007/(0.01+abs(d3)); + d=min(d, d3); + + float grid=1.7; + vec3 pr=abs(fract(bp/grid+.5)-.5); + vec3 pid=floor(bp/grid); + if(dot(pr,vec3(1))<.75) pid=floor(bp/grid+.5); + vec3 mo=rnd(pid); + + float mu = .6;//pow(curve(time, .1),2.)*.5+.5; + + add += vec3(.5,.6,1) * 0.007*pow(fract(mo.y-time*.7),10)/(0.04+abs(d)); + + float re2=smoothstep(.7,.3,texture(texRevision, clamp(bp.xz*.01+.5,0,1)).x)*.5*curve(time, .1)+.1; + float d4=abs(bp.y*.9+4 + re2*10); + add += vec3(.5,1,.5) * 0.002*re2/(0.01+abs(d4)); + d=min(d,d4); + + d *= pow(mo.x,2)*mu+.03; + + return d; +} + +void cam(inout vec3 p) { + float t=time*.3; + p.yz *= rot(sin(time)*.4-.6); + p.xz *= rot(time); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv.y -= curve(time, .15)*.1; + uv *= 1+curve(time-length(uv), .1)*.1; + + vec2 uv4=uv; + if(curve(time+7.4, .7)>.5) uv.x=abs(uv.x); + + vec3 s=vec3((curve(time, .8)-.5)*15,(curve(time+7.3, .8)-.5)*15,-56); + vec3 r=normalize(vec3(uv, 1)); + + cam(s); + cam(r); + + vec3 col=vec3(0); + vec3 p=s; + for(int i=0; i<100; ++i) { + float d=abs(map(p)); + if(d<0.001) { + d=0.1; + } + if(d>100.) break; + p+=r*d; + + } + col += add; + + + for(int i=0; i<5; ++i) { + + vec2 uv3=uv; + uv3*=rot(.7+sin(i)*.3); + uv3.x=abs(uv3.x)-.8-rnd(i)*.1; + uv3=uv3*4+.5; + uv3.y=fract(uv3.y+time*10*(rnd(i+.7)-.5)); + float rev=smoothstep(.7,.3,texture(texRevision, clamp(uv3,0,1)).x); + col += vec3(.3,.5,.7)*rev*.1; + } + + float rev=smoothstep(.7,.3,texture(texRevision, clamp(uv4+.5,0,1)).x)*.3; + col+= vec3(.5,.6,1)*rev*smoothstep(0.7,0.91,curve(time, .5)); + + + float t2=time*.2+uv.y + rnd(floor(abs(uv.x)*6-time))*.3; + //col.xz *= rot(t2); + col.xy *= rot(t2*1.3); + col=abs(col); + + + col=smoothstep(0,1,col); + col=pow(col, vec3(0.4545)); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/evvvvil.glsl b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/evvvvil.glsl new file mode 100644 index 000000000..3d46e6020 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/evvvvil.glsl @@ -0,0 +1,137 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(.00035,-.00035);float t,tt,b,bb,g,gg,de,cr,n,a,la;vec3 wp,bp,cp,pp,np,po,no,al,ld,ro; +vec4 c=vec4(0,7,25,.05),s=vec4(0); +float bo(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +const mat2 r2fucked=mat2(cos(.023),sin(.023),-cos(.023),sin(.023)); +float smin(float a,float b,float k){float h=max(k-abs(a-b),0);return min(a,b)-h*h*.25/k;} +float smax(float a,float b,float k){float h=max(k-abs(-a-b),0);return max(-a,b)+h*h*.25/k;} +float noi(vec3 p){ + vec3 f=floor(p),s=vec3(7,157,113); + p-=f;vec4 h=vec4(0,s.yz,s.y+s.z)+dot(f,s); + p=p*p*(3-2*p); //here i had this: p*p*(3-.2*p); and could see dot ;) + h=mix(fract(sin(h)*48735.5),fract(sin(h+s.x)*48735.5),p.x); + h.xy=mix(h.xz,h.yw,p.y); + return mix(h.x,h.y,p.z); +} +const float sp=3; +float fer(vec3 p){ + float f=0; + p.xz*=r2(-p.y*.2);//this is just to make it move + p.y-=tt*sp; + //check out this size pocket perlin that fiits in da loop + for(int i=0;i<3;i++) f+=0.5/(i+1)*noi(p+i),p*=2.1; + //done! + return f; +} +float cmp( vec3 p ) +{ + np=pp=p;pp.xz=abs(pp.xz)-10*cos(p.y*.12); + bb=cos(p.y-tt*sp); + p.xz-=bb; + pp.xz-=bb*.3; + np.y-=10; + np.xz=abs(np.xz)-4; + float t=length(p.xz)-3-max(0,p.y*.5+1);; + t=smax(length(np)-4.,t,2.); + float glo=length(pp.xz)-1.5-sin(p.y*.3+b*6.28-2.5)*.5; + t=smin(t,glo,2); + g+=0.1/(0.1+glo*glo*4+2*abs(cos(p.y*.2+b*3.14))); + float par=max(length(p.xz)-5.2-p.y*.5,length(cos(pp-vec3(0,-tt*4,0)))-.01); + gg+=0.1/(0.1+par*par*40); + t=max(t,-(length(p-ro)-3)); + return t; +} + +vec2 mp( vec3 p ) +{ + + wp=p;n=0;a=3; + for(int i=0;i<7;i++){ + wp.xz*=r2(((length(p.xz)*.05)-tt*.2/(i+1))*.3); + n+=abs(sin(noi((wp+vec3(0,0,tt*3.))*.15)-.5)*3.14)*(a*=.51); + wp.xy*=r2fucked; + wp*=1.75; + } + vec2 h,t=vec2(p.y+n*.5,5); + t.x=smax(cmp(p)+.5,t.x,5); + return t; +} +vec2 tr( vec3 ro,vec3 rd ) +{ + vec2 h,t=vec2(.1); + for(int i=0;i<128;i++){ + h=mp(ro+rd*t.x); + if(h.x<.0001||t.x>43) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>43) t.y=0; + + return t; +} +#define a(d) clamp(mp(po+no*d).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + tt=mod(fGlobalTime,62.82); +// float f = texture( texFFT, d ).r * 100; + ro=mix( + vec3(cos(tt*.4)*5.,10.5,sin(tt*.4)*30), + vec3(cos(tt*c.w+c.x)*c.z,c.y,sin(tt*c.w+c.x)*c.z), + ceil(sin(tt*.4))); + vec3 cw=normalize(vec3(0,10,0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + tt=mod(fGlobalTime,62.82); + b=fract(tt); + co=fo=vec3(.1)-length(uv)*.1; + ld=normalize(vec3(0.,.1,-.3)); + z=tr(ro,rd);t=z.x; + if(z.y>0){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x); + float tn=texture(texNoise,wp.xz*.005).r; + al=vec3(.1,.2,.9)*tn/n*3.; + + float dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4); + + co=mix(al*(a(.1)+.2)*(dif+s(1)*4),fo,min(fr,.5)); + co=mix(fo,co,exp(-.00005*t*t*t)); + } + cr=cmp(ro)-4+.3*fract(dot(sin(uv*465.789+uv.yx*768.654),vec2(987.156))); + for(int i=0;i<120;i++){ + cp=ro+rd*(cr+=0.2); + if(s.a>.99||cr>t) break; + de=clamp(1.-(cmp(cp)+fer(cp)*2.),0.,1.); + s+=vec4(vec3(de*de),de)*(1-s.a); + } + s.xyz*=1-de*smoothstep(0.,1.6,.01-cmp(cp+ld*1.5)-fer(cp+ld*1.5)*2.0); + co=mix(co,s.xyz,s.a); + out_color = vec4(pow(co+g*.2*vec3(.7,.2,.1)+gg*1.5*vec3(.1,.2,.7),vec3(.55)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/sp4ghet.glsl b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/sp4ghet.glsl new file mode 100644 index 000000000..7a10fe669 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/sp4ghet.glsl @@ -0,0 +1,255 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define PI 3.14159265 +#define TAU 2*PI +#define time fGlobalTime +#define saturate(x) clamp(x, 0, 1) + +mat3 getOrtho(vec3 z, vec3 up){ + z = normalize(z); + vec3 cu = normalize(cross(z,up)); + vec3 cv = cross(cu,z); + return mat3(cu,cv,z); +} + +const vec3 up = vec3(0,1,0); +float noise(vec3 p, float t){ + float ns=0, amp=1, trk=1.5 + t; + const vec3 seed = vec3(-4,-2,.5); + mat3 rot = getOrtho(seed, up); + for(int i=0; i<4; i++){ + p += sin(p.zxy + trk)*1.6; + ns += sin(dot(cos(p), sin(p.zxy)))*amp; + p *= rot; + p *= 2.3; + trk *= 1.5; + amp *= .5; + } + return ns*.5; +} + +float fs(vec2 p){ + return fract(sin(dot(p, vec2(12.41245, 78.233))) * 421251.543123); +} + +float random(float x){ + return fs(vec2(x)); +} + +vec2 seed; +float rnd(){ + return fs(seed); +} + +vec3 rndSphere(){ + float t = PI*rnd(); + float p = TAU*rnd(); + return vec3(cos(t)*cos(p), sin(t), cos(t)*sin(p)); +} + +vec3 rndHemi(vec3 n){ + vec3 v = rndSphere(); + return dot(n,v) > 0 ? v : -v; +} + +void chmin(inout vec4 a, vec4 b){ + a = a.x < b.x ? a : b; +} + +float box(vec3 p, vec3 b){ + p = abs(p) - b; + return min(0, max(p.x, max(p.y, p.z))) + length(max(p,0)); +} + +mat2 r2d(float t){ + float c=cos(t), s=sin(t); + return mat2(c,s,-s,c); +} + + +float long, shrt; + +vec4 map(vec3 q){ + vec3 p = q; + vec4 d = vec4(100000, 0,0,0); + + + float bx = box(p, vec3(5, 3.25, 7)); + float bx2 = box(p, vec3(4, 3, 6)); + bx = max(bx, -bx2); + bx2 = box(p - vec3(0,5,-1), vec3(1,2,1)) - .5; + bx = max(bx, -bx2); + bx -= .05*noise(p, shrt); + chmin(d, vec4(bx, 0,0,0)); + + p=q - vec3(-1, 0, -2); + p.y -= shrt*2 - 1; + p.xy *= r2d(PI*.2); + for(int i=0; i<10; i++){ + p.zy *= r2d(-PI*.35*(.3 + shrt)); + p.xy *= r2d(-PI*.4*(1.3 - shrt*shrt)); + p.y -= .15; + p = abs(p); + } + + bx = box(p, vec3(.01, .2, .01)); + chmin(d, vec4(bx, 1,0,0)); + + return d; +} + +vec3 normal(vec3 p){ + vec2 e = vec2(0, 0.07678); + return normalize(vec3( + map(p + e.yxx).x - map(p - e.yxx).x, + map(p + e.xyx).x - map(p - e.xyx).x, + map(p + e.xxy).x - map(p - e.xxy).x + )); +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 pt = uv - 0.5; + pt /= vec2(v2Resolution.y / v2Resolution.x, 1); + + seed = vec2(noise(vec3(pt*37, time), 15.3), noise(vec3(pt*25, time), 1.2)); + + float bps = 120/60; + + float tm = 0*bps*.5; + float pre = random(floor(tm) - 1); + float now = random(floor(tm)); + long = fract(tm); + long = 0.5 + 0.5*cos(PI*exp(-8.*long)); + long = mix(pre, now, long); + + tm = time*bps*2; + pre = random(floor(tm) - 1); + now = random(floor(tm)); + shrt = fract(tm); + shrt = 0.5 + 0.5*cos(PI*exp(-3.*shrt)); + shrt = mix(pre, now, shrt); + + vec3 c = vec3(0); + + float longAngle = .4 * TAU * (long - .5) + PI*.5; + vec3 ro = vec3(0,0,3); + + vec3 fo = vec3(-1, 2*shrt - 1,-2); + + vec3 rov = normalize(fo - ro); + vec2 pt2 = pt*r2d((long - .5)*PI*.3); + vec3 rd = getOrtho(rov, up) * normalize(vec3(pt2, 1)); + + float t=0; + vec3 p=ro; + vec4 d; + for(int i=0; i<64; i++){ + p = ro + rd*t; + d = map(p); + if(abs(d.x) < 0.01){ + break; + } + t += d.x; + } + + vec3 l = normalize(vec3(1,4,1)); + if(abs(d.x) < 0.01){ + vec3 n = normal(p); + c += max(0, dot(n,l)); + float fre = pow(1 - abs(dot(n,rd)) , 5); + c += fre; + + float ao=0,ss=0; + vec3 h = normalize(l-rd); + for(int i=1;i<=10;i++){ + float aot = 0.1*i + .05*rnd(); + float sst = 0.3*i + .5*rnd(); + vec3 nd = mix(n,rndHemi(n),.2); + ao += map(p+nd*aot).x/aot; + ss += map(p+h*sst).x/sst; + } + c += ss*.1; + c *= ao*.1; + + if(d.y == 1){ + c *= vec3(25, 1, 1.5); + } + + vec3 hitp = p; + float sh=1, tt=.1; + for(int i=0; i<24; i++){ + hitp = p + l*tt; + float d = map(hitp).x; + tt += d + .2*rnd(); + if(d < 0.001){ + sh = 0; + break; + } + if(tt > 30){ + break; + } + sh = min(sh, 88*d/tt); + } + + c *= saturate(.2+sh); + } + + + float od=0; + vec3 acc=vec3(0), fogC = vec3(1, .8, .8); + int n=16; + float st=min(2, t/n), tt=0; + for(int i=0; i 1.) + col *= 0.76; + + //col.xyz = vec3(r_fresnel); + + // Output to screen + return vec4(col,1.0); +} + + +// +// THE PIMP BRIGADE LIVES!! +// + +#define GRAND_PRIX +#define LOGOMASK // alles erachter plakken +//#define HUUBSTAPEL // alleen movie + +vec2 radialDistort(vec2 uv) +{ + vec2 ctr = vec2(uv.x-0.5, uv.y+0.5); + float dist = dot(ctr, ctr) * 0.08314; + uv += ctr*((1.0+dist)*dist); + return uv; +} + +void main(void) +{ + // RM UV + vec2 rawuv = vec2(gl_FragCoord.x, gl_FragCoord.y); + + vec4 final = vec4(0.0); + + // all else UV + vec2 uv = vec2(gl_FragCoord.x, gl_FragCoord.y*-1.0); + uv /= v2Resolution; + + // crt bend + vec2 rad_uv = radialDistort(uv); + + // + // doe hier van je 2 fx blenden zodirect + // + + // HIER GAAN WE DAN + + // blenden tussen die zooi is misschien wel handig + + float blendie = mod(fGlobalTime, animFPS); // waarom ook niet he + float halfanimFPS = animFPS*0.5; + if (blendie > halfanimFPS) blendie = halfanimFPS-(blendie-halfanimFPS); + blendie /= halfanimFPS; + + +//#ifndef GRAND_PRIX + float looper = mod(fGlobalTime*animFPS, frame_count*3.0); + if (looper < 1.0*frame_count) + final = sampleFiltered(texAnim1, rad_uv); + else if (looper < 2.0*frame_count) + final = sampleFiltered(texAnim2, rad_uv); + else + final = sampleFiltered(texAnim3, rad_uv); + + // godse smerig + if (rad_uv.x < 0.0) final = vec4(0.0); + if (rad_uv.x > 1.0) final = vec4(0.0); + if (rad_uv.y > 0.0) final = vec4(0.0); + if (rad_uv.y > 1.0) final = vec4(0.0); // fuck die geflipte bs altijd + +//#else + vec4 hadikmeegewonnen = grandprix(rawuv); +//#endif + +#ifndef HUUBSTAPEL + final += hadikmeegewonnen*pow(blendie,4.0); +#endif + //mix(final, final + 0.314*hadikmeegewonnen, blendie); +// final = hadikmeegewonnen; +// final = vec4(blendie); + + // bleed + vec4 dotWeights = mix( + vec4(1.0, 0.7, 1.0, 1.0), + vec4(0.7, 1.0, 0.7, 1.0), + 0.134+floor(mod(uv.x*v2Resolution.x, 2.0))); + + final *= dotWeights; + + // lowlife sony + vec4 border = texture(texBorder, uv); + final = mix(final, border*0.7, border.w); + + // glare dingetje + vec4 glare = texture(texGlare, uv); + final = final + final*glare; + + // nytrik (masked or not) + vec2 nytuv = rad_uv; +#ifdef LOGOMASK + // in het midden en de rest wegmodulaten + vec4 nytrik = texture2D(texNytrik, nytuv); + final = final*0.1314*nytrik; +#else + // gewoon lekker optellen die shit en in de hoek sodemieteren + nytuv.x += -0.35; + nytuv.y -= 0.134; + vec4 nytrik = texture(texNytrik, nytuv); + final += nytrik; +#endif + + + // rare vignette, ff denken... + float vignette = pow(abs(1.0-length(uv*uv)), 1.28); + final = (0.5*final + 0.5*(final*vignette)); + + // beetje lichter? ff kijken.. + float invgamma = log(55.22); // haha dit slaat fucking nergens op + final *= invgamma; + + + + out_color = final; +} diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/checker.png b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/checker.png new file mode 100644 index 000000000..81fd30422 Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/checker.png differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/noise.png b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/noise.png new file mode 100644 index 000000000..60e4166ba Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/noise.png differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/spare.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/spare.jpg new file mode 100644 index 000000000..c88c52b3c Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/spare.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex1.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex1.jpg new file mode 100644 index 000000000..78e42c97e Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex1.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex2.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex2.jpg new file mode 100644 index 000000000..797abe637 Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex2.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex3.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex3.jpg new file mode 100644 index 000000000..fe4676c97 Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex3.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex4.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex4.jpg new file mode 100644 index 000000000..c88c52b3c Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/Default/tex4.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/json_snippet.txt b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/json_snippet.txt new file mode 100644 index 000000000..399a22de0 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/json_snippet.txt @@ -0,0 +1,8 @@ + "textures": { + "texBorder": "textures/studio_border.png", + "texGlare": "textures/studio_glare.png", + "texAnim1": "textures/tiled1.jpg", + "texAnim2": "textures/tiled2.jpg", + "texAnim3": "textures/tiled3.jpg", + "texNytrik": "textures/nytrik.jpg" + }, diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/nytrik.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/nytrik.jpg new file mode 100644 index 000000000..cd4317ac0 Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/nytrik.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/studio_border.png b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/studio_border.png new file mode 100644 index 000000000..cd9fcdb7a Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/studio_border.png differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/studio_glare.png b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/studio_glare.png new file mode 100644 index 000000000..d1944d926 Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/studio_glare.png differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/tiled1.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/tiled1.jpg new file mode 100644 index 000000000..1d45e54cf Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/tiled1.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/tiled2.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/tiled2.jpg new file mode 100644 index 000000000..005aea380 Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/tiled2.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/tiled3.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/tiled3.jpg new file mode 100644 index 000000000..b6a76a34f Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/jam_with_messy/superplek/textures/tiled3.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/checker.png b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/checker.png new file mode 100644 index 000000000..81fd30422 Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/checker.png differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/json_snippet.txt b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/json_snippet.txt new file mode 100644 index 000000000..e0edfce00 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/json_snippet.txt @@ -0,0 +1,9 @@ +"textures": { + "texChecker": "textures/checker.png", + "texNoise": "textures/noise.png", + "texTex1": "textures/tex1.jpg", + "texTex2": "textures/tex2.jpg", + "texTex3": "textures/tex3.jpg", + "texTex4": "textures/tex4.jpg", + "texRevision": "textures/revision_o.png" + }, diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/noise.png b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/noise.png new file mode 100644 index 000000000..60e4166ba Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/noise.png differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/revision_o.png b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/revision_o.png new file mode 100644 index 000000000..2a84bd794 Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/revision_o.png differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex1.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex1.jpg new file mode 100644 index 000000000..78e42c97e Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex1.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex2.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex2.jpg new file mode 100644 index 000000000..797abe637 Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex2.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex3.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex3.jpg new file mode 100644 index 000000000..fe4676c97 Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex3.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex4.jpg b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex4.jpg new file mode 100644 index 000000000..c88c52b3c Binary files /dev/null and b/shader_file_sources/2021_04_02_shader_jam_revision_online/textures/tex4.jpg differ diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_final/blackle.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_final/blackle.glsl new file mode 100644 index 000000000..ce2b58c69 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_final/blackle.glsl @@ -0,0 +1,176 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time; +float bar; +float bpm = 130; + +#define FK(k) floatBitsToInt(k*k/7)^floatBitsToInt(k) +float hash(float a, float b) { + int x = FK(a), y = FK(b); + return float((x*x-y)*(y*y+x)+x)/2.14e9; +} + +vec3 rndcol(float hs) { + float h = hash(hs, 420); + if (h > .5) { + return vec3(.9,.8,.4); + } + if (h > 0) { + return vec3(.4,.8,.4); + } + if (h > -.5) { + return vec3(.4,.8,.9); + } + return vec3(.9,.3,.8); +} + +float super(vec2 p, float k) { + return mix(length(p), sqrt(length(p*p)), k); +} + +vec3 pattern(vec2 p, float hs) { + vec2 op = p; + if (hash(hs,399)<0) { + p.y += asin(sin(p.x*40))/40; + } + if (hash(hs,342)<0) { + p.y = abs(p.y)-.2; + } + if (hash(hs,934)<0) { + p.y = -p.y; + } + if (p.y < 0) { + return rndcol(hash(hs,453)); + } + if (p.y > 0) { + op = asin(sin(op*30))/30; + if (hash(hs,666)<0 && super(op,hash(hs,777)*4-2) < .015) { + return rndcol(hash(hs,339)); + } + } + return vec3(1); +} + +vec3 erot(vec3 p, vec3 ax, float ro) { + return mix(dot(p,ax)*ax,p,cos(ro))+sin(ro)*cross(ax,p); +} +vec3 rndrot(vec3 p, float sd) { + float h1 = hash(sd, 43432); + float h2 = hash(sd, 34332); + float h3 = hash(sd, 12356); + return erot(p, normalize(tan(vec3(h1,h2,h3))), h1*100+fGlobalTime*2); +} + +float linedist(vec2 p, vec2 a, vec2 b) { + float k = dot(p-a,b-a)/dot(b-a,b-a); + return distance(p,mix(a,b,clamp(k,0,1))); +} + +float smiley; +float egg(vec3 p, bool chopp) { + float eg = mix( linedist(vec2( sqrt(dot(p.xy,p.xy)+.2) -.1, p.z), vec2(-.3,.5), vec2(0,-.5) )-.9,length(p)-1,.3 ); + eg = abs(eg+.01)-.02; + if (chopp) { + eg = max(eg, p.z); + } + smiley = length(p+vec3(cos(time*9)*.2,sin(time*9)*.2,sin(time*4)*.5))-.4; + return min(eg,smiley); +} + +vec3 glob; +float idx; +float scene(vec3 p) { + idx = round(p.y/3)*3; + bool willchop = false; + if (hash(bar,2313) < 0) { + idx = 0; + willchop = true; + } + p.y -= idx; + if (hash(bar,1312) < 0) { + p.x += sin(time*2+idx); + } else { + p.z += -abs(sin(time*3.1415+idx*.1))+.5; + } + p = rndrot(p, bar+idx*100); + glob = p; + return egg(p, willchop); +} + +vec3 norm(vec3 p) { + mat3 k = mat3(p,p,p) - mat3(0.001); + return normalize(scene(p) - vec3( scene(k[0]),scene(k[1]),scene(k[2]) )); +} +//candy! +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + time = fract(fGlobalTime*bpm/120); + bar = floor(fGlobalTime*bpm/120); + vec2 uv2 = uv; + + if (hash(bar,7434) < 0) { + uv2.y += sin(uv.x*8+time)*.05; + } + out_color.xyz = pattern(uv2,bar); + + + vec3 cam = normalize(vec3(1,uv)); + vec3 init = vec3(-5,0,0); + + if (hash(bar,2341) < 0) { + cam = erot(cam, vec3(0,1,0), radians(45)); + init = erot(init, vec3(0,1,0), radians(45)); + } + + vec3 p = init; + bool hit = false; + float dist; + for (int i = 0; i < 100 && !hit; i++) { + dist = scene(p); + hit = dist*dist < 1e-6; + p += dist*cam; + } + + + if (hit) { + bool issmiley = smiley == dist; + float rix = idx; + vec3 loc = glob; + vec3 n = norm(p); + vec3 r = reflect(cam,n); + float spec = length(sin(r*3)*.5+.5)/sqrt(3); + float fres = 1 - abs(dot(cam,n))*.98; + float diff = length(sin(n*2)*.3+.7)/sqrt(3); + vec2 crds = vec2(atan(loc.x,loc.y)*.8,loc.z); + vec3 dcol = pattern(crds/3, bar+2392+rix*100); + if (issmiley) { + dcol = rndcol(3485+bar); + } + vec3 col = dcol*diff + pow(spec,7)*fres; + out_color.xyz = col; + } + + out_color.xyz = sqrt(out_color.xyz); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_final/evvvvil.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_final/evvvvil.glsl new file mode 100644 index 000000000..4134d2a58 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_final/evvvvil.glsl @@ -0,0 +1,98 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(.00035,-.00035);float t,tt,b,bb,g,gg,de,cr,n,a;vec3 pp,wp,op,np,ro,po,no,ld,al; +float smin(float a,float b,float k){ float h=max(k-abs(a-b),0);return min(a,b)-h*h*.25/k; } +float smax(float a,float b,float k){ float h=max(k-abs(-a-b),0);return max(-a,b)+h*h*.25/k; } +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +const mat2 r2fucked= mat2(cos(.023),sin(.023),-cos(.023),cos(.023)); +vec4 c=vec4(0,3,10,.1),s=vec4(0); +float noi(vec3 p){ + vec3 f=floor(p),s=vec3(7,157,113); + p-=f;vec4 h=vec4(0,s.yz,s.y+s.z)+dot(f,s); + p=p*p*(3-.2*p); + h=mix(fract(sin(h)*43785.5),fract(sin(h+s.x)*43785.5),p.x); + h.xy=mix(h.xz,h.yw,p.y); + return mix(h.x,h.y,p.z); +} +float cmp( vec3 p ) +{ + np=pp=p; + t=length(p.xz)-3-max(0,p.y*.5+1); + + return t; +} +vec2 mp( vec3 p ) +{ + wp=p,n=0,a=3; + for(int i=0;i<7;i++){ + wp.xz*=r2(((length(p.xz)*.05)-tt*.2/(i+1))*.3); + + //n+=abs(sin(noi((wp+vec3(0,0,tt*3))*.15)-.5)*3.14)*(a); + n+=abs(sin(noi((wp+vec3(0,0,tt*3.))*.15)-.5)*3.14)*(a*=.51); + //wp.xy*=r2fucked; + wp*=1.75; + } + vec2 h,t=vec2((p.y+n)*.5,5); + + return t; +} +vec2 tr( vec3 ro,vec3 rd ) +{ + vec2 h,t=vec2(.1); + for(int i=0;i<128;i++){ + h=mp(ro+rd*t.x); + if(h.x<.0001||t.x>43) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>43) t.y=0; + return t; +} +#define a(d) clamp(mp(po+no*d).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + tt=mod(fGlobalTime,62.82); + b=fract(tt); +// float f = texture( texFFT, d ).r * 100; + vec3 ro=vec3(cos(tt*c.w+c.x)*c.z,c.y,sin(tt*c.w+c.x)*c.z), + cw=normalize(vec3(0,5,0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + co=fo=vec3(.13,.11,.1)-length(uv)*.12; + ld=normalize(vec3(0,.1,-.5)); + z=tr(ro,rd);t=z.x; + if(z.y>0){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x);al=vec3(.4); + float dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4); + + co=mix(al*(a(.1)+.2)*(dif+s(1)),fo,min(fr,.5)); + co=mix(fo,co,exp(-.0005*t*t*t)); + } + out_color = vec4(pow(co,vec3(.45)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/anticore.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/anticore.glsl new file mode 100644 index 000000000..05ab7ee4e --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/anticore.glsl @@ -0,0 +1,134 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +float time = fGlobalTime; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +vec3 cam(vec3 ro, vec3 rd, vec2 uv) { + vec3 f = normalize(rd - ro); + vec3 l = normalize(cross(vec3(0,1,0), f)); + vec3 u = normalize(cross(f,l)); + return normalize(f + l * uv.x + u * uv.y); +} + +float sdSphere(vec3 p, float r) { + return length(p) - r; +} + + +vec4 bg(vec3 rd) { + return rd.y * texture(texNoise, rd.xz + time * 0.1) * vec4(.3, .5, 1., 1.); +} + +float sdBox(vec3 p, vec3 c) { + vec3 q = abs(p) - c; + return length(max(q, 0)); +} +float ni(float a) { return texture(texFFTIntegrated, a).x; } +mat2 rot(float a) { return mat2(cos(a), sin(a), -sin(a), cos(a)); } + +void mo(inout vec2 p, vec2 d){ p = abs(p) - d; if (p.y > p.x) p = p.yx; } + +float sdThing(vec3 p) { + mo(p.yz, vec2(.4)); + mo(p.xy, vec2(.4)); + p.xz *= rot(time + ni(0.2) * 2.); + p.zy *= rot(time + ni(0.) * 2.); + mo(p.zx, vec2(.4)); + mo(p.yx, vec2(.4)); + return sdBox(p, vec3(.2, 1., .2)); +} + +vec3 rep(vec3 p, vec3 c) { + return mod(p + .5 * c, c) - .5 * c; +} + +vec2 map(vec3 p) { + vec3 pp = p; + p += vec3(0, 3 - sin(p.x * .2 + p.z * .3 + time + ni(0.) * 10.) * .2 - cos(-p.x * 2. + p.z * .3 + time) * .3 - length(p) * .1, 0); + p = rep(p, vec3(.4, 0, .4)); + float s = sdSphere(p, .1); + float b = sdThing(pp + vec3(sin(ni(0) * 3), 0, cos(ni(.15) * 3))); + + return vec2(min(s,b),s < b ? 1 : 2); +} + +vec3 norm(vec3 p) { + float E = 0.001; vec2 k = vec2(1, -1); + return normalize( + k.xyy * map(p + k.xyy * E).x + + + k.yyx * map(p + k.yyx * E).x + + + k.yxy * map(p + k.yxy * E).x + + + k.xxx * map(p + k.xxx * E).x + ); +} + +vec3 pal(float t, vec3 a, vec3 b, vec3 c, vec3 d) { + return a + b * cos(6.283 * (c * t + d)); +} + +vec4 tr(vec3 ro, vec3 rd, vec2 uv) { + float td = 1; + vec2 h; + + vec4 c = vec4(0); + + for (int i = 0; i < 400; i++) { + vec3 ip = ro + rd * td; + h = map(ip); + td += h.x < 0.1 ? 0.01 : h.x; + int bnc = 0; + + if (h.y == 2) { + c += vec4(pal(time , vec3(.5),vec3(.5),vec3(1., 1., .2),vec3(.8, .6, .3) ), 1) * exp(-h.x * 5) * 0.01; + } + + if (h.x < 0.01) { + vec3 inorm = norm(ip); + + if (h.y == 1) { + c += vec4(pal(ip.x * .1 + ip.z * .2 + time - ip.x * .2 + ip.z * .1 + time, vec3(.5),vec3(.5),vec3(1., 1., .2),vec3(.8, .6, .3) ), 1) * exp(-h.x * 20) * (exp(-td * .1) * .1); + } + if (h.y == 2) { + ro = ip; + rd = reflect(rd, inorm); + td = 0.2; + bnc += 1; + } + } + } + + return bg(rd) + c; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(-10 * sin(time), 1 + sin(time + ni(0) * .2), -5 * cos(time)); + vec3 rd = cam(ro, vec3(0,0,0), uv); + out_color = pow(tr(ro, rd, uv), vec4(1/1.5)); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/blackle.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/blackle.glsl new file mode 100644 index 000000000..90f91598c --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/blackle.glsl @@ -0,0 +1,144 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +//hi revision! + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float box(vec3 p, vec3 d) { + p = abs(p) - d; + return length(max(p,0)) + min(0,max(max(p.x,p.y),p.z)); +} + +float joint(vec3 p, vec3 d) { + return min(length(p - vec3(0,0,d.z))-d.y*1.5-.02, box(p,d)-.02); +} + +vec3 erot(vec3 p, vec3 ax, float ro) { + return mix(dot(ax,p)*ax, p, cos(ro)) + sin(ro)*cross(ax,p); +} + +float r1; +float r2; +float r3; +float r4; +float r5; +float r6; +float arm; +float fl; +float scene(vec3 p) { + float dist = joint(p, vec3(.1,.1,.4)); + fl = p.z+.4; + dist = min(dist,fl); + p = erot(erot(p,vec3(0,0,1),r2)-vec3(0.,0.,.4), vec3(1,0,0), r1) - vec3(0,0,0.3); + dist = min(dist, joint(p, vec3(.1,.1,.3))); + p = erot(erot(p,vec3(0,0,1),r4)-vec3(0.,0.,.3), vec3(1,0,0), r3) - vec3(0,0,0.3); + dist = min(dist, joint(p, vec3(.1,.1,.3))); + p -= vec3(0,0,.32); + p = erot(p,vec3(0,0,1),r6); + arm = box(p, vec3(.09,.3,.09))-.02; + p.y = abs(p.y); + p -= vec3(0,.3,.12); + p = erot(p-vec3(0,0,-.2), vec3(1,0,0), r5); + arm = min(arm, length(p+vec3(0,0,-.1))-.15); + arm = min(arm, joint(p-vec3(0,0,.3), vec3(.05,.05,.2))); + return min(dist,arm); +} + +#define FK(k) floatBitsToInt(k*k/7.)^floatBitsToInt(k) +float hash(float a, float b) { + int x = FK(a), y = FK(b); + return float((x*x-y)*(y*y+x)+x)/2.14e9; +} + +float spring(float x) { + return smoothstep(-.1,.1,x) + smoothstep(-.2,.2,x) - smoothstep(-.3,.3,x); +} + +float bpm = 130; +float mayhem(float sd) { + float off = hash(sd,sd)*99; + float idx = round((fGlobalTime+off)*bpm/240.); + float interp = fGlobalTime + off - idx*240./bpm; + float start = hash(idx, sd); + float end = hash(idx+1, sd); + return mix(start, end, spring(interp)); +} + +vec3 norm(vec3 p) { + mat3 k = mat3(p,p,p) - mat3(0.001); + return normalize(scene(p) - vec3(scene(k[0]),scene(k[1]),scene(k[2]))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + r1 = mayhem(12.); + r3 = mayhem(32.); + r5 = mayhem(72.)*.5+.5; + r2 = mayhem(92.); + r4 = mayhem(78.); + r6 = mayhem(89.); + float hs = mayhem(45.); + + vec3 cam = normalize(vec3(1+hs*.5+.5,uv)); + vec3 init = vec3(-5,0,.5+hs*.2); + + float yrot = .5+mayhem(85.)*.3; + float zrot = fGlobalTime+mayhem(98.); + cam = erot(cam, vec3(0,1,0), yrot); + init = erot(init, vec3(0,1,0), yrot); + cam = erot(cam, vec3(0,0,1), zrot); + init = erot(init, vec3(0,0,1), zrot); + + vec3 p = init; + bool hit = false; + float dist; + for (int i = 0; i<150 && !hit; i++) { + dist = scene(p); + hit = dist*dist < 1e-6; + p += cam*dist; + if (distance(p,init)>10) break; + } + bool isfl = fl == dist; + bool isarm = arm == dist; + vec3 n = norm(p); + vec3 r = reflect(cam,n); + float fres = 1 - abs(dot(cam,n))*.98; + float spec = length(sin(r*3)*.5+.5)/length(3); + spec = pow(spec, 3.)*2 + spec*.2; + spec *= fres; + vec3 col = vec3(spec); + if (isarm) { + col += vec3(.8,.3,.1)*length(sin(n*2)*.3+.7)/sqrt(3); + } + if (isfl) { + col = vec3(1); + if(length(p.xy) < 3) { + if (length(p.xy) < 1.9) { + p = erot(p, vec3(0,0,1), mayhem(78.)); + } else { + p = erot(p, vec3(0,0,1), mayhem(99.)); + } + col = texture(texRevision, p.xy/6+.5).xyz*2; + } + } + + out_color.xyz = smoothstep(0,1,sqrt(hit ? col : vec3(1))); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/cosamentale.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/cosamentale.glsl new file mode 100644 index 000000000..9167504c5 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/cosamentale.glsl @@ -0,0 +1,67 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float time= fGlobalTime; +float li(vec2 uv, vec2 a , vec2 b){ vec2 ua = uv-a; vec2 ba = b-a; + float h = clamp(dot(ua,ba)/dot(ba,ba),0.,1.); + return length(ua-ba*h);} + float rd(float t){ return fract(sin(dot(floor(t),45.))*7845.236);} + float no(float t){return mix(rd(t),rd(t+1.), smoothstep(0.,1.,fract(t)));} + vec2 it(vec2 t){vec2 r = vec2(0.); float a = 0.5; for(int i = 0 ; i < 3 ; i++){ + r += vec2(no(t.x/a),no(t.y/a))*a;a*=0.5;} return pow(r,vec2(2.));} + float it(float t){float r =0.; float a = 0.5; for(int i = 0 ; i < 3 ; i++){ + r += no(t/a)*a;a*=0.5;} return r;} + + vec4 mv(int i){vec2 t = vec2(time,time-fFrameTime); + vec2 v1 = smoothstep(0.1,0.2,it(t*0.3)); + vec2 vr = mix((it(t+i*49.)-0.5)*0.1,vec2(0.),v1); + return (vec4( cos(i*mix(vec2(1.),it(t*0.1),v1)+t),sin(i*mix(vec2(1.),it(t*0.2),v1)+t)))*0.7* + vec4(mix(vec2( v2Resolution.y/ v2Resolution.x),vec2(1.),v1),1.,1.)+vec4(vr,vr);} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uc = uv; + uv = (uv-0.5)*2.;float r1 = 0.; + for(int i = 1 ; i < 40 ; i++) { + vec4 p = mv(i); + r1 = max(r1,smoothstep(0.01,0.,li(uv,p.xz,p.yw))); + } + float r2 = max(r1,texture(texPreviousFrame,uc).a*0.95); + vec2 uv2 = uv*vec2( v2Resolution.x/ v2Resolution.y,1.); + float t = (1.-texture(texRevision,uv2+vec2(0.5)).x)*step(length(uv2),0.5)*smoothstep(0.3,0.2,it(time*0.3)); + r2 = max(t,r2); + float c = 0.; + vec2 ud = uc; vec2 ud2 = uv*0.005; + for(int i = 1 ; i< 30 ; i++){ + ud -= ud2; + c += texture(texPreviousFrame,ud).a/i; + } + float f3 = max(c*(0.2+0.07*it(time*4.)),r2); + float m = 0.; + float b = sqrt(32.); + float d = length(uv.y)*0.01; + for(float i = -0.5*b; i <= 0.5*b; i +=1.) + for(float j = -0.5*b; j <= 0.5*b; j +=1.){ + m += texture(texPreviousFrame,uc+vec2(i,j)*d).a; + } + m /= 32.; + vec3 c1 = mix(vec3(1.),3.*abs(1.-2.*fract(m*.65+0.65+pow(it(time),5.)*10.+vec3(0.,-1./3.,1./3.)))-1.,0.5)*m; + vec3 c2 = mix(c1,1.-c1,smoothstep(0.2,0.1,it(time*3.+26.))); + out_color = vec4(vec3(c2),f3); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/evvvvil.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/evvvvil.glsl new file mode 100644 index 000000000..1362d77d2 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/evvvvil.glsl @@ -0,0 +1,157 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(.00035,-.00035);float t,tt,b,bb,g,gg,a,la,wa,tn;vec3 np,cp,pp,po,no,al,ld; +float bo(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);} +float ex(vec3 p,float s,float h){vec2 w=vec2(s,abs(p.y)-h);return min(max(w.x,w.y),0.)+length(max(w,0.));} +float oc(vec3 p,float r){p=abs(p);return (p.x+p.y+p.z-r)*.57735;} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +vec4 c=vec4(0,10,7,.1); +vec2 mp( vec3 p) +{ + vec2 h=vec2(1000,3),t=vec2(1000,5); + np=vec3(p.xz*.3,.5); + wa=(1-b)*sin(3*length(p.xz*.1)-5*tt); + for(int i=0;i<4;i++){ + np.xy=abs(np.xy)-2.4; + np.xy*=r2(.785*(i+1)); + np*=1.6; + np.y=abs(np.y)-1.; + bb=i==3?9.:6.; + a=ex(p,bo(np.xyx,vec3(6.5,(.14-clamp(sin(np.x*2.),-.2,.2)*.2)*(i+1),6.5))/np.z,bb-i*.5); + a=max(abs(a)-.05,abs(p.y)-(bb-.5)+i*.5); + a=max(a,-(length(p.xy-vec2(0,10))-4)); + t.x=min(t.x,a); + + a=ex(p,bo(np.xyx,vec3(6.5,0,6.5))/np.z,bb-i*.5); + a=max(a,abs(p.y)-(bb-.5)+i*.5+.5-wa); + a=max(a,-(length(p.xy-vec2(0,10+wa))-4)); + g+=0.2/(0.1+a*a*(600-590*wa)); + t.x=min(t.x,a); + + a=ex(p,bo(np.xyx,vec3(6.5,.15*(i+1),6.5))/np.z,bb-i*.5); + a=max(abs(a)-.1,abs(p.y)-(bb-1.)+i*.5); + a=max(a,-(length(p.xy-vec2(0,10))-4)); + h.x=min(h.x,a); + + + } + bb=sin(p.y-3*b)*b; + h.x=min(h.x,.7*bo(p,vec3(1-bb,6+5*b,1-bb))); + t=t.x40) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>40) t.y=0; + return t; +} +#define a(d) clamp(mp(po+no*d).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + // float f = texture( texFFT, d ).r * 100; + tt=mod(fGlobalTime,62.82); + b=smoothstep(0.,1.,clamp(sin(tt),-.2,.2)*2.5+.5); + vec3 ro=mix( + vec3(sin(tt*.5),11-cos(tt)*5,cos(tt*.5)*20), + vec3(cos(tt*c.w+c.x)*c.z,c.y,sin(tt*c.w+c.x)*c.z), + ceil(sin(tt*.5))); + ro.xy-=sin(smoothstep(0.,1.,clamp(cos(tt*.5-.25),-.2,.2)*2.5+.5)*16.)*.4; + vec3 cw=normalize(vec3(0,5,0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo,rco; + co=fo=vec3(.18,.16,.2)-length(uv)*.25; + ld=normalize(vec3(.1,.3,-.3)); + z=tr(ro,rd,128);t=z.x; + if(z.y>0){ + v=cp.xz*.075; + float d=1; + for(int i=0;i<4;i++){ + v.xy=abs(v.xy)-1; + v.xy*=r2(.785); + v*=1.5; + d=min(d,ceil(abs(sin(v.x))-.05-clamp(sin(v.y*2),-.1,.1)*.4)); + } + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x);al=mix(vec3(.3,.16,.3),vec3(.5),cp.y); + if(z.y<5)al=vec3(0.); + if(z.y>5)al=vec3(.5); + if(z.y>6)al=mix(vec3(.5,.4,.3),vec3(.2),3-tn*5); + float dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),40); + co=mix(sp+al*(a(.1)+.2)*(dif+s(4)),fo,min(fr,.5)); + co=mix(fo,co,exp(-.0002*t*t*t)); + + if(z.y==3||z.y==6){ + rd=reflect(rd,no); + z=tr(po+rd*.01,rd,60);t=z.x; + po=po+rd*t; + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x);al=mix(vec3(.3,.16,.3),vec3(.5),cp.y); + if(z.y<5)al=vec3(0.); + if(z.y>5)al=vec3(.5); + if(z.y>6)al=mix(vec3(.5,.4,.3),vec3(.2),3-tn*5); + float dif=max(0,dot(no,ld)), + sp=pow(max(dot(reflect(-ld,no),-rd),0),40); + rco=sp+al*(a(.1)+.2)*(dif+s(4)); + rco=mix(fo,rco,exp(-.0002*t*t*t)); + co+=rco*(.5+fr)*d; + } + } +uv/=(1-b)*fract(tt/(acos(-1)*2)); + uv*=r2(-tt); + co*=min(1,ceil(abs(bo(uv.xyx,vec3(.5)))-.1)); + + out_color = vec4(pow(co+g*.2*vec3(.1,.2,.7),vec3(.45)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/flopine.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/flopine.glsl new file mode 100644 index 000000000..d62310d5d --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/flopine.glsl @@ -0,0 +1,129 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define PI acos(-1.) +#define time fGlobalTime +#define dt(sp) fract(time*sp) +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define bouncy(sp) sqrt(sin(dt(sp)*PI)) +#define BPM 174./60. +#define mo(p,d) p=abs(p)-d;if(p.y>p.x)p=p.yx + +float box (vec3 p, vec3 c) +{ + vec3 q = abs(p)-c; + return min(0.,max(q.x,max(q.y,q.z)))+length(max(q,0.)); +} + +float stmin(float a, float b, float k, float n) +{ + float st = k/n; + float u = b-k; + return min(min(a,b),0.5*(u+a+abs(mod(u-a+st,2.*st)-st))); +} + +float cucube (vec3 p) +{ + p.y -= bouncy(BPM/2.)*4.; + p.yz *= rot(dt(BPM/4.)*PI); + return box(p,vec3(1.)); +} + +void moda(inout vec2 p, float r) +{ + float per = (2.*PI)/r; + float a = mod(atan(p.y,p.x),per)-per*0.5; + p = vec2(cos(a),sin(a))*length(p); + } + + float g1=0.,g2=0.; +float SDF (vec3 p) +{ + p.yz *= rot(-atan(1./sqrt(2.))); + p.xz *= rot(PI/4.); + + float cucu = cucube(p); + g1 += 0.01/(.01+cucu*cucu); + + p.z += time*5.; + float set = max(p.y-4.,abs(box(p,vec3(10.,5.,1e10)))-0.2); + float per = 7.; + p.x = abs(p.x)-9.; + p.z = mod(p.z,per)-per*0.5; + set = stmin(set, box(p,vec3(0.5,5.,0.5)),0.6,3.); + + p.z = mod(p.z,per)-per*0.5; + p.x -= .5; + moda(p.yz,3.); + + mo(p.xy,vec2(1.)); + set = min(set,box(p,vec3(0.15,1.5,0.15))); + + float d = min(cucu, set); + + return d; +} + +vec3 gn (vec3 p) +{ + vec2 e = vec2(0.01,0.); + return normalize(SDF(p)-vec3(SDF(p-e.xyy),SDF(p-e.yxy),SDF(p-e.yyx))); +} + +float AO (float e, vec3 p, vec3 n) +{return SDF(p+e*n)/e;} + +void main(void) +{ + vec2 uv = (2.*gl_FragCoord.xy-v2Resolution.xy)/ v2Resolution.y; + vec2 uu = gl_FragCoord.xy/v2Resolution.xy; + + + vec3 ro = vec3(uv*10.,-30.), rd=normalize(vec3(0.,0.,1.)), p=ro, col = vec3(0.015),l=normalize(vec3(1.,2.,-2.)); + bool hit = false; + float d, shad; + for (float i=0.;i<64.;i++) + { + d = SDF(p); + if (d<0.001) + { + hit = true; shad = i/64.; break; + } + p += d*rd; + } + + if (hit) + { + vec3 n = gn(p); float light = dot(n,l)*0.5+0.5; + float ao = AO(0.1,p,n)+AO(0.2,p,n)+AO(0.45,p,n); + col = vec3(light)*0.2; + col *= ao/3.; + } + col += g1*vec3(0.1,0.7,0.5)*0.2; + + vec2 off = texture(texNoise,texture(texNoise,uv-time*0.1).xy+time*0.3).xy; + + out_color = vec4(sqrt(col),1.); + + out_color += vec4(texture(texPreviousFrame,uu*0.95+off*0.3).r, + texture(texPreviousFrame,uu*0.95+off*0.1).g, + texture(texPreviousFrame,uu*0.95+off*0.1).b, + 1.)*0.4; + //out_color = vec4(off,0.,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/lechugafeliz.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/lechugafeliz.glsl new file mode 100644 index 000000000..4fdf9c75a --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/lechugafeliz.glsl @@ -0,0 +1,91 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texLogo; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +float time = mod(fGlobalTime, 50.); +float smin(float a, float b, float k){ float h = max(k-abs(a-b), 0.)/k; return min(a, b)-pow(h, 3.)*k*(1.0/6.0);} +#define rot(a) mat2(cos(a), sin(a), -sin(a), cos(a)) + +float sb(vec3 p , vec3 s){ p= abs(p)-s; return max(max(p.x, p.z), p.y);} +float c1(vec3 p){ + vec3 p1 = p; + for(int i = 0; i < 5; i++){ + p1.xy *= rot(1.); + p1 = abs(p1)-3.-sin(time); + + } + float sb1 = sb(p1, vec3(0.1, vec2(1.25))); + + return sb1; +} + +float c2(vec3 p){ + vec3 p1 = p; + for(int i =0 ; i < 4; i++){ + p1.xy *= rot(9.); + p1 = abs(p1)-10.*cos(time)+i; + + } + float sb1 = sb(p1, vec3(0.1, vec2(3.25))); + + return min(sb1, c1(p)); +} +float rand(float x){return fract(sin(x*32234.234234)*2342.34234);} +float glow; +float c(float t, float s){t/=s; return mix(rand(floor(t)), rand(floor(t+1)), smoothstep(0., 1., fract(t)));} +float map(vec3 p){float d = c2(p); + float tt = c(time, 40.)*10.+time*.1; + for(float i = 0; i < 3;i++){ p.xz *= rot(tt*.34534+i); p.yx *= rot(tt*.34534); p=abs(p)-.4;} + float ball = length(p)-9.*sin(tt+p.y*.234234)*sin(tt+p.z)*sin(tt+p.x*.434234); + glow += .1/(.1+ball*ball); + d = smin(d, ball, 10.+cos(tt*10.)*20.); return d; +} +float t1 = c(time, 20.); +void cam(inout vec3 p){p.xz *= rot(time+t1); p.yx *= rot(time+t1);} +void main(void) +{ + #define pi = 3.14153596 + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + //uv = mod(uv, 20.); + //uv = mod(-uv, 1)*.2; + uv = (fract(uv/40.+.5)-.5)*40.*cos(time*t1); + uv *= rot(time); + uv.xy += sin(t1)*.4-.5; + + time += rand(dot(uv.x, uv.y))*.03; + //float t1 = c(time, 20.); + float fov = 1.+sin(time+t1)*.1; + vec3 s = vec3(0.00001, .0000001, -60.), r = normalize(vec3(-uv, fov)); + cam(s); cam(r); + vec3 p = s, col = vec3(0.); + const float MAX = 100.; float d = 0., i = 0.; + for(; i < MAX; i++) if(d = map(p), p+=d*r, abs(d) < 0.0001) break; + const vec2 e = vec2(0.01, 0.435345); + col += dot(map(p)-vec3(normalize(vec3(map(p-e.xyy), map(p-e.yxy),map( p-e.yyx)))), -vec3(.3)); + //asd + float tt = c(time, 20.); + //col += length(p-s)/300. * vec3(0.1, .34, .3)+vec3(sin(tt), 0.045345, -sin(tt)); + col += glow * vec3(.213, .3453, .7454)*.966; + col *= 1-max(length(p-s)/sin(time)*2., 0.)*vec3(1., .3123, 1.); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/monsieursoleil.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/monsieursoleil.glsl new file mode 100644 index 000000000..7d84fb190 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/monsieursoleil.glsl @@ -0,0 +1,174 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float midi01; +uniform float midi02; +uniform float midi03; +uniform float midi04; +uniform float midi05; +uniform float midi06; +uniform float midi07; +uniform float midi08; +uniform float midi09; +uniform float midi10; +uniform float midi11; +uniform float midi12; +uniform float midi13; +uniform float midi14; +uniform float midi15; +uniform float midi16; +uniform float midi17; +uniform float midi18; +uniform float midi19; +uniform float midi20; +uniform float midi21; +uniform float midi22; +uniform float midi23; +uniform float midi24; +uniform float midi25; +uniform float midi26; +uniform float midi27; +uniform float midi28; +uniform float midi29; +uniform float midi30; +uniform float midi31; +uniform float midi32; +uniform float midi33; +uniform float midi34; +uniform float midi35; +uniform float midi36; +uniform float midi37; +uniform float midi38; +uniform float midi39; +uniform float midi40; +uniform float midi41; +uniform float midi42; +uniform float midi43; +uniform float midi44; +uniform float midi45; +uniform float midi46; +uniform float midi47; +uniform float midi48; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define mod01 floor(mod(time, 4.0)) +#define mod02 floor(mod(time * 2.0, 4.0)) +#define soundFFT texture( texFFT, 0.05 ).x * 100 + +struct matter +{ + float m; + float glow; +}; + +matter mat; + +mat2 rot(float a) +{ + float ca= cos(a); + float sa = sin(a); + + return mat2(ca, sa, -sa, ca); +} + +float box(vec3 p, vec3 s) +{ + p = abs(p) -s; + + return max(p.x, max(p.y, p.z)); + +} + +vec2 rep(vec2 p, vec2 r) +{ + + return (fract(abs(p/r) - 0.5) - 0.5) * r; + +} + +void map(vec3 p) +{ + float mat01; + vec3 p01 = p, p02 = p, p03 = p; + + p.xz *= rot(sin(time * 0.5) * sin(p.y * 0.01)) * 0.9; + + p02.xz *= rot(sin(time * 0.1) * sin(p02.y * 0.01)) * 1.0; + p02.xz = rep(p02.xz, vec2(0.7)); + + p03.xz *= rot(sin(time * 0.5) * sin(p03.y * 0.01)) * 2.5; + p03.yz *= rot(sin(time * 0.5) * sin(p03.x * 0.01)) * 1.1; + + p03.yz = rep(p03.yz, vec2(0.5)); + + mat01 = box(p + vec3(2.0 * cos(p.y * 0.2 + time * 0.5), 0.0, 2.0 * sin(p.y * 0.2 + time * 0.5)), vec3(2.1 + mod01 * 0.2, 10000000.0, 0.2)); + + mat01 = min(mat01, box(p + vec3(3.0 * cos(p.y * 0.5 + time * 0.5) + soundFFT * 5.0 , 0.0, 4.0 * sin(p.y * 0.1 + time * 1.0) + soundFFT * 5.0 ), vec3(1.5 + mod01 * 0.2 + soundFFT * 2.0, 10000000.0, 0.52))); + + mat01 = min(mat01, box(p + vec3(1.0 * cos(p.y * 0.5 + time * 0.5), 0.0, 2.0 * sin(p.y * 5.1 + time * 1.0)), vec3(2.1 + mod01 * 0.2 + soundFFT * 2.0, 10000000.0, 1.2 + soundFFT * 2.0))); + mat01 = min(mat01, box(p + vec3(5.0 * cos(p.y * 0.5 + time * 0.5), 0.0, 2.0 * sin(p.y * 5.1 + time * 1.0)), vec3(2.1 + mod01 * 0.2 + soundFFT * 2.0, 10000000.0, 1.2 + soundFFT * 2.0))); + + + mat01 = max(mat01, -box(p02, vec3(0.21 * sin(p.y * 0.1 + time * 2.0), 10000.0, 0.11 + soundFFT * 0.01))); + mat01 = max(mat01, -box(p03, vec3(1000.1, 0.01 + soundFFT * 0.01, 0.25 + soundFFT * 0.01 + mod02 * sin(p.y * 0.2 + time * 2.0)))); + + /* mat01 = max(mat01, box(p + vec3(0.0, -time + - cos(time) * 15.0 + 75.0, 0.0), vec3(225.0)));*/ + + mat.glow += 0.15/(0.05+abs(mat01)); + + mat.m = mat01; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + vec3 col = vec3(0.7); + + vec3 o = vec3(10.0 * sin(time) + mod01 * 2.0, time * 0.5 + mod02 * 20.0, 15.0 * cos(time) + mod01 * 2.0), t = vec3(0.0, time * 0.5 + mod02 * 20.0 + 10.0, 0.0); + vec3 fr = normalize(t-o); + vec3 ri = normalize(cross(vec3(0.0, 1.0, 0.0), fr)); + vec3 up = normalize(cross(ri, fr)); + vec3 dir = normalize(fr + uv.x * ri + uv.y * up); + vec3 p = o + dir * 0.25; + + for(int i = 0; i < 200 * midi01; ++i) + { + map(p); + + col -= (0.0005 * (mat.glow)) * (midi02 + mod02 * 0.2) * mix(vec3(0.0), vec3(1.0, 0.5, 0.3), clamp(abs(cos(p.y * 0.01 + time * 1.0 + soundFFT * 4.0)), 0.0, 1.0)); + + if(mat.m< 0.01) + { + mat.m = 5.0 * midi03; + } + + p += dir * mat.m; + } + + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/wrighter.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/wrighter.glsl new file mode 100644 index 000000000..ea4dc6a2b --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_quarters/wrighter.glsl @@ -0,0 +1,156 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +#define iTime fGlobalTime + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texTex5; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define kicka fGlobalTime/60.*178 +#define kick kicka*(1. - 2*float(fract(kicka/4)<0.25)) +vec3 pal(float m){ + vec3 c = vec3( + 0.5 + 0.5*sin(m + 0.5), + 0.5 + 0.5*sin(m), + 0.5 + 0.5*sin(m - 0.5) + ); + c = pow(c,vec3(4)); + return smoothstep(0.,1.,c); +} +#define pmod(p,a) mod(p,a) - 0.5*a + +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 col = vec3(1); + + float pxSz = fwidth(uv.x); + + float k = pow(fract(kick),6) + floor(kick); + { + float md = 0.06; + vec2 p = uv; + p.y += iTime*0.1; + vec2 id = floor(p/md); + p = pmod(p,md); + + float d = 0.; + + float s = 0.01 * sin(id.x*20. + cos(id.y*15.) + id.y + iTime + k); + + p *= rot(s*112.); + d = abs(p.x) - s*0.2; + d = min(d,abs(p.y) - s*0.2); + + d = max(d,length(p) - 2.*s); + + col = mix(col,vec3(0),smoothstep(pxSz,0.,d)); + } + + { + float md = 0.3; + vec2 p = uv; + p.y += iTime*0.1; + float id = floor(p.y/md); + p.y = pmod(p.y,md); + + float d = 0.; + + p.y += sin(id); + p *= rot(sin(id*20.)); + d = p.x; + + col = mix(col,1-col,smoothstep(pxSz,0.,d)); + + } + { + for(float i = 0; i < 50; i++){ + vec2 p = uv + vec2(sin(i*10.), + .5 - 2.5*mod(0.1*iTime*(1. + sin(i)*0.8),1.) + );; + float s = 0.01 * sin(i*20. + cos(i*15.) + i + iTime + k); + + float d = length(p) - s*25.; + + col = mix(col,1-col,smoothstep(pxSz,0.,d)); + } + + } + + { + for(float i = 50; i < 100; i++){ + vec2 p = uv + vec2(sin(i*10.), + .5 - 2.5*mod(0.1*iTime*(1. + sin(i)*0.8),1.) + );; + float s = 0; + + p.x += sin(p.y*(10. + sin(i*5)*9.) + i + iTime*5.)*0.04; + float d = length(p.x) - 0.006; + + d = max(d,abs(p.y) - 0.1); + + + d /= fwidth(d); + col = mix(col,pal(i*20. + p.y*45. + iTime*4.),smoothstep(1.,0.,d)); + } + + } + #define tsin(a) asin(sin(a)) + + { + for(float i = 100; i < 120; i++){ + vec2 p = uv + vec2(sin(i*10.), + .5 - 2.5*mod(0.1*iTime*(1. + sin(i)*0.8),1.) + );; + vec2 op = p; + float s = 0; + + p.x += tsin(p.y*(10. + tsin(i*5)*4.) + i + iTime*5.)*0.04; + float d = length(p.x) - 0.106; + + d = max(d,abs(p.y) - .3); + + + d /= fwidth(d); + + float od; + { + op *= rot(0.4); + op.y = pmod(op.y,0.005); + od = abs(op.y) - 0.001; + + } + col = mix(col,vec3(0),smoothstep(pxSz,0.,od)*smoothstep(1.,0.,d)); + } + + } + + vec2 ouv = gl_FragCoord.xy / v2Resolution.xy; + + vec3 pf = vec3( + texture(texPreviousFrame,ouv + 0.003).x, + texture(texPreviousFrame,ouv).y, + texture(texPreviousFrame,ouv - 0.001).z + ); + + col = mix(col,pf,0.01 +texture( texFFT,0.1).x + pow(fract(kick),4) ); + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/anticore.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/anticore.glsl new file mode 100644 index 000000000..2552d09e8 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/anticore.glsl @@ -0,0 +1,117 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texRevision; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float time = fGlobalTime; +float rnd(float a) { a = fract(a * .123); a *= a + 12.23; a*=a+a; return fract(a);} +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +vec3 cam(vec3 ro, vec3 rd, vec2 uv) { + vec3 f = normalize(rd-ro); + vec3 l = normalize(cross(vec3(0,1,0), f)); + vec3 u = normalize(cross(f,l)); + return normalize(f + l * uv.x + u * uv.y); +} + +float sdBox(vec3 p, vec3 b) { + vec3 q = abs(p) - b; + return length(max(q, 0)); +} + +vec3 rep(vec3 p, vec3 c) { + return mod(p + .5 * c, c)-.5 * c; +} +float ni(float a) { return texture(texFFTIntegrated, a).x; } + + +float cid = 0; + +vec2 map(vec3 p) { + + cid = rnd(round(p.x) * 120. + round(p.z) * 152.); + + + vec3 pp = p; + pp = rep(pp, vec3(5, 0, 0)); + float t = sdBox(pp, vec3(1, 1, 1)); + + p += vec3(0.5,2 - abs(sin(time) * 3.) * 0.1 - abs(round(p.z)) * 0.2,0.); + p = rep(p, vec3(1,0,1)); + float c = sdBox(p, vec3(.4)) - .05; + + return vec2(min(c, t), c < t ? 1 : 2); +} + +vec3 pal(float t, vec3 a, vec3 b, vec3 c, vec3 d) { + return a + b * cos(6.283 * (c * t + d)); +} + + +vec3 norm(vec3 p) { + float E = 0.001; vec2 k = vec2(1, -1); + return normalize( + k.xyy * map(p + k.xyy * E).x + + + k.yyx * map(p + k.yyx * E).x + + k.yxy * map(p + k.yxy * E).x + + k.xxx * map(p + k.xxx * E).x + ); +} + +vec4 tr(vec3 ro, vec3 rd, vec2 uv) { + float td = 1; + vec2 h; + + vec4 c = vec4(0); + + for (int i = 0; i < 600; i++) { + vec3 ip = ro + rd * td; + h = map(ip); + + td += h.x < 0.1 ? 0.01: h.x * 0.5; + + if (h.x < 0.01) { + vec3 inorm = norm(ip); + if (h.y == 1) { + + c += vec4(pal(cid * 2 + time ,vec3(.5),vec3(.5),vec3(1., 1., .2),vec3(.9, .5, .9)) * max(dot(inorm, vec3(-10, 10, -10)), 0) * 0.1, 1); + break; + } + + if (h.y == 2 && (1-texture(texRevision, (ip.zy + 1) / 2).r > 0.5)) { + c += vec4(pal(ip.y + time ,vec3(.5),vec3(.5),vec3(1., 1., .2),vec3(.9, .5, .9)), 1.) * exp(-h.x * 70) * 0.01; + } + } + } + + return c; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(-5 + time * 2,0,0); + vec3 rd = cam(ro, vec3(sin(ni(0) * 3) + time,0,sin(time)), uv); + + out_color = tr(ro, rd, uv); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/blackle.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/blackle.glsl new file mode 100644 index 000000000..8c87aea77 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/blackle.glsl @@ -0,0 +1,117 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float corner(vec2 p) { + return length(max(p,0)) + min(0,max(p.x,p.y)); +} + +vec3 erot(vec3 p, vec3 ax, float ro) { + return mix(dot(p,ax)*ax,p,cos(ro))+sin(ro)*cross(ax,p); +} + +float scene(vec3 p) { + p.yz += tan(asin(sin(vec2(fGlobalTime*3, fGlobalTime*2.5)))*.7)*.8; + vec2 dir = sign(cos(vec2(fGlobalTime*3, fGlobalTime*2.5))); + p.yz *= dir; + p.yz *= -1; + p = erot(p, vec3(1,0,0), radians(-45.)); + p.z = abs(p.z); + p = erot(p, vec3(1,0,0), -abs(sin(fGlobalTime*5))); + float wd = length(p.yz) - .3; + wd = max(wd, .05- corner(p.yz*vec2(-1,1))); + return corner(vec2(wd,abs(p.x)))-.05; +} + +vec3 norm(vec3 p) { + mat3 k = mat3(p,p,p) - mat3(0.001); + return normalize(scene(p) - vec3(scene(k[0]),scene(k[1]),scene(k[2]))); +} + +float redo(float x) { + return 1-x; +} +float undo(float x) { + return 1-x; +} + +float linedist(vec2 p, vec2 a, vec2 b) { + float k = dot(p-a,b-a)/dot(b-a,b-a); + return distance(p,mix(a,b,clamp(k,0,1))); +} + +float zombiegost(vec2 p) { + float bod = linedist(p, vec2(0,-.5), vec2(0,.5)); + + float eyes = length(vec2(abs(p.x-.2)-.2, p.y))-.1; + p.x = asin(sin(p.x*40+floor(fGlobalTime)*2))/40; + float dt = dot(p, vec2(1)); + return max(-eyes,max(bod,dt)); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 olduv = uv; + vec2 pixelsize = 1/v2Resolution; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float kr = .055 + length(uv*2)*.02 - sin(fGlobalTime)*.02; + float fr = .055; + float da = 1.; + float db = .1; + vec4 past = texture(texPreviousFrame, olduv); + past.z = undo(past.z ); + float scale = 3.5+sin(fGlobalTime*3); + vec4 conv = vec4(0); + for (int i = -1; i <= 1; i++) { + for (int j = -1; j <= 1; j++) { + vec4 smpl = texture(texPreviousFrame, olduv + vec2(i,j)*pixelsize*scale); + smpl.z = undo(smpl.z); + float coeff = (j == 0 && i == 0) ? -1 : ((i == 0 || j == 0 ) ? .2 : .05 ); + conv += coeff*smpl; + } + } + float olda = past.z; + float a = olda + (da*conv.z - olda*past.w*past.w + fr*(1-olda)); + float b = past.w + (db*conv.w + olda*past.w*past.w - (fr+kr)*past.w)*1.5; + a = redo(a); + out_color = vec4(0,a*.5,a,b); + + vec3 cam = normalize(vec3(1,uv)); + vec3 init = vec3(-4,0,0); + vec3 p = init; + bool hit = false; + for (int i = 0; i < 100 && !hit; i++ ){ + float dist = scene(p); + hit = dist*dist < 1e-6; + p+= dist*cam; + } + vec3 n = norm(p); + vec3 r = reflect(cam,n); + float spec = length(sin(r*3)*.3+.7)/sqrt(3.); + vec3 col = vec3(0.9,.7,.2)*spec + pow(spec,8); + if (hit) { + out_color = vec4(col, 1); + } + if (zombiegost(uv*-3 + vec2(asin(sin(fGlobalTime*2)), sin(fGlobalTime*2)*.5)) < .5) { + out_color.r = 1; + } +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/evvvvil.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/evvvvil.glsl new file mode 100644 index 000000000..9deda00c4 --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/evvvvil.glsl @@ -0,0 +1,129 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(.00035,-.00035);float t,tt,b,bb,g,la,a;vec3 pp,op,cp,po,no,al,ld; +float bo(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +vec4 np; +vec2 fb ( vec3 p,float i,float s) +{ + vec2 h,t=vec2(length(p.xz)-2-clamp(sin(p.y*5),-.2,.2)*.2,5); + t.x=abs(t.x)-.2; + pp=p; + pp.y+=1-i*2; + a=max(abs(bo(pp,vec3(.65,2,200)))-.2,abs(pp.y)-1); + t.x=min(t.x,mix(a,length(pp.xz-sin(p.z*.5))-.5,b)); + pp.x=mix(abs(pp.x)-.7,pp.y*.5-.8,b); + pp.z=mod(pp.z,3)-1.5; + pp-=mix(vec3(0,1,0),vec3(0,-1.3,0)+sin(p.z*.5),b); + t.x=min(t.x,bo(pp,vec3(.1,2,.1))); + + pp.y-=2; + la=length(pp)-.1; + g+=0.1/(0.1+la*la*40); + t.x=min(t.x,la); + t.x/=s; + t.x=max(t.x,-(length(op.xy-vec2(-2*b,6-i*.1))-5.)); + t.x=max(t.x,abs(op.y)-5+i); + + h=vec2(length(p.xz)-1+pp.y*.1/(i*2+1),3); + h.x/=s; + h.x=max(h.x,-(length(op.xy-vec2(0,6.1-i*.1+3*b))-5.)); + h.x=max(h.x,abs(op.y)-5.5+i-5*b); + t=t.x17) break; + t.x+=h.x;t.y=h.y; + + } + if(t.x>17) t.y=0; + return t; +} +#define a(d) clamp(mp(po+no*d).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +//float f = texture( texFFT, d ).r * 100; + tt=mod(fGlobalTime,62.82); + bb=ceil(sin(tt*.4)); + vec3 ro=vec3(uv*8,-8), + rd=vec3(0,0,1),co,fo; + co=fo=vec3(.13,.1,.12)-length(uv)*.12; + ld=normalize(vec3(-.5,.5,-.3)); + z=tr(ro,rd);t=z.x; + if(z.y>0){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x);al=mix(vec3(0.,.1,.3),vec3(.4,.3,.1),b); + if(z.y<5)al=vec3(0); + if(z.y>5)al=vec3(1),no-=.2*ceil(abs(cos(cp*5.2))-0.5),no=normalize(no); + float dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),40); + co=mix(sp+al*(a(.05)+.2)*(dif+s(.5)),fo,min(fr,.5)); + co=mix(fo,co,exp(-.001*t*t*t)); + + } + co=mix(co,co.xzy,length(uv)*.7); + out_color = vec4(pow(co+g*.2*mix(vec3(1,.5,0),vec3(1),sin(t*5)*.5-.2),vec3(.45)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/flopine.glsl b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/flopine.glsl new file mode 100644 index 000000000..c3cb892af --- /dev/null +++ b/shader_file_sources/2021_04_02_shader_showdown_revision_online/showdown_semis/flopine.glsl @@ -0,0 +1,149 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define PI acos(-1.) +#define dt(sp) fract(time*sp) +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define crep(p,c,l) p=p-c*clamp(round(p/c),-l,l) + +// CUCUBE PREQUEL + +float box (vec3 p, vec3 c) +{return length(max(abs(p)-c,0.));} + +float cyl(vec3 p, float r, float h) +{return max(length(p.xy)-r,abs(p.z)-h);} + +void moda(inout vec2 p, float r) +{ + float per = (2.*PI)/r; + float a = mod(atan(p.y,p.x),per)-per*0.5; + p=vec2(cos(a),sin(a))*length(p); +} + +float cucube (vec3 p) +{ + p += vec3(1.,-7.,4.); + p.yz *= rot(dt(0.5)*2.*PI); + p.xy *= rot(dt(0.2)*2.*PI); + return box(p,vec3(0.4)); +} + +float pipe (vec3 p) +{ + crep(p.x,0.5,2.); + float c = cyl(p.xzy, 0.2,1e10); + float per = 2.; + p.y = mod(p.y,per)-per*0.5; + c = min(c,cyl(p.xzy,0.25,0.1)); + return c; +} + +float g1=0.; +float SDF (vec3 p) +{ + float cucu = cucube(p); + g1 += 0.01/(0.01+cucu*cucu); + + p.y -= dt(0.5)*30.; + vec3 pp = p; + float d = -cyl(p.xzy, 10.,1e10); + float per = 15.; + float id = floor(p.y/per); + p.y = mod(p.y,per)-per*0.5; + float a = mod(id,2.)==0.?dt(0.1):-dt(0.1); + p.xz *= rot(a*2.*PI); + d = min(d, abs(p.y)-(-1.+2.*texture(texRevision,p.xz*0.05+0.5).x)*0.05); + + p = pp; + moda(p.zx, 5.); + p.z -= 9.8; + d = min(d,pipe(p)); + + d = min(d, cucu); + + return d; +} + +vec3 gc (vec3 ro, vec3 ta, vec2 uv) +{ + vec3 f = normalize(ta-ro); + vec3 l = normalize(cross(vec3(0.,1.,0.),f)); + vec3 u = normalize(cross(f,l)); + return normalize(f + uv.x*l + uv.y*u); +} + +float hex (vec2 uv) +{ + vec2 hr = vec2(1.,sqrt(3.)),a=mod(uv,hr)-hr*0.5,b=mod(uv-hr*0.5,hr)-hr*0.5, + guv = dot(a,a)=2.) break; + + } + return i/l; +} +float box(vec3 p,vec3 b){ + + vec3 q = abs(p)-b; + return length(max(vec3(0),q))+min(0,max(q.x,max(q.y,q.z))); + } + +vec2 sdf(vec3 p){ + float _bit3 = texture(texFFTIntegrated,.33).r; + float _bit6 = texture(texFFTIntegrated,.66).r; + p.xz *=rot(fGlobalTime); + vec3 pp= p; + p.xy *=rot(floor(_bit3*50.)*6.66); + p.zy *=rot(floor(_bit6*75.)*3.66); + vec2 mandeluv = vec2(abs(atan(p.x,abs(p.z))),p.y); + float q = mandel(mandeluv,10.); + vec2 h; + h.x = box(p,vec3(1.0-q*.1)); + h.x = max(h.x,-box(p,vec3(.9-q*.1))); + h.y = 1.-q; + h.x *=.9; + + vec2 t; + t.x = -box(pp,vec3(10.)); + + pp = abs(pp)-2.5; + t.x = min(box(pp,vec3(1.)),t.x); + t.y = t.x == box(pp,vec3(1.)) ? 3.:2.; + + h = h.x < t.x ? h:t; + return h; +} +vec2 nv=vec2(-.001,.001); +#define q(s) s*sdf(p+s).x +vec3 norm(vec3 p){return normalize(q(nv.xyy)+q(nv.yxy)+q(nv.yyx)+q(nv.xxx));} +void main(void) +{ + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 puv = uv; + uv -= 0.5; + + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + float _bit3 = texture(texFFTIntegrated,.33).r; + _bit3 = cos(texture(texNoise,uv*.5).r+floor(_bit3*33)*6.66)*.5; + + vec3 ro = vec3(0.,0.,-5.),rd=normalize(vec3(uv,1.-_bit3 )),rp=ro; + vec3 light= vec3(1.,2.,-3.); + + vec3 col =vec3(.1); + + vec3 acc = vec3(0.); + for(float i=0.;i<=69.;i++){ + vec2 d = sdf(rp); + + if(d.y <=.1) { + acc += vec3(.1,7,.2)*exp(-abs(d.x))/59.; + d.x = max(0.02,abs(d.x)); + } + + + if(d.x<=0.01) { + vec3 n= norm(rp); + + + if(d.y>.1 && d.y <=1.){ + if(d.y >.5) { + col = vec3(.2,.5,.7)*max(0.,dot(normalize(light-rp),n)); + } else { + col = vec3(9.,.5,.1)*max(0.,dot(normalize(light-rp),n)); + } + break; + } + if(d.y ==2.){ + float noize = texture(texNoise,rp.xz*10.).r*.01; + col*=vec3(.1,.7,.5)*1.2; + rd = reflect(rd,n+noize); + rp+=rd*.01; + } + if(d.y ==3.){ + float noize = texture(texNoise,rp.xz*10.).r*.01; + col*=vec3(.1,.7,.5)*2.2; + rd = reflect(rd,n+noize); + rp+=rd*.01; + } + + } + rp+=rd*d.x; + } + col += acc; + + + vec3 pcol = texture(texPreviousFrame,puv).rgb; + + col = mix(col,pcol,.5); + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_05_13_shader_showdown_outline/outline_2021_totetmatt_2.glsl b/shader_file_sources/2021_05_13_shader_showdown_outline/outline_2021_totetmatt_2.glsl new file mode 100644 index 000000000..3980eda26 --- /dev/null +++ b/shader_file_sources/2021_05_13_shader_showdown_outline/outline_2021_totetmatt_2.glsl @@ -0,0 +1,72 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texTexBee; +uniform sampler2D texTexOni; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(0.,.4,.6)));} +vec3 grid(vec2 uv,float off){ + vec2 uuv=uv; + float tt = texture(texFFTIntegrated,.3).r; + float ttt =texture(texNoise,uv).r; + float tttt=texture(texFFT,.6).r*50.; + uv*=rot(floor(tt*50.)*.785*.5); + uv = abs(fract(uv+ttt*tttt)-.5); + + if(uv.x <=.002) return pal(.1+off)*length(uv)*2.*clamp((length(uuv)-.5),.0,1.); + return vec3(.0); +} +vec3 layer(vec2 uv,float off){ + uv.x +=off*.2; + uv.y +=off*.2; + float tuv = abs(atan(uv.x,abs(uv.y)))*.05; + float tt =texture(texFFTIntegrated,floor(100*tuv)/100).r; + float ttt =texture(texFFT,floor(100*tuv)/100).r; + + float d = length(uv)-.2-ttt ;cos(floor(tt*10))*.01; + d = abs(d)-.007+cos(tt)*.01; + d = abs(d)-.0020-ttt*.1; + d = smoothstep(fwidth(d),0.,d); + return vec3(d)*pal(off+ttt*10.)+grid(uv+ttt,off*3.33);; + +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 puv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col = vec3(.01); + float d = 0; + float tttt=texture(texFFTIntegrated,.2).r*100.; + const float lim = 20;; + for(float i=0;i<=lim;i++){ + float it=i/lim; + float itt = fract(it+fGlobalTime*.01+tttt*.005); + + float z = mix(.001,20.,itt); + vec3 d = layer((uv*z)*rot(.785*i), it); + col +=vec3(d)*(1.-itt); + } + vec3 pcol = texture(texPreviousFrame,puv).rgb; + col = mix(col,pcol,.7); + //col =vec3(d); + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_nusan.glsl b/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_nusan.glsl new file mode 100644 index 000000000..8187c9c7c --- /dev/null +++ b/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_nusan.glsl @@ -0,0 +1,177 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float fft(float t) { return texture(texFFTSmoothed, fract(t)*.4).x/texture(texFFTSmoothed, 0.001).x; } +float ffti(float t) { return texture(texFFTIntegrated, fract(t)*.4).x; } + +float time=mod(fGlobalTime,300); +float box(vec3 p, vec3 s) { p=abs(p)-s; return max(p.x, max(p.y,p.z)); } +mat2 rot(float a) { float ca=cos(a); float sa=sin(a); return mat2(ca,sa,-sa,ca); } + +float rnd(float t) { + return fract(sin(t*452.512)*352.544); +} + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1), pow(smoothstep(0,1,fract(t)), 10)); +} + +float ca=0; +float caid=0; + +int id=0; +vec3 pu=vec3(0); +float map(vec3 p) { + + vec3 bp=p; + + for(int i=0; i<5; ++i) { + float t=i*3.7+2.7 + rnd(caid)*8; + p.yz *= rot(t); + p.xz *= rot(t*.7); + p.xz=abs(p.xz)-0.9 - rnd(caid); + } + + float d = length(p)-1; + + float s=1; + float t2 = time*.3 + curve(time, .5)*7; + float st = 0.2 + curve(time, .7)*.7; + vec3 p1=(fract(bp/s+.5)-.5)*s; + float a1=sin(dot(p1.xy,vec2(.8))+t2)*st; + float d1 = abs(length(p1.xy)-.2)-.05; + vec3 p2=(fract((bp+s*.5)/s+.5)-.5)*s; + float a2=sin(dot(p2.yz,vec2(.2))+t2*.7)*st; + float d2 = abs(length(p2.yz)-.2)-.05; + vec3 p3=(fract((bp+vec3(s*.5,0,0))/s+.5)-.5)*s; + float a3=sin(dot(p1.xz,vec2(.3))+t2*1.3)*st; + float d3 = abs(length(p3.xz)-.2)-.05; + + float dd = max(d1, d - a1); + float dd2 = max(d2, d - a2); + float dd3 = max(d3, d - a3); + id=0; + if(dd2100.0) { break; } + p+=r*d; + atm += 0.015/(max(1.5,d-10.5)); + } + + vec3 diff=vec3(1,.9,.3); + if(id==1) diff=vec3(.6,.5,1); + if(id==2) diff=vec3(.3,1,.4); + + col += pu*.01; + + vec3 l=normalize(vec3(1,3,2)); + + float sss=0; + vec3 p2=p; + vec3 r2=l*.08; + for(int i=0; i<50; ++i) { + float d=map(p2); + sss += d*.01; + p2+=r2; + } + + float fog=1-clamp(length(p-s)/100.0,0,1); + + //col += map(p-r) * fog * diff; + vec2 off=vec2(0.01,0); + vec3 n=normalize(map(p)-vec3(map(p-off.xyy), map(p-off.yxy), map(p-off.yyx))); + vec3 h=normalize(l-r); + float spec = max(dot(n,h),0); + float fre=pow(1-abs(dot(n,r)),3); + + col += sss * fog * (diff + diff*pow(spec,10) + pow(spec, 50)); + col += sss * fog * diff * fre * 2; + atm *= (1-fog); + + atm += texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy).w*pow(curve(time, .2),.4); + + vec2 uv2 = uv; + for(int i=0; i<10; ++i) { + float t3=time*.3; + uv2*=rot(t3); + atm += 0.007/(0.001+abs(uv2.x)) * pow(1-fog,10) * pow(curve(time+i*2.73,.5),10); + uv2=abs(uv2); + uv2-=.3; + } + + vec3 aaa=vec3(vec3(.5,.2,.9)+sin(atm*vec3(10,1,2) + time)); + col += (aaa*.2+.8)*atm*.2; + + + //col += pow(1-fog,3)*.01/(0.01+abs(fract(.5*ffti(floor(abs(uv.x)*30)/30))*2-1-uv.y)); + + col=smoothstep(0,1,col); + col=pow(col, vec3(0.4545)); + + out_color = vec4(col, atm); +} \ No newline at end of file diff --git a/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_ponk.glsl b/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_ponk.glsl new file mode 100644 index 000000000..40ad51a80 --- /dev/null +++ b/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_ponk.glsl @@ -0,0 +1,109 @@ + +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +float hash (vec2 seed) { return fract(sin(dot(seed*.1684,vec2(54.649,321.547)))*450315.); } + +mat2 rot (float a) { float c=cos(a), s=sin(a); return mat2(c,-s,s,c); } +#define repeat(p, r) (mod(p,r)-r/2.) + +float dither; +float material; +float glow; + +float map(vec3 p) +{ + float dist = 1000.; + float shape = 1000.; + + float cell = 12.; + float idz = floor((p.z+time*.2)/cell); + //p.z = repeat(p.z+time, cell); + float cycle = 1.; + float spawn = pow(sin(fract(time/cycle)*3.14), 10.); + const int count = 6; + float r = 1.3; + float s = 0.1; + float f = 1.8; + float h = 0.2; + float a = 1.0; + float t = time*0.5+dither*0.05+p.x*.2;//+idz; + for (int index = count; index > 0; --index) + { + p.xy *= rot(0.1*t/a); + p.xz *= rot(sin(t/a)+t); + p.yz *= rot(t+sin(t*4.)); + p.z = abs(p.z)-r*a; + shape = max(length(p.xz)-s*a, abs(p.y)-h*a); + material = shape < dist ? float(index) : material; + dist = min(shape, dist); + a /= f; + } + //dist = length(p)-s; + dist = min(dist, length(p)-.05*spawn); + + return dist; +} + +void main(void) +{ + float delay = 4.; + vec2 uv = (gl_FragCoord.xy-0.5*v2Resolution.xy)/v2Resolution.y; + + //uv *= rot(time*0.1); + dither = hash(uv+fract((time))); + glow = 0.; + vec3 color = vec3(0.);//*smoothstep(0.0, 2.0, length(uv)); + vec3 eye = vec3(0,0,-6); + vec3 ray = normalize(vec3(uv, 2.)); + vec3 pos = eye + ray * (2.+dither*1.); + const int steps = 40; + for (int index = steps; index > 0; --index) + { + float dist = map(pos); + if (dist < 0.001) + { + float shade = float(index)/float(steps); + vec3 tint = vec3(0.25)+vec3(0.75)*cos(vec3(1,2,3)*.8+material*.1+1.+pos.z*2.+uv.y*1.+shade+floor(time/delay)*8.3); + color = tint * shade; + break; + } + + if (material == floor(mod(time, 8.))) + { + float fade = fract(time); + //glow += sin(fade*3.14)*clamp(0.01/max(0., dist),0.,1.); + } + pos += dist * ray; + } + + color += vec3(1)*glow; + + vec2 splash = -uv * 20.*length(uv)/v2Resolution; + vec3 frame = texture(texPreviousFrame, gl_FragCoord.xy/v2Resolution.xy+splash).rgb; + + color = max(color, frame); + + float reset = fract(time/delay); + color *= smoothstep(1.0, 0.9, reset); + + out_color = vec4(color,1); +} + diff --git a/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_totetmatt.glsl b/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_totetmatt.glsl new file mode 100644 index 000000000..dcac13664 --- /dev/null +++ b/shader_file_sources/2021_05_21_shader_jam_shadow_party/sender_shadow_totetmatt.glsl @@ -0,0 +1,140 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} + +float box(vec3 p,vec3 b){ + vec3 q= abs(p)-b; + return length(max(vec3(0.),q))+min(0.,max(q.x,max(q.y,q.z))); +} +vec2 sdf(vec3 p){ + vec3 op = p; + float bt = texture(texFFTIntegrated,.33).r*.2; + vec2 l = vec2(atan(p.z,abs(p.x)),p.y); + p += vec3(5,2.,-2.0); + p.xy *= rot(-.785*sin(floor(bt))); + + float tt = texture(texNoise,p.xy*.1+bt).r; + + + float ttt = texture(texFFT,atan(p.x,p.z)+tt*4+fGlobalTime).r; + tt = floor(tt*100)/100; + ttt = sqrt(ttt); + vec2 h; + + h.x = length(p)-5.-tt; + h.y = 1.-(ttt); + + vec2 t; + + op.x -=2.; + + op.z = mod(op.z,5)-2.5; + + op.y +=sin(op.z*5+bt*10); + + op.xy *=rot(floor(fGlobalTime+bt*20)); + op.xz *=rot(floor(bt*20)*1.33); + + + t.x = box(op,vec3(.9)); + t.y = 2.; + + h = t.x < h.x ? t:h; + + return h; + } +vec2 nv=vec2(-.001,.001); +#define q(s) s*sdf(p+s).x +vec3 norm(vec3 p){return normalize(q(nv.xyy)+q(nv.yyx)+q(nv.yxy)+q(nv.xxx));} + +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(.0,.3,.7)));} +// Art of code <3 +float h21(vec2 p) { + vec3 a = fract(vec3(p.xyx) * vec3(213.897, 653.453, 253.098)); + a += dot(a, a.yzx + 79.76); + return fract((a.x + a.y) * a.z); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 puv = uv; + + + vec3 ro=vec3(.0,.0,-5.),rd=normalize(vec3(uv,1.)),rp=ro; + vec3 light = vec3(1.,2.,-3.); + + float bt = texture(texFFT,.2).r; + + float tt = texture(texFFT,floor(abs(uv.x)*100)/100).r; + tt =sqrt(tt)*3; + + vec3 col= vec3(tt)*sqrt(pal(tt)); + vec3 acc = vec3(0.); + + for(float i=0.;i<=69.;i++){ + vec2 d = sdf(rp); + + if(d.y <=.92+sin(fGlobalTime)*.04){ + acc += pal(d.y*1.2+fGlobalTime*.1)*max(0.,exp(10*-abs(d.x))/(25.-d.y*20))*exp(-abs(i/20)); + d.x = max(0.01,abs(d.x)); + } + if(d.y == 2.) { + + acc += vec3(.1,.8,.4)*max(0.,exp(1*-abs(d.x))/(69.-bt*8000.)); + d.x = max(0.1,abs(d.x)); + } + + rp +=rd*d.x; + if(d.x <=.001){ + vec3 n = norm(rp); + float fre = pow(1.-dot(-rd,n),5.); + if(d.y <=1.){ + + col = fre*vec3(.1,.5,.8)+vec3(.3)*max(0.,dot(n,normalize(light-rp))); + break; // CA ME TURA UN JOUR CET OUBLIE + + } else { + //col = vec3(1.3)*max(0.,dot(n,normalize(light-rp))); + //break; + } + } + + } + + + + // puv = (puv * vec2(v2Resolution.y / v2Resolution.x, 1))+.5; + +vec2 puvr = (puv*vec2(1.1) * vec2(v2Resolution.y / v2Resolution.x, 1))+.5; + vec2 puvg = (puv *vec2(1)* vec2(v2Resolution.y / v2Resolution.x, 1))+.5; + vec2 puvb = (puv*vec2(.9) * vec2(v2Resolution.y / v2Resolution.x, 1))+.5; + vec3 pcol =vec3(texture(texPreviousFrame,puvr).r, + texture(texPreviousFrame,puvg).g, + texture(texPreviousFrame,puvb).b + ); + + + + col = mix(col,pcol,.5+fract(fGlobalTime*4)*.4); + col+=acc; + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_05_21_shader_jam_shadow_party/shadow-evvvvil-shaderjam.glsl b/shader_file_sources/2021_05_21_shader_jam_shadow_party/shadow-evvvvil-shaderjam.glsl new file mode 100644 index 000000000..2ff16fb7c --- /dev/null +++ b/shader_file_sources/2021_05_21_shader_jam_shadow_party/shadow-evvvvil-shaderjam.glsl @@ -0,0 +1,179 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texWormhole; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(.0035,-.0035); float t,tt,b,bb,g,cr,gg,ggg,f,tn; vec3 ro,np,rp,bp,cp,pp,op,sp,po,no,al,lp,ld,cop;vec4 su=vec4(0);float ffBass, ffHigh, ffWhole; +float noi(vec3 p){ vec3 f=floor(p),s=vec3(7,157,113); p-=f;vec4 h=vec4(0,s.yz,s.y+s.z)+dot(f,s); p=p*p*(3.-2.*p); + h=mix(fract(sin(h)*43758.5),fract(sin(h+s.x)*43758.5),p.x); h.xy=mix(h.xz,h.yw,p.y); return mix(h.x,h.y,p.z);} +float cno(vec3 p,float k){ float f=0.; p.z+=tt*k;f+=0.5*noi(p);p=2.1*p;f+=0.25*noi(p+1.);p=2.2*p; f+=0.125*noi(p+2.);p=2.3*p; return f;} +float bo(vec3 p,vec3 r){p=abs(p)-r; return max(max(p.x,p.y),p.z);} +float oc(vec3 p,float s){p=abs(p);return (p.x+p.y+p.z-s)*0.57735;} +float b2d(vec2 p,vec2 r){ p=abs(p)-r;return length(max(p,0))+min(max(p.x,p.y),0);} +float cy(vec3 p,vec3 r){return max(abs(length(p.xz)-r.x)-r.y,abs(p.y)-r.z/2.);} +float cx(vec3 p,vec3 r){return max(abs(length(p.yz)-r.x)-r.y,abs(p.x)-r.z/2.);} +float cz(vec3 p,vec3 r){return max(abs(length(p.xy)-r.x)-r.y,abs(p.z)-r.z/2.);} +float cap(vec3 p, float h, float r ){ p.y -= clamp( p.y, 0.0, h );return length( p ) - r;} +float ext(vec3 p,float sdf,float h){ vec2 w=vec2(sdf,abs(p.y)-h); return min(max(w.x,w.y),0.)+length(max(w,0));} +vec2 smin( vec2 a, vec2 b,float k ){ float h=clamp(.5+.5*(b.x-a.x)/k,.0,1.);return mix(b,a,h)-k*h*(1.0-h);} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +float smin( float d1, float d2, float k ){float h=max(k-abs(d1-d2),0.0);return min(d1, d2) - h*h*0.25/k;} +float smax( float d1, float d2, float k ){float h=max(k-abs(-d1-d2),0.0);return max(-d1,d2)+h*h*0.25/k;} +/* VOLUMETRIC CLOUDS */ +float cmp( vec3 p){ + ffWhole = texture( texFFTSmoothed, 0.02+abs(p.y)*.001).r*200; + float t=length(p)-3-ffWhole; + t=smin(t,length(p.xz)-2-cos(p.y*.2),1.); + t*=0.5; + return t; +} +/* ORBITTTTTTTTT */ +vec4 c=vec4(4.57,7,25,0.2); + +/* MMMAAAAPPPPPPPPPPPPPPPPPPPP*/ +vec2 mp( vec3 p, float ga ){ + //p=vec3(atan(p.x,p.z)*8.,abs(abs(p.y)-25.)-7.,length(p.xz)-5.-bb); + //p=vec3(abs(atan(p.z,p.x))*10.-5., (10.-length(p)), abs(atan(length(p.xz),p.y))*10.); + ffWhole = texture( texFFTSmoothed, 0.02+abs(p.y)*.01).r*300; + op=p; + p.xz=abs(p.xz)-5-cos(p.y*.2)*4.-ffBass; + //float ta=smoothstep(0.,1.,(clamp(sin(p.y*.01+tt*.5),-.25,.25)*2.+.5)); + //p=mix(p,p.xzy,ta); + //float mxr=clamp(sin(tt*.65+p.z*.1),-.5,.5)+.5; + +vec3 gr=clamp(sin(p*5),-.5,.5)*.1; + + vec2 h,t=vec2(bo(p,vec3(3,10,3)-gr.x+gr.y-gr.z+ffHigh),5); //CUBE BLUE + float szr=cos(p.y*.5)*ffWhole*.05; + t.x=abs(t.x)-.2; + t.x=max(t.x,abs(p.y)-3); + t.x*=0.7; + + h=vec2(bo(p,vec3(3.1,10,3)-gr.x+gr.y-gr.z+szr+ffHigh),6); //CUBE WHITE + h.x=abs(h.x)-.4; + h.x=max(h.x,(abs(abs(abs(p.y)-1.6)-.8)-.4)); + + tn=texture(texNoise,p.xy*.1).r; + h.x=min(h.x,length(p.xz)-1-tn+ffWhole*.1); // WHITE CYL MIDDLE + + float glo=abs(bo(p,vec3(2,10,2)-gr.x+gr.y-gr.z))-.01; //GLOW BOX INSIDE + + + glo=max(glo,abs(p.y)-3.6-ffBass); //GLOW BOX INSIDE + gg+=0.1/(0.1*glo*glo*(400-390*cos(p.y*.2+ffBass*4+1.5))); + h.x=min(h.x,glo); + + h.x*=0.75; + + t=t.x120) break; + t.x+=h.x;t.y=h.y; + } if(t.x>120) t.y=0; + return t; +} +#define a(d) clamp(mp(po+no*d,0).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d,0).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + tt=mod(fGlobalTime,62.82); + //bb=max(0.,-3.+floor(tt*.25)+smoothstep(0.,1.,min(fract(tt*.25),.25)*4.)); + //b=smoothstep(0.,1.,clamp(sin(tt*.5),-.25,.25)*2.+.5); + + //// FEUFEUTEU + ffBass = texture( texFFTSmoothed, 0.05 ).r*200; + ffHigh = texture( texFFTSmoothed, 0.3 ).r*350; + + ///////////////////////// CCCCCCAAAAAAAAAAAAAMMMMMMMM + ro=mix(vec3(cos(tt*c.w+c.x)*c.z,c.y,sin(tt*c.w+c.x)*c.z), + vec3(cos(tt*.4)*9,sin(tt)*5,-18), + ceil(sin(tt*.4))); + vec3 cw=normalize(vec3(0)-ro), cu=normalize(cross(cw,vec3(0,1,0))), cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + + ///////// BACKGROUND + tn=texture(texNoise,rd.xz).r; + float ffMain=texture( texFFTSmoothed, .01+abs(rd.y)*.5*(1-tn*.5)).r*150; + + co=fo=clamp(vec3(.13,.12,.1)-length(uv)*.2+texture(texNoise,rd.xz).r*.1*ffMain,0.,1.); + + //////// LIGHT POS + lp=ro+vec3(0,2,0); + z=tr(ro,rd);t=z.x; + if(z.y>0){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy,0).x+ + e.yyx*mp(po+e.yyx,0).x+ + e.yxy*mp(po+e.yxy,0).x+ + e.xxx*mp(po+e.xxx,0).x);al=mix(vec3(.0,0.20,.7),vec3(.1,0.40,.5),sin(cop*2.5)*.5+.5); + if(z.y<5)al=vec3(0); + if(z.y>5)al=vec3(1); + ld=normalize(lp-po); + float attn=1.0-pow(min(1.0,length(lp-po)/30.),4.0), + dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),30); + co=mix((sp+al*(a(.1)*a(.3)+.2)*(dif+s(1)*.3))*attn,fo,min(fr,.5)); + co=mix(fo,co,exp(-.00002*t*t*t)); + } + cr=cmp(ro)-2.+fract(dot(sin(uv*476.567+uv.yx*785.951+tt),vec2(984.156))); + for(int i=0;i<120;i++){ + cp=ro+rd*(cr+=1./3.);//(cr+=60./150.); + if(su.a>.99||cr>t) break; + float de=clamp(-cmp(cp)+2.*cno(cp,10.),0.,1.); //-0.2-mp(cp).x+0.5*cno(cp*0.5,1.) + su+=vec4(vec3(mix(1.,0.,de)*de),de)*(1.-su.a); + } + co=mix(co,su.xyz,su.a*0.8); //mix(su.xyz,fo,1.-exp(-.000005*cr*cr*cr)),su.a*.9) + //float light=clamp(-0.5-mp(cp-ld*.5).x+2.5*cno(cp*5,5),0.,1.);//cloud lighting + //su+=vec4(vec3(mix(de*de,light,de)),de)*(1-su.a); //co=su.xyz; + co=co+g*.2*vec3(.0,.1,.7)+gg*.2*vec3(1.,.5,.1)+ggg*.2; + //if(length(lp-ro) 0.) + { + vec3 p = ro + rd * res.y; + vec3 n = getNorm(res.x, p); + col = n * .5 + .5; + if (res.z == 1.) + { + col = vec3(.25); + col += vec3(.75,0.2,.14)*pow(sat(-dot(rd, n)),5.); + if (res.z == 0.) + col = vec3(0.); + } + } + col += accCol.zxy; + return col; +} + +vec3 rdr2(vec2 uv) +{ + vec2 dir = normalize(vec2(1.)); + float strength = .01; + vec3 col = vec3(0.); + col.r = rdr(uv+strength*dir).x; + col.g = rdr(uv).y; + col.b = rdr(uv-strength*dir).z; + return col; +} + +void main(void) +{ + vec2 uv = (gl_FragCoord.xy-vec2(.5)*v2Resolution.xy)/v2Resolution.xx; + + /* + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; +*/ + vec3 col = vec3(0.); + col = rdr2(uv)*.5; + + float stp = 0.025; + uv = floor(uv/stp)*stp; + col = mix(rdr(uv), col, 1.-sat(length(uv*2.))*sat(abs(uv.y*3.))); + col += (1.-sat(length(uv*2.)))*vec3(.1,.2,.3)*5.*(sat((abs(sin((uv.x+uv.y)*5.+fGlobalTime))-.95)*400.)); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_EmmazingGoose.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_EmmazingGoose.glsl new file mode 100644 index 000000000..0fbd05d2b --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_EmmazingGoose.glsl @@ -0,0 +1,162 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +const float PI = acos(-1.); + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +void add(inout vec2 d1, in vec2 d2) { + if(d2.x < d1.x) d1 = d2; +} + +void diff(inout vec2 d1, in vec2 d2) { + if (-d2.x > d1.x) { + d1.x = -d2.x; + d1.y = d2.y; + } +} +float sdPlane( vec3 p, vec4 n ) +{ + // n must be normalized + return dot(p,n.xyz) + n.w; +} + +float sphere(vec3 p, float sz) { + return length(p) - sz; +} + +vec2 rX(const in vec2 p, const in float ang) { + float nA = ang * PI; + float c = cos(nA), s = sin(nA); + return vec2(p.x*c - p.y*s, p.x*s + p.y*c); +} + +float sdRC( in vec3 p, in float r1, float r2, float h ) +{ + vec2 q = vec2( length(p.xz), p.y ); + + float b = (r1-r2)/h; + float a = sqrt(1.0-b*b); + float k = dot(q,vec2(-b,a)); + + if( k < 0.0 ) return length(q) - r1; + if( k > a*h ) return length(q-vec2(0.0,h)) - r2; + + return dot(q, vec2(a,b) ) - r1; +} + +vec2 map(vec3 p) { + vec3 bP = p; + + //bP.xy = rX(bP.xy, fGlobalTime*.1); + vec3 eyeP = bP; + //eyeP.yz = rX(eyeP.yz, 0.1*sin(fGlobalTime)); + + vec3 newP = eyeP+vec3(1.25,0,1.3); + float sp = sphere(newP,.5); + vec2 base = vec2(sp, 1.0); + + add(base, vec2(sphere(bP, 2),2.0)); + add(base, vec2(sphere(eyeP+vec3(-1.25,0,1.3),.5), 1.)); + add(base, vec2(sphere(eyeP+vec3(-1.58,0,1.7),.15), 3.)); + add(base, vec2(sphere(eyeP+vec3(1.58,0,1.7),.15), 3.)); + + vec3 beakP = bP; + beakP += vec3(0,0.75,1.75); + beakP.yz = rX(beakP.yz, 0.55); + + + add(base, vec2(sdRC(beakP, 1., 0.2, 1.75) , 4.)); + + return base; +} + +vec3 gNorm(vec3 hit){ + vec3 e=vec3(1e-2,0,0); + float d = map(hit).x; + return normalize(vec3( map(hit + e.xyy).x - d, + map(hit + e.yxy).x - d, + map(hit + e.yyx).x - d)); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + // + vec3 ro = vec3(0,0,-10); + vec3 rd = normalize(vec3(uv,1)); + float trav = 0.0; + float additive = 0.0; + vec2 hitObj = vec2(0.0); + for (int i=0; i<100; i++){ + hitObj = map(ro+rd*trav); + additive += 0.05; + float hit = hitObj.x; + trav += hit; + if (hit < 0.01) { + break; + } + + if (hit > 20.) { + break; + } + } + + if (trav < 20.) { + vec3 hitPoint = ro+rd*trav; + vec3 baseColor = vec3(1,1,1); + if (hitObj.y == 2.0) { + baseColor = vec3(0.7,0.9,0.7); + } else if (hitObj.y == 3.0) { + baseColor = vec3(0,0,0); + } else if (hitObj.y == 4.0) { + baseColor = vec3(0.2,0.2,0.2); + } + + + vec3 lightPos = vec3(0,10,-5); + vec3 normLight = normalize(lightPos-hitPoint); + vec3 norm = gNorm(ro+rd*trav); + float diffval = clamp(dot(norm,normLight)*.5,0,1); + out_color = vec4(baseColor * vec3(diffval),1); + return; + } + out_color = vec4(210./255., 180./255., 140./255., 1)+additive/2.; + return; + // + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Exca.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Exca.glsl new file mode 100644 index 000000000..15ed3d23e --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Exca.glsl @@ -0,0 +1,300 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +float beat; +float beatStep; +float fft; +float fftS; +float fftI; +float glow; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float diffuse(vec3 p, vec3 l, vec3 n) +{ + return max( dot(n, normalize(l-p)),0.0); +} + +vec2 barrelDistortion(vec2 uv, float k) +{ + float rd = length(uv); + float ru = rd * (1.0 + k * rd * rd); + uv /= rd; + uv *= ru; + return uv; +} +vec3 rotate( vec3 p, float x, float y, float z) +{ + mat3 rotx = mat3( 1.0, 0, 0, 0, cos(x),-sin(x),0, sin(x),cos(x)); + mat3 roty = mat3( cos(y), 0, sin(y), 0,1,0, -sin(y), 0, cos(y)); + mat3 rotz = mat3( cos(z), -sin(z), 0, sin(z),cos(z), 0,0,0,1); + return rotx*roty*rotz*p; +} + + +vec3 repeat( vec3 p, vec3 c ) +{ + vec3 q = mod( p + 0.5*c, c)-0.5*c; + return q; +} + + +vec3 getcam( vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize( target - cam); + vec3 right = normalize(cross(vec3(0,1,0), forward)); + vec3 up = normalize( cross(forward,right)); + + return normalize( vec3( uv.x*right + uv.y* up + forward*fov )); +} + +float cube( vec3 p, vec3 size) +{ + vec3 q = abs(p)-size; + return length( max(q,0.0)+min(max(q.x,max(q.y,q.z)),0.0)); +} + +float roundcube( vec3 p, vec3 b, float r) +{ + vec3 d = abs(p)-b; + return min(max(d.x, max(d.y,d.z)), 0.0) + length(max(d,0.0))-r; +} + +float sphere(vec3 p, float r) +{ + return length(p) -r; +} + +vec3 map( vec3 p, out vec3 id) +{ + if(mod(beat,16.0) < 4.0) + { + p = rotate( p, 0.0, 0.0, p.z*-0.5); + } + else if(mod(beat,16.0) < 8.0) + { + p = rotate( p, 0.0, p.z*0.1, 0.0); + } + else if(mod(beat,16.0) < 12.0) + { + p = rotate( p, p.z*0.1, 0.0,sin(fftI)*p.z*0.1); + } + else + { + p = rotate( p, 0.0, 0.0, p.z*0.1); + } + + + + p+=vec3(-fGlobalTime,0,0); + id = floor(p *1.0 -0.5); + float idf = sin(id.x+id.y+id.z); + + float s1 = sphere(p, 0.5); + + vec3 cp = repeat(p, vec3(2.0, 2., 2.0)); + cp = rotate(cp, id.x, id.y, id.z); + float c1 = roundcube(cp, vec3( + 0.2+idf*0.1, + sin(fftI*10.0+idf)*0.1+ 0.2+idf*0.1, + 0.2) + ,abs(sin(p.x+fftI)*fftS*8.0+cos(p.y-fftI)*fftS*8.0)); + + return vec3(c1,0,0); +} + +vec3 march( vec3 cam, vec3 rd, out float t, out vec3 p, out vec3 id) +{ + t = 0.0; + for(int i = 0; i < 200; i++) + { + p = cam + rd*t; + vec3 r = map(p, id); + /*float bx = cube( + repeat( p + vec3(1.0), vec3(2.0,0,0)), + vec3(0.00001,100,100)); + float bz = cube( + repeat( p + vec3(1.0), vec3(0.0,0,2)), + vec3(100,100,0.00001)); + float by = cube( + repeat( p + vec3(1.0), vec3(0.0,2,0)), + vec3(100,0.0001,100)); + + float delta = min(max(0.1, bx), r.x); + delta = min( max(0.1, bz), delta); + delta = min( max(0.1, by), delta); + */ + float delta = r.x; + t+=delta*0.5; + + if(r.x < 0.001) + { + return r; + } + } + return vec3(-1); +} + +vec3 marchV( vec3 cam, vec3 rd, out float t) +{ + vec3 sum = vec3(0.); + t = 0.0; + vec3 id=vec3(0.); + for(int i = 0; i < 100; i++) + { + vec3 p = cam + rd*t; + vec3 r = map(p, id); + float d = max(0.1, r.x); + t+=d; + if(r.x < 0.01){ + glow += abs(r.x); + } + if(r.x < 0.001) + { + sum.y+= 0.1*d; + } + } + return sum; +} + +vec3 normal( vec3 p) +{ + vec3 id = vec3(0.); + vec3 c = map(p,id); + vec2 e = vec2(0.001, 0.0); + return normalize( + vec3( + map(p+e.xyy,id).x, + map(p+e.yxy,id).x, + map(p+e.yyx,id).x + )-c.x + ); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + beat = floor(fGlobalTime*2.9166); + beatStep = fract( fGlobalTime*2.9166); + fft = texture(texFFT, 0.2).r; + fftS = texture(texFFTSmoothed, 0.2).r; + fftI = texture(texFFTIntegrated, 0.2).r; + + + uv = barrelDistortion( uv, fftS*50.0); + + float time = fGlobalTime; + + vec3 cam = vec3(0,sin(floor(beat/8.0)),1); + vec3 target = vec3(0,0,10); + vec3 light1 = vec3(sin(time), 10, cos(time)); + float fov = 2.2; + + vec3 c = vec3(0.0); + float travel = 0.0; + vec3 p = vec3(0.0); + + vec3 rd = getcam( cam, target, uv, fov); + + vec3 id = vec3(0.); + + vec3 obj = march( cam, rd, travel, p, id); + if(obj.y > -0.5) + { + vec3 n = normal(p); + + c = vec3(1.0)*diffuse(p, light1, n) * vec3( sin(id.x), cos(id.y), sin(-id.z)); + } + + float vTravel = 0.0; + vec3 vol = marchV( cam, rd, vTravel); + + c = mix(c, vec3(0.0), smoothstep( 15., 35., travel)); + + c+=vol*fftS*300.0; + c*=0.7+glow*fftS*350.; + + vec3 prev = texture(texPreviousFrame, (uv*0.9)*0.5+0.5 ).rgb; + + c = mix(c*c, c, fftS*55.0); + + out_color = vec4(c+prev*0.5,1.0); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_LechugaFeliz.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_LechugaFeliz.glsl new file mode 100644 index 000000000..b7d5274a4 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_LechugaFeliz.glsl @@ -0,0 +1,154 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texTexBee; +uniform sampler2D texTexOni; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define rot(a) mat2(cos(a), sin(a), -sin(a), cos(a)) +float t=mod(fGlobalTime, 100.)*.15; +float st(vec3 p, vec2 s){ + return length(vec2(length(p.xy)-s.x,p.z))-s.y; +} +float cp(vec3 p, float s){ + vec3 ab=p-vec3(1.,2.,3.); + vec3 bp=p+vec3(1.,2.,3.); + //float t=clamp(,0.,1.); + //return length() + return 0.; +} +float smin(float a, float b, float k){ + float h=max(k-abs(a-b),0.); + return min(a,b)-h*h*.25/k; +} +float sb(vec3 p, vec3 s){ + p=abs(p)-s; + return max(max(p.x,p.y),p.z); +} +const float pi = acos(-1.); +float h(float p){return fract(sin(p*233.)*566.);} +vec2 h(vec2 p){return fract(sin(p*233.+p.yx*454.34)*vec2(566.));} +float c(float t){return mix(h(floor(t)), h(floor(t+1)), pow(smoothstep(fract(t), 0., 1.),20.));} +float g0,g1,g2,g3,g4,g5; +const float cut=100.; +float m1(vec3 p){ + + vec2 id=h(floor(p.xz/cut-.5)); + + p.y+=sin(t+id.y*2.)*10.+10.; //movement + //p.x=abs(p.x)-20.; + + + p.xz=(fract(p.xz/cut-.5)-.5)*cut; + p.yz*=rot(id.y*.25*pi/2.); + const float dd2=2.1; + float d=st(p,vec2(1.,.023)); + + float cc1=length(p)-.25; + + g1+=.1/(.1+cc1); + float cc2=length(p-vec3(0., 0., dd2))-2.; + + g2+=.1/(.1+cc2*cc2); + vec3 p1=p; + p1.x+=sin(p1.y*.11+t*.56); + p1.z+=sin(p1.y*.46+t*.23); + float cc3=length(p1.xz-vec2(0., dd2))-.25; + cc3+=h(cc3); + cc3=max(cc3,p1.y+1.2); + + g3+=.1/(.1+cc3); + vec3 p2=p; + p2.yz*=rot(1.09); + float cc4=length(p2.xy)-sin(sin(t*50.)*.95+.25+t*50.*id.x*2.)*.5+.5; + cc4+=h(cc4); + cc4=max(cc4,p.z); + g4+=.1/(.1+cc4*cc4*cc4); + cc4*=.6; + cc4=max(cc4,p.z); + d=smin(d,cc1,1.); + d=smin(d,cc2,1.); + d=smin(d,cc3,1.); + //g0=d; + d=smin(d,cc4,1.); + + return d; +} +float m(vec3 p){ + + float d=m1(p); + p.xz=(fract(p.xz/5.-.5)-.5)*5.; + float cc1=sb(p-vec3(0., 5., 0.),vec3(1.,.25,1.)); + g5+=1./(1.+cc1*cc1); + d=min(d,cc1); + return d; +} +void cam(inout vec3 p){ + p.z+=t*250.; +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 s=vec3(0.01, 0.01, -16.); + cam(s); + //s.xz*=rot(t*.221); + //s.x+=sin(t)*20.; + + vec3 p=s; + vec3 pp=vec3(0.01); + cam(pp); + pp.x+=sin(t*2.)*200.; + vec3 cz=normalize(pp-s); + vec3 cx=normalize(cross(cz,vec3(0.,-1., 0.))); + vec3 cy=normalize(cross(cz,cx)); + vec3 r=mat3(cx,cy,cz)*normalize(vec3(-uv, 1.-fract(length(uv)*1.5+t))); + const vec2 e=vec2(0.01, 0.); + vec3 co,fo,al,ld,n; + float d; + ld=normalize(vec3(-1.,-1.,-1.)); + al=vec3(0.57); + co=fo=vec3(0.)-length(uv)*.006; + for(float i=0.; i < 100.; i++) if(d=m(p),p+=d*r,abs(d)-.15 < .0001){ + //if(d > 1.) break; + n=normalize( + e.xyy *(m(p+e.xyy)) + + e.yyx *(m(p+e.yyx)) + + e.yxy *(m(p+e.yxy)) + + e.xxx *(m(p+e.xxx)) + ); + if(g0<.5) r=reflect(r,n),p+=1.25; + float dif=max(dot(ld,n),0.); + float fr=pow(1.+dif,3.); + float sp=pow(dot(reflect(-ld, n),-r),40.); + co=mix(dif*sp*al,fo,min(fr,.44)); + } + + co+=g1*vec3(0.25)*.96; + co+=g2*vec3(0.001,0.,0.006)*.85; + co+=g3*vec3(0.01, 0.1, 0.25)*.2; + co+=g4*vec3(1., 0., 0.)*.15; + co+=g5*vec3(0.13)*.065; + //co=smoothstep(0., 1., co); + //co=pow(co, vec3(.4545)); + co=max(co, 0.); + + out_color = sqrt(vec4(co, 1.)); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NR4.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NR4.glsl new file mode 100644 index 000000000..69d8fb36a --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NR4.glsl @@ -0,0 +1,563 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const vec4 c = vec4(1.,0.,-1.,3.14159); +const float pi = 3.14159, + PHI = 1.618, + f = 1.e4; +mat3 R; + +void hash33(in vec3 p3, out vec3 d) +{ + p3 = fract(p3 * vec3(.1031, .1030, .0973)); + p3 += dot(p3, p3.yxz+33.33); + d = fract((p3.xxy + p3.yxx)*p3.zyx); +} + +float hash12(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * .1031); + p3 += dot(p3, p3.yzx + 33.33); + return fract((p3.x + p3.y) * p3.z); +} + +float lfnoise(in vec2 t) +{ + vec2 i = floor(t); + t = fract(t); + t = smoothstep(c.yy, c.xx, t); + vec2 v1 = vec2(hash12(i), hash12(i+c.xy)), + v2 = vec2(hash12(i+c.yx), hash12(i+c.xx)); + v1 = c.zz+2.*mix(v1, v2, t.y); + return mix(v1.x, v1.y, t.x); +} + +float mfnoise(in vec2 x, in float d, in float b, in float e) +{ + float n = 0.; + float a = 1., nf = 0., buf; + for(float f = d; f 0.) + { + s *= .5; // Try .25 + vec3 a = mod(y, s)-.5*s, + yi = y-a; + y = a; + + hash33(r +yi+.124*float(i), r); + r = 2.*r-1.; + m += step(r.x+r.y+r.z,-.9); + } + + // Wall + if(r.x > -.25+.5*sin(fGlobalTime)) + sdf = add(sdf, SceneData(m, dbox3(y, .39*s*c.xxx)-.1*s, 0., 0., 0., .5, .5+.5*m)); + } + return sdf; +} + +vec3 normal(vec3 x) +{ + float s = scene(x).dist, + dx = 5.e-5; + return normalize(vec3( + scene(x+dx*c.xyy).dist, + scene(x+dx*c.yxy).dist, + scene(x+dx*c.yyx).dist + )-s); +} + +vec3 palette(float scale) +{ + const int N = 3; + vec3 colors[N] = vec3[N]( + //vec3(0.21,0.21,0.21), + //vec3(0.94,0.39,0.23), + //vec3(0.94,0.39,0.23), + c.xxx, + vec3(0.41,0.72,1.00), + vec3(0.03,0.02,0.36) + ); + float i = floor(scale), + ip1 = mod(i + 1., float(N)); + return mix(colors[int(i)], colors[int(ip1)], fract(scale)); +} + +// Analytical sphere distance. +// Use this by plugging o-x0 into x. +vec2 asphere(vec3 x, vec3 dir, float R) +{ + float a = dot(dir,dir), + b = 2.*dot(x,dir), + cc = dot(x,x)-R*R, + dis = b*b-4.*a*cc; + if(dis<0.) return vec2(f); + vec2 dd = (c.xz*sqrt(dis)-b)/2./a; + return vec2(min(dd.x, dd.y), max(dd.x, dd.y)); +} + +// Analytical box distance. +// Use this by plugging o-x0 into x. +vec2 abox3(vec3 x, vec3 dir, vec3 s) +{ + vec3 a = (s-x)/dir, + b = -(s+x)/dir, + dn = min(a,b), + df = max(a,b); + return vec2( + all(lessThan(abs(x + dn.y * dir).zx,s.zx)) + ? dn.y + : all(lessThan(abs(x + dn.x * dir).yz,s.yz)) + ? dn.x + : all(lessThan(abs(x + dn.z * dir).xy,s.xy)) + ? dn.z + : f, + all(lessThan(abs(x + df.y * dir).zx,s.zx)) + ? df.y + : all(lessThan(abs(x + df.x * dir).yz,s.yz)) + ? df.x + : all(lessThan(abs(x + df.z * dir).xy,s.xy)) + ? df.z + : f + ); +} + +// Orthogonal projection for any vector d. Without the use of Gram-Schmidt for shorter code. +// This assumes, that you don't plug in the origin (which would be stupid, right?) +mat3 ortho(vec3 d) +{ + vec3 a = normalize( + d.x != 0. + ? vec3(-d.y/d.x,1.,0.) + : d.y != 0. + ? vec3(1.,-d.x/d.y,0.) + : vec3(1.,0.,-d.x/d.z) + ); + return mat3(d, a, cross(d,a)); +} + + +// Analytical infinite cylinder distance. +// Use this by plugging o-x0 into x. +vec2 apipe(vec3 x, vec3 dir, vec3 d, float R) +{ + //vec3 al = normalize(cross(d,dir)); + //mat3 m = transpose(mat3(al, cross(d, al), d)); + mat3 m = transpose(ortho(dir)); + x = m*x; + dir = m*dir; + + return asphere(vec3(x.xy,0.), vec3(dir.xy,0.), R); +} + +bool ray(out vec3 col, out vec3 x, inout float d, vec3 dir, out SceneData s, vec3 o, vec3 l, out vec3 n) +{ + for(int i=0; i<250; ++i) + { + x = o + d * dir; + + /* + // Bounding box + if(d>2.) + { + d = f; + x = o + d * dir; + return false; + } +*/ + + s = scene(x); + + if(s.dist < 1.e-4) + { + // Blinn-Phong Illumination + n = normal(x); + col = palette(s.material); + col = .2 * col + + s.diffuse * col*max(dot(normalize(l-x),n),0.) + + s.specular * col*pow(max(dot(reflect(normalize(l-x),n),dir),0.),2.); + + return true; + } + + d += min(s.dist,s.dist>5.e-1?1.e-2:5.e-3); + //d += s.dist; + //d += min(s.dist, 1.e-3); + + //if(d > asphere(o-.5*R*c.yxy, dir, .24).y) d = abox3(o, dir, vec3(1.,1.,.911)).y; + } + return false; +} + +mat3 rot3(vec3 p) +{ + return mat3(c.xyyy, cos(p.x), sin(p.x), 0., -sin(p.x), cos(p.x)) + *mat3(cos(p.y), 0., -sin(p.y), c.yxy, sin(p.y), 0., cos(p.y)) + *mat3(cos(p.z), -sin(p.z), 0., sin(p.z), cos(p.z), c.yyyx); +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float sm(in float d) +{ + return smoothstep(1.5/v2Resolution.y, -1.5/v2Resolution.y, d); +} + +vec3 hsv2rgb(in vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +vec3 rgb2hsv(in vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +void main(void) +{ + /* + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t;*/ + + R = //mat3(1.); + rot3(vec3(0.,0.,.7)*fGlobalTime); + + float d = 0., + d1 = 0.; + vec2 uv = (gl_FragCoord.xy-.5*v2Resolution.xy)/v2Resolution.y; + vec3 o = R*vec3(0., -.5, .5), + col = c.yyy, + c1, + x, + x1, + n, + n1, + r = R*c.xyy, + t = vec3(0.,0.,.4), + dir = normalize(uv.x * r + uv.y * cross(r,normalize(t-o))-o), + l = c.zxx+c.yyx; + SceneData s, + s1; + + // Material ray + //d = min(asphere(o-.5*R*c.yxy, dir, .24).x, abox3(o+.075*c.yyx, dir, vec3(1.,1.,.925)).y); + + d = -(o.z)/dir.z; + + if(ray(col, x, d, dir, s, o, l, n)) + { + // Reflections + //if(dbox3(x,vec3(1.)) < 0.) d1 = abox3(x+.075*c.yyx, re, vec3(1.,1.,.925)).y; + //else d1 = min(abox3(x+.075*c.yyx, re, vec3(1.,1.,.925)).y, asphere(x-.5*R*c.yxy, re, .24).x); + + if(s.reflectivity != 0.) + { + vec3 re = reflect(dir,n); + d1 = 2.e-2; + if(ray(c1, x1, d1, re, s1, x, l, n1)) + col = mix(col, c1, s.reflectivity); + } + + /* + //d1 = asphere(o-.5*c.yxy, refract(dir,n, .99), .24).y; + // Refractions + d1 = 2.e-4; + if(ray(c1, x1, d1, refract(dir,n, .99), s1, x, l, n1)) + col = mix(col, c1, s.transmittivity); + */ + + /* + // Hard Shadow + d1 = 1.e-2; + if(ray(c1, x1, d1, normalize(l-x), s1, x, l, n1)) + { + if(length(l-x1) < length(l-x)) + col *= .5; + } + */ + + if(x.z < .3) + { + // Soft Shadow + o = x; + dir = normalize(l-x); + d1 = 1.e-2; + + // if(d < 1.e2) + { + float res = 1.0; + float ph = 1.e20; + for(int i=0; i<1250; ++i) + // for(d=1.e-2; x.z<.5; ) + { + x = o + d1 * dir; + s = scene(x); + if(s.dist < 1.e-4) + { + res = 0.; + break; + } + if(x.z > .3) + { + res = 1.; + break; + } + float y = s.dist*s.dist/(2.0*ph)/12.; + float da = sqrt(s.dist*s.dist-y*y); + res = min( res, 100.0*da/max(0.0,d1-y) ); + ph = s.dist; + d1 += min(s.dist,s.dist>5.e-1?1.e-2:5.e-3); +// d1 += min(s.dist,s.dist>1.e-1?1.e-2:5.e-3); + } + col = mix(.5*col, col, res); + } + } + } + + float d21a = d210(5.*(uv-.45*c.xz)); + col = mix(col, mix(col, c.xxx, .5), sm(d21a)); + + vec3 ccol = rgb2hsv(col); + ccol.r = 2.*sin(texture(texFFTIntegrated, .01).r); + col = hsv2rgb(ccol); + + vec3 dcol = vec3(0.40,0.70,1.00); + dcol.r = 2.*sin(texture(texFFTIntegrated, .01).r); + dcol = hsv2rgb(dcol); + + col = mix(col, mix(dcol, .5*c.xxx, .8), smoothstep(0., 3., d)); + + float dad; + vec2 vi; + dhexagonpattern(32.*uv, dad, vi); + col = mix(col, mix(col, col+col*col+col*col*col, (.5+.5*lfnoise(vi-fGlobalTime*3.))), .5*abs(uv.y)); + + col =mix(col, mix(col, .8*col, sm(abs(dad)-.1)), .5*abs(uv.y)); + + out_color = vec4(mix(texture(texPreviousFrame, gl_FragCoord.xy/v2Resolution.xy).rgb,col, .5).rgb,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Nameless.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Nameless.glsl new file mode 100644 index 000000000..706c5565b --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Nameless.glsl @@ -0,0 +1,143 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec2 rot(vec2 a, float angle){ + angle = angle * 3.14159/180.; + return vec2(a.x*cos(angle)-a.y*sin(angle), + a.x*sin(angle)+a.y*cos(angle)); + } + +float noise(vec3 p){ + return fract(sin(p.x*201.+p.y*142.+p.z*123.)*100.+cos(p.x*234. + p.y*12.3+p.z*542.)*243.); + } + + float noised(vec3 p){ + vec3 f = floor(p); + vec3 i = fract(p); + + float n1 = noise(f); + float n2 = noise(f+vec3(1.,0.,0.)); + float n3 = noise(f+vec3(0.,1.,0.)); + float n4 = noise(f+vec3(1.,1.,0.)); + + float n5 = noise(f+vec3(0.,0.,1.)); + float n6 = noise(f+vec3(1.,0.,1.)); + float n7 = noise(f+vec3(0.,1.,1.)); + float n8 = noise(f+vec3(1.,1.,1.)); + + i = smoothstep(0.,1.,i); + float a = mix(mix(n1,n2,i.x), mix(n3,n4,i.x),i.y); + float b = mix(mix(n5,n6,i.x), mix(n7,n8,i.x),i.y); + return mix(a,b,i.z); + } + + float fbm(vec3 p){ + return noised(p)*0.5+noised(p*2.)*0.25+noised(p*4.)*0.125; + } + vec3 pal(float t, vec3 a, vec3 b){ + return 0.5 + 0.5*cos(2.*3.14159*t*a+b); + } + + float escape = 0.; + float fbm2(vec3 p0){ + p0 = mod(p0, 3.)-1.5; + escape = 0.; + vec4 p = vec4(p0, 1.); + p *= 2./min(dot(p.xyz,p.xyz),50.); + for(int i = 0; i < 14; i++){ + p.xyz = vec3(1.,4.,2.)-(abs(p.xyz)-vec3(1.,4.,1.)); + p.xyz = mod(p.xyz-3., 6.)-3.; + p *= 9./min(dot(p.xyz,p.xyz),19.); + escape += exp(-0.2*dot(p.xyz,p.xyz)); + } + p.xyz -= clamp(p.xyz, -1.5, 1.5); + float dist = length(p.xyz)/p.w; + return (dist < 0.001)?0.8:0.05; + } + + + vec3 clouds(vec3 p, vec3 d){ + vec3 lig = normalize(vec3(0.2,0.6,0.1)); + vec3 energy = vec3(0.); + vec3 powder = vec3(0.); + float tr = 1.; + float ss = 0.05; + float minus = 0.5; + float mult = 1.0; + + bool hit = false; + + //for(int i = 0; i < 50; i++){ + // float dist = length(mod(p, 3.)-1.5)-1.4; + // if(dist < 0.01){hit=true;break;} + // p+=d*dist; + // } + // if(!hit)return vec3(0.); + + for(int i = 0; i < 40; i++){ + float dens = max(fbm(p*mult)-minus,0.); + if(dens > 0.01){ + vec3 l = p; + float densl = 0.; + for(int k = 0; k < 15; k++){ + densl += max(fbm(l*mult)-minus,0.); + l+=lig*0.01; + } + tr *= 1.0-dens; + + energy += exp(-densl*vec3(0.5,1.,2.)*3.)*dens*tr*pal(escape, vec3(0.9),vec3(0.9,0.6,0.2)); + powder += (1.0-exp(-densl*vec3(0.5,1.,2.)*6.))*dens*tr; + } + p+=d*ss; + } + + return energy*powder*4.; + } + + +void main(void) +{ + //if(gl_FragCoord.x > v2Resolution.x*0.5)discard; + // if(gl_FragCoord.y > v2Resolution.y*0.5)discard; + //if(int(gl_FragCoord.x)%4 != 0)discard; + + int a = int(gl_FragCoord.x)/62; + int b = int(gl_FragCoord.y)/62; + //if((a+b)%2 == 0)discard; + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + // uv *= 0.5; + uv -= 0.5; + + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 col = vec3(0.); + + vec3 d = normalize(vec3(uv.x, 1., uv.y)); + d.yz = rot(d.yz, 45.); + d.xy = rot(d.xy, 45.); + + vec3 p = vec3(0.,fGlobalTime,0.); + + col = clouds(p,d); + col = pow(col, vec3(1./2.2)); + + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NuSan.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NuSan.glsl new file mode 100644 index 000000000..773bff524 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_NuSan.glsl @@ -0,0 +1,189 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +float caps(vec3 p, vec3 p1, vec3 p2, float s) { + vec3 pa=p-p1; + vec3 pb=p2-p1; + float prog=dot(pa,pb)/dot(pb,pb); + prog=clamp(prog, 0, 1); + return length(p1+pb*prog-p)-s; +} + +int scene = 0; + +float map(vec3 p) { + + vec3 p2=p; + float t=time*0.1; + p2.yz *= rot(t); + p2.yx *= rot(t*1.3); + float d4 = max(box(p2, vec3(3)),1.2-length(p)); + + vec3 pb = p; + float d2=10000; + for(int i=0; i<3; ++i) { + float t=time*0.03 + i; + p.yz *= rot(t+i); + p.yx *= rot(t*1.3); + d2 = min(d2, length(p) - 0.47); + p=abs(p); + p-=0.9; + } + + + float d = box(p, vec3(0.4,0.4,0.4)); + + d=min(d,d2); + //d=d2; + + if(scene==0) d=d4; + //d=d4; + + return d; +} + +#define pcount 10 +vec3 points[pcount]; +int pid=1; +vec3 didi=vec3(1); + +vec3 atm=vec3(0); +float map2(vec3 p) { + + float d = map(p); + + float d2=10000; + for(int i=0; i0?didi:vec3(.3))*0.013/(0.05+abs(d3)) * smoothstep(4.,0.3,d3); + + d2=min(d2,d3); + } + + + return min(abs(d),d2); +} + +vec3 rnd3(vec2 uv) { + return fract(sin(uv.xyy*452.714+uv.yxx*947.524+uv.yyx*124.271)*352.887); +} + +float rnd(vec2 uv) { + return fract(dot(sin(uv*452.714+uv.yx*947.524),vec2(352.887))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + scene = int(mod(floor(time/10),2)); + + vec3 s2=vec3(10,0,0); + vec3 r2=normalize(vec3(-1,sin(time)*0.1,0)); + + float iot = (rnd(uv+fract(time*.1))-0.5); + //iot = (fract(gl_FragCoord.y/3)-.5); + float id=iot*2; + vec3 diff=1.3-vec3(1+id,0.45+abs(id),1-id); + didi = diff; + + vec3 p2=s2; + points[0]=p2; + pid=1; + float side=1; + for(int i=0; i<60; ++i) { + float d=abs(map(p2)); + if(d<0.001) { + points[pid] = p2; + pid+=1; + if(pid>=pcount-1) break; + + vec2 off=vec2(0.01,0); + vec3 n2=side*normalize(d-vec3(map(p2-off.xyy), map(p2-off.yxy), map(p2-off.yyx))); + //r2=reflect(r2,n2); + vec3 r3=refract(r2,n2,1-side*(0.3 + 0.1*iot)); + if(dot(r3,r3)<0.5) r3=reflect(r2,n2); + r2=r3; + side=-side; + d=0.1; + } + if(d>100.0) break; + p2+=r2*d; + } + points[pid]=p2+r2*1000; + ++pid; + + //points[pid]=p2; + + vec3 s=vec3(0,0,-10); + vec3 r=normalize(vec3(uv, 1)); + + float mumu = mix(rnd(-uv+fract(time*.1)),1.,0.9); + vec3 p=s; + float dd=0; + float side2=1; + for(int i=0; i<90; ++i) { + float d=abs(map2(p)); + if(d<0.001) { + + vec2 off=vec2(0.01,0); + vec3 n=side2*normalize(d-vec3(map(p-off.xyy), map(p-off.yxy), map(p-off.yyx))); + vec3 r3=refract(r,n,1-side2*(0.3 + 0.1*iot)); + if(dot(r3,r3)<0.5) r3=reflect(r,n); + r=r3; + + side2=-side2; + d=0.1; + //break; + } + if(d>100.0) break; + p+=r*d*mumu; + dd+=d*mumu; + } + + vec3 col=vec3(0); + float fog = 1-clamp(dd/100.0,0,1); + //col += map2(p-r) * fog; + col += atm; + + col=smoothstep(0.01,0.9,col); + col=pow(col, vec3(0.4545)); + + vec3 prev=texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy).xyz; + col = mix(col, prev, 0.7); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Tater.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Tater.glsl new file mode 100644 index 000000000..5b21cd444 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_Tater.glsl @@ -0,0 +1,172 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define STEPS 250.0 +#define MDIST 550.0 +#define pi 3.1415926 + +#define pmod(p,x) (mod(p,x) - (x)*0.5) + +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) + +float smin(float a, float b, float k){ + float h = max(0.0,k-abs(a-b)); + return min(a,b)-h*h*0.25/k; +} +float anim(){ + return sin(fGlobalTime); +} +float rand(vec2 a){ + return fract(sin(dot(a,vec2(43.234,21.4343)))*94544.3434343)-0.5; +} +float ssRemap(float t, float s1, float s2, float c){ + return 0.5*(s2-s1)*(t-asin(cos(t*pi)/sqrt(c*c+1.0))/pi)*s1*t; +} +float wave(vec3 p, float t){ + float dist = length(p.xz)-fract(t+0.5)*50; + dist = min(dist,0); + float wave = sin(dist)*exp(-abs(length(dist*0.2))); + wave*=max(0,1.0-fract(t-0.5)*2.0); + return wave; +} +float ball(vec3 p, float t){ + float mag = 80.0; + p.y += (fract(t)-0.5)*mag; + float a = length(p)-3.0; + return a; +} + +vec2 map(vec3 p){ + vec3 po = p; + + float t= mod(fGlobalTime,300.0)*0.6; + vec2 a = vec2(1); + vec2 b = vec2(2); + + //Bending + p.y = pmod(p.y,60); + + float th = atan(p.x,p.z)/(2*pi)+0.5; + th*=300.0; + float r = length(p.xz)-60.0-texture(texFFTSmoothed,0.1).r*4000.0; + p.x = r; + //p.z = th; + p.xy*=rot(sin(t)); + //p.xy*=rot(p.z*0.01*sin(t)); + p.xy = abs(p.xy)-5.0; + p.xy*=rot(-pi/4.0); + p.y=mix(p.y,ssRemap(p.y,0.01,0.4,0.3),0.5+0.5*anim()); + + vec3 po2 = p; + float count = 6.0; + float wav =0; + for(float i =0.0; i < count; i++){ + p = po2; + t+=1/count; + float mag = 10.0; + p.x+=rand(vec2(floor(t),i))*mag; + p.z+=(rand(vec2(floor(t),i*1.5)))*mag*30.0; + a.x = smin(a.x,ball(p,t),0.5); + wav +=wave(p,t)*1.5; + } + p = po2; + t = mod(fGlobalTime,300.0)*4.0; + wav+=sin(p.z+t)*0.1+sin(p.x+t)*0.1; + wav+=sin(p.z*0.5-t)*0.2+sin(p.x*0.5-t)*0.2; + + //a.x = ball(p,t); + b.x = p.y-wav; + + + a=(a.xMDIST){ + dO = MDIST; + p = ro+rd*dO; + d.y=0; + break; + } + } + shad = 1.0-shad; + vec3 n = norm(p); + vec3 ld = normalize(vec3(1,1,0)); + vec3 h = normalize(ld - rd); + float spec = pow(max(dot(n,h),0.0),20.0); + + vec3 al = vec3(0); + if(d.y==1.0) al = vec3(0,0.8,0.2); + if(d.y==2.0) al = vec3(0,0,0.9)*1.5; + p.y-=5.0; + vec3 back = mix(vec3(0.1,0.1,0.5),vec3(0.0,0.4,0.6),clamp(p.y*0.05,0.0,1.0))*0.9; + //back = vec3(0); + + col = shad*al; + col+=spec*0.5; + + col = mix(col,back*2.0,(dO/MDIST)); + + + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_VjPyree.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_VjPyree.glsl new file mode 100644 index 000000000..8b559e5d1 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_VjPyree.glsl @@ -0,0 +1,178 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define BG vec3(0.9,0.05,0.3) +#define PI 3.14159 + +mat3 rot3(vec3 axis, float angle) { // 3D rotation along axis + axis = normalize(axis); + float s = sin(angle); + float c = cos(angle); + float oc = 1.0 - c; + return mat3( + oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, + oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, + oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c + ); +} + +mat2 rot2(float angle) { // 2D rotation + float s = sin(angle); + float c = cos(angle); + return mat2( + c, -s, + s, c + ); +} + +vec3 hsv2rgb(in vec3 c) +{ + vec3 o; + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + o = c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); + return o; +} + +vec4 sdCappedCylinder( vec3 p, float h, float r ) +{ + //p = p.xzy; + vec2 d = abs(vec2(length(p.xz),p.y)) - vec2(h,r); + vec3 c = vec3(p.x/h, p.y/r, p.z/h); + return vec4(min(max(d.x,d.y),0.0) + length(max(d,0.0)), c); +} + +float sdTri( in vec2 p ) +{ + const float k = sqrt(3.0); + p.x = abs(p.x) - 1.0; + p.y = p.y + 1.0/k; + if( p.x+k*p.y>0.0 ) p = vec2(p.x-k*p.y,-k*p.x-p.y)/2.0; + p.x -= clamp( p.x, -2.0, 0.0 ); + return -length(p)*sign(p.y); +} + +vec3 shading(vec3 c) +{ + float mask = step(0.9, length(c.xz)); + + // Topside + vec2 pe = c.xz; + pe.x = abs(pe.x); + #define EYEELLIPSE 0.4 + pe.y *= EYEELLIPSE; + vec2 eyepos = vec2(0.3, 0.4*EYEELLIPSE); + float ffti = texture(texFFTSmoothed, 0.3).x*3; + float topmask = 1.-smoothstep(0.14+ffti, 0.15+ffti, length(pe-eyepos)); + + float mouthangle = 0.55; + + float arg = atan(c.x, c.z); + float argfft = pow(texture(texFFTSmoothed, abs(arg)*0.3).x*10, 0.5); + float ends = (1-step(PI*(mouthangle+0.02), abs(arg)))*0.05; + float circle = step(0.65-ends-argfft, length(c.xz)) - step(0.75+ends+argfft, length(c.xz)); + topmask = max(topmask, circle*step(PI*mouthangle, abs(arg))); + + mask = max(mask, topmask* step(0, +c.y)); + + // Bottomside + vec2 pt = c.xz * vec2(-1,1) / (-ffti*40); + arg = mod(atan(pt.x, pt.y)+(4.5/3*PI), 2*PI); + pt *= rot2(floor(arg/(PI*2/3))*(PI*2/3)-(0/3*PI)); + float botmask = (1-smoothstep(-0.15, -0.14, sdTri(pt))) * smoothstep(-0.15, -0.14, sdTri(pt-vec2(0,-sqrt(3)*0.5)) ); + + mask = max(mask, botmask* step(0, -c.y)); + + + return vec3(mix(BG, vec3(0), mask)); +} + +vec4 dist(vec3 p) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); // Regular UV + vec4 prevp = texture(texPreviousFrame, uv); + float ffti = texture(texFFTIntegrated, 0.3).x; + mat3 rot = rot3(vec3(sin(fGlobalTime*0.0124*sqrt(3) + uv.y*2), 1, cos(fGlobalTime*0.24576*sqrt(2))), fGlobalTime+uv.x*10 + ffti*0.4 + length(prevp*0)); + //mat3 rot = rot3(vec3(0,1,0), fGlobalTime*sqrt(2)*0.1) * rot3(vec3(1,0,0), fGlobalTime*0.8 + ffti); + vec4 d = sdCappedCylinder(p*rot-vec3(0,0,0), 0.2, 0.03); + return d; +} + +vec4 rm(vec3 ro, vec3 rd) +{ + float d = 0.; + vec3 c = vec3(0); + for(int i=0;i<100;i++) + { + vec3 p = ro + rd*d; + d += dist(p).x; + c = dist(p).yzw; + if(d>100||d<0.01){break;} + } + return vec4(d, c); +} + +float rm2(vec3 ro, vec3 rd) +{ + float d = 0.; + for(int i=0;i<15;i++) + { + vec3 p = ro + rd*d; + d += dist(p).x; + if(d>100||d<0.01){break;} + } + return d; +} + +vec2 uvcenterscale(vec2 uv, float scale) { + return (uv - 0.5) * scale + 0.5; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); // Regular UV + vec2 uvc = uv - vec2(0.5); // UV with origin in screen center + vec2 uv11 = uvc*2.; // Centered UV but going from -1 to 1 from edge to edge + vec2 uvca = uvc * vec2(v2Resolution.x/v2Resolution.y, 1); // Centered uv with aspect ratio compensation + vec2 uv11a = uv11 * vec2(v2Resolution.x/v2Resolution.y, 1); // Centered uv11 with aspect ratio compensation + + vec3 ro = vec3(0,sin(fGlobalTime*0.)*0.2,1); // Ray Origin/Camera + vec3 rd = normalize(vec3(uvca.x,uvca.y,-1.5)); // Ray Direction + + vec4 r = rm(ro,rd); // Raymarching + float d = r.x; // Distance field + vec3 c = r.yzw; // Local coordinates on cylinder + + vec4 fft = texture(texFFTSmoothed, 0.05); + float ffti = pow(fft.x, 0.5); + + float ffts = texture(texFFTIntegrated, 0.3).x; + + vec4 prevp = texture(texPreviousFrame, uv); + + vec4 prev = texture(texPreviousFrame, uvcenterscale(uv, 0.99 - ffti*0.01) - (prevp.rb*rot2(atan(uv11.y, uv11.x)+PI*ffts))*0.003); + + vec3 cylcol = shading(c); + + float pillmask = step(10, d); + float pillmask_expanded = step(10, rm2(ro,rd)); + + vec3 bgcol = mix(vec3(hsv2rgb(vec3(length(uv11*10) + fGlobalTime*3, 0.7, 0.8))), BG, pillmask_expanded); + bgcol = mix(bgcol, prev.rgb, 0.99 * pillmask_expanded); + + + + out_color = vec4(mix(cylcol, bgcol, step(10, d)), 1.); + + //out_color = vec4(pillmask, pillmask_expanded,ffti*5,0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_alien.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_alien.glsl new file mode 100644 index 000000000..5b6047d5e --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_alien.glsl @@ -0,0 +1,189 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define iTime fGlobalTime + +#define one_bpm 0.3429 +#define beat(a) tick(iTime / (one_bpm*a)) +#define cumbeat(a, b) b*iTime+tick(iTime/(one_bpm*a)) +float tick(float t) { + t = fract(t); + return t; +} + + +vec3 ro = vec3(0, 3., -8); +vec3 spho = vec3(0. , 3., -5.); +vec3 light = normalize(vec3(2, 1.9, -2)); +//hello! o/ + +mat2 rot(float a) {return mat2(cos(a), sin(a), -sin(a), cos(a));} +float smin(float a, float b, float k) { + float h = max(k - abs(a-b), 0.0) / k; + return min(a,b) - h*+h*k*(1.0/4.0); +} + +float sph(vec3 p, float r){ + return length(p) - r; +} + + + +float map(vec3 p) { + p.z -= 2; + if(beat(4*12) < 0.5) + p.xz *= rot(0.5); + if(beat(8) < 0.5) + p.yz *= rot(0.8); + if(beat(12) < 0.5){ + p.x = abs(p.x); + + p.xz *= rot(-0.8); + } + + + p.z -= 1.5; + vec3 ip= p; + float f = 0; + + p.y -= 3; + + + for(int i = 0; i < 3; i++){ + f += sph(p,5); + p.x = abs(p.x); + p.xz *= rot(0.2*float(i)*ip.y); + p.z = cos(p.x + sin(p.z*2)); + p.xz *= rot(-cumbeat(4, 2)); + p.xz *= rot(0.3- p.y); + f = smin(f, sph(p, 1.2), 6+sin(p.z)); + } + + p.x-= sin(iTime+p.z); + + float s = f; + + float sph1 = sph(ip - vec3(0, -1, 2*sin(beat(4)*0.1)), 2.5); + s = max(s, -sph1); + + s = max(s, sph(ip+spho , 8.0+sin(p.x))) ; + s += texture(texNoise, p.xz*0.07).r; + + return s/15.; +} + +vec3 norm(vec3 p) { + float h = 0.0001; + vec2 k = vec2(1, -1); + return normalize( + k.xyy * map(p + k.xyy*h) + + k.yyx * map(p + k.yyx*h) + + k.yxy * map(p + k.yxy*h) + + k.xxx * map(p + k.xxx*h)); +} + +vec3 sky(vec3 rd){ + rd.yz *= rot(0.6); + float r = length(rd); + float phi = acos(rd.z/r); + float theta = atan(rd.y, rd.z); + + vec3 sp = vec3(r, phi, theta); + + vec3 color = vec3(0); + + sp.z *= sin(0.5+4*cos(theta)); + sp.xz *= rot(sp.z); + sp.xz = abs(sp.xz); + sp.xz -= 0.8; + sp += cumbeat(8, 0.5)*0.1; + vec2 uv = sp.yx; + + + color += texture(texNoise, uv*0.8).r; + color += pow(color, vec3(1.64)); + + vec3 l = vec3(0.2, 0.1, 0.2); + vec3 h = vec3(0.1, 0.8, 0.9); + return mix(l, h, color); +} + +vec3 march(vec3 ro, vec3 rd) { + float t = 0.01; + int steps = int(mix(128, 256, abs(sin(0.01*iTime)))); + vec3 color = vec3(0); + for(int i = 0; i < steps; i++) { + float a = map(ro+rd*t); + if(a < 0.001) {color = vec3(1);break;} + if(t > 100.) break; + t+=a; + } + if(color.r > 0.1){ + vec3 p = ro+rd*t; + vec3 n = norm(p); + vec3 color = vec3(0.5, 0.02, 0.3); + + + + vec3 r = reflect(rd, n); + vec3 sk = sky(r); + float dt = dot(light, n); + vec3 ndotl = max(vec3(0.5*sk-dt*0.4) , sk+dt); + color*= ndotl; + vec3 h = (light+rd) / length(light+rd); + color += max(0.1, dot(n,h)) * sky(h); + + return color; + } + else return sky(rd); + +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv1 = uv; + + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 uv2 = uv; + + uv2.x += cumbeat(12,.5); + uv2.y += iTime*0.2; + uv2 = fract(uv2*4); + + float flip = 1; + if(uv2.x < 0.5 && beat(24) < 0.5){ + ro += 0.2; + } + + flip = beat(24); + vec3 rd = normalize(vec3(uv, 1)); + rd.zy *= rot(0.2); + + + + vec3 color = march(ro, rd); + color *= 1.75; + color = mix(color, texture(texPreviousFrame, uv1*1.0).rgb , abs(sin(beat(4)))); + color = pow(color, vec3(1.2)); + + out_color = vec4(flip > 0.5 ? color : 1-color, 1); + +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_anticore.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_anticore.glsl new file mode 100644 index 000000000..61ff831d3 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_anticore.glsl @@ -0,0 +1,209 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float t = fGlobalTime; +vec3 cam(vec3 ro, vec3 rd, vec2 uv) { + vec3 f = normalize(rd - ro); + vec3 l = normalize(cross(vec3(0,1,0), f)); + vec3 u = normalize(cross(f, l)); + + return normalize(f + l * uv.x + u * uv.y); +} + +float ni(float a){ + return texture(texFFTIntegrated, a).x; +} + + +void mo(inout vec2 p,vec2 d){p = abs(p)-d;if(p.y>p.x)p=p.yx;} +vec3 rep(vec3 p, vec3 c) { return mod(p + .5 * c, c) - .5 * c; } +vec3 repl(vec3 p,vec3 c,vec3 l){return p-c*clamp(round(p/c),-l,l);} +mat2 rot(float t) { return mat2(cos(t), sin(t), -sin(t), cos(t)); } +float sdBox(vec3 p, vec3 b) { vec3 q = abs(p) - b; return length(max(q, 0)) + min(max(q.x, max(q.y, q.z)), 0); } +float sdSphere(vec3 p, float r) { return length(p) - r; } +float sdPlane(vec3 p, vec3 n, float h) { return dot(p,n) + h; } +float rnd(float p) { p = fract(p * .131); p *= p + 333.33; return fract(2 * p * p); } +float dirlight(vec3 n, vec3 ld) { + ld = normalize(ld); + return clamp(max(dot(n, ld), 0), 0, 1); + } +float spec(vec3 p, vec3 n, vec3 ld, float k) { + ld = normalize(ld); + vec3 r = reflect(-ld, n); + vec3 v = normalize(-p); + return pow(max(dot(r,n), 0), k); +} +vec3 palette(float t) { + vec3 a= vec3(1); + vec3 b= vec3(1); + vec3 c = vec3(2); + vec3 d = vec3(0,.1, .2); + return a + b * cos(6.28318 * (c * t + d)); +} + +vec2 ground(vec3 p) { + float plane = sdPlane(p, vec3(0,1,0), 0); + float cracks = texture2D(texNoise, p.xz * 0.05).r; + float crack = 0.28; + + return vec2( + plane + texture2D(texTex2, p.xz * .7).r * 0.03 + + texture2D(texNoise, p.zx * 0.1).r * 1 + + texture2D(texNoise, p.xz * 0.01).r * 10, + + cracks > crack && cracks < crack + 0.01 ? 4 : 0 + ); +} + + +float bid; +float tunnel(vec3 p) { + vec3 bp = p; + bp.xy *= rot(bp.z * 0.1); + mo(bp.xy, vec2(0.5)); + mo(bp.zy, vec2(0.5)); + bid = rnd(round(p.z + 0.5) * 120); + float b = sdBox(rep(bp + vec3(-1.5, 0, 0), vec3(0, 0, 2)), vec3(0.1, 1.5, 0.1)); + return b; +} + + +float sid; +vec2 sphrs(vec3 p) { + p = p + vec3(0,0,-t - 7 + texture(texFFTSmoothed, 0.1) * 20); + p.xz *= rot(t); + p.yz *= rot(t); + sid = rnd(round(p.x - 0.75) * 10 + round(p.y - 0.75) * 20 + round(p.z - 0.75) * 10); + p = repl(p, vec3(.5), vec3(2)); + float s = sdSphere(p + vec3(sin(t * 10 + p.x / 10) * 0.05), .2 - abs(sin(sid * 60 + t)) * .15); + return vec2(s, fract(sid + t) < 0.9 ? 2 : 3); +} + +vec2 map(vec3 p) { + float m = 999; + float mm = 0; + + vec2 g = ground(p); + if (g.x < m) { m = g.x; mm = g.y; } + + float t = tunnel(p); + if (t < m) { m = t; mm = 1; } + + vec2 s = sphrs(p); + if (s.x < m) { m = s.x; mm = s.y; } + + return vec2(m, mm); +} +vec3 norm(vec3 p) { + float E = 0.01; vec2 k = vec2(1, -1); + + return normalize( + k.xyy * map(p + k.xyy * E).x + + k.yyx * map(p + k.yyx * E).x + + k.yxy * map(p + k.yxy * E).x + + k.xxx * map(p + k.xxx * E).x + ); +} + +vec3 bg(vec2 uv) { + float h = uv.y; + float n = texture2D(texNoise, vec2(uv.x, uv.y - t * 0.05)).x; + float s = texture2D(texNoise, uv * 6 + vec2(sin(t) + t, cos(t))).x > 0.45 ? 1 : 0; + + return vec3(n * h*2 * palette(uv.y / 2.1)); +} + + +vec3 ld = vec3(0, 30, 10); +vec4 tr(vec3 ro, vec3 rd, vec2 uv) { + float td = 1; + vec2 h; + vec4 c = vec4(0); + vec4 g = vec4(0); + int bnc = 0; + float en = 1.; + + for (int i = 0; i < 1000; i++) { + vec3 ip = ro + rd * td; + h = map(ip); + td += h.x * 0.7; + + if (h.y == 1) { + g += vec4(palette(bid * (ni(0.15) * 1 + t / 2)) * exp(-h.x * 10) * .07, 1.); + } + + if (h.y == 3) { + g += vec4(palette(sid / 10) * exp(-h.x * 10) * .07, 1.); + } + if (h.y == 4) { + g += vec4(palette(0.63 + sin(ip.x / 10 + t * 0.2)) * exp(-h.x * 10) * (.5 + abs(sin(ip.x + ip.z + t)) * .5), 1.); + } + + + if (h.x < 0.01) { + vec3 inorm = norm(ip); + + if (h.y == 0) { + c += vec4(dirlight(inorm, ld) * palette(ip.y * 0.2 + 0.45) * en * 0.7 + spec(ip, inorm, ld, 20), 1) * en; + } + + if (h.y == 1) { + c += vec4(palette(bid * (ni(0.15) * 1 + t / 2)) * en, 1.); + } + + if (h.y == 2) { + c += vec4(0.2) * en; + ro = ip; + rd = reflect(rd, inorm); + td = .1; + bnc += 1; + en = max(en - .7, 0); + } + + if (h.y == 3) { + c += vec4(palette(sid / 10) * en, 1.); + } + + if (h.y == 4) { + c += vec4(0.9); + } + } + + if (td > 200) { + return vec4(bg(uv) + vec3(g) * exp(-td * 0.05), td/1000); + } + + if (c.a >= 1 || bnc > 1 || en < 0 || td > 1000) break; + } + + return vec4((vec3(c) + vec3(g)) * exp(-td * 0.05), td/1000); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uvv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(fract(t / 10) > 0.5 ? 10 : 0, 0, t); + vec3 rd = cam(ro, vec3(0,0,t + 10), uv); + out_color = tr(ro, rd, uv); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_bitnenfer.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_bitnenfer.glsl new file mode 100644 index 000000000..fd1295f01 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_bitnenfer.glsl @@ -0,0 +1,204 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +struct Hit +{ + float dist; + int id; +}; + +float fft = .0; + +//iq :D +float torus(vec3 p, vec2 t) +{ + vec2 q = vec2(length(p.xz)-t.x, p.y); + return length(q) - t.y; +} + +float smin(float a, float b, float k) +{ + float h = clamp(0.5 + 0.5 * (b-a)/k, 0.0, 1.0); + return mix(b, a, h) - k * h * ( 1. - h); +} + +mat2 rot(float r) +{ + float c = cos(r), s = sin(r); + return mat2(c, s, -s , c); +} + +Hit opUnion(Hit a, Hit b) +{ + if (a.dist < b.dist) return a; + return b; +} + +Hit map(vec3 p) +{ + float t = fGlobalTime; + float blob = length(p) - 1. + cos(fft * 100.0 + sin(p.z * 10.0f + fft) + sin(p.x * 10.0f + fft * fft) + sin(p.y * 12.0 + sin(fGlobalTime * 10.0 + fft))) * 0.05; + for (float i = 0.0; i < 3.0; i += 0.5) + { + blob = smin(blob, length(p + sin(p.x + p.y + p.z) * vec3(cos(t + i * 10.0), sin(t + i * 10.0), -cos(t - i * 10.0))) - 0.3, 0.5); + } + Hit blobHit = Hit(blob, 0); + vec3 p0 = p; + vec3 p1 = p; + p0.yz *= rot(fGlobalTime); + p1.xy *= rot(fGlobalTime); + float t0 = torus(p0, vec2(1.6, 0.1)); + float t1 = torus(p1, vec2(1.8, 0.1)); + Hit ringHit = Hit(min(t0, t1), 1); + return opUnion(ringHit, blobHit); +} + +vec3 norm(vec3 p) +{ + vec2 e = vec2(0, 0.001); + return normalize(vec3( + map(p + e.yxx).dist - map(p - e.yxx).dist, + map(p + e.xyx).dist - map(p - e.xyx).dist, + map(p + e.xxy).dist - map(p - e.xxy).dist + )); +} + +bool trace(vec3 ro, vec3 rd, out Hit hit) +{ + float t = 0.; + for (int i = 0; i < 100; ++i) + { + Hit h = map(ro + rd * t); + if (h.dist < 0.001) + { + hit.dist = t; + hit.id = h.id; + return true; + } + t+=h.dist; + if (t > 100.) break; + } + hit = Hit(100.0, -1); + return false; +} + +vec3 render(vec2 uv) +{ + fft = texture(texFFT, 0.0).r * 0.5; + vec3 ro = vec3(0, 0, -5 + sin(fGlobalTime) * 1.5); + vec3 rd = normalize(vec3(uv, 1)); + + ro.xz *= rot(fGlobalTime); + rd.xz *= rot(fGlobalTime); + + Hit sceneHit; + if (trace(ro, rd, sceneHit)) + { + vec3 matColor = vec3(0); + if (sceneHit.id == 0) + { + matColor = vec3(1, 205.0/255.0,178.0/255.0) * 0.25; + } + else if (sceneHit.id == 1) + { + matColor = vec3(1); + } + vec3 n = norm(ro + rd * sceneHit.dist); + vec3 l = vec3(sin(fGlobalTime), 0.2, 1); + l.xz *= rot(fGlobalTime); + vec3 h = normalize(n + l); + float ndl = max(dot(n, l), 0.0); + float sp = pow(max(0.0, dot(h, n)), 6.0); + + vec3 color = matColor * 0.01 + (matColor * ndl) + vec3(0.01, 0.01, 0.05) + sp * vec3(1., 0.9, 0.5); + if (sceneHit.id == 0) + { + vec3 rd2 = l; + vec3 ro2 = (ro + rd * sceneHit.dist) + rd2 * 0.1; + for (int j = 0; j < 32; ++j) + { + float d = map(ro2 + rd2 * 0.25).dist * 0.8; + if (d < 0.) + break; + color += (matColor + vec3(0.5, 0.2, 0.1)) * (d * d) * 0.5; + } + } + ndl = max(dot(n, -l), 0.0); + color += (matColor * 0.01 + (matColor * ndl) + sp * vec3(1)) * 0.01; + if (sceneHit.id == 0) + { + vec3 rd2 = -l; + vec3 ro2 = (ro + rd * sceneHit.dist) + rd2 * 0.1; + for (int j = 0; j < 32; ++j) + { + float d = map(ro2 + rd2 * 0.25).dist * 0.8; + if (d < 0.) + break; + color += 0.03*((matColor + vec3(0.5, 0.2, 0.1)) * (d * d) * 0.5); + } + } + + if (sceneHit.id == 1) + { + vec3 rd1 = normalize(refract(rd, n, 1.0/ 1.2)); + vec3 ro1 = ro + rd1 * .2; + Hit refHit; + float t = 0.; + for (int i = 0; i < 100; ++i) + { + Hit h = map(ro + rd * t); + if (h.dist < 0.001 && h.id == 0) + { + refHit.dist = t; + refHit.id = h.id; + break; + } + t+=h.dist; + if (t > 100.) break; + } + refHit = Hit(100.0, -1); + + if (refHit.id == 0) + { + if (sceneHit.id == 0) + { + matColor = vec3(1, 205.0/255.0,178.0/255.0) * 0.25; + } + else if (sceneHit.id == 1) + { + matColor = vec3(1); + } + color += matColor * 0.01 + (matColor * ndl) + vec3(0.01, 0.01, 0.05) + sp * vec3(1., 0.9, 0.5); + } + } + return color; + } + return vec3(0.045); +} + +void main(void) +{ + // oliwi :3 + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 color = render(uv); + out_color = vec4(color, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_blackle.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_blackle.glsl new file mode 100644 index 000000000..9b4b25a9b --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_blackle.glsl @@ -0,0 +1,135 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 erot(vec3 p, vec3 ax, float ro) { + return mix(dot(ax,p)*ax,p,cos(ro))+cross(ax,p)*sin(ro); +} + +float comp(vec3 p) { + p = asin(sin(p*8)*.99)/8; + return dot(p,normalize(vec3(3,2,1))); +} + +float d1,d2,d3; +float stuff(vec3 p) { + d1 = comp(erot(p, normalize(vec3(1,2,3)), .7)+.3); + d2 = comp(erot(p, normalize(vec3(1,3,2)), 1.6)+.6); + d3 = comp(erot(p, normalize(vec3(3,-2,1)), .4)+.8); + return (d1+d2+d3)/2.5; +} + +float ball; +float scene(vec3 p) { + vec3 p3 = p; + p3.xy = asin(sin(p3.xy*3))/3; + ball = length(p3)-.5+sin(fGlobalTime*9+length(sin(p)))*.02; + p3.xy = asin(sin(p3.xy*8))/8; + ball = min(ball, length(p3)-.2+sin(fGlobalTime*13)*.01); + //ball += length(sin(p*100)/800); + ball += length(sin(p*20)/50); + ball += length(cos(p*10)/80); + ball += length(sin(erot(p,normalize(vec3(2,3,4)),2.4)*150)/700); + //ball += length(sin(erot(p,normalize(vec3(3,1,-4)),1.4)*200)/800); + return min(stuff(p) + p.z*.1, ball); +} + +vec3 norm(vec3 p) { + mat3 k = mat3(p,p,p)-mat3(0.001); + return normalize(scene(p) - vec3(scene(k[0]),scene(k[1]),scene(k[2]))); +} + +float bps = 32/10; + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + float rr = .9; + vec4 past = texture(texPreviousFrame,uv + sin(mat2(cos(rr),-sin(rr),sin(rr),cos(rr))*uv*30+cos(uv))*.001); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float bar = floor(fGlobalTime*bps); + float lastbigbar = floor((fGlobalTime-fFrameTime)*bps/4); + float bigbar = floor(fGlobalTime*bps/4); + float res = fGlobalTime - bigbar; + if (lastbigbar != bigbar) past.w = .15; + + vec3 cam = normalize(vec3(3+sin(bigbar) + cos(res)*.3,uv)); + vec3 init = vec3(-3,0,0); + + bool camtype1 = sin(bigbar*3) < 0; + bool camtype2 = cos(bigbar*7) < 0; + bool camtype3 = sin(bigbar*9) < 0; + bool camtype4 = sin(bigbar*2) < 0; + + float zrot = camtype1 ? 0. : fGlobalTime*.1; + float yrot = .5; + cam = erot(cam,vec3(0,1,0),yrot); + init = erot(init,vec3(0,1,0),yrot); + cam = erot(cam,vec3(0,0,1),zrot); + init = erot(init,vec3(0,0,1),zrot); + init.z += 1; + float sgn = camtype3 ? -1 : 1; + if (camtype1) init.x += sgn*mod(fGlobalTime,100)*.2; + if (camtype2) init.y += sgn*mod(fGlobalTime,100)*.2; + + vec3 p = init; + bool hit = false; + float atten = 1.; + float dist; + for (int i = 0; i < 150; i++) { + dist = scene(p); + hit = dist*dist < 1e-7; + p += cam*dist; + + if (hit) { + if (abs(sin(d1*40))<.2 && dist != ball) { + vec3 n = norm(p); + + float fres = 1.-abs(dot(cam,n))*.98; + cam = reflect(cam,n); + atten *= fres; + p += n*.01; + hit = false; + } else { + break; + } + } + if (distance(p,init)>100)break; + } + + bool isball = ball == dist; + float fog = smoothstep(1,10,distance(p,init)); + float sd1 = d1; + vec3 n = norm(p); + vec3 r = reflect(cam,n); + float ao = smoothstep(-.1,.1,scene(p+n*.3)); + float fact = length(sin(r*3)*.5+.5)/sqrt(3)*ao; + float diff = length(sin(n*3)*.5+.5)/sqrt(3)*ao; + float fres = 1.-abs(dot(cam,n))*.98; + float spec = (pow(fact,8)*4+fact*.2)*fres; + vec3 diffcol = isball ? (camtype4? vec3 (.5,.01,.1) :vec3 (.2,.01,.2) ): vec3(0.01,.04,.1)*0;//pow(sin(p*2)*.5+.5,vec3(2.))*.8+.2; + vec3 col = diff*diffcol + spec; + col = mix(col, vec3(0.01), fog); + out_color.xyz = (hit ? col : vec3(0.01))*atten + vec3(0.02,0.01,.04); + float pre = length(out_color.xyz); + pre = mix(pre, past.w,.98); + float vig = 1.-dot(uv,uv)*.5; + out_color += pre; + out_color = sqrt(smoothstep(0.,1.4,out_color))*vig; + mat3 desat = mat3(vec3(.1),vec3(.1),vec3(.1))+mat3(.7); + mat3 sat = inverse(desat); + out_color.xyz *= sat; + out_color.xyz *= sat; + out_color.a = pre; +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_branch.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_branch.glsl new file mode 100644 index 000000000..d4824e6d9 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_branch.glsl @@ -0,0 +1,356 @@ + #version 410 core + + uniform float fGlobalTime; // in seconds + uniform vec2 v2Resolution; // viewport resolution (in pixels) + uniform float fFrameTime; // duration of the last frame, in seconds + + uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq + uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients + uniform sampler1D texFFTIntegrated; // this is continually increasing + uniform sampler2D texPreviousFrame; // screenshot of the previous frame + uniform sampler2D texChecsampleser; + uniform sampler2D texNoise; + uniform sampler2D texTex1; + uniform sampler2D texTex2; + uniform sampler2D texTex3; + uniform sampler2D texTex4; + + layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + #define iTime fGlobalTime + #define iResolution v2Resolution + #define iTimeDelta fFrameTime + #define iFrame int(fGlobalTime*60.0f) + #define iChannel0 texPreviousFrame + + + #define EPSILON 0.01 + #define MAX_DISTANCE 140. + + #define RAY_STEPS 122 + #define MAX_SAMPLES 4. + + const float PI = 3.14159269; + const float TWOPI = PI * 2.0; + float syncTime; + struct Ray { + vec3 position; + vec3 direction; + + vec4 carriedLight; // how much light the ray allows to pass at this point + + vec3 light; // how much light has passed through the ray + }; + + struct Material { + vec4 carriedLight; // surface color and transparency + vec3 emit; // emited light + float scatter; + }; + + // iq's integer hash https://www.shadertoy.com/view/XlXcW4 + const uint samples = 1103515245U; + vec3 hash( uvec3 x ) { + x = ((x>>8U)^x.yzx)*samples; + x = ((x>>8U)^x.yzx)*samples; + x = ((x>>8U)^x.yzx)*samples; + return vec3(x)*(1.0/float(0xffffffffU)); + } + vec2 hash2( float n ) { + return fract(sin(vec2(n,n+1.0))*vec2(43758.5453123,22578.1459123)); + } + // iq's rotation iirc + mat3 rotationMatrix(vec3 axis, float angle) { + axis = normalize(axis); + float s = sin(angle); + float c = cos(angle); + float oc = 1.0 - c; + + return mat3(oc * axis.x * axis.x + c, + oc * axis.x * axis.y - axis.z * s, + oc * axis.z * axis.x + axis.y * s, + oc * axis.x * axis.y + axis.z * s, + oc * axis.y * axis.y + c, + oc * axis.y * axis.z - axis.x * s, + oc * axis.z * axis.x - axis.y * s, + oc * axis.y * axis.z + axis.x * s, + oc * axis.z * axis.z + c); + } + float sdSphere( vec3 position, float size ) { + return length(position) - size; + } + float sdBox( in vec3 p, in vec3 b ) { + vec3 d = abs(p) - b; + return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0)); + } + vec2 hash( vec2 p ) + { + p = vec2( dot(p,vec2(127.1,311.7)), + dot(p,vec2(269.5,183.3)) ); + + return -1.0 + 2.0*fract(sin(p)*43758.5453123); + } + float fOpUnionRound(float a, float b, float r) { + vec2 u = max(vec2(r - a,r - b), vec2(0)); + return max(r, min (a, b)) - length(u); + } + + float sdCapsule( vec3 p, vec3 a, vec3 b, float r ) { + vec3 pa = p - a, ba = b - a; + float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 ); + return length( pa - ba*h ) - r; + } + float getRing(float l) { + return 1.0-min(pow(l,12.),1.); + } + float sdHexPrism( vec3 p, vec2 h) { + vec3 q = abs(p.zxy); + return max(q.z-h.y, max((q.x*0.866+q.y*0.5), q.y) - h.x); + } + float sdCylinder(vec3 p, vec2 h){ + vec2 d = abs(vec2(length(p.xz),p.y)) - h; + return min(max(d.x,d.y),0.0) + length(max(d,0.0)); + } + float getDistance( in vec3 position, out Material material) { + float finalDistance = 1e10; + position.y+=6.0; + position *= rotationMatrix(vec3(0.0,0.0,1.0),sin(iTime+position.z*0.06)/2.); + vec3 boardPosition = position; + float boardDistance = sdBox(boardPosition-vec3(0.0,-5.0,0.0), vec3(27.0,2.0,644.0)); + float bounceTimer = iTime*3.; + float bouncePosY = abs(sin(bounceTimer)); + float bouncePosY2 = pow(abs(cos(bounceTimer)),3.); + vec3 chessPiecePosition = position - vec3(0.0,-1.2+bouncePosY*1.4,0.0); + //chessPiecePosition *= rotationMatrix(vec3(0.0,1.0,0.0),sin(iTime/4.)); + chessPiecePosition *= rotationMatrix(vec3(1.0,0.0,0.0),sin(bounceTimer*PI/2.)/12.); + chessPiecePosition.y *= 1.0 + bouncePosY2/5.; + if(position.z<1.0){ + float pieceDistance = sdHexPrism( chessPiecePosition, vec2(1.2+0.6*sin(-chessPiecePosition.y),2.1)); + pieceDistance = min(pieceDistance, sdCylinder(chessPiecePosition,vec2(1.6-chessPiecePosition.y/3.,0.3))); + pieceDistance = min(pieceDistance, sdCylinder(chessPiecePosition-vec3(0.0,-1.8,0.0),vec2(2.1,0.3))); + chessPiecePosition.y -= 3.0; + pieceDistance = min(pieceDistance, sdSphere(chessPiecePosition,1.2)); + pieceDistance = min(pieceDistance, sdHexPrism(chessPiecePosition,vec2(1.1,0.6))); + finalDistance = min(finalDistance, pieceDistance); + } + finalDistance = min(finalDistance, boardDistance); + + if(finalDistance==boardDistance) { + vec3 boardPosition = position*0.25 - vec3(0.5); + boardPosition.z-=iTime; + material.carriedLight = vec4(vec3(0.1+0.9*floor(mod(boardPosition.x+floor(mod(boardPosition.z,2.0)),2.0))),0.8); + material.emit = material.carriedLight.rgb*0.5; // emited light + material.scatter = 0.4; + } else { + material.carriedLight = vec4(1.1,1.1,1.1,1.0); + material.emit = vec3(0.2,0.1,0.0); // emited light + material.scatter = 3.0; + } + + return finalDistance; + } + vec3 getLightDirection(float time) { + return vec3( + 0.0, + 0.0, + 1.0); + } + vec3 getLightColor(float time) { + return vec3( 24.0); + } + vec3 cameraPosition(float time) { + return vec3(12.0*sin(iTime),-1.0,-12.0+sin(iTime/3.)*4.0); + } + vec3 cameraRotation(vec3 dir, float time, float signer) { + vec2 roti = vec2(0.5,sin(iTime)/12.); + + if(signer > 0.) { + dir *= rotationMatrix(vec3(1.0,0.0,0.0), roti.x ); + dir *= rotationMatrix(vec3(0.0,1.0,0.0), roti.y ); + } else { + dir *= rotationMatrix(vec3(0.0,1.0,0.0), -roti.y); + dir *= rotationMatrix(vec3(1.0,0.0,0.0), -roti.x); + } + return dir; + } + float shade(inout Ray ray, vec3 dir, float d, Material material) + { + ray.carriedLight *= material.carriedLight; + ray.light += material.emit * ray.carriedLight.rgb; + return material.scatter; + } + //hemispherical sampling + void sampleSkybox(inout vec3 dir, float samples, float count, float diffuse) { + vec3 uu = normalize( cross( dir, vec3(0.01,1.0,1.0) ) ); + vec2 aa = hash2( count ); + float ra = sqrt(aa.y); + float ry = ra*sin(6.2831*aa.x); + float rx = ra*cos(6.2831*aa.x); + float rz = sqrt( sqrt(samples)*(1.0-aa.y) ); + dir = normalize(mix(dir, vec3( rx*uu + ry*normalize( cross( uu, dir ) ) + rz*dir ), diffuse)); + } + vec3 shadeBackground(vec3 dir) { + vec3 lightDirection = getLightDirection(syncTime); + lightDirection = normalize( lightDirection); + vec3 lightColor = getLightColor(syncTime); + + float bacsamplesgroundDiff = dot( dir, vec3( 0.0, 1.0, 0.0)); + float lightPower = dot( dir, lightDirection); + vec3 bacsamplesgroundColor = 0.1 * lightColor * vec3(1.0,0.5,0.2) * pow( max( lightPower, 0.0), 6.0); + bacsamplesgroundColor += lightPower * pow( max( lightPower, 0.0), abs( lightDirection.y)) * 0.2; + + return max(vec3(0.0), bacsamplesgroundColor); + } + + vec3 normal(Ray ray, float d) { + Material material; + float dx = getDistance(vec3(EPSILON, 0.0, 0.0) + ray.position, material) - d; + float dy = getDistance(vec3(0.0, EPSILON, 0.0) + ray.position, material) - d; + float dz = getDistance(vec3(0.0, 0.0, EPSILON) + ray.position, material) - d; + return normalize(vec3(dx, dy, dz)); + } + Ray initialize(vec2 uv, vec2 suffle) { + Ray r; + r.light = vec3(0.0); + r.carriedLight = vec4(1.0); + r.position = cameraPosition(syncTime); + r.direction = normalize(vec3(uv+suffle, 1.0)); + r.direction = cameraRotation(r.direction, syncTime, 1.0); + return r; + } + float firstHit = 0.; + #define maxPixelSamples 1 + vec4 smpl(vec2 uv, vec2 uvD, out vec3 position, int sampleCount, Ray ray, out float temporalSampling) { + int hit = 0; + float depth = 0.0; + float maxDiffuseSum = 0.0; + vec4 color = vec4( 0.0); + float minDistance = 10e8; + float totalDistance = 0.0; + float count = 0.0; + float diffuseSum = 0.0; + float samples = 1.0; + vec3 total = vec3(0.0); + vec3 startPosition = ray.position; + vec3 startDirection = ray.direction; + for( int i = 0; i < RAY_STEPS; i++) { + Material material; + float dist = getDistance( ray.position, material); + minDistance = min( minDistance, dist); + ray.position += dist * ray.direction ; + totalDistance += dist; + if(dist < EPSILON) { + { + + if(firstHit == 0.) { + position = ray.position; + temporalSampling = material.carriedLight.a; + } + ray.position -= dist * ray.direction; + vec3 norm = normal( ray, dist); + ray.position -= 2.0 * dist * ray.direction; + firstHit ++; + float diffuse = shade( ray, norm, dist, material); + diffuseSum += diffuse; + + sampleSkybox( + ray.direction, + samples, + samples + 12.12312 * dot( norm, ray.direction) + syncTime + float(sampleCount), + diffuse * 0.5); + + ray.position += 1.0 * EPSILON * norm; + ray.direction = reflect(ray.direction, norm); + ray.position += 1.0 * EPSILON * ray.direction; + + + count ++; + hit = 1; + if(count > MAX_SAMPLES * material.scatter + 1.0 ) { + break; + } + else if(sampleCount > 1 && material.scatter < 0.5) { + break; + } + } + } else if (totalDistance > MAX_DISTANCE) { + vec3 bg = shadeBackground( ray.direction)*12.; + if (minDistance > EPSILON*1.5) { + ray.light = bg; + break; + } + total += ray.light + ray.carriedLight.rgb * bg; + samples++; + maxDiffuseSum = max( diffuseSum, maxDiffuseSum); + diffuseSum = 0.0; + break; + } + } + total += ray.light; + color += vec4( total / samples, 1.0); + + return color; + } + vec4 trace(vec2 uv, vec2 uvD, out vec3 position) { + vec4 color = vec4(0.0); + float temporalSampling = 0.0; + for( int sampleCount = 0; sampleCount < maxPixelSamples; sampleCount++) { + uvec3 seed = uvec3(gl_FragCoord.xy, iFrame*maxPixelSamples + sampleCount); + vec3 rand = hash(seed); + vec2 suffle = rand.xy - 0.5; + suffle /= iResolution.xy; + Ray ray = initialize(uv, suffle); + color += smpl( uv, uvD, position, sampleCount, ray, temporalSampling); + } + return vec4( color.rgb / color.a, temporalSampling); + } + vec4 reproject( vec3 worldPos) { + vec3 prevCameraPosition = cameraPosition( syncTime - iTimeDelta); + vec3 curCameraPosition = cameraPosition( syncTime); + vec3 dir = normalize(worldPos - prevCameraPosition); + dir = cameraRotation(dir, syncTime - iTimeDelta, -1.0); + dir /= dir.z; + + vec2 aspect = vec2(iResolution.x/iResolution.y, 1.0); + vec2 uv = dir.xy; + uv /= aspect; + uv += vec2(1.0); + uv /= 2.0; + if(uv.x>0.0 && uv.x<1.0 && uv.y>0.0 && uv.y<1.0) { + vec4 tex = texture(iChannel0, uv); + tex.a = mod(tex.a, 1.0); + return tex; + } + return vec4(0.0); + } + + void mainImage( out vec4 fragColor, in vec2 fragCoord ) + { + + syncTime = iTime - 1.0; + vec2 aspect = vec2(iResolution.x/iResolution.y, 1.0); + vec2 uv = fragCoord.xy / iResolution.xy; + uv = (2.0 * uv - 1.0) * aspect; + if(abs(uv.y)<0.777){ + vec2 uvD = ((2.0 * ((fragCoord.xy+vec2(1.0, 1.0)) / iResolution.xy) - 1.0) * aspect) - uv; + vec3 position = vec3(0.0); + vec4 light = trace(uv, uvD, position); + fragColor = vec4( light.rgb, 1.0/127.0 ); + + fragColor.rgb = pow( fragColor.rgb, vec3(1.0/2.1) ); + if(length(position)>0.){ + vec4 reprojectionColor = reproject( position) * 0.85 * light.a; + fragColor += vec4(reprojectionColor.rgb*1.15,1.0/127.0) * (reprojectionColor.a * 127.0); + } + fragColor.rgb /= fragColor.a * 127.0; + fragColor.a = mod(fragColor.a,1.0); + fragColor.rgb = min(max(fragColor.rgb,vec3(0.0)),vec3(1.0)); + } + } + void main(void) + { + vec2 fragCoord = gl_FragCoord.xy; + vec4 fragColor; + mainImage( fragColor, fragCoord ); + out_color = fragColor; + } diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_butadiene.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_butadiene.glsl new file mode 100644 index 000000000..20c8aa5dc --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_butadiene.glsl @@ -0,0 +1,184 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define time fGlobalTime +float bpm = 175.; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float PI = acos(-1.); + +mat2 rot(float r){ + return mat2(cos(r),sin(r),-sin(r),cos(r)); + } + +vec2 pmod(vec2 p,float n){ + float np = PI*2.0/n; + float r = atan(p.x,p.y)-0.5*np; + r = mod(r,np)-0.5*np; + return length(p)*vec2(cos(r),sin(r)); + } + +float box(vec3 p,vec3 s){ + vec3 q = abs(p); + vec3 m = max(s-q,0.); + return length(max(q-s,0.))-min(min(m.x,m.y),m.z); + } + +float kaku(vec3 p,float s){ + p.y = abs(p.y); + p.y -= 0.07*s; + p.yz *= rot(PI*0.25); + return box(p,s*vec3(0.05,0.08,0.2)); + } + +float kakuring(vec3 p,float r,float k){ + p.xz *= rot(k); + float sc = 1.0; + + p.xz = pmod(p.xz,28.); + p.x -= r; + return kaku(p,r*0.5); + } + float rand(vec2 st){ + return fract(sin(dot(st.xy,vec2(12.9898,78.233)))*43578.543123); + } + float ease(float t,float k){ + return 0.5+0.5*cos(PI*exp(-k*t)); + } + vec3 noi1 = vec3(0); + float texint = 0.0; + void noi_ipt(){ + float es = 0.0; + float kt =floor(time/12.+es); + float s1 = rand(vec2(kt,0.)); + float s2 = rand(vec2(kt,.5)); + float s3 = rand(vec2(kt,.7)); + noi1 = vec3(s1,s2,s3); + } + + vec4 circring(vec3 p,float ss){ + vec3 sp = p; + vec3 ecp = vec3(0.5,0.2,0.8); + vec3 idlist = vec3(0.,2.,4.); + if(ss<1.2){ + ecp = vec3(0.2,0.8,0.2); + idlist = vec3(1.,3.,5.); + } + float id = idlist.x; + vec3 scol = vec3(0.7); + if(length(p)<1.2){ + scol += vec3(ecp.x,ecp.y,ecp.z); + }else if(length(p)<2.2){ + scol += vec3(ecp.z,ecp.x,ecp.y); + id = idlist.y; + }else{ + scol += vec3(ecp.y,ecp.z,ecp.x); + id = idlist.z; + } + + const int iterate =2; + float kp = 1.; + + float scale = 1.0; + for(int i = 0;idm){dd= dm;break;} + if(d<0.001){break;} + p += r*d; + dd += d; + } + float ti1 = step(0.5,fract(time*5.)); + float ti2 = step(0.1,fract(time)); + float s = smoothstep(dm,5.,dd); + vec3 n = nor(p); + float dao = 1.; + float ao = clamp(map(p+n*dao)/dao,0.,1.); + + float ld = clamp(dot(n,-r),0.,1.); + float br = hs(p*0.1); + float sp = pow(ld,5.+br*5.)*0.5+pow(ld,30.+br*30.)*0.2*br; + float fr = pow(1.-ld,0.4+br*0.4)*0.2+pow(1.-ld,1.+br)*0.2*br; + float r0 = pow(ev(reflect(n,r)),1.+br*0.7); + r0 += sp*0.2; + r0 += fr*0.2; + r0 *= ao; + float li = smoothstep(5.,0.,l1); + float dss = 2.5; + float ss = clamp(map(p+r*dss)/dss,0.,1.); + float li2 = pow(li,mix(1.5,0.5,ss)); + //li2 *= s; + li2 *= ti1; + + float r1 = pow(clamp(mix(ev(r),r0,s),0.,1.),1.+ti2*5.); + r1 += li2*s*(ti2); + r1 += zl;float c = 0.; + for( int i = -1 ; i <= 1 ; i ++) + for( int j = -1 ; j <= 1 ; j ++){ + c += texture(texPreviousFrame, uc +vec2 (i,j)/v2Resolution).a; + } + c/= 9.; + r1 = mix(r1,c,0.5); + vec3 rc = mix(vec3(1.),3.*abs(1.-2.*fract(time*40.+vec3(0.,-1./3.,1./3.)))-1.,0.3)*r1*1.5; + out_color =vec4(vec3(rc),r1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_dok.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_dok.glsl new file mode 100644 index 000000000..3b48e8555 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_dok.glsl @@ -0,0 +1,96 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform float fmknobB1; +uniform float fmknobB2; +uniform float fmknobB3; +uniform float fmknobB4; +uniform float fmknobB5; +uniform float fmknobB6; +uniform float fmknobC1; +uniform float fmknobC2; +uniform float fmknobC3; +uniform float fmknobC4; +uniform float fmknobC5; +uniform float fmknobC6; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define PI 3.1416 +#define TAU (2.0*PI) + +float fft(float f) { return clamp(0.0, 0.0, 0.000000000000000001*texture(texFFTSmoothed, f).r); } + +mat2 rot2(float a){ return mat2(sin(a),-cos(a), cos(a), sin(a));} + +vec3 sp(vec2 uv, vec2 p, vec2 h, float f) { + float p1 = p.x + fGlobalTime; + float p2 = p.y + fGlobalTime; + float i = (uv.y * h.x) - (0.5 + 0.5 * sin(uv.x * f * TAU + p1)); + float j = (uv.y * h.y) - (0.5 + 0.5 * sin(uv.x * f * TAU + p2)); + float s = sign(i * j); + float d = s * min(abs(i), abs(j)); + + return vec3(s,d, uv.x); +} + +float ht(vec2 uv) { + float c = length(fract(uv * 10.0)-0.5); + float rc = mix(0.2, 0.1, fft(0.001)); + c = step(rc, c); + return 1.0 - c; +} +/* THANKS !!!! THANKS THANKS THANKS */ +/* NICE entries ! Good job every one */ +/* Thanks for the mix lug00ber */ +void main(void) +{ + vec3 col; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv *= 4; + + float c = 0; + float z = mix(0.1, 0.5, 0.5+0.5*sin(fGlobalTime / 30.0) + 100.0*fft(0.04)); + for (float i = 0.0; i < 1.0; i += 0.1) { + vec3 vv = sp(z * uv * rot2(i*PI), vec2(9.0, 5.0) * i, vec2(1)+fft(0.02)*20, 0.025); + vv.y = fract(vv.y * 1.0 - fGlobalTime); + c += ht(vv.yz); + } + col = vec3(c / mix(4.0, 2.0, fft(0.05))); + + float l = 0; + for (float i = 0.0; i < 1.0; i += 0.05) { + vec3 vv = sp(uv * rot2(i * TAU), vec2(i, 5.0) * i, vec2(0.9) * i, 0.01); + l = max(l, 1.0 - step(mix(0.01, 0.02, fft(0.03)), abs(vv.y))); + } + + float d = 1000; + float rd = 0.5; + float dd = mix(0.0, 3.0, sin(fGlobalTime / 20)); + for (float i = 0.0; i < 1.0; i += 0.1) { + vec2 dv = vec2(dd + i*fft(0.01)) * rot2(i * TAU - fGlobalTime); + d = min(d, length(uv - dv)); + } + if (0.5*d < rd) + l = 1.0 - l; + + if (fft(0.005) > 0.8) + col *= l; + else + col *= 1.0 - l; + + if (d < rd) + col = 1.0-col; + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_eimink.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_eimink.glsl new file mode 100644 index 000000000..de1a5f198 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_eimink.glsl @@ -0,0 +1,260 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float fMidiKnob1; +uniform float fMidiKnob2; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +//HI EVERYONE! + +// Mercury SDF <3 - https://mercury.sexy/hg_sdf/ +#define PI 3.14159265 +#define TAU (2*PI) +#define PHI (sqrt(5)*0.5 + 0.5) +#define saturate(x) clamp(x, 0, 1) + +float pModPolar(inout vec2 p, float repetitions) { + float angle = 2*PI/repetitions; + float a = atan(p.y, p.x) + angle/2.; + float r = length(p); + float c = floor(a/angle); + a = mod(a,angle) - angle/2.; + p = vec2(cos(a), sin(a))*r; + // For an odd number of repetitions, fix cell index of the cell in -x direction + // (cell index would be e.g. -5 and 5 in the two halves of the cell): + if (abs(c) >= (repetitions/2)) c = abs(c); + return c; +} + +#define M1 1.0 +#define M2 2.0 +#define M3 3.0 + +vec3 glow = vec3(0); + +struct SceneResult +{ + float d; + float cid; + float mid; +}; + +struct MarchResult +{ + vec3 position; + vec3 normal; + SceneResult sres; +}; + +float ffts = texture(texFFTSmoothed,80).r*.25; +float ffti = texture(texFFTIntegrated,.1).r*.25; +float time = fGlobalTime; + +float sdBox(vec3 p, vec3 b) +{ + vec3 q = abs(p) - b; + return length(max(q,0)) + min(max(q.x,max(q.y,q.z)),0); +} + +float sdTriPrism( vec3 p, vec2 h ) +{ + vec3 q = abs(p); + return max(q.z-h.y,max(q.x*0.866025+p.y*0.5,-p.y)-h.x*0.5); +} + +void rot(inout vec2 p, float a) { + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +// base from iq +SceneResult opU(SceneResult d1, SceneResult d2) +{ + return (d1.d < d2.d) ? d1 : d2; +} + +// 3D noise function (IQ) +float noise(vec3 p){ + vec3 ip = floor(p); + p -= ip; + vec3 s = vec3(7.0,157.0,113.0); + vec4 h = vec4(0.0, s.yz, s.y+s.z)+dot(ip, s); + p = p*p*(3.0-2.0*p); + h = mix(fract(sin(h)*43758.5), fract(sin(h+s.x)*43758.5), p.x); + h.xy = mix(h.xz, h.yw, p.y); + return mix(h.x, h.y, p.z); +} + +SceneResult scene(vec3 p) { + SceneResult r; + rot(p.xy,ffti*20); + vec3 pp = abs(p); + for (int i = 0; i < 2; ++i) + { + pp = abs(pp) - vec3(4.,4.,5.); + rot(pp.xy,(time+20.*ffts)*.1); + rot(pp.yz,time*.1); + } + float c = pModPolar(pp.xz,5); + pp -= vec3(5,0,0); + rot(pp.xz,ffti*2.); + + vec3 ppp = p; + float cc = pModPolar(ppp.xz,5); + ppp -= vec3(5.,cc*3.,0.); + rot(ppp.yz,PI); + rot(ppp.xz, -time); + rot(ppp.xy,ffti*.20); + + SceneResult box; + box.d = sdBox(pp,vec3(2,1.+ffts*20,1))+noise(pp); + box.cid = c; + box.mid = M1; + + SceneResult tp; + tp.d = sdTriPrism(ppp,vec2(1.5+ffts*20.,.2)); + tp.mid = M2; + + vec3 pppp = abs(p); + for (int i = 0; i < 4; ++i) + { + pppp = abs(pppp) - vec3(3.,6.,9.); + rot(pp.xy, (time+texture( texFFT, pp.x ).r*1)); + rot(pp.yz, time*0.1); + } + + SceneResult tp2; + tp2.d = sdTriPrism(pppp,vec2(2.5+ffts*10.,.4)); + tp2.mid = M3; + + r = opU(opU(box,tp),tp2); + + glow += vec3(.8,.4,.2)*0.01/(0.01+abs(tp.d)); + glow += vec3(.9,.2,.6)*0.01/(0.9+abs(box.d)); + glow += vec3(.2,.4,.8)*0.01/(0.2+abs(tp2.d)); + + return r; +} + +vec3 calcNormal (in vec3 pos) +{ + vec2 e = vec2(0.0001,0.0); + return normalize(vec3(scene(pos+e.xyy).d-scene(pos-e.xyy).d, + scene(pos+e.yxy).d-scene(pos-e.yxy).d, + scene(pos+e.yyx).d-scene(pos-e.yyx).d)); +} + +MarchResult raymarch(in vec3 ro, in vec3 rd) +{ + vec3 p = ro+rd; + float s = .0; + float id = M1; + float t = 0.; + SceneResult d; + for (int i = 0; i < 100; ++i){ + d = scene(p); + t += d.d; + p += rd*d.d; + s = float(i); + if (d.d < 0.01 || t > 100.) { + break; + } + } + MarchResult res; + res.position = p; + res.normal = calcNormal(p); + res.sres = d; + res.sres.d = t; + return res; +} + +vec3 shade(MarchResult mr, vec3 rd, vec3 ld) +{ + float l = max(dot(mr.normal,ld),.0); + float a = max(dot(reflect(ld,mr.normal),rd),.0); + float s = pow(a,10); + + float m = mod(mr.sres.cid,8.); + + vec3 col = vec3(.8,.4,.2); + if (mr.sres.mid == M1){ + if (m < 1.) + col = vec3(.2,.6,.9); + else if (m < 2.) + col = vec3(.9,.6,.2)*.1; + else + col = vec3(.9,.2,.6)*.1; + } + else if (mr.sres.mid == M2) + { + col = vec3(.8,.2,.4); + } + else { + col = vec3(1.,.5,.5)*.25; + } + return l * col * .5 + s * (col * vec3(1.1,1.2,1.2))*.8; +} + +void main(void) +{ + + vec3 cp = vec3(sin(10.*ffti)+10.,5.+sin(ffti*20.),cos(20.*ffti)+20.); + vec3 ct = vec3(0); + vec2 uv = gl_FragCoord.xy / v2Resolution.xy; + vec2 q = -1.0+2.0*uv; + q.x *= v2Resolution.x/v2Resolution.y; + + vec3 cf = normalize(ct-cp); + vec3 cr = normalize(cross(vec3(0,1,0),cf)); + vec3 cu = normalize(cross(cf,cr)); + vec3 rd = normalize(mat3(cr,cu,cf)*vec3(q,radians(90.0))); + vec3 ld = -rd; + + + vec3 col = vec3(0); + + MarchResult m = raymarch(cp,rd); + if (m.sres.d < 100.) + { + col = shade(m,rd,ld); + } + + col += glow * .3; + + // Hi rimina! Using your code here! + + vec4 pcol = vec4(0.0); + vec2 puv = vec2(20./v2Resolution.x, 20./v2Resolution.y); + vec4 mults = vec4(0.1531, 0.11245, 0.0918, 0.051); + pcol = texture2D(texPreviousFrame, uv) * 0.1633; + pcol += texture2D(texPreviousFrame, uv) * 0.1633; + for (int i = 0; i < 4; ++i) + { + pcol += texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i]; + } + col += pcol.rgb; + col *=0.35; + + col = mix(col, texture2D(texPreviousFrame, uv).rgb,.5); + + col = smoothstep(-.1, 1., col); + + out_color = vec4(col,1); + +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_evvvvil.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_evvvvil.glsl new file mode 100644 index 000000000..cc213a8da --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_evvvvil.glsl @@ -0,0 +1,164 @@ +#version 410 core +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(.0035,-.0035); float t,tt,b,bb,g,cr,gg,ggg,f,ffBass,ffHigh,ffWhole; vec3 ro,np,rp,bp,cp,pp,op,sp,po,no,al,lp,ld,cop;vec4 su=vec4(0); +float noi(vec3 p){ + vec3 f=floor(p),s=vec3(7,157,113); p-=f;vec4 h=vec4(0,s.yz,s.y+s.z)+dot(f,s); p=p*p*(3.-2.*p); + h=mix(fract(sin(h)*43758.5),fract(sin(h+s.x)*43758.5),p.x); h.xy=mix(h.xz,h.yw,p.y); + return mix(h.x,h.y,p.z);} +float cno(vec3 p,float k){ float f=0.; p.z+=tt*k;f+=0.5*noi(p);p=2.1*p;f+=0.25*noi(p+1.);p=2.2*p; + f+=0.125*noi(p+2.);p=2.3*p; return f;} +float bo(vec3 p,vec3 r){p=abs(p)-r; return max(max(p.x,p.y),p.z);} +float b2d(vec2 p,vec2 r){ p=abs(p)-r;return length(max(p,0))+min(max(p.x,p.y),0);} +float cy(vec3 p,vec3 r){return max(abs(length(p.xz)-r.x)-r.y,abs(p.y)-r.z/2.);} +float cx(vec3 p,vec3 r){return max(abs(length(p.yz)-r.x)-r.y,abs(p.x)-r.z/2.);} +float cz(vec3 p,vec3 r){return max(abs(length(p.xy)-r.x)-r.y,abs(p.z)-r.z/2.);} +float cap(vec3 p, float h, float r ){ p.y -= clamp( p.y, 0.0, h );return length( p ) - r;} +float ext(vec3 p,float sdf,float h){ vec2 w=vec2(sdf,abs(p.y)-h); return min(max(w.x,w.y),0.)+length(max(w,0));} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +float smin( float d1, float d2, float k ){float h=max(k-abs(d1-d2),0.0);return min(d1, d2) - h*h*0.25/k;} +float smax( float d1, float d2, float k ){float h=max(k-abs(-d1-d2),0.0);return max(-d1,d2)+h*h*0.25/k;} +vec2 smin( vec2 a, vec2 b,float k ){ float h=clamp(.5+.5*(b.x-a.x)/k,.0,1.);return mix(b,a,h)-k*h*(1.0-h);} + +vec3 proj(vec3 p){ + p=vec3(atan(p.x,p.z)*8.,abs(abs(p.y)-25.)-7.,length(p.xz)-5.-bb); + //p=vec3(abs(atan(p.z,p.x))*10.-5., (10.-length(p)), abs(atan(length(p.xz),p.y))*10.); + //p.yz-=.5*exp(p.y*.1); + //p.yz*=r2(.3*exp(p.y*.1)); + p.xy=mod(p.xy+vec2(0,tt*2.),2.)-1.; + return p; +} +/* VOLUMETRIC CLOUDS */ +float cmp( vec3 p){ + p.z=mod(p.z-tt*2.,10)-5; + p=abs(p)-6; + + //vec3 vp=p;vp.xz=abs(vp.xz)-2; + float t=length(p.xz)-1.; + return t; +} +/* ORBITTTTTTTTT */ +vec4 c=vec4(4.57,2,10,0.2); + +/* MMMAAAAPPPPPPPPPPPPPPPPPPPP*/ +vec2 mp( vec3 p, float ga ){ + + p.z=mod(p.z-tt*2.,10)-5; + op=p; + p=abs(p)-6; + //f = texture( texFFTSmoothed, abs(op.z*.01) ).r *500; + //float ta=smoothstep(0.,1.,(clamp(sin(p.y*.01+tt*.5),-.25,.25)*2.+.5)); + //p=mix(p,p.xzy,ta); + //float mxr=clamp(sin(tt*.65+p.z*.1),-.5,.5)+.5; +pp=p; + pp.y=abs(abs(pp.y)-3)-1.5; + vec2 h,t=vec2(cy(pp,vec3(2,.5,1.)),3); + vec3 vp=p;vp.xz=abs(vp.xz)-2; + t.x=smin(t.x,length(vp.xz)-.2,1.); +t.x=max(t.x,-(abs(p.x)-.5)); + t.x=min(t.x,(op.y+2+texture(texNoise,p.xz*.1).r*2.-cos(p.x*.1)*7+5.)*.2); + + h=vec2(cy(pp,vec3(2.0,.2,0.2)),6); + g+=0.1/(0.1+h.x*h.x*40); + t=t.x120) break; + t.x+=h.x;t.y=h.y; + } if(t.x>120) t.y=0; + return t; +} +#define a(d) clamp(mp(po+no*d,0).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d,0).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + tt=mod(fGlobalTime,62.82); + ffBass=texture(texFFTSmoothed,0.05).r; + ffHigh=texture(texFFTSmoothed,0.35).r; + //bb=max(0.,-3.+floor(tt*.25)+smoothstep(0.,1.,min(fract(tt*.25),.25)*4.)); + //b=smoothstep(0.,1.,clamp(sin(tt*.5),-.25,.25)*2.+.5); + + ///////////////////////// CCCCCCAAAAAAAAAAAAAMMMMMMMM + //ro=vec3(cos(tt*c.w+c.x)*c.z,c.y,sin(tt*c.w+c.x)*c.z); + ro=mix(vec3(cos(tt*.2)*2,c.y,10), + vec3(cos(tt*.2)*2+12,10,10),ceil(sin(tt*.4))); + vec3 cw=normalize(vec3(0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + co=fo=vec3(.1)-length(uv)*.1-rd.y*.1; + + lp=ro+vec3(0,2,0); + z=tr(ro,rd);t=z.x; + if(z.y>0){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy,0).x+ + e.yyx*mp(po+e.yyx,0).x+ + e.yxy*mp(po+e.yxy,0).x+ + e.xxx*mp(po+e.xxx,0).x);al=mix(vec3(.0,0.20,.7),vec3(.1,0.40,.5),sin(cop*2.5)*.5+.5); + if(z.y<5)al=vec3(0); + if(z.y>5)al=vec3(1); + ld=normalize(lp-po); + float attn=1.0-pow(min(1.0,length(lp-po)/20.),4.0), + dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),30); + co=mix((sp+al*(a(.1)*a(.3)+.2)*(dif+s(1)*.3))*attn,fo,min(fr,.5)); + co=mix(fo,co,exp(-.0002*t*t*t)); + } + //cr=cmp(ro-1.) + cr=fract(dot(sin(uv*476.567+uv.yx*785.951+tt),vec2(984.156))); + for(int i=0;i<120;i++){ + cp=ro+rd*(cr+=1./3.);//(cr+=60./150.); + if(su.a>.99||cr>t) break; + float de=clamp(-cmp(cp)+2.*cno(cp,1.),0.,1.); //-0.2-mp(cp).x+0.5*cno(cp*0.5,1.) + su+=vec4(vec3(mix(1.,0.,de)*de),de)*(1.-su.a); + } + co=mix(co,su.xyz,su.a*0.8); //mix(su.xyz,fo,1.-exp(-.000005*cr*cr*cr)),su.a*.9) + //float light=clamp(-0.5-mp(cp-ld*.5).x+2.5*cno(cp*5,5),0.,1.);//cloud lighting + //su+=vec4(vec3(mix(de*de,light,de)),de)*(1-su.a); //co=su.xyz; + co=co+g*.2*vec3(.0,.1,.7)+gg*.2*vec3(.7,.1,.1)+ggg*.2; + //if(length(lp-ro) L) break; + } + return l; +} + +void main(void) { + vec2 pix = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv = pix - 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 C=vec3(0.); + float a = 0; + + //c = vec3(h2(uv)); + + t -= .4 * h2(pix+t*.1) * ffts(3.); + + + + float bpt = t/4.*177./120.; + float cp = floor(bpt); + + vec3 O=vec3(0., 1.3, 0.), D=normalize(vec3(uv, -1.)); + D.yz *= R(.3 - .3 * h1(cp+.3)); + D.xz *= R(.6 - 1.2 * h1(cp+.2)); + + float za = .1 - .2 * h1(cp+.1); + za += fract(bpt) * (1. - 3. * h1(cp+.41)) - h1(cp+.85) * .4; + //za += cp + //+ (t*(.1 - .2 * h1(cp+.75))) + D.xy *= R(za); + + + O.x += 8. * h1(cp); + O.y += 1. * h1(cp+.5); + + + vec3 od = vec3((1. - 2. * h1(cp+.6)), 0., 2.); + + //if (1(cp+.54), .5) + //od.x *= (1. - low); + //O.y = (1. - low) + .3; + if (h1(cp+.54) > .7) { + od.x = 0.; + O.x = .0; + O.y = .2; + } + + O -= od * (t+ffti(3.)*.3); + + vec3 sunc = 3. * vec3(1.,.5,.6); + vec3 skyc = vec3(.3,.5,.9); + vec3 ld = normalize(vec3(.98, 1., -1.4)); + + vec3 kc = vec3(1.); + for (int b=0; b < 4; ++b) { + float L=20.,l=tr(O,D,0.,L); + if (l >= L) { + C += kc * mix( + skyc, + sunc, + pow(max(0., dot(D, ld)), 30.) + ); + break; + } + + vec3 p=O+D*l; + vec3 n=wn(p); + + float mr = 1.;//min(1., h2(floor(p.zy*16.) + floor(p.xz*16.)) * 2.5); + //mr = h2(floor(p.xz*16.))*10.;// + floor(p.xz*16.)) * 20.5); + //mr = fract(p.x); + //mr = min(1., h2(floor(p.xz*6.) + floor(p.xy*32.))); + vec3 md = vec3(1.); + vec3 c=vec3(0.); + //c=fract(p*10.); + //c = n; + + float shl = 10.; + float sh = step(shl, tr(p, ld, .1, shl)); + c += sunc * md * max(0, dot(ld, n)) * sh; + + c += .3 * skyc * md * max(0, dot(vec3(-ld.x, ld.y, -ld.z), n)); + + // :((( + kc *= mix(vec3(1.), skyc, l/L); + c = mix(c, skyc, l/L * .8); + //c *= pow(.001, l/L); + + C += kc * c; + + O = p + n * .01; + D = reflect(D, n); + kc *= .4 * mr; + } + + C *= smoothstep(1.1, .1, length(uv)); + + C = mix(C, pow(texture(texPreviousFrame, pix).rgb, vec3(2.)), .3 + .3 * ffts(.2)); + + out_color = vec4(sqrt(C), a); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rimina.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rimina.glsl new file mode 100644 index 000000000..2b5108939 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rimina.glsl @@ -0,0 +1,214 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +//HELLO WORLD! + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.2).r; + +const float E = 0.001; +const float FAR = 100.0; +const int STEPS = 64; + +const vec3 FOG_COLOR = vec3(0.02, 0.08, 0.085); +const vec3 LIGHT_COLOR = vec3(0.9, 0.6, 0.3); + +vec3 glow = vec3(0.0); + +bool flip = false; + +float ID = 0.0; + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0); +} + +//FROM MERCURY SDF LIBRARY +// Cylinder standing upright on the xz plane +float fCylinder(vec3 p, float r, float height) { + float d = length(p.xz) - r; + d = max(d, abs(p.y) - height); + return d; +} + +void rotate(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +// 3D noise function (IQ) +float noise(vec3 p){ + vec3 ip = floor(p); + p -= ip; + vec3 s = vec3(7.0,157.0,113.0); + vec4 h = vec4(0.0, s.yz, s.y+s.z)+dot(ip, s); + p = p*p*(3.0-2.0*p); + h = mix(fract(sin(h)*43758.5), fract(sin(h+s.x)*43758.5), p.x); + h.xy = mix(h.xz, h.yw, p.y); + return mix(h.x, h.y, p.z); +} + +float scene(vec3 p){ + + float safe = sphere(p, 1.0); + + vec3 pp = p; + for(int i = 0; i < 8; ++i){ + pp = abs(pp) - vec3(0.4, 0.1, 0.5); + + rotate(pp.xy, fft*10.0); + rotate(pp.xz, time*0.5); + rotate(pp.yz, fft*10+time*0.1); + } + + pp -= noise(p-time)*0.9; + float a = box(pp, vec3(0.5)); + //a = max(a, -safe); + + pp = p; + pp -= noise(p-fft*20.0)*0.4; + + float offset = 12.0; + + ID = floor((pp.z + offset*0.5) / offset); + pp.z = mod(pp.z + offset*0.5, offset)-offset*0.5; + + rotate(pp.yz, radians(90.0)); + float tunnel = -fCylinder(pp, 12.0, 12.0); + rotate(pp.yz, -radians(90.0)); + + glow += vec3(0.2, 0.5, 0.5) * 0.01 / (abs(a) + 0.01); + + if(tunnel < a){ + flip = true; + } + else{ + flip = false; + } + + return min(a, tunnel); +} + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + for(int i = 0; i < FAR; ++i){ + float d = scene(p); + t += d; + p = ro + rd*t; + + if(d < E || t > FAR){ + break; + } + } + + return t; +} + +vec3 normals(vec3 p){ + vec3 e = vec3(E, 0.0, 0.0); + return normalize(vec3( + scene(p+e.xyy) - scene(p-e.xyy), + scene(p+e.yxy) - scene(p-e.yxy), + scene(p+e.yyx) - scene(p-e.yyx) + )); +} + +vec3 shade(vec3 rd, vec3 p, vec3 n, vec3 ld){ + if(flip){ + n = -n; + ld = -ld; + } + float l = max(dot(n, ld), 0.0); + float a = max(dot(reflect(ld, n), rd), 0.0); + float s = pow(a, 10.0); + + vec3 lc = vec3(0.2, 0.9, 1.0); + vec3 sc= vec3(0.5, 0.9, 1.0); + + if(mod(ID, 2.0) == 0.0){ + lc = lc.brg; + sc = sc.brg; + } + + return l * lc * 0.5 + s * sc * 0.8; +} + +//http://www.iquilezles.org/www/articles/fog/fog.htm +vec3 fog(vec3 col, vec3 p, vec3 ro, vec3 rd, vec3 ld){ + float dist = length(p-ro); + float sunAmount = max( dot(rd, -ld), 0.0 ); + float fogAmount = 1.0 - exp( -dist*0.06); + vec3 fogColor = mix(FOG_COLOR, LIGHT_COLOR, pow(sunAmount, 10.0)); + return mix(col, fogColor, fogAmount); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uvv = uv - 0.5; + uvv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(0.0, 0.0, 10.0); + vec3 rt = vec3(0.0, 0.0, -1.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z) * vec3(uvv, radians(40.0))); + vec3 col = vec3(0.0); + + float t = march(ro, rd); + vec3 p = ro + rd*t; + vec3 n = normals(p); + vec3 ld = -z; + if(t < FAR){ + col = shade(rd, p, n, ld); + } + + col += glow * 0.1; + col = fog(col, p, ro, rd, ld); + + + vec4 pcol = vec4(0.0); + vec2 puv = vec2(1.0/v2Resolution.x, 1.0/v2Resolution.y); + vec4 kertoimet = vec4(0.1531, 0.12245, 0.0918, 0.051); + pcol = texture2D(texPreviousFrame, uv) * 0.1633; + pcol += texture2D(texPreviousFrame, uv) * 0.1633; + for(int i = 0; i < 4; ++i){ + pcol += texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * kertoimet[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * kertoimet[i] + + texture2D(texPreviousFrame, vec2(uv.x + (float(i)+1.0) * puv.y, uv.y + (float(i)+1.0) * puv.x)) * kertoimet[i] + + texture2D(texPreviousFrame, vec2(uv.x + (float(i)+1.0) * puv.y, uv.y + (float(i)+1.0) * puv.x)) * kertoimet[i]; + } + col += pcol.rgb; + col *= 0.38; + + col = mix(col, texture2D(texPreviousFrame, uv).rgb, 0.6); + + col = smoothstep(-0.2, 1.2, col); + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rohtie.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rohtie.glsl new file mode 100644 index 000000000..e2e897c9b --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_rohtie.glsl @@ -0,0 +1,187 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float fMidiKnob; + +#define time fGlobalTime + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +mat2 rotate(float a) { + return mat2(-sin(a), cos(a), + cos(a), sin(a)); +} + +float map(vec3 p) { + + //p.zy *= rotate(sin(time * 20.) * .2); + p.xz *= rotate(sin(time * 20.) * .5 + 2.); + + float r = 1.; + + + p.x = abs(p.x); + + { + float head = length(p * vec3(1.0, 1.5 + sin(p.x) * .4 + sin(time * 2.) * .5, 1.0)) - 1.2; + //head = max(head, -(length(p - vec2(0.5, 0.)) - .5); + + float arms = length(p - vec3(1.0, sin(time * 2.) * .2 + 0.5 + sin(p.x * 5. + 3.), 0.)) - .4; + + head = min(head, arms); + + float eyes = length(p - vec3(.5, 0. + sin(time * 2.) * .05, 1.2)) - .2; + float eyes_sock = length(p - vec3(.5, 0. + sin(time * 2.) * .05, .8)) - .45; + + head = min(head, eyes); + head = max(head, -eyes_sock); + + float body = length(p * vec3(1., .4, 1.) - vec3(0., -1.5, -1.5)) - 1.5; + head = min(head, body); + + + r = min(r, head); + } + + { + + } + + + return r - smoothstep(0.1, 0.3, texture(texNoise, p.xz * .5 + time * 0.05 + sin(p.y * 4.)).r) * 0.03; + +/* float r = 1.; + + for (int i=0; i<5; i++) { + p.y += sin(p.x * 6. + time * 4.) * .5; + p.x += sin(p.y * 2.); + + p.xz *= rotate(i * .1); + p.x += 1.5; + + r = min(r, length(max(abs(p) - .4, 0.)) - .5); + } + + return r;*/ +} + +void main(void) +{ + float time = fGlobalTime; + + vec2 p = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = p; + p -= 0.5; + p /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 uv = p; + + + float ket = 0.; + + if (p.x > 0.) { + p.y += sin(p.x * 2 + time * 4.) * .15; + p.y = 1. - p.y - 1.; + ket = 1.; + } + + + if (length(max(abs(p) - vec2(.75, .35), 0.)) > .1) { + out_color = vec4(1.); + return; + } + + + p.x += texture(texFFT, p.y * .5 + .5).r * 6.; + + p.y += 0.075; + p.x = abs(p.x) - .5; + p *= 0.8; + + + vec3 cam = vec3(0., 0., 5.); + vec3 ray = vec3(p, -1.); + + float dist = 0.; + + for (int i=0; i<25; i++) { + vec3 p = cam + ray * dist; + + float tmp = map(p); + + if (tmp < 0.01) { + vec3 light = vec3(sin(time * 0.5) * 1.2, 0., -1.); + float shadow = map(p - light); + out_color = vec4(1. - ket, 1., p.y * 1. + 0.85 + ket * 200., 0.) * shadow * smoothstep(0.1, 0.3, texture(texNoise, p.xz * .5 + time * 0.05 + sin(p.y * 4.)).r) * 1.2 + abs(p.x) * .1 + vec4(mod(p.y, .2), 0., 0., 0.); + return; + } + + dist += tmp; + } + + + + + + //p.y = abs(p.x) * .5; + + p.x += abs(p.y); + + p.y += sin(p.x * 4. + tan(time * .2)) * .5 * ket; + p.x += sin( + time * 2. + p.y * 5. + tan(p.x * 2. + time * .5)) * .4 * ket; + p.y += texture(texFFT, p.x).r * 20.; + + + + if (length(p) > 0.5) { + //q *= 1.05; + q -= 0.0025; + + if (ket > 0.) { + q.x *= .99; + } + + //q.x -= 0.005; + //q.y /= 1.1 + sin(p.x); + out_color = texture(texPreviousFrame, q).brgr * vec4(.5, 1., sin(time * 20.), 2.); + return; + } + + out_color = vec4(1. + sin(time), 5.5 + tan(time * 5.) + p.y * 1.5, abs(p.y), 0.).ggrr * .05 + tan(time * 5.); + + if (ket > 0.) { + out_color = vec4(1. + sin(time * 20.), 1.5 + tan(time * 5.) + p.y * 1.5, abs(p.y), 0.) * 20.; + } + return; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_sp4ghet.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_sp4ghet.glsl new file mode 100644 index 000000000..3270f6954 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_sp4ghet.glsl @@ -0,0 +1,219 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define time fGlobalTime +#define fft texFFT +#define ffts texFFTSmoothed +#define backbuffer texPreviousFrame + +#define saturate(x) clamp((x), 0, 1) +#define bass texture(ffts, .001).r + +const float PI = acos(-1); +const float TAU = 2 * PI; + +float beat = time * 175. / 60.; +const vec3 up = vec3(0,1,0); + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 r2d(float t){ + float c = cos(t), s = sin(t); + return mat2(c,s,-s,c); +} + +mat3 r3d(float angle, vec3 axis){ + vec3 a = normalize(axis); + float s = sin(angle); + float c = cos(angle); + float r = 1.0 - c; + mat3 m = mat3( + a.x * a.x * r + c, + a.y * a.x * r + a.z * s, + a.z * a.x * r - a.y * s, + a.x * a.y * r - a.z * s, + a.y * a.y * r + c, + a.z * a.y * r + a.x * s, + a.x * a.z * r + a.y * s, + a.y * a.z * r - a.x * s, + a.z * a.z * r + c + ); + return m; +} + +void chmin(inout vec4 a, vec4 b){ + a = a.x < b.x ? a : b; +} + +float box(vec3 p, vec3 b){ + p = abs(p) - b; + return min(0., max(p.x, max(p.y, p.z))) + length(max(p,0.)); +} + +float octahedron(vec3 p, float s) +{ + p = abs(p); + float m = p.x + p.y + p.z - s; + vec3 r = 3.0*p - m; + // iq's original version + vec3 q; + if( r.x < 0.0 ) {q = p.xyz;} + else if( r.y < 0.0 ){ q = p.yzx;} + else if( r.z < 0.0 ){ q = p.zxy;} + else {return m*0.57735027;} + float k = clamp(0.5*(q.z-q.y+s),0.0,s); + return length(vec3(q.x,q.y-s+k,q.z-k)); +} + +float rectSDF(vec2 st, vec2 size){ + return max(abs(st).x * size.x, abs(st).y * size.y); +} + +float crossSDF(vec2 st, float s){ + vec2 size = vec2(.25, s); + return min(rectSDF(st, size.xy), + rectSDF(st, size.yx)); +} + +vec4 map(vec3 q){ + vec4 d = vec4(1000, 0,0,0); + vec3 p = q; + + float ns = texture(texNoise, p.xz * .1).r; + ns += texture(texNoise, p.xz * .1 + ns).r * .2; + p.y += ns; + p.y += .5; + float pl = p.y; + chmin(d, vec4(pl, 0,0,0)); + + p = q; + float t = 0.5 + 0.5 * cos(PI * exp(-3. * fract(.5*beat))); + float x = length(p.xz) - 1.; + float y = p.y; + float th = atan(y,x); + float ph = atan(p.z, p.x); + float r = length(vec2(x,y)) - 2.25; + p = vec3(r,th,ph); + p.y += p.z*(1 + t); + p.y = mod(p.y, .2) - .1; + + p.r = abs(p.r) - 2; + + float tr = box(p, vec3(.05, .05, PI)); + chmin(d, vec4(tr,0,0,0)); + + p = q; + t = 0.5 + 0.5 * cos(PI * exp(-3. * fract(.5*beat + .5))); + float sc = .3; + float fr = 10000.; + for(int i=0; i<5; i++){ + p *= r3d(PI * (.15 + t), normalize(vec3(-1, 1, 0))); + fr = min(fr, octahedron(p, sc)); + p = abs(p); + sc *= .43; + p -= sc*1.5; + } + chmin(d, vec4(fr, 0,0,0)); + + + return d; +} + +vec3 normal(vec3 p, vec2 e){ + return normalize(vec3( + e.xyy * map(p + e.xyy).x + + e.yxy * map(p + e.yxy).x + + e.yyx * map(p + e.yyx).x + + e.xxx * map(p + e.xxx).x + )); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 pt = uv - 0.5; + vec2 ar = vec2(v2Resolution.y / v2Resolution.x, 1); + pt /= ar; + + vec3 c = vec3(0); + + vec3 ro = vec3(1.,1.,-1.5); + vec3 fo = vec3(1,0,0); + vec3 rov = normalize(fo-ro); + vec3 cu = normalize(cross(rov,up)); + vec3 cv = cross(cu,rov); + vec3 rd = mat3(cu,cv,rov) * normalize(vec3(pt, 1)); + + float t = 0, precis = 0; + vec3 p = ro; + vec4 d; + for(int i=0; i<128; i++){ + p = ro + rd*t; + d = map(p); + t += d.x * .5; + precis = t * .001; + if(abs(d.x) < precis || t > 20.){ + break; + } + } + + vec3 lpos = vec3(1, 4, .5); + if(abs(d.x) < precis){ + vec3 l = normalize(lpos - p); + vec3 n = normal(p, vec2(precis, -precis)); + + float ao = 0; + for(int i=1; i<=10; i++){ + ao += map(p + n*i*.1).x / (i*.1); + } + ao /= 10; + + c = vec3(ao) * max(dot(n,l), .1); + } + + + float v = dot(c.rgb, vec3(.2126, .7152, .0722)); + float tm = 0.5 + 0.5 * cos(PI * exp(-4. * fract(beat))); + vec2 st = pt; + float s = rectSDF(st, vec2(1, 2))*.3 - .25; + st *= r2d(PI*.5*tm); + s = max(s, -crossSDF(st, 1.)+.075); + s = step(s, 0.); + st = abs(pt); + s *= step(0., sin(PI*.5 + 100*(st.x) - TAU*tm)); + v = mix(v, 0, s); + + v *= 1.5 - length(pt); + + int n = int(bass * 100) + 1; + for(int i=0; i FAR_CLIPPING_PLANE) + break; + } + return vec3(FAR_CLIPPING_PLANE, acc, 0.0); +} + +vec3 normal( in vec3 pos ) +{ + vec3 eps = vec3( 0.1, 0.0, 0.0 ); + vec3 nor = vec3( + scene(pos+eps.xyy).x - scene(pos-eps.xyy).x, + scene(pos+eps.yxy).x - scene(pos-eps.yxy).x, + scene(pos+eps.yyx).x - scene(pos-eps.yyx).x ); + return normalize(nor); +} + + + +float orenNayarDiffuse( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float albedo) { + + float LdotV = dot(lightDirection, viewDirection); + float NdotL = dot(lightDirection, surfaceNormal); + float NdotV = dot(surfaceNormal, viewDirection); + + float s = LdotV - NdotL * NdotV; + float t = mix(1.0, max(NdotL, NdotV), step(0.0, s)); + + float sigma2 = roughness * roughness; + float A = 1.0 + sigma2 * (albedo / (sigma2 + 0.13) + 0.5 / (sigma2 + 0.33)); + float B = 0.45 * sigma2 / (sigma2 + 0.09); + + return albedo * max(0.0, NdotL) * (A + B * s / t) / 3.14159; +} + + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = (-v2Resolution.xy + 2.0*(gl_FragCoord.xy))/v2Resolution.y; + + pframe=texture(texPreviousFrame,uv/4.0); + + time = fmod(fGlobalTime,30.0); + + vec3 direction = normalize(vec3(uv, 0.0)); + float cx = 0.0; + float cy = 0.0; + float cz = time*6.9; + + vec3 camera_origin = vec3(cx, cy, cz); + vec3 lookAt = vec3(cx,cy,cz+0.1); + + vec3 forward = normalize(lookAt-camera_origin); + vec3 right = normalize(vec3(forward.z, 0.0, -forward.x )); + vec3 up = normalize(cross(forward,right)); + + float FOV = 1.; + + vec3 ro = camera_origin; + vec3 rd = normalize(forward + FOV*uv.x*right + FOV*uv.y*up); + + vec3 result = raymarch(ro, rd); + + float fog = pow(1.0 / (1.0 + result.x), 0.2); + + vec3 materialColor = vec3(1.0-result.x*0.01, result.x*0.2*cos(uv.x*uv.y*3.), result.x*0.01); + + if (uv.y > 0.0) { + materialColor.r -= 0.5; + materialColor.g -= 0.5; + materialColor.b -= 0.4; + } + + vec3 intersection = ro + rd*result.x; + + vec3 nrml = normal(intersection); + float occ = calcAO( intersection, nrml ); + vec3 light_dir = normalize(vec3(10.0,0.,-2)); + vec3 ref = reflect( rd, nrml ); + float dom = smoothstep( -0.1, 0.8, ref.y); + float spe = pow(clamp( dot( ref, light_dir ), 0.0, 0.3 ),32.0); + + float diffuse = orenNayarDiffuse(light_dir,rd,nrml,0.4,0.9); + + vec3 light_color = vec3(pframe.r*2., pframe.b*2., 1.0); + vec3 ambient_color = vec3(1.0,1.0, 1.0); + vec3 diffuseLit = materialColor * (diffuse * light_color + ambient_color); + vec3 outColor = diffuseLit*occ*fog+dom*0.3+spe*0.3; + if (result.x >= FAR_CLIPPING_PLANE) outColor = vec3(1.0); + + out_color = vec4(1.3-outColor.r*0.8,0.8-outColor.b*0.8,1.7-outColor.g*0.4, 1.0); + +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_wrighter.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_wrighter.glsl new file mode 100644 index 000000000..4b92cd7c3 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_wrighter.glsl @@ -0,0 +1,251 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + + + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define pi acos(-1.) + +#define iTime fGlobalTime +#define R v2Resolution +#define U fragCoord +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) +#define T(u) texture(texPreviousFrame, (u)/R) +#define pmod(p,a) mod(p,a) - 0.5*a + + +mat3 getOrthBas( vec3 dir){ + vec3 r = normalize(cross(vec3(0,1,0), dir)); + vec3 u = normalize(cross( dir, r)); + return mat3(r,u,dir); + } + +float r21(vec2 id){ + return fract(sin(id.x*10.*cos(id.y*4.) + sin(id.x)*sin(id.y)*16.)*200.); + } + +float cyclicNoise(vec3 p){ + float n = 0.; + p *= getOrthBas(normalize(vec3(-4,2.,-2 + sin(iTime)*0.1))); + float lac = 1.5; + float amp = 1.; + float gain = 0.5; + + mat3 r = getOrthBas(normalize(vec3(-4,2.,-2))); + + + for(int i = 0; i < 8; i++){ + p += cos(p + 2 + vec3(0,0,iTime))*0.5; + n += dot(sin(p),cos(p.zxy + vec3(0,0,iTime)))*amp; + + p *= r*lac; + amp *= gain; + } + return n; + } +float sdBox(vec2 p, vec2 s){p = abs(p) - s; return max(p.x,p.y);} + + +float pxSz; +vec3 getLines( vec3 col,vec2 uv){ + for(float i = 0.; i < 120; i++){ + vec2 p = uv + vec2(0 + (iTime + sin(iTime + i))*0.2,sin(i*10.)*0.7); + //float r = sin(); + float md = 0.5 + 0.5*sin(i*3.); + md *= 0.4; + float id = floor(p.x/md); + p.x = pmod(p.x,md); + p.x += sin(id + iTime)*md*0.45; + float d = abs(p.x) - 0.02; + d = max(d,abs(p.y) - 0.001); + col = mix(col,1.-col,smoothstep(pxSz,0.,d)); + + } + + return col; +} + +vec3 getCrosses( vec3 col,vec2 uv){ + vec2 p = uv + vec2(0 +iTime*0.3,0.); + float md = 0.1; + vec2 id = floor(p/md); + + p = pmod(p,md); + p = abs(p); + p *= rot(0.5*pi); + + vec2 s = vec2(0.001,0.2+ 0.2*sin(id.x*4.*sin(id.y*16.) + sin(id.y*12. + iTime)*4. + iTime))*0.1; + float d = sdBox(p,s); + + + col = mix(col,1.-col,smoothstep(pxSz,0.,d)); + //col = 1. - col; + + return col; +} +vec3 getBlocks( vec3 col,vec2 uv){ + vec2 md = vec2(0.2,0.1); + vec2 p = uv; + p.x += iTime*0.1; + vec2 id = floor(p/md); + p = pmod(p,md); + p.x += iTime; + + if(r21(id) < 0.04){ + col = vec3(0.1,0.2,0.1);; + } + + //col = mix(col,1.-col,smoothstep(pxSz,0.,d)); + + + + return col; +} +vec3 getCircls(vec3 col,vec2 uv){ + + for(float i = 0.; i < 41; i++){ + float lt = iTime*(1. + sin(i))*0.1; + vec2 p = uv + vec2( + mod(lt,1)*3. - 1.5,sin(i*10.)*0.7); + //float r = sin(); + float d = length(p) - 0.1; + p = pmod(p,0.01); + d = max(length(p) - 0.001,d); + col = mix(col,1.-col,smoothstep(pxSz,0.,d)); + + } + return col; +} +vec3 getCirclsWithCircls(vec3 col,vec2 uv){ + + for(float i = 0.; i < 41; i++){ + float lt = iTime*(1. + sin(i*25.))*0.1; + vec2 p = uv + vec2( + mod(lt,1)*3. - 1.5,sin(i*10.)*0.7); + //float r = sin(); + float d = length(p) - 0.1; + d = max(abs(pmod(d,0.01)) - 0.001,d); + col = mix(col,0.-col*vec3(1.),smoothstep(pxSz,0.,d)); + + } + return col; +} +vec3 getSideLn(vec3 col,vec2 uv){ + + for(float i = 0.; i < 111; i++){ + float lt = iTime*(1. + sin(i*24.))*0.1; + vec2 p = uv + vec2( + mod(lt,1)*3. - 1.5,sin(i*10.)*0.7); + //float r = sin(); + float d = sdBox(p,vec2(0.05 + sin(i)*0.1)); + p *= rot(0.25*pi); + p = pmod(p,0.01); + d = max(abs(p.x) - 0.0025,d); + col = mix(col,1.-col*vec3(0.,0.3 + sin(i)*0.5,0.7 + sin(i)*0.4),smoothstep(pxSz,0.,d)); + + } + return col; +} +vec3 getArrows(vec3 col,vec2 uv){ + + for(float i = 0.; i < 101; i++){ + float lt = iTime*(1. + sin(i*12.))*0.1; + vec2 p = uv + vec2( + mod(lt,1)*3. - 1.5,sin(i*10.)*0.7); + //float r = sin(); + vec2 s = vec2(0.05 + sin(i)*0.1)*0.4; + s.y *= 0.4; + float d = sdBox(p,s); + p.y = abs(p.y); + p *= rot(0.25*pi); + p.x = pmod(p.x,0.01); + d = max(abs(p.x) - 0.004,d); + col = mix(col,1.-col*vec3(0.9,0.8 + sin(i)*0.5,0.7 + sin(i)*0.4),smoothstep(pxSz,0.,d)); + + } + return col; +} + +vec3 getNew(vec3 col, vec2 uv){ + + float minD = 10e4; + float id = -1.; + //vec2 currP = + for(float i = 0.; i < 100; i++){ + float lt = iTime*(1. + sin(i*24.))*0.1; + + vec2 p = uv + vec2(mod(lt,1)*3. - 1.5,sin(i*10.)*0.7); + + float dC = length(p) - 0.1; + float dSq = sdBox(p,vec2(0.1)); + float dL = sdBox(p,vec2(100,0.03)); + + if(dC < 0.){ + id += 1; + } + if(dSq < 0.){ + id += 1; + } + if(dL < 0.){ + id += 1; + } + //if(r21(id) < 0.33){ + + //col = mix(col,,smoothstep(pxSz,0.,d)); + //} + } + id = mod(id,1); + + if(id == 0){ + vec2 p = uv; + p *= rot(0.36); + //p.x += iTime; + p.x = pmod(p.x,0.07); + float d = abs(p.x) - 0.0; + + col = mix(col,vec3(0),smoothstep(pxSz,0.,d)); + } + return col; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + pxSz = fwidth(uv.y); + + vec2 U = gl_FragCoord.xy; + vec3 col = vec3(0); + + col = getBlocks(col,uv); + //col = getLines(col,uv); + col = getCrosses(col,uv); + + col = getCircls(col,uv); + col = getCirclsWithCircls(col,uv); + col = getSideLn(col,uv); + col = getArrows(col,uv); + + /* + col = getNew(col,uv); + if(mod(iTime,10.) < 5) + col = 1. - col; + */ + col = pow(max(col,0),vec3(0.4545)); + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_yx.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_yx.glsl new file mode 100644 index 000000000..2f4fe7509 --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_yx.glsl @@ -0,0 +1,180 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +// hiya! ~yx|Luna + +// trans rights are human rights! + +mat2 rot(float a) +{ + float c=cos(a),s=sin(a); + return mat2(c,-s,s,c); +} + +float sdBox(vec3 p, vec3 r) +{ + p=abs(p)-r; + return max(max(p.x,p.y),p.z); +} + +float sdf(vec3 p) +{ + //p.y += cos(p.x*.1)*30.*(cos(fGlobalTime)*.5+.5); + //p.y = -abs(p.y); + + float d = p.y; + d+=texture(texNoise,p.xz*.001).r*80.; + d+=texture(texNoise,p.xz*.003).r*60.-5; + + // chunk error + p.xz = mod(p.xz-128, 256)-vec2(128); + d = max(d,-sdBox(p,vec3(8,100,8))); + + return d; +} + +vec3 trace(vec3 cam, vec3 dir) +{ + #if 0 + float k=0; + vec3 h=cam; + for(int i=0;i<100;++i){ + k=sdf(h)*.4; + if(abs(k)<.001) + break; + h+=k*dir; + } + float t=distance(cam,h); + + vec2 o=vec2(.01,0); + vec3 n=normalize(vec3( + sdf(h+o.xyy), + sdf(h+o.yxy), + sdf(h+o.yyx))-k); + + bool hit = abs(k)<.001; + bvec3 m=bvec3(n); + #else + cam-=.5; + ivec3 mp=ivec3(floor(cam)); + vec3 dd=abs(1/dir); + ivec3 rs=ivec3(sign(dir)); + vec3 sd=(sign(dir)*(vec3(mp)-cam)+(sign(dir)*.5)+.5)*dd; + bvec3 m; + bool hit=false; + for (int i=0;i<250;++i) { + if(sdf(mp)<0.){hit=true;break;} + m=lessThanEqual(sd.xyz,min(sd.yzx,sd.zxy)); + sd+=vec3(m)*dd; + mp+=ivec3(vec3(m))*rs; + } + vec3 n=vec3(m)*-rs; + float t=distance(mp,(cam)); + vec3 h = cam+dir*t; + #endif + + float daynight = cos(fGlobalTime*.5)*.5+.5; + daynight = smoothstep(0,1,daynight); + daynight = smoothstep(0,1,daynight); + daynight = smoothstep(0,1,daynight); + + vec3 sky = vec3(196,225,255)/255.; + sky *= mix(vec3(.05,.1,.15),vec3(1),daynight); + float cloudDist = (20.-cam.y)/dir.y; + vec2 cloudPos = cam.xz + cloudDist*dir.xz; + cloudPos *= .003; + cloudPos=floor(cloudPos*64.)/64.; + + vec3 albedo = vec3(.5,1,.5); + albedo.r+=texture(texNoise,h.xz*.005).r; + vec2 uv; + if(m.x) { uv = h.yz; } + if(m.y) { uv = h.xz; } + if(m.z) { uv = h.xy; } + uv=fract(uv); + if((m.x || m.z) && uv.y < .8) { + albedo = vec3(.7,.6,.5); + } + + // dirt texture + float noise = texture(texNoise,floor(8.*fract(uv))/8.).r; + albedo *= clamp(noise+.6,0,1); + + float waterHeight = -30.2; + waterHeight += sin(fGlobalTime*.1)*5; + + // snow + if (h.y > waterHeight && m.y) + albedo = clamp(.7+vec3(noise),0,1); + + // sand + /*albedo = mix( + albedo, + mix(vec3(1,.9,.8),vec3(.7,.6,.5),noise), + step(.99,cos(fGlobalTime*.1)*.5+.5+h.y/-100) + );*/ + + float fog = pow(.99,max(t-50.,.0)); + float fog2 = pow(.999,cloudDist); + + float waterAlpha = 0; + if (h.y < waterHeight) + waterAlpha = .7; + + // lava + if (texture(texNoise,floor(h.xz+100)*.003).r < .1) + albedo = mix(vec3(1,.3,0),vec3(1,1,0),noise*1.5); + + if (!hit) { + if(cloudDist>0.) { + vec3 cloudcolor = step(.3,texture(texNoise,cloudPos).rrr); + cloudcolor *= mix(.4,1.,daynight); + sky = mix(sky,vec3(1),fog2*cloudcolor); + } + return sky; + } + + vec3 color = (n.y*.25+.75)*albedo; + color = mix(color,vec3(.1,.2,.6),waterAlpha); + color *= mix(vec3(.2,.3,.4),vec3(1),daynight); + return mix(sky,color,fog); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 cam = vec3(0,-5,0); + vec3 dir = normalize(vec3(uv,1)); + + cam.z += fGlobalTime*40.; + dir.yz *= rot(.2); + dir.xy *= rot(sin(fGlobalTime)*.04); + dir.xz *= rot(cos(fGlobalTime)*-.04); + + dir.xz *= rot(137.*cos(floor(fGlobalTime*.6))); + + out_color.rgb = trace(cam,dir); + //out_color.rgb = step(.5+texture(texNoise,gl_FragCoord.xy*.125).r-.25,vec3(dot(out_color.rgb,vec3(.2126,.7212,.0722)))); + + // gray screen + //out_color.rgb = vec3(sqrt(.5)); +} \ No newline at end of file diff --git a/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_z0rg.glsl b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_z0rg.glsl new file mode 100644 index 000000000..4a28f0b1f --- /dev/null +++ b/shader_file_sources/2021_06_26_shader_jam_livecode/grabber_inerciaroyale_z0rg.glsl @@ -0,0 +1,161 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define sat(a) clamp(a, 0.,1.) +mat2 r2d(float a) { float c= cos(a), s = sin(a); return mat2(c,-s,s,c);} + +float _cir(vec2 p, float r) +{ + return length(p)-r; +} + +float _sph(vec3 p, float r) +{ + return length(p)-r; +} + +vec3 getCam(vec2 uv, vec3 rd) +{ + vec3 r = normalize(cross(rd, vec3(0.,1.,0.))); + vec3 u = normalize(cross(rd, r)); + return normalize(rd+(r*uv.x+u*uv.y)*5.*(.8+.5*sin(fGlobalTime))); +} + +vec2 _min(vec2 a, vec2 b) +{ + if (a.x < b.x) + return a; + return b; +} + +float _cube(vec3 p, vec3 s) +{ + vec3 l = abs(p)-s; + //l = abs(l)-s*.25; + return max(l.x, max(l.y, l.z)); +} +#define FFT(a) (texture(texFFT, a).x*100.) + +vec2 map(vec3 p) +{ + vec2 acc= vec2(1000.,-1.); + + float a = atan(p.y,p.x)+fGlobalTime; + acc = _min(acc,vec2(_sph(p, .5+.01*sin(a*5.)), 0.)); + p.xy *= r2d(.5); + for (int i = 0; i < 15; ++i) + { + float r = 2.5; + float fi = float(i); + float orbit = fi+fGlobalTime*.5; + vec3 pos = p + vec3(sin(orbit),0.,cos(orbit))*mix(1.5,2.5,sat(sin(fi*5.)*.5+.5)); + pos.xy *= r2d(fi+fGlobalTime); + pos.xz *= r2d(fi+fGlobalTime*(1.+fi*.1)); + vec2 cube = vec2(_cube(pos, vec3(mix(0.025,0.1, sat(sin(fi*10.)*.5+.5)))),1.); + acc = _min(acc, cube); + } + + vec3 p2 = p; + vec3 rep = vec3(2.); + vec3 idx = floor(p2+rep*.5)/rep; + p2 = mod(p2+rep*.5, rep)-rep*.5; + p2.x += sin(idx.y*10.+fGlobalTime); + float beat = .3; + acc = _min(acc, vec2(_sph(p2, .1*mod(fGlobalTime, beat)/beat),2.)); + + return acc; +} +vec3 accCol; +vec3 trace(vec3 ro, vec3 rd, int steps) +{ + vec3 p = ro; + for (int i = 0; i < steps; ++i) + { + vec2 res = map(p); + if (res.x < 0.01) + return vec3(res.x, distance(ro, p), res.y); + + vec3 rgb = mix(vec3(1.,.5,.25).zyx, vec3(1.,.5,.25), sat(sin(length(p)*5.+fGlobalTime))); + rgb *= 1.-sat(_sph(p, 15.)*100.); + + accCol += 0.1*rgb*(1.-sat(res.x/1.15)); + p+= rd*res.x; + } + return vec3(-1.); +} + +vec3 getNorm(vec3 p, float d) +{ + vec2 e = vec2(0.01,0.); + return normalize(vec3(d)-vec3(map(p-e.xyy).x, map(p-e.yxy).x, map(p-e.yyx).x)); +} + +vec3 rdr(vec2 uv) +{ + vec3 col = vec3(.1,.15,.3); + col += vec3(.5,.3,.2)*(1.-sat(_cir((uv+vec2(.25))*3., .2))); + col += vec3(.5,.3,.2)*(1.-sat(_cir((uv+vec2(.25,-.25))*3., .2))); + col += vec3(.5,.3,.2).zxy*(1.-sat(_cir((uv+vec2(-.25,-.25))*2., .3))); + + col *= sat(length(uv*2.)+.5); + float rad = 5.0+sin(fGlobalTime*16.)*sat(sin(fGlobalTime*.1)*20.); + float t = fGlobalTime*.25; + vec3 ro = vec3(sin(t)*rad,-2.,cos(t)*rad); + vec3 ta = vec3(0.,0.,5.*sin(fGlobalTime*.25)); + vec3 rd = normalize(ta-ro); + ro.xz *= r2d(sin(fGlobalTime)); + + rd = getCam(uv, rd); + + rd.xz *= r2d(sin(fGlobalTime)); + accCol = vec3(0.); + vec3 res = trace(ro, rd, 64); + if (res.y > 0.) + { + vec3 p = ro+rd*res.y; + vec3 n = getNorm(p, res.x); + col = n*.5+.5; + vec3 lpos = vec3(5.,-5.,1.); + vec3 ldir = lpos-p; + vec3 h = normalize(rd+ldir); + col = vec3(.1,.15,.3); + + float stp = 0.1; + float dt = dot(h, n); + dt = floor(dt/stp)*stp; + col += vec3(.5,.3,.2)*pow(sat(dt),1.); + } + col += accCol; + + return col; +} + +void main(void) +{ + vec2 uv = (gl_FragCoord.xy-vec2(.5)*v2Resolution.xy)/v2Resolution.xx; + + vec3 col = rdr(uv); + col = pow(col, vec3(2.45)); + col = mix(col, texture(texPreviousFrame, gl_FragCoord.xy/v2Resolution.xy).xyz,.85*sat(sin(uv.y*40.+fGlobalTime)+.75)); + col = mix(col, col.zxy, sat(sin(uv.x*10.+fGlobalTime))); + + col = mix(col, col.xxx, 1.-sat((sin(uv.y*10.+fGlobalTime)+.75)*400.)); + col *= pow(FFT(.2),.15); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_EmmazingGoose.glsl b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_EmmazingGoose.glsl new file mode 100644 index 000000000..897980b6f --- /dev/null +++ b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_EmmazingGoose.glsl @@ -0,0 +1,397 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +vec2 rCW(vec2 p, float a) +{ + mat2 m = mat2(cos(a), -sin(a), sin(a), cos(a)); + return p * m; +} + +float sTI( in vec2 p, in vec2 q ) +{ + p.x = abs(p.x); + vec2 a = p - q*clamp( dot(p,q)/dot(q,q), 0.0, 1.0 ); + vec2 b = p - q*vec2( clamp( p.x/q.x, 0.0, 1.0 ), 1.0 ); + float k = sign( q.y ); + float d = min(dot( a, a ),dot(b, b)); + float s = max( k*(p.x*q.y-p.y*q.x),k*(p.y-q.y) ); + return sqrt(d)*sign(s); +} + +float cro(in vec2 a, in vec2 b ) { return a.x*b.y - a.y*b.x; } + +float sUC( in vec2 p, in float ra, in float rb, in float h ) +{ + p.x = abs(p.x); + + float b = (ra-rb)/h; + vec2 c = vec2(sqrt(1.0-b*b),b); + float k = cro(c,p); + float m = dot(c,p); + float n = dot(p,p); + + if( k < 0.0 ) return sqrt(n) - ra; + else if( k > c.x*h ) return sqrt(n+h*h-2.0*h*p.y) - rb; + return m - ra; +} + +#define PI acos(-1.) +float sdCircle2 (vec2 p, float radius) +{ + return length(p) - radius; +} +mat2 rot2D(float r) +{ + float c = cos(r), s = sin(r); + return mat2(c, s, -s, c); +} + +float pumpkin2D(vec2 p, float radius, float vertices, float curvature) +{ + float angle = atan(p.x, -p.y) / (PI*2.) * vertices; + return length(p) -radius +smoothstep(0., 1., abs(fract(angle)-0.5)) *radius *curvature; +} + +vec2 translate(vec2 p, vec2 t) { return p - t; } + +void diff(inout vec2 d1, in vec2 d2) { + if (-d2.x > d1.x) { + d1.x = -d2.x; + d1.y = d2.y; + } +} + +void add(inout vec2 d1, in vec2 d2) { + if (d2.x < d1.x) d1 = d2; +} + +void intersection(inout vec2 d1, in vec2 d2) { + if (d1.x < d2.x) d1 = d2; +} + + +float smoothMerge(float d1, float d2, float k) +{ + float h = clamp(0.5 + 0.5*(d2 - d1)/k, 0.0, 1.0); + return mix(d2, d1, h) - k * h * (1.0-h); +} + +float merge(float d1, float d2) +{ + return min(d1, d2); +} + +float mergeExclude(float d1, float d2) +{ + return min(max(-d1, d2), max(-d2, d1)); +} + +float substract(float d1, float d2) +{ + return max(-d1, d2); +} + +float intersect(float d1, float d2) +{ + return max(d1, d2); +} + +float repeat(float coord, float spacing) { + return mod(coord, spacing) - spacing*0.5; +} + + +float fillMask(float distanceChange, float dist) { + return smoothstep(distanceChange, -distanceChange, dist); +} + +float innerMask(float distanceChange, float dist, float width) { + return smoothstep(distanceChange,-distanceChange,dist+width); +} + +float outerMask(float distanceChange, float dist, float width) { + return smoothstep(distanceChange,-distanceChange,dist-width); +} + +float rand(vec2 co){ + return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453); +} + +float sRLS(vec2 uv, vec2 a, vec2 b, float lineWidth) +{ + vec2 pa = uv-a, ba = b-a; + float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 ); + return length( pa - ba*h ) - lineWidth*0.5; +} +float sel( vec2 p, in vec2 ab ) +{ + p = abs( p ); if( p.x > p.y ){ p=p.yx; ab=ab.yx; } + + float l = ab.y*ab.y - ab.x*ab.x; + + float m = ab.x*p.x/l; + float n = ab.y*p.y/l; + float m2 = m*m; + float n2 = n*n; + + float c = (m2 + n2 - 1.0)/3.0; + float c3 = c*c*c; + + float q = c3 + m2*n2*2.0; + float d = c3 + m2*n2; + float g = m + m*n2; + + float co; + + if( d<0.0 ) + { + float h = acos(q/c3)/3.0; + float s = cos(h); + float t = sin(h)*sqrt(3.0); + float rx = sqrt( -c*(s + t + 2.0) + m2 ); + float ry = sqrt( -c*(s - t + 2.0) + m2 ); + co = ( ry + sign(l)*rx + abs(g)/(rx*ry) - m)/2.0; + } + else + { + float h = 2.0*m*n*sqrt( d ); + float s = sign(q+h)*pow( abs(q+h), 1.0/3.0 ); + float u = sign(q-h)*pow( abs(q-h), 1.0/3.0 ); + float rx = -s - u - c*4.0 + 2.0*m2; + float ry = (s - u)*sqrt(3.0); + float rm = sqrt( rx*rx + ry*ry ); + co = (ry/sqrt(rm-rx) + 2.0*g/rm - m)/2.0; + } + + float si = sqrt( 1.0 - co*co ); + + vec2 r = ab * vec2(co,si); + + return length(r-p) * sign(p.y-r.y); +} + +float blurMask(float distanceChange, float dist, float blurAmount) { + float blurTotal = blurAmount*.01; + return smoothstep(blurTotal+distanceChange, -distanceChange, dist); +} + +float dot2( in vec2 v ) { return dot(v,v); } + +float sdHeart( in vec2 p ) +{ + p.x = abs(p.x); + + if( p.y+p.x>1.0 ) + return sqrt(dot2(p-vec2(0.25,0.75))) - sqrt(2.0)/4.0; + return sqrt(min(dot2(p-vec2(0.00,1.00)), + dot2(p-0.5*max(p.x+p.y,0.0)))) * sign(p.x-p.y); +} + + +void draw(vec2 uv, float dist, vec4 mixColor, inout vec4 out_color) +{ + float distanceChange = fwidth(dist) * 0.5; + out_color = mix(out_color,vec4(0,0,0,1),outerMask(distanceChange, dist,0.01)); + out_color = mix(out_color, mixColor, fillMask(distanceChange, dist)); +} + + + +void drawGlow(vec2 uv, float dist, vec4 mixColor, inout vec4 out_color) +{ + float distanceChange = fwidth(dist) * 0.5; + out_color = mix(out_color, mixColor,blurMask(distanceChange, dist,5.)); + out_color = mix(out_color, mixColor + .5, fillMask(distanceChange, dist)); +} + +void sceneDistance(vec2 p, inout vec4 out_color) +{ + vec2 pp = p; + p = rCW(p, sin(fGlobalTime*6.)/8.); + p *= clamp(sin(fGlobalTime)*2., 0.8, 1.0); + + float angleStep1 = 360.0/10.; + for (int i=0; i<15; i++) { + float theta = float(i) * -angleStep1 + (fGlobalTime*50.); + float Px = -0.065 + (0.55 * cos(radians(theta)) + (0.25 * abs(sin(fGlobalTime+(float(i)*100.)))) ); + float Py = -0.015 + (0.15 * sin(radians(theta)) + (0.25 * abs(sin(fGlobalTime+(float(i)*100.)))) ); + float c1 = sdCircle2(translate(p, vec2(Px, Py)), 0.05 - (0.05 * abs(sin(fGlobalTime+(float(i)*100.)))) ); + drawGlow(p, c1,vec4(18./255.,112./255.,254./255.,1.), out_color); + } + + + + vec2 starP = abs(p.xy); + starP.x = repeat(starP.x, 0.85); + float stars = pumpkin2D(starP * rot2D(abs(sin(fGlobalTime)) * PI), 0.15 - (0.025 * abs(sin(fGlobalTime))) , 5., -2.5); + draw(starP, stars,vec4(1., 1.,0.,1), out_color); + + + vec2 bodyP = translate(pp, vec2(0,.3)); + bodyP *= 1.5; + bodyP = rCW(bodyP, .5 *cos(fGlobalTime*6.)/10.); + + bodyP.x += .25 * sin(fGlobalTime); + + + vec2 wb = bodyP; + wb = rCW(wb, .2 * cos(fGlobalTime *2.)); + float wingb = sUC(rCW(translate(wb, vec2(0.3, -.4)), (PI/2.)*2.9 + (.2*cos(fGlobalTime * 5.))), .05, .1, .2); + draw(p, wingb, vec4(115./255.), out_color); + + vec2 wgb = bodyP; + wgb = rCW(wgb, .2 * cos(fGlobalTime *2.)); + float wingbG = sUC(rCW(translate(wgb, vec2(0.4, -.4)), (PI/2.)*2.9 + (.2*cos(fGlobalTime * 5.))), .01, .01, .1); + drawGlow(p, wingbG, vec4(0,115./255.,0,1), out_color); + + + float neck = sUC(translate(bodyP, vec2(0,-.3)), .075, .04, .2); + draw(p, neck, vec4(105./255.), out_color); + + vec2 lp1 = translate(bodyP, vec2(0.1, 0.)); + lp1.x += .05 * cos(fGlobalTime*5.); + float leg1 = sUC(rCW(translate(lp1, vec2(0,-.85)), -(PI/2.)*.1), .04, .02, .2); + draw(p, leg1, vec4(15./255.), out_color); + + + float leg4 = sUC(rCW(translate(lp1, vec2(0,-.85)), -(PI/2.)*-1.2 -(.2*sin(fGlobalTime*5.))), .04, .02, .1); + draw(p, leg4, vec4(15./255.), out_color); + + vec2 lp2 = bodyP; + lp2.x -= .05 * sin(fGlobalTime*5.); + float leg2 = sUC(rCW(translate(lp2, vec2(-0.05,-.85)), (PI/2.)*.1), .04, .02, .2); + draw(p, leg2, vec4(15./255.), out_color); + + float leg3 = sUC(rCW(translate(lp2, vec2(-0.05,-.85)), (PI/2.)*1.2 +(.2*sin(fGlobalTime*5.))), .04, .02, .1); + draw(p, leg3, vec4(15./255.), out_color); + + float body = sel(translate(bodyP, vec2(0,-.5)), vec2(.25, .2)); + draw(p, body, vec4(105./255.), out_color); + + vec2 wggp = bodyP; + wggp = rCW(wggp, .2 * sin(fGlobalTime)); + float winggg = sUC(rCW(translate(wggp, vec2(0.4, -.4)), (PI/2.)*2.9 + (.2*cos(fGlobalTime * 5.))), .01, .01, .2); + drawGlow(p, winggg, vec4(0,115./255.,0.,1.), out_color); + + vec2 wp = bodyP; + wp = rCW(wp, .2 * sin(fGlobalTime)); + float wing = sUC(rCW(translate(wp, vec2(0.3, -.4)), (PI/2.)*2.9 + (.2*cos(fGlobalTime * 5.))), .05, .1, .2); + draw(p, wing, vec4(115./255.), out_color); + + + vec2 headP = bodyP; + headP = rCW(headP, .2 * cos(fGlobalTime *5.)); + float beak = sUC(rCW(translate(headP, vec2(0.3, -.03)), (PI/2.)*3.), .05, .1, .2); + draw(p, beak, vec4(25./255.), out_color); + + float head = sdCircle2(headP, .2); + draw(p, head, vec4(105./255.), out_color); + + vec2 eyeP = translate(headP, vec2(0.1, 0.)); + float eye = sdCircle2(eyeP, .07); + draw(p, eye, vec4(245./255.), out_color); + + vec2 pupilP = translate(eyeP, vec2(0.03, 0.)); + float pupil = sdCircle2(pupilP, .02); + draw(p, pupil, vec4(25./255.), out_color); + + vec2 pupilPP = translate(eyeP, vec2(0.04, 0.)); + float pupill = sdCircle2(pupilPP, .01); + draw(p, pupill, vec4(255./255.), out_color); + + vec2 ebp4 = translate(headP, vec2(0.03, 0.11 - (0.03 * sin(fGlobalTime *3.)) )); + ebp4 *= rot2D(.25 * PI); + ebp4.x =ebp4.x*-sin(ebp4.x)*5.; + float i = sRLS(ebp4, vec2(0.005,0.005), vec2(-0.003,-0.003), 0.004); + draw(p, i, vec4(25./255.), out_color); + + + float heart = sdHeart(translate(headP, vec2(0.,-0.15))*13.); + drawGlow(p, heart,vec4(255./255., 0,0,1), out_color); + + + float angleStep = 360.0/10.; + for (int i=0; i<10; i++) { + float theta = float(i) * angleStep + (fGlobalTime*50.); + float Px = -0.065 + (0.35 * cos(radians(theta)) + (0.15 * abs(sin(fGlobalTime+(float(i)*100.)))) ); + float Py = -0.05 + (0.35 * sin(radians(theta)) + (0.15 * abs(sin(fGlobalTime+(float(i)*100.)))) ); + float c1 = sdCircle2(translate(p, vec2(Px, Py)), 0.05 - (0.05 * abs(sin(fGlobalTime+(float(i)*100.)))) ); + drawGlow(p, c1,vec4(218./255.,112./255.,214./255.,1.), out_color); + } +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = vec4(1.,0.94, 0.67, 1.0); + sceneDistance(uv, out_color); + + //out_color = f + t; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Exca.glsl b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Exca.glsl new file mode 100644 index 000000000..72a051cc6 --- /dev/null +++ b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Exca.glsl @@ -0,0 +1,321 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float fft = 0.0; +float fftS = 0.0; +float fftI = 0.0; +float beat = 0.0; +float beatStep = 0.0; +vec3 cam = vec3(0.0); +vec3 camdir = vec3(0.0); +float bm=0.0; + +vec3 rotate( vec3 p, float x, float y, float z) +{ + mat3 rotx = mat3( 1.0, 0.0, 0.0, 0.0, cos(x), -sin(x), 0.0, sin(x), cos(x)); + mat3 roty = mat3( cos(y), 0.0, sin(y), 0.0, 1.0, 0.0, -sin(y), 0.0, cos(y)); + mat3 rotz = mat3( cos(z), -sin(z), 0.0, sin(z), cos(z), 0.0, 0.0, 0.0, 1.0); + return rotx*roty*rotz*p; +} + + +vec3 getcam(vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize(target-cam); + vec3 right = normalize(cross(vec3(0,1,0), forward)); + vec3 up = normalize(cross(forward, right)); + + return normalize( forward*fov + right *uv.x + up*uv.y); +} + +float sphere(vec3 p, float r) +{ + return length(p)-r; +} + +float roundcube( vec3 p, vec3 b, float r) +{ + vec3 d = abs(p)-b; + return min(max(d.x, max(d.y, d.z)), 0.0)+length(max(d,0.0))-r; +} + + +float ground( vec3 p, float h) +{ + return p.y - h; +} + +float U(float a, float b){ + return min(a,b); +} + +vec3 map( vec3 p) +{ + + vec3 cp = cam+camdir*5.0; + + vec3 rp = rotate(p-cp,fftI*3.,fftI*1.0,0.0); + rp*= 1.0+beatStep*smoothstep(0.0,0.015,fftS); + float s = 9999.0; + if(bm< 4.0) + { + s = roundcube(rotate(rp, smoothstep(0.0, 0.25,beatStep)*3.14,0.0, 0.0),vec3(1.0),0.2); + s = U(s,roundcube(rp-vec3(2.5, 0.0, 0.0),vec3(0.5),0.2)); + s = U(s,roundcube(rp+vec3(2.5, 0.0, 0.0),vec3(0.5),0.2)); + s = U(s,roundcube(rp-vec3(0.0, 0.0, 2.5),vec3(0.5),0.2)); + s = U(s,roundcube(rp+vec3(0.0, 0.0, 2.5),vec3(0.5),0.2)); + } + else + { + s = sphere(rotate(rp, smoothstep(0.0, 0.25,beatStep)*3.14,0.0, 0.0),1.5); + s = U(s,sphere(rp-vec3(2.5, 0.0, 0.0),0.5+fftS*5.0)); + s = U(s,sphere(rp+vec3(2.5, 0.0, 0.0),0.5+fftS*5.0)); + s = U(s,sphere(rp-vec3(0.0, 0.0, 2.5),0.5+fftS*5.0)); + s = U(s,sphere(rp+vec3(0.0, 0.0, 2.5),0.5+fftS*5.0)); + } + + p.z-=sin(fftI*0.35)*50.0; + p.x-=cos(-fftI*0.15)*50.0; + + + float h = texture( texNoise, p.xz*0.025+fftI*0.1).r*2.0+texture( texNoise,0.2*fftI+ p.xz*0.025+0.78).r*0.75; + float hLrg = smoothstep( 0.1, 0.5, texture( texNoise, p.xz*0.01).r); + float hMnt = smoothstep(0.35, 0.5,texture( texNoise, p.xz*0.01).r)*255.*fftS*10.; + + h += hLrg + hMnt; + + float ho = h; + h = max(0.6, h); + + float g = ground(p, h); + return vec3(U(s,g),h,ho); +} + +vec3 march( vec3 cam, vec3 rd, out vec3 p, out float t, out int steps) +{ + t = 1.5; + for(int i = 0; i < 100; i++) + { + steps = i; + p = cam + rd*t; + vec3 r = map(p); + t += r.x*0.75; + if(r.x < 0.01) return r; + if(t > 50.0) { + t = 50.0; + return vec3(-1.0); + } + } + return vec3(-1.0); +} + +vec3 normal( vec3 p ) +{ + vec3 c = map(p); + vec2 e = vec2(0.1, 0.0); + return normalize(vec3( + map(p+e.xyy).x, + map(p+e.yxy).x, + map(p+e.yyx).x + )-c.x); +} + +float light( vec3 p, vec3 l, vec3 n) +{ + return max(0.0, dot( n, normalize(l-p))); +} + +float time; + +vec3 calc(vec2 uv ) +{ + vec3 bgCol = vec3( 0.5, 0.5, 1.05); + vec3 sun = vec3( 10,10,10); + + vec3 col = vec3(0.0); + + time = fGlobalTime*0.25; + + cam = vec3( sin(time) ,12.0+cos(time)*5.5,2); + vec3 target = vec3(0,cam.y-(3.25+sin(time)*3.25),0); + float fov = 0.6+sin(time)*0.3; + vec3 rd = getcam(cam, target, uv, fov); + + camdir = normalize(target - cam); + + vec3 p = cam; + float t = 0.0; + int steps = 0; + vec3 mat = march( cam, rd, p, t, steps); + + vec3 n = normal(p); + bgCol *=0.5+ min(0.05,fftS) * abs( smoothstep(0.5,1.0,sin( t*1.2+fftI*50. )))*150.8*min(1.0,p.y) * smoothstep(80., 30., t)*0.8; + + if(mat.y < -0.5){ + //bg + col = bgCol; + } + else if(mat.y < 50.5) + { + + float id = floor(p.x)+floor(p.z); + + if(mat.z < 0.6) + { + col =vec3(0.2, 0.25,0.85)*(mat.z); + } + else if( mat.z < 1.2) + { + col = mix( vec3( 0.2, 0.4,0.3), vec3( 0.4,0.4,0.3), (mat.z-0.6)/0.6); + } + else + col = mix( vec3( 0.4,0.4,0.3), vec3(1.0), (mat.z-1.2)/0.6); + + if(t < 1.0) + { + col = mix( vec3( 1.0, 0.0, 0.0)*col, col, smoothstep(3.0, 5.5, t)); + } + + col = col*light(p, sun, n); + + } + + col =mix(col, bgCol*0.4, smoothstep( 5.0, 50.0, t)); + + col*=2.0; + return col; +} +vec2 barrel( vec2 uv, float k) +{ + float rd = length(uv); + float ru = rd*(1.0+k*rd*rd); + uv/=rd; + uv*=ru; + return uv; +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 ouv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + fft = texture(texFFT, ouv.x).r; + fftS = texture(texFFTSmoothed,0.2).r; + fftI = texture(texFFTIntegrated, 0.1).r; + beat = floor(fGlobalTime*1.45); + beatStep = fract( fGlobalTime*2.0); + bm = mod(beat/4.0, 8.0); + + + vec3 col = calc(uv); + + col += calc( barrel(uv*1.2,10.5))*min(1.0,smoothstep(0.0, 0.05,fftS)*2.0); + col += calc( barrel(uv*1.5,-fftS*1024.0))*min(1.0,smoothstep(0.0, 0.02,fftS)*5.0); + + + vec3 previous = texture(texPreviousFrame, ouv).rgb; + + float rot1 = sin( fftI*2.5); + float rot2 = sin( fftI*0.65); + + + vec2 cuv = ouv - 0.5; + + vec3 previousR = texture(texPreviousFrame, 0.5+rotate( vec3(cuv,0.0), 0.0, 0.0,rot1).xy).rgb; + vec3 previousRR = texture(texPreviousFrame, 0.5+rotate( vec3(cuv,0.0), 0.0, 0.0,rot2).xy).rgb; + + col*=0.95; + col=mix(col, smoothstep(vec3(0.0), vec3(1.0),col), beatStep); + //col += (previousR+previousRR)*smoothstep(0.0, 1.0,15.*fftS)*0.25; + + col = clamp( col, vec3(0.0), vec3(1.0)); + + if(bm < 4.0) + { + col = vec3(1.0)-col; + col.rgb = col.gbr; + } + + + out_color = vec4(col+ previous*0.0, 1.0); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Tater.glsl b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Tater.glsl new file mode 100644 index 000000000..c89111c3e --- /dev/null +++ b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_Tater.glsl @@ -0,0 +1,209 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define STEPS 164.0 +#define MDIST 200.0 +#define time fGlobalTime +#define pmod(p,x) (mod(p,x)-(x)*0.5) +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define pi 3.1415926535 +float g1 = 0.0; +float anim(){ + return fract(time*0.15); +} +float smin(float a, float b, float k){ + float h = max(0,k-abs(a-b)); + return min(a,b)-h*h*0.25/k; +} + +float smax(float a, float b, float k){ + float h = max(0,k-abs(a-b)); + return max(a,b)-h*h*0.25/k; +} + +float gy(vec3 p){ + return dot(sin(p.xyz),cos(p.yzx)); +} +float box(vec3 p, vec3 s){ + vec3 d = abs(p)-s; + return max(d.x,max(d.y,d.z)); +} +vec2 map(vec3 p){ + vec3 po = p; + float streamfft = 1.4; + float t = mod(time,300.0); + vec2 a = vec2(0); + vec2 b = vec2(1); + //bottom plane gyroid + b.x = gy(p*2.0+(t*2.0+5*texture(texFFTIntegrated,0.2).x)*vec3(1,-1,0)); + b.x*=0.55; + //bottom plane + a.x = p.y+1.0-sin(p.x*2.5+t)*0.15-sin(p.z*2.5+t)*0.05; + + a.x = max(b.x,a.x); + + float voff = texture(texFFTSmoothed,0.1).x*streamfft; + voff=clamp(voff,0.0,12.0/500.0); + //ball gyriod + float ballsize = 1.5; + if(anim()>0.6){ + //p.xz = pmod(p.xz,30.0); + ballsize = 3.0+voff*500.0; + + } + ballsize = clamp(ballsize,1.5,15.0); + b.x = abs(abs(gy(-p*3.0+t+8*streamfft*texture(texFFTIntegrated,0.5).x))-0.6)-0.2; + b.x*=0.4; + //ball + + //p.y = pmod(p.y+sin(t)*3.0,10.0); + p.xz*=rot(t); + //p.yz*=rot(t); + float ballcut = box(p-vec3(0,voff*125.0,0),vec3(ballsize)); + p = po; + ballcut = mix(ballcut, length(p-vec3(0,voff*125.0,0))-ballsize,sin(time*2.0)*0.5+0.5); + b.x = smax(b.x,ballcut,0.4); + p = po; + + a = (a.x0.5){ + ro = vec3(0,100,0); + uv.xy*=rot(time); + rd = normalize(vec3(uv,1.0)); + rd.yz*=rot(-pi/2.0); + + } +else{ + rd.yz*=rot(-0.25); + ro.xz*=rot(t*0.4); + rd.xz*=rot(t*0.4); +} + + + + + float shad,dO; + vec2 d; + vec3 p = ro; + bool hit = false; + for(float i = 0.0; i MDIST){ + break; + } + if(i == STEPS-1.0){ + hit = true; + } + } + vec3 al = vec3(0); + vec3 n = norm(p); + vec3 ld = normalize(vec3(1)); + vec3 h = normalize(ld-rd); + float spec = pow(max(dot(n,h),0.0),20.0); + + + if(hit){ + if(d.y == 0.0){ + al = vec3(0.1,0.3,0.9); + col+=spec*0.2; + shad = 0.8-shad*4.0; + } + if(d.y == 1.0){ + al = vec3(0.9,0.1,0.1); + col+=spec*0.3; + shad = 0.7-shad*4.0; + } + if(d.y == 2.0){ + al = vec3(0.7,0.7,0.9)*0.6; + shad = 1.0-shad; + + } + + col += vec3(1.0-shad)*al; + + col = pow(col,vec3(0.8)); + } + col+=g1*vec3(0.3,0.3,0.8)*0.3; + col = mix(clamp(col,0.0,1.0),vec3(0.4,0.0,0.0),(dO/MDIST)); + //uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + //col+=texture(texPreviousFrame,uv*0.5+0.5).rgb*0.3; + out_color = vec4(col,0.0); +} diff --git a/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_cosamentale.glsl b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_cosamentale.glsl new file mode 100644 index 000000000..51ae18e68 --- /dev/null +++ b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_cosamentale.glsl @@ -0,0 +1,135 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float hs(vec2 uv){return fract(sin(dot(uv,vec2(45.,95.)))*7845.236);} +float rd(float t){return fract(sin(dot(floor(t),45.3))*7845.236);} +float no(float t){return mix(rd(t), rd(t+1.),smoothstep(0.,1.,fract(t)));} +float box(vec3 p, vec3 b){vec3 q = abs(p)-b; + return length(max(q,vec3(0.)))+min(0.,max(q.x,max(q.y,q.z)));} +float no(vec2 p){vec2 f = floor(p); p = smoothstep(0.,1.,fract(p)); + vec2 se = vec2(45.,98.);vec2 v1 = dot(f,se)+vec2(0.,se.y); + vec2 v2 = mix(fract(sin(v1)*7845.236),fract(sin(v1+se.x)*7845.236),p.x); + return mix(v2.x,v2.y,p.y);} + float it(vec2 t){float r = 0.; float a = 0.5;for(int i = 0 ; i<5 ; i++){ + r += no(t/a)*a;a*=0.5;}return r;} + float it(float t){float r = 0.; float a = 0.5;for(int i = 0 ; i<5 ; i++){ + r += no(t/a)*a;a*=0.5;}return r;} +float li(vec2 uv,vec2 a, vec2 b){vec2 ua = uv-a; vec2 ba = b-a; + float h = clamp(dot(ua,ba)/dot(ba,ba),0.,1.); + return length(ua-ba*h);} +mat2 rot(float t){float c = cos(t); float s = sin(t);return mat2(c,-s,s,c);} +float ev(vec3 r,float t){ + //float t1 = texture(texFFTSmoothed,0.2).x*5000.; + r= normalize(r*vec3(1.,0.1,1.)); + float d1 = distance(0.5,fract(r.x*5.)); + float v1 = smoothstep(0.05,0.,d1); + float d2 = distance(0.5,fract(r.z*5.)); + float v2 = smoothstep(0.05+t,0.,d2); + float v4 = smoothstep(0.5+t,0.,d1); + float v5 = smoothstep(0.5+t,0.,d2); + + float v3 = mix(v1,v2,smoothstep(0.4,0.6,abs(r.x)))*fract(time*3.); + v3 += mix(v4,v5,smoothstep(0.4,0.6,abs(r.x)))*fract(time*3.)*0.3; + float tb = 5.*fract(time*3.); + float c1 = li(fract(r.xy*vec2(7.,14.)),vec2(0.5),vec2(0.5+r.xy*vec2(0.7,1.4)*tb)); + float c2 = li(fract(r.zy*vec2(7.,14.)),vec2(0.5),vec2(0.5+r.zy*vec2(0.7,1.4)*tb)); + float l1 = smoothstep(0.025+t,0.,c1); + float l2 = smoothstep(0.025+t,0.,c2); + float l4 = smoothstep(0.05+t,0.,c1); + float l5 = smoothstep(0.05+t,0.,c2); + float l3 = mix(l1,l2,smoothstep(0.4,0.6,abs(r.x))); + l3 += mix(l4,l5,smoothstep(0.4,0.6,abs(r.x)))*0.3; + v3 += l3; + v3 *= smoothstep(0.9,0.5,length(r.y)); + float vf = mix(v3 ,1.-v3,step(.5,fract(time*1.5))); + return vf;} + float ev2(vec3 r,float t){ + float b = sqrt(24.);float r1 = 0.;float t1 = fract(time*4.)+t; + for(float i = -0.5*b ; i <= 0.5*b ; i+= 1.) + for(float j = -0.5*b ; j <= 0.5*b ; j+= 1.){ + r1 += ev(r+vec3(i,0.,j)*0.02*t1,t1*0.1); + } + //float r1 = ev(r); + return r1/24.; + } + float smin(float a, float b, float t){float h = clamp(0.5+0.5*(b-a)/t,0.,1.); + return mix(b,a,h)-t*h*(1.-h);} + float smax(float a, float b, float t){float h = clamp(0.5-0.5*(b-a)/t,0.,1.); + return mix(b,a,h)+t*h*(1.-h);} + float z1; + float map(vec3 p){ + vec3 pb = p; + for( int i = 0 ; i < 5 ; i ++){ + p -=0.7; + p.xz *= rot(time); + p.yz *= rot(time*0.5); + p = abs(p); + } + float d1 = box(p,vec3(1.+fract(time*3.5))*0.4); + + z1 = d1; + float d2 = length(pb+vec3(sin(time*2.))*5.)-6.-sin(time); + float d3 = smax(d2,-d1,3.); + d1 -= (texture(texNoise,p.xz*0.1).x+texture(texNoise,p.yz*0.1).x+texture(texNoise,p.xy*0.1).x-fract(time*0.7))*0.8; + float d4 = min(d3,d1); + return d4;} + vec3 nor(vec3 p){vec2 e = vec2(0.01,0.);return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx)));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uc = uv; + uv -= 0.5; + uv *= 2.; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 r = normalize(vec3(uv+vec2((hs(uv)-0.5)*pow(length(uv.y),1.5)*pow(it(time*7.),1.8),0.),0.3+fract(time))); + vec3 p = vec3(0.,0.,-7.); + float t1 = it(time)*6.5*step(0.5,rd(time)); + r.xz *= rot(t1); + r.yz *= rot(sin(time*1.2)); + p.xz *= rot(t1); + p.yz *= rot(sin(time*1.2)); + float dd = 0.; + for(int i = 0 ; i < 64 ; i++){ + float d = map(p); + if(dd>25.){dd=25.;break;} + if(d<0.01){break;} + p += r*d; + dd += d; + } + float s = smoothstep(25.,5.,dd); + float m = smoothstep(0.1,0.,z1); + float s1 = ev2(r,0.); + vec3 n = nor(p); + float s3 = ev2(reflect(n,r),8.*m)*max(0.2,(1.-m)*0.6); + float ld = dot(n,-r); + float fr = pow(1.-ld,1.)*0.1; + s3 += fr; + float dao = 0.7; + float ao = mix(0.2,1.,pow(clamp(map(p+n*dao)/dao,0.,1.),0.8)); + s3 *= ao; + float s2 = mix(s1,s3,s); + float tr = step(0.5,rd(time*4.)); + vec3 c1 = mix(vec3(1.),3.*abs(1.-2.*fract(s2*0.5+0.3+tr*0.2+vec3(0.,-1./3.,1./3.)))-1.,0.15+tr*0.2)*s2; + //vec2 mv = vec2(no(uv*5.+vec2(time,-time)),no(uv*5.+59.236+vec2(-time,time)))-0.5; + // vec3 t2 = mix(texture(texPreviousFrame,uc+mv*0.1).xyz,c1,max(smoothstep(0.4,0.5,it(uv*0.7+time)),smoothstep(0.3,1.,fract(time)))); + out_color = vec4(c1,0.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_rimina.glsl b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_rimina.glsl new file mode 100644 index 000000000..206d8e383 --- /dev/null +++ b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_rimina.glsl @@ -0,0 +1,197 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.5).r; + +const float E = 0.001; +const float FAR = 60.0; +const int STEPS = 64; + +vec3 glow = vec3(0.0); + +int M = 0; + + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0); +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +// 3D noise function (IQ) +float noise(vec3 p){ + vec3 ip = floor(p); + p -= ip; + vec3 s = vec3(7.0,157.0,113.0); + vec4 h = vec4(0.0, s.yz, s.y+s.z)+dot(ip, s); + p = p*p*(3.0-2.0*p); + h = mix(fract(sin(h)*43758.5), fract(sin(h+s.x)*43758.5), p.x); + h.xy = mix(h.xz, h.yw, p.y); + return mix(h.x, h.y, p.z); +} + +float scene(vec3 p){ + vec3 pp = p; + + pp -= noise(p+fft)*0.9; + rot(pp.xy, time+fft*2.0); + + float tunnel = -box(pp, vec3(6.0, 6.0, FAR)); + + pp = p; + //pp.z = mod(pp.z-5.0, 10.0)+5.0; + for(int i = 0; i < 4; ++i){ + pp = abs(pp) - vec3(0.8, 1.0, 0.8); + rot(pp.xy, time); + rot(pp.xz, fft*10.0); + rot(pp.yz, fft + time*0.5); + } + + + pp -= noise(p)*0.5; + float a = box(pp, vec3(1.8, 2.0, 4.0)); + a = min(a, box(pp-vec3(2.0, 1.0, 0.0), vec3(4, 0.5, 0.2))); + + float b = sphere(pp, 1.5); + + vec3 g = vec3(0.2, 0.8, 0.8)*0.05/(abs(a)+0.01); + //g += vec3(0.2, 0.8, 0.8) * 0.01 / (abs(b)+0.01); + //g *= 0.5; + + a = max(abs(a), 0.6); + //b = max(abs(b), 0.3); + + if(tunnel < b/* && tunnel < a*/){ + M = 1; + float m = mod(p.z+time*4.0, 4.0)-2.0; + if(m > -1.0 && m > 1.0){ + g += vec3(1.0, 0.0, 0.5) * 0.1 / (abs(tunnel)+0.01); + g *= 0.5; + + tunnel = max(abs(tunnel), 0.5); + } + } + else{ + M = 0; + } + + glow += g; + + return min(tunnel, b); +} + +float march(vec3 ro, vec3 rd){ + float t = E; + //position + vec3 p = ro; + for(int i = 0; i < STEPS; ++i){ + float d = scene(p); + t += d; + p = ro + rd * t; + + if(d < E || t > FAR){ + break; + } + } + + + return t; +} + +vec3 normals(vec3 p){ + vec3 e = vec3(E, 0.0, 0.0); + return normalize(vec3( + scene(p+e.xyy) - scene(p-e.xyy), + scene(p+e.yxy) - scene(p-e.yxy), + scene(p+e.yyx) - scene(p-e.yyx) + )); +} + +vec3 shade(vec3 rd, vec3 p, vec3 n, vec3 ld){ + + vec3 col = vec3(0.9, 1.5, 1.3); + + if(M == 1){ + n = -n; + ld = -ld; + col = vec3(0.9, 0.0, 1.3); + } + + float l = max(dot(n, ld), 0.0); + float a = max(dot(reflect(ld, n), rd), 0.0); + float shine = 10.0; + float s = pow(a, shine); + + return l * col* 0.5 + s * (col+0.2) * 0.8; +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = -1.0 + 2.0*uv; + q.x *= v2Resolution.x / v2Resolution.y; + + //ray origin + vec3 ro = vec3(0.0, 5.0*sin(time*0.1), 15.0); + //look at + vec3 rt = vec3(0.0, -2.0, -1.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + //ray direction + vec3 rd = normalize(mat3(x, y, z) * vec3(q, radians(60.0+50.0*sin(time*0.2)))); + + vec3 ld = -rd; + + float t = march(ro, rd); + vec3 p = ro + rd*t; + + + vec3 col = vec3(0.0); + if(t < FAR){ + vec3 n = normals(p); + col = shade(rd, p, n, ld); + } + + col += glow*0.3; + + if(M != 0){ + col = vec3(col.r*0.3 + col.g * 0.59 + col.b*0.11); + } + // + //col = 1.0 - col; + + vec3 prev = texture(texPreviousFrame, uv).rgb; + //col = mix(col, prev, 0.8); + + col = smoothstep(0.1, 1.2, col); + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_sp4ghet.glsl b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_sp4ghet.glsl new file mode 100644 index 000000000..1f498f366 --- /dev/null +++ b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_sp4ghet.glsl @@ -0,0 +1,196 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define fft texFFT +#define fft_integrated texFFTIntegrated +#define time fGlobalTime + +#define saturate(x) clamp((x), 0., 1.) + +const vec3 up = vec3(0.,1.,0.); +const float PI = acos(-1); +const float TAU = PI*2; + + +const mat3 rot(float x, float y, float z){ + float cx = cos(x), cy = cos(y), cz = cos(z), sx = sin(x), sy = sin(y), sz = sin(z); + + return mat3(cx*cy, cx*sy*sz - sx*cz, cx*sy*cz + sx*sz, + sx*cy, sx*sy*sz + cx*cz, sx*sy*cz - cx*sz, + -sy, cy*sz, cy*cz); +} + +float noise(vec3 p3) +{ + p3 = fract(p3 * 0.1031); + p3 += dot(p3,p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} + +float sph(vec3 i, vec3 f, ivec3 c){ + float rad = .5 * noise(i+c); + return length(f-vec3(c)) - rad; +} + +float based(vec3 p){ + + vec3 i = floor(p); + vec3 f = fract(p); + + return min(min(min(sph(i,f,ivec3(0,0,0)), + sph(i,f,ivec3(0,0,1))), + min(sph(i,f,ivec3(0,1,0)), + sph(i,f,ivec3(0,1,1)))), + min(min(sph(i,f,ivec3(1,0,0)), + sph(i,f,ivec3(1,0,1))), + min(sph(i,f,ivec3(1,1,0)), + sph(i,f,ivec3(1,1,1))))); +} + +float smin(float a, float b, float k){ + float h = max( k-abs(a-b), 0.0 )/k; + return min( a, b ) - h*h*h*k*(1.0/6.0); +} + +float smax(float a, float b, float k) +{ + float h = max(k - abs(a - b),0.0); + return max(a, b) + h * h * 0.25 / k; +} + +void chmin(inout vec4 a, vec4 b){ + a = a.x < b.x ? a : b; +} + +mat3 r = rot(PI*.23, PI*.76, PI*.37); + +vec3 purp = vec3(.9, .05, .9); +vec3 orag = 1.2*vec3(.8, .35, .1); + +vec4 map(vec3 q){ + vec3 p = q; + vec4 d = vec4(1e5, 0,0,0); + + p = q - vec3(.7,0,.75); + float bell0 = .3 * exp(-1.5*dot(p.xz, p.xz)); + p = q + vec3(1.,0,0); + float bell1 = .75*exp(-2*dot(p.xz, p.xz)); + + float pl = p.y - bell1 - bell0; + float s = 1.; + + for(int i=0; i<5; i++){ + float n = based(p)*s; + n = smax(n, pl-.1*s, .3*s); + pl = smin(pl, n, .3*s); + s *= .5; + p = r*p/.5; + } + + p = q*20; + p.z -= texture(fft_integrated, .01).r; + float gr = min(fract(p.z), fract(p.x)); + gr = step(gr, 0.05) * step(-0.05, gr); + + vec3 pal = mix(vec3(.1, .05, .4), purp, gr); + chmin(d, vec4(pl, pal)); + + p = q - vec3(0,1.,-5); + float sun = length(p) - 2.5; + pal = mix(purp, orag, p.y); + chmin(d, vec4(sun, -1, -1, -1)); + + return d; +} + +vec3 normal(vec3 p, vec2 e){ + return normalize( e.xyy*map( p + e.xyy).x + + e.yyx*map( p + e.yyx).x + + e.yxy*map( p + e.yxy).x + + e.xxx*map( p + e.xxx).x ); +} + +float chi(vec3 n, vec3 l){ + return max(dot(n,l), .1); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 pt = (uv - 0.5) * 2; + pt *= vec2(1, v2Resolution.y / v2Resolution.x); + + vec3 c = vec3(1); + + vec3 ro = vec3(0., .25, 3.); + vec3 fo = vec3(0,0,0); + vec3 rov = normalize(fo - ro); + vec3 cu = normalize(cross(rov, up)); + vec3 cv = cross(cu, rov); + vec3 rd = mat3(cu,cv,rov) * normalize(vec3(pt, 1.)); + + float t = 0.01; + float maxt = 25.; + vec4 d; + vec3 p = ro; + float precis = 1e-6; + + for(int a=0; a<2; a++){ + for(int i=0; i<128; i++){ + p = ro + rd*t; + d = map(p); + t += d.x; + precis = t * .001; + if(abs(d.x) < precis || t > maxt){ + t = t >= maxt ? maxt : t; + break; + } + } + + if(abs(d.x) < precis){ + if(d.y == -1){ + c *= 2.5*mix(purp, orag, uv.y); + break; + } + vec3 n = normal(p, vec2(precis, -precis)); + vec3 albedo = d.yzw; + c *= albedo; + ro = p + n*.1; + rd = reflect(rd, n); + }else{ + c *= 1.5*mix(orag, purp, uv.y); + } + } + + c *= abs(sin(pt.y*400)); + + c = smoothstep(.01, 1.5, c); + float lum = dot(c.rgb, vec3(.2126, .7152, .0722)); + float shad = smoothstep(.4, .01, lum); + float high = smoothstep(.3, 1., lum); + c.rgb = c.rgb*shad*vec3(.4, 1.2, 1.2) + c.rgb*(1-shad*high) + c.rgb*high*vec3(.99, .8,.8); + + c = c / (1. + c); + c = pow(c, vec3(.4545)); + + + + + out_color = vec4(c,0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_totetmatt.glsl b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_totetmatt.glsl new file mode 100644 index 000000000..b103c311b --- /dev/null +++ b/shader_file_sources/2021_07_23_shader_coding_party/grabber_monsieursoleilHouse_totetmatt.glsl @@ -0,0 +1,184 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +/* +**** + +**** **** **** **** ET BONJOUR A LA MONSIEUR SOLEIL HOUSE !!!!!!!! **** **** **** **** + +**** + +*/ +float lim=5.; +#define qq mod(fGlobalTime,10)<5. +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} +float box(vec3 p,vec3 b){ + vec3 q = abs(p)-b; + return length(max(vec3(0.),q))+min(0.,max(q.x,max(q.y,q.z))); +} +float bbox(vec3 p){ + //p.xz *=rot(sin(fGlobalTime)*-.785); + float h = box(p,vec3(1.)); + h = max(abs(p.z)-.1,abs(h)-.1-0.*texture(texFFT,abs(p.x)*.1).r*10.); + return h; +} +vec2 sdf(vec3 p){ + + vec3 op ; + + if(qq){ + + p.xy *=rot(p.z*.1); + p.yz *= rot(-atan(1./sqrt(2.))); + p.xz *= rot(3.1415/4.); + op=p; + p.y+=texture(texFFTIntegrated,.33).r*4; + p.xy = asin(sin(p.xy)*(.8)); + } else { + op=p; + p.z+=mod(fGlobalTime,100);; + p.z /=1.; + + + p.z = asin(sin(p.z)*.8); + + p.z*=1.; + + + } + + + vec2 h; + //h.x= mix(box(p,vec3(1.)),length(p)-1.,sin(p.x*(1.+texture(texFFT,abs(p.y)*.1).r*10.)+fGlobalTime)); + h.x = bbox(p); + float a=.25*abs(floor(fract(texture(texFFTIntegrated,.5).r*2.)*10)/10); + float rto = dot(vec2(1,1),vec2(1,0)*rot(3.1415*a)); + + vec4 pp = vec4(p,1.); + + h.y = 1.; + for(float i=0;i<=lim;i++){ + pp.xy*=rot(a*3.1415); + pp*=rto; + vec2 t; + t.x = bbox(pp.xyz)/pp.a; + t.y = 1.+i/lim; + h = t.x < h.x ? t:h; + } + vec2 t; + vec3 oop = op; + oop.xy =- abs(oop.xy)+1.2; + oop.x+=(sin(oop.z+fGlobalTime)); + oop.y += (cos(oop.z+fGlobalTime*.1)); + oop.xy =- abs(oop.xy)+1.2; + t.x = abs(length(oop.xy)-.1)-.1; + t.y = 2.; + h = t.x < h.x ? t:h; + op.xy *=rot(fGlobalTime*.2); + op = abs(op)-1.1; + op.xz *=rot(fGlobalTime); + + t.x = box(op,vec3(.1+texture(texFFTSmoothed,.43).r*20)); + t.y =0.; + + h = t.x < h.x ? t:h; + + return h; + +} +/** + + + + + +YAMETE KUDASAIIIII ? + + + + +*/ +#define q(s) s*sdf(p+s).x +vec2 e=vec2(.0003,-.0003); +vec3 norm(vec3 p){return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(.1,.2,.3)));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + bool bounce = false; + vec3 col = vec3(.1);//sqrt(vec3(texture(texFFT,abs(uv.x)).r)); + + vec3 ro = vec3(0.,0.,-5.); + vec3 rd = normalize(vec3(uv,1.)); + if(qq) { + + ro = vec3(uv*7,-10); + rd = vec3(0,0,1); + } + vec3 light = vec3(1.,2.,-3.); + vec3 rp =ro; + vec3 acc = vec3(.0); + float tt =texture(texFFTIntegrated,.3).r; + float ttt =texture(texFFTIntegrated,.7).r; + float tq = 0.; + for(float i=0.;i<=69.;i++){ + vec2 d = sdf(rp); + + if(d.y == 1.+floor(fract(tt*4)*10.)/lim) { + tq+= exp(-abs(d.x))/10.; + acc += pal(ttt)*1.5*exp(-abs(d.x))/(10.+sin(length(rp.xy)*10)*5); + d.x = max(abs(d.x),.001); + + } + if(d.y ==2.) { + tq+= exp(-abs(d.x))/10.; + acc += pal(rp.z*.1+ttt)*exp(-abs(d.x))/(60.-fract(fGlobalTime*.5+rp.z)*30.); + d.x = max(abs(d.x),.01); + + } + rp +=rd * d.x; + if(length(rp)>100) break; + + if(d.x <.001){ + vec3 n = norm(rp); + if(d.y >= 1.){ + float angle = max(dot(reflect(normalize(light), n), rd), 0.0); + float specular = pow(angle, 10.0); + vec3 c = pal(d.y+texture(texNoise,rp.xy*.1+fGlobalTime).r); + col = specular*c+c*max(0.,dot(normalize(light-rp),n));; + break; + } else { + rd = reflect(rd,n+texture(texNoise,rp.xy).r*.1); + rp+=rd*.01; + acc += pal(d.y)*.1; + bounce = true; + } + + } + + } + col+= +acc; + if(bounce) col = 1.-col; + + + + out_color = vec4(col,tq); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_Exca.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_Exca.glsl new file mode 100644 index 000000000..a8c3fce1b --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_Exca.glsl @@ -0,0 +1,286 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float fft = 0.0; +float fftS = 0.0; +float fftI = 0.0; +float beat = 0.0; +float beatStep = 0.0; +float bm = 0.0; + +vec3 cam = vec3(0.0); + +vec3 palette( in float t, in vec3 a, in vec3 b, in vec3 c, in vec3 d) +{ + return a + b*cos(6.28318* (c*t+d)); +} + +vec3 rotate( vec3 p, float x, float y, float z) +{ + mat3 rotx = mat3(1.0, 0.0, 0.0, 0.0, cos(x), -sin(x), 0.0, sin(x), cos(x)); + mat3 roty = mat3( cos(y), 0.0, sin(y), 0.0, 1.0, 0.0, -sin(y), 0.0, cos(y)); + mat3 rotz = mat3( cos(z), -sin(z), 0.0, sin(z), cos(z), 0.0, 0.0, 0.0, 1.0); + return rotx*roty*rotz*p; +} + +vec3 getcam( vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize(target - cam); + vec3 right = normalize(cross( vec3(0,1,0), forward)); + vec3 up = normalize( cross(forward, right)); + + return normalize( forward*fov + right * uv.x + up * uv.y); +} + +vec3 repeat( vec3 p, vec3 c) +{ + vec3 q = mod(p+0.5*c, c)-0.5*c; + return q; +} + +float ground(vec3 p, float h) +{ + return p.y -h; +} + +float sphere(vec3 p, float r) +{ + return length(p)-r; +} +float roundcube( vec3 p, vec3 b, float r) +{ + vec3 d = abs(p)-b; + return min(max(d.x, max(d.y, d.z)),0.0)+length(max(d,0.0))-r; +} + +float prism( vec3 p, vec2 h ) +{ + vec3 q = abs(p); + return max(q.z-h.y,max(q.x*0.866025+p.y*0.5,-p.y)-h.x*0.5); +} + +float U(float a, float b){ + return min(a,b); +} + +vec3 map( vec3 p) +{ + vec2 id = floor((p.xz+2.0)/4.0-2.0) ; + + float beatstep = fract( fGlobalTime*0.5+(id.x+id.y)/2.0); + + float distsize = length(p-cam); + + vec3 cp = repeat(p, vec3(4,4, 4)); + cp = rotate( cp, 0.0, 0.0, id.x+smoothstep(0.0, 1.0,beatstep)*3.14/4.0 + beat*3.14/8.0); + float g = ground(p, -3.0); + + float pr = prism(cp, vec2( + 1.20+smoothstep(10.0, 30.0,distsize), + 0.7+ (sin(id.x+fGlobalTime)-cos(id.y-fGlobalTime*0.5))+smoothstep(10.0, 30.0,distsize) + )); + + return vec3(U(pr,g),1,1); +} + +vec3 march( vec3 cam, vec3 rd, out vec3 p, out float t, out int steps) +{ + t = 0.0; + for(int i = 0; i < 140; i++) + { + steps = i; + p = cam + rd*t; + + vec3 r = map(p); + float bx = roundcube( + repeat( p + vec3(2.0), vec3(4.0,0,0)), + vec3(0.00001,100,100),0.0 ); + float bz = roundcube( + repeat( p + vec3(2.0), vec3(0.0,0,4)), + vec3(100,100,0.00001),0.0); + float by = roundcube( + repeat( p + vec3(2.0), vec3(0.0,4,0)), + vec3(100,0.0001,100),0.0); + + float delta = min(max(0.1, bx), r.x); + delta = min( max(0.1, bz), delta); + delta = min( max(0.1, by), delta); + + + t += delta; + if(r.x < 0.001) return r; + + if(t > 50.0){ + t = 50.0; + return vec3(-1); + } + } + return vec3(-1); +} + +vec3 marchInside( vec3 cam, vec3 rd, out vec3 p) +{ + float t = 0.0; + for(int i = 0; i < 100; i++) + { + p = cam + rd*t; + vec3 r = map(p); + t += abs(r.x); + if(r.x > 0.001) return r; + } + t = 100.0; + return vec3(-1); +} + + +vec3 normal( vec3 p ) +{ + vec3 c = map(p); + vec2 e = vec2(0.1, 0.0); + return normalize( vec3( + map(p+e.xyy).x, + map(p+e.yxy).x, + map(p+e.yyx).x + )-c.x ); +} + +float light( vec3 p, vec3 l, vec3 n) +{ + return max(0.0, dot(n, normalize(l-p))); +} + +vec3 getcol( vec3 p) +{ + vec2 id = floor((p.xz+2.0)/4.0-2.0) ; + vec3 hitCol = palette( abs(sin(id.x+id.y)), vec3(0.5, 0.5, 0.5), vec3(0.5, 0.5,0.5), vec3(1.0, 1.0, 1.0), vec3(0.90, 0.8,0.4)); + return hitCol*2.0; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + vec2 puv = uv; + puv -=0.5; + puv*=0.95; + puv += 0.5; + vec3 previous = texture(texPreviousFrame, puv).rgb; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + beat = floor( fGlobalTime*2.0); + beatStep = fract( fGlobalTime*2.0); + + fft = texture(texFFT, 0.2).r; + fftS = texture(texFFTSmoothed, 0.2).r; + fftI = texture(texFFTIntegrated, 0.1).r; + + float bm = mod( beat/4.0, 6.0); + + + vec3 col = vec3(0.); + + cam = vec3(4,10.0,0); + vec3 target = vec3(3,8,0); + + target = cam + vec3( + sin(fGlobalTime*0.1)*10.0, + cos(fGlobalTime*0.25)*10.0, + sin(fGlobalTime*0.5)*10.0 + ); + + float fov = 0.8; + + vec3 l1 = vec3(sin(fGlobalTime)*10.0, 10.0, 10.0); + + vec3 rd = getcam( cam, target, uv, fov); + vec3 p = cam; + float t = 0.0; + int steps = 0; + + vec3 material = march(cam, rd, p, t, steps); + vec3 n = normal(p); + if(material.y < -0.5) + { + //bg + } + else + { + vec3 hitCol = getcol(p); + + col = hitCol*(0.5+.5*light(p,l1,n)); + + + + vec3 rRD = reflect( rd, n ); + + vec3 pReflect = p; + float tReflect = 0.0; int stepsReflect = 0; + vec3 reflectMat = march( p+rRD*0.1, rRD, pReflect, tReflect, stepsReflect); + + if(reflectMat.y < -0.5){ + col = mix( col, vec3(0.5), 0.5); + } + else{ + vec3 refN = normal(pReflect); + + vec2 id = floor((pReflect.xy+2.0)/4.0-2.0) ; + + + vec3 rc = normalize(pReflect); + vec3 rhitCol = getcol(pReflect); + + col = mix( + col, + vec3(1.0,0.5, 0.2)*(0.5+0.5*light(pReflect,l1,refN)), + 0.5); + } + } + + vec3 grnd = vec3(0.75 + 0.2*( sin(p.z*10.0+fftI*5.)+sin(p.x*10.0-fftI*20.))); + + if(p.y < -2.99) col = mix( grnd, col, 1.0); + + col = mix(col, vec3(0.3, 0.3, 0.3), smoothstep( 30.0, 50.0, t)); + + col = mix(col,col+ (previous-col) * smoothstep(0.0, 0.025,fftS),0.85); + + out_color = vec4(col,1.0); + +} + + + + + + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_LechugaFeliz.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_LechugaFeliz.glsl new file mode 100644 index 000000000..025a47979 --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_LechugaFeliz.glsl @@ -0,0 +1,143 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +float t=mod(fGlobalTime, 36.)*.00025; +#define rot(a) mat2(cos(a), sin(a), -sin(a), cos(a)) +float rn(float p){ + return fract(sin(p*345.56)*455.); + } +float c(float t){ + t*=.41; + return mix(floor(rn(t)), floor(rn(t+1)), pow(smoothstep(0., 1., fract(t)), 20.)); +} +float sb(vec3 p, vec3 s){ + p=abs(p)-s; + return max(max(p.x,p.y), p.z); +} +void fr(inout vec3 p){ + for(float i = 0.; i < 3.;i++){ + //p.xz *= ro); + //p.xz*=rot(t*.1); + //p.xy*=rot(t*.1); + + p.xz*=rot(t*.954); + p.yz*=rot(t*.641); + p.yx*=rot(t*.64); + p=abs(p)-25.; + } +} +float smin(float a, float b, float k){ + float h=max(k-abs(a-b),0.); + return min(a,b)-h*h-k*(1.0/6.0); +} +float g1,g2,g3; +float m(vec3 p){ + //p.y += sin(t)*.5+.5; + + vec3 p1=p; + //return + fr(p); + //p=(fract(p/20.-.5)-.5)*20.; + + float d = mix(length(p)-25., sb(p, vec3(10.)),.5+sin(t)*.5-.5); + float dd=sb(p1, vec3(35.)); + float ddd=length(p1)-fract(sin(t*20.+p.y*.01)); + + d=smin(d, dd, 1.); + g3+=.55/(1.+ddd*ddd); + g2+=.15/(.1+dd*dd); + g1+=.15/(.1+d*d); + return d; +} +vec3 nm(vec3 p){ + vec2 e= vec2(0.031, 0.); + e=abs(e)+.25; + e*=rot(t*1.95); + return normalize(vec3( + e.xyy * (m(p-e.xyy)) + + e.yyx * (m(p-e.yyx)) + + e.yxy * (m(p-e.yxy)) + + e.xxx * (m(p-e.xxx)) + )); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + //t-=c(t*2.45)*15.; + t=sin(t*.251)*50.; + t+=c(t*.35)*200.; + vec3 col=vec3(0.); + float d; + vec3 s=vec3(0.01, 0.01, -4.); + s.x+=sin(t*100.); + s.z+=sin(t*50.)*20.; + const float tg=50.; + s.xz*=rot(t*tg); + s.yz*=rot(t*tg); + s.xy*=rot(t*tg); + //uv.x+=sin(t*.2436)*1.; + + //if(mod(t,2.) >= 2.){ + for(float i = 0.; i < sin(t)*4.; i++){ + uv=abs(uv)-.6275; + uv*=rot(t*20.); + //} + } + + //uv+=floor(rn(t*.05)); + //uv*=rot(smoothstep(0., 1., rn(t)*2.+uv.x*.001)); + + vec3 p=s; + vec3 cz=normalize(p-vec3(0.)); + vec3 cx=normalize(cross(cz,vec3(0., -1., 0.))); + vec3 cy=normalize(cross(cz,cx)); + + uv*=rot(t*5.3); + uv*=10.; + vec3 r=mat3(cx,cy,cz)*normalize(vec3(sign(uv)*smoothstep(-13.,15., pow(fract(uv+t*.14), vec2(5.)))* + dot(uv, vec2(-1.5))+sin(t*uv)*.15+4.5, 1.-length(uv)*.25+.25)); + vec3 n,ld=normalize(vec3(-2., -1., -1.)); + float i; + for(i= 0.; i < 128.; i++) if(d=m(p),p+=d*r,abs(d) < 0.0001 || d > 100.){ + n=nm(p); + //if(g1< .001){ + r=reflect(r,n);p+=45.; + //} + col = vec3(max(dot(ld,n), 0.)); + col +=g1*.0031; + col=smoothstep(0., 1., col); + //col=sign(col) < vec3(.0) ? col:-col; + //break; + } + col *= i/(250.+sin(t*2000.)*20.+20.)*abs(nm(p).x*.555)-.15; + vec3 COL_BAS=vec3(.23, .25, 1.)*.25; + //COL_BAS.xz*=rot(c(t*.25)); + col+=g3*vec3(.34, .46, .1)*.5; + col+=g2*vec3(.42, 0.1, 0.)*.5; + col+=g1*COL_BAS*.005*normalize(texture(texFFTSmoothed,0.01).x*100.)*1.955+.15; + //col-=length(p.xz)*.000000000000000001; + //col=1.-pow(col, vec3(3.535)); + //col*=2.675-length(col)*.2395; + col=pow(col, vec3(2.)); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_NuSan.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_NuSan.glsl new file mode 100644 index 000000000..f9f7600a6 --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_NuSan.glsl @@ -0,0 +1,203 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time=mod(fGlobalTime, 300); + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float ffti(float t) { + return texture(texFFTIntegrated, t).x * .3; +} + +float fft(float t) { + return texture(texFFTSmoothed, t).x*.7; +} + +vec3 repeat(vec3 p, float s) { + return (fract(p/s+.5)-.5)*s; +} + +float d2=10000; +bool isportal=false; +float map(vec3 p) { + + float push = 1 + fft(fract(length(p)*0.00-time*.2)*0.04)*3; + //float push = 1 + smoothstep(-1,1,sin(length(p)*0.02-time))*0.2; + + + vec3 p2 = p; + float t = ffti(0.005)*.3; + p2.yx *= rot(t); + p2.xz *= rot(t*1.3); + p2.z -= 5; + p2.xz *= rot(sin(time*.1)*.5); + p2.yz *= rot(sin(time*0.05)*.5); + + + float epa = pow(smoothstep(-1.,-.7,sin(time)),10); + vec3 p4 = p2; + float mm=1000; + for(int i=0; i<3; ++i) { + p4.xy *= rot(.7+i); + p4.y-=sign(p4.x); + p4.xy=abs(p4.xy); + mm=min(mm, min(p4.x, p4.y)); + p4.xy-=0.9; + } + float cut=0.4-mm-epa*.8; + + float size=6-epa*3; + d2 = box(p2, vec3(size,size,.2)); + d2=max(d2, cut); + + float d3 = box(p2, vec3(size+.5,size+.5,.5)); + d3 = max(d3, -box(p2, vec3(size,size,.6))); + d3=max(d3, cut); + + d3=min(d3, d2); + + + p *= push; + float d=box(repeat(p-10,20),vec3(1)); + for(int i=0; i<3; ++i) { + + vec3 p2=p-i*7; + float t=time*.12 + i; + p2.xz *= rot(t); + p2.xy *= rot(t*1.3); + p2=repeat(p2, 5+i*.7); + + d=max(abs(d), abs(box(p2, vec3(1,.2,.4)*4)))-0.8; + } + + d=min(d/push, d3); + + return d*.8; +} + +void cam(inout vec3 p) { + + float t=ffti(0.01) * .1; + + p.xz *= rot(t+ffti(0.03) * .1); + p.xy *= rot(t*1.3); + +} + +vec3 norm(vec3 p, float s) { + vec2 off=vec2(s,0); + return normalize(vec3(map(p+off.xyy), map(p+off.yxy), map(p+off.yyx))-vec3(map(p-off.xyy), map(p-off.yxy), map(p-off.yyx))); +} + +float gao(vec3 p, vec3 n, float d) { + return smoothstep(0,1,map(p+n*d)/d); +} + +float rnd(float a) { + return fract(sin(a*352.346)*812.714); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv.y -= pow(fft(0.0)*10,4)*2; + + float prev = texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy).w; + //uv *= 1 + fft(fract(length(uv)-time*.5)*0.04) * (1-prev); + + vec3 s=vec3(0,0,-10); + float fov = .7+fft(0.02)*10; + vec3 r=normalize(vec3(uv, fov)); + + cam(s); + cam(r); + + vec3 col=vec3(0); + + vec3 l=normalize(vec3(1,3,2)); + + vec3 diff=vec3(.4,0.5,1); + float t2=(ffti(0.015)+time*.5)*.1 + uv.x*.3; + t2 += 5*rnd(floor(max(abs(r.x),abs(r.y))*7-time*.5-ffti(0.01)*2 - prev*3)); + diff.xy *= rot(t2*.7); + diff.xz *= rot(t2+uv.y*.5); + diff=abs(diff); + + vec3 p=s; + float dd=0; + float fofo=0; + float atm=0; + for(int i=0; i<100; ++i) { + float d=map(p); + if(abs(d)<0.001) { + float po=d2; + vec3 n=norm(p, 0.02); + float fog = 1-clamp(dd/100,0,1); + if(abs(po)<0.002) { + isportal=true; + } + if(isportal) { + float edge = 0.004*dd; + col += length(n-norm(p, edge)) * 2 * diff.yzx * vec3(2-fog,1,1) * fog; + fofo=1; + d=0.003; + } else { + vec3 h=normalize(l-r); + float spec=max(0,dot(n,h)); + float ao=gao(p,n,0.2)*gao(p,n,1); + float fre=pow(1-abs(dot(n,r)),3); + col += max(0,dot(n,l)) * ao * fog * (0.5*diff + 3*diff*pow(spec, 10) + 3*pow(spec,50)); + col += (-dot(n,l)*.5+.5)*diff*.3 * fog * ao; + col += fre*vec3(0.5,0.6,1)*fog*ao; + fofo=fog; + break; + } + } + if(dd>100.0) break; + p+=r*abs(d); + dd+=abs(d); + if(!isportal) { + atm += 0.1/(15+abs(d)); + } + } + + col += diff * (pow(1-fofo,2) * 0.7 + atm); + + //col += map(p-r) * fog; + + col=smoothstep(0,1,col); + col=pow(col, vec3(0.4545)); + + col = mix(col, texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy).xyz, mix(0.2,0.9,smoothstep(0.5,0.8,length(uv)))); + + out_color = vec4(col,fofo); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alien.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alien.glsl new file mode 100644 index 000000000..8367e3399 --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alien.glsl @@ -0,0 +1,186 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +//Hello, Névoke!!! + +#define iTime fGlobalTime +#define one_bpm 0.48 +#define beat(a) tick(iTime / (one_bpm*a)) +#define cumbeat(a) iTime+beat(a) +float tick(float t) { + return fract(t); +} + + +mat2 rot(float a) {return mat2( cos(a), sin(a), -sin(a), cos(a) ) ; } + +float sphere(vec3 p, float r) { + return length(p) - r; +} + + +float box2(vec2 p, vec2 b){ + vec2 q = abs(p) - b; + return length(max(q, 0.0)) + min(max(q.x, q.y), 0.0); +} + +float torus(vec3 p, vec2 t){ + float a = length(p.xz ) - t.x; + p.x += 2*cumbeat(8); + a += sin(p.z); + + vec2 q = vec2(a , p.y ); + return length(q) - t.y; +} + + +float map(vec3 p) { + float final = 0; + + vec3 pp = p; + + if(beat(8) < 0.5) + p.xy *= rot(0.1*cumbeat(16)); + if(beat(16) < 0.5) + p.xy *= rot(-0.1*cumbeat(16)); + + float y = p.y - cumbeat(32); + p.z -= 10; + p.x *= atan(p.y, p.z); + + p.z -= 10.0; + p.xz *= vec2(0.1, 0.5); + + for(int i = 0; i < 4; i++){ + final += box2(p.xz, vec2(5*i)); + p.z -= 10 + beat(4); + p.x *= 2; + p.xz *= rot(0.2*float(i)*y); + p.z = cos(p.x * 2.0 +sin(p.z*2.0)); + + if(beat(16) < 0.8) + p.xz *= rot(0.8 - p.y); + } + + float denum = 22; + if(beat(8) < 0.5) + denum = 15+beat(8); + final = final / denum; + + pp.z += 15; + + + + float sp = sphere(pp, 15 + beat(4)) ; + final = min(final, sp); + + pp.xz *= rot(iTime*0.5); + pp.xz *= rot(2.6); + pp.xy *= rot(0.4); + + float tor = torus(pp, vec2(24, 2 + beat(8)));; + + + final = min(final, tor); + + return final; +} + +vec3 march(vec3 ro, vec3 rd) { + float t = 0; + float a; + int steps = 64; + if(beat(8) < 0.2) steps = 32; + for(int i = 0; i < steps; i++){ + a = map(ro+rd*t); + if(a < 0.01) break; + if(t > 100.) break; + t+=a; + } + + float ret = a; + if(beat(16) < 0.1) + ret *= t/8; + + return vec3(ret); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv1 = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(0, 5, -55); + if(beat(16) < 0.5) ro.z = -75; + vec3 rd = normalize(vec3(uv, 1)); + + if(beat(32) < 0.1) + rd.xy *= rot(0.2); + vec3 color = vec3(0); + + color = march(ro, rd); + color *= 1.75; + if(beat(16) < 0.5) + color *= vec3(0.8, 0.2, 0.3); + + if(beat(32) < 0.5) + color = 1-color; + + + bool mask; + float b = beat(64); + if(b< 0.1) + mask = uv1.x < 0.5; + else if(b < 0.2) + mask = false; + else if(b < 0.3) + mask = uv1.y < 0.5; + else if(b < 0.4) + mask = true; + else if(b < 0.5) + mask = length(uv) < 0.2 + beat(8); + else if(b < 0.6) + mask = false; + else if(b < 0.8) + mask = fract(uv.x * 10*beat(8)) < 0.5; + else if(b < 1.){ + + uv *= rot(iTime); + uv = fract(uv*100*beat(16)); + mask = uv.x < 0.5 && uv.y < 0.5; + } + + + + + + + + + + if(mask) + color = 1-color; + + color = mix(color, texture(texPreviousFrame, uv1).rgb, 0.9); + + + + out_color = vec4(color, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alkama.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alkama.glsl new file mode 100644 index 000000000..e0d49ad30 --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_alkama.glsl @@ -0,0 +1,54 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float pi = acos(-1); +float ttt = mod(fGlobalTime*80/120, 20*pi); +float ft=fract(ttt); +float dt=floor(ttt); +float t=dt+ft*ft; + +float disc( vec3 p, float s ) +{ + return smoothstep(.504,0.5,(length(p)-((s-51)/100.)))-smoothstep(.504,0.5,(length(p)-((s-52)/100.))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv2=uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv = mix(uv, uv * (.25 - length(uv)), abs(sin(t+cos(t)))); + + vec3 col = vec3(0); + for(float j=1; j<1000; j++) { + //float i=j; + //float i=sqrt(j*(j+100*abs(sin(j*.001+t*.01)))); + float i=mix(j, j*j*.001*sin(t*.04), abs(sin(t*.005))); + vec3 cd = vec3( + uv.x+i*(.001+0.00025*sin(t))*sin(t-i*(1.+(.1+.15*sin(t*.01))+.00015*sin(t+sin(t)))), + uv.y+i*(.001+0.00025*cos(t))*cos(t-i*(1.+(.1+.15*sin(t*.01))+.00015*cos(t+sin(t)))), + 0); + col += disc(cd, .87+i/(300.+150.*sin(t*5+sin(t))))*abs(vec3(cos((i-ttt*500)/100),sin((i-ttt*2000)/1000), sin((i-ttt*2000)/100))); + } + //vec3 prev = texture(texPreviousFrame,uv2).rgb; + vec3 prev = texture(texPreviousFrame,uv*vec2(.5+.3*sin(t),.5+.3*cos(t))+.5).rgb; + out_color.rgb = mix(prev,col, .2+.15*sin(t)); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_eimink.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_eimink.glsl new file mode 100644 index 000000000..eb6689ba8 --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_eimink.glsl @@ -0,0 +1,260 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float fMidiKnob1; +uniform float fMidiKnob2; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +//HI EVERYONE! + +// Mercury SDF <3 - https://mercury.sexy/hg_sdf/ +#define PI 3.14159265 +#define TAU (2*PI) +#define PHI (sqrt(5)*0.5 + 0.5) +#define saturate(x) clamp(x, 0, 1) + +float pModPolar(inout vec2 p, float repetitions) { + float angle = 2*PI/repetitions; + float a = atan(p.y, p.x) + angle/2.; + float r = length(p); + float c = floor(a/angle); + a = mod(a,angle) - angle/2.; + p = vec2(cos(a), sin(a))*r; + // For an odd number of repetitions, fix cell index of the cell in -x direction + // (cell index would be e.g. -5 and 5 in the two halves of the cell): + if (abs(c) >= (repetitions/2)) c = abs(c); + return c; +} + +#define M1 1.0 +#define M2 2.0 +#define M3 3.0 + +vec3 glow = vec3(0); + +struct SceneResult +{ + float d; + float cid; + float mid; +}; + +struct MarchResult +{ + vec3 position; + vec3 normal; + SceneResult sres; +}; + +float ffts = texture(texFFTSmoothed,80).r*.25; +float ffti = texture(texFFTIntegrated,.1).r*.25; +float time = fGlobalTime; + +float sdBox(vec3 p, vec3 b) +{ + vec3 q = abs(p) - b; + return length(max(q,0)) + min(max(q.x,max(q.y,q.z)),0); +} + +float sdTriPrism( vec3 p, vec2 h ) +{ + vec3 q = abs(p); + return max(q.z-h.y,max(q.x*0.866025+p.y*0.5,-p.y)-h.x*0.5); +} + +void rot(inout vec2 p, float a) { + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +// base from iq +SceneResult opU(SceneResult d1, SceneResult d2) +{ + return (d1.d < d2.d) ? d1 : d2; +} + +// 3D noise function (IQ) +float noise(vec3 p){ + vec3 ip = floor(p); + p -= ip; + vec3 s = vec3(7.0,157.0,113.0); + vec4 h = vec4(0.0, s.yz, s.y+s.z)+dot(ip, s); + p = p*p*(3.0-2.0*p); + h = mix(fract(sin(h)*43758.5), fract(sin(h+s.x)*43758.5), p.x); + h.xy = mix(h.xz, h.yw, p.y); + return mix(h.x, h.y, p.z); +} + +SceneResult scene(vec3 p) { + SceneResult r; + rot(p.xy,ffti*20); + vec3 pp = abs(p); + for (int i = 0; i < 2; ++i) + { + pp = abs(pp) - vec3(4.,4.,5.); + rot(pp.xy,(time+20.*ffts)*.1); + rot(pp.yz,time*.1); + } + float c = pModPolar(pp.xz,5); + pp -= vec3(5,0,0); + rot(pp.xz,ffti*2.); + + vec3 ppp = p; + float cc = pModPolar(ppp.xz,5); + ppp -= vec3(5.,cc*3.,0.); + rot(ppp.yz,PI); + rot(ppp.xz, -time); + rot(ppp.xy,ffti*.20); + + SceneResult box; + box.d = sdBox(pp,vec3(2,1.+ffts*20,1))+noise(pp); + box.cid = c; + box.mid = M1; + + SceneResult tp; + tp.d = sdTriPrism(ppp,vec2(1.5+ffts*20.,.2)); + tp.mid = M2; + + vec3 pppp = abs(p); + for (int i = 0; i < 4; ++i) + { + pppp = abs(pppp) - vec3(3.,6.,9.); + rot(pp.xy, (time+texture( texFFT, pp.x ).r*1)); + rot(pp.yz, time*0.1); + } + + SceneResult tp2; + tp2.d = sdTriPrism(pppp,vec2(2.5+ffts*10.,.4)); + tp2.mid = M3; + + r = opU(opU(box,tp),tp2); + + glow += vec3(.8,.4,.2)*0.01/(0.01+abs(tp.d)); + glow += vec3(.9,.2,.6)*0.01/(0.9+abs(box.d)); + glow += vec3(.2,.4,.8)*0.01/(0.2+abs(tp2.d)); + + return r; +} + +vec3 calcNormal (in vec3 pos) +{ + vec2 e = vec2(0.0001,0.0); + return normalize(vec3(scene(pos+e.xyy).d-scene(pos-e.xyy).d, + scene(pos+e.yxy).d-scene(pos-e.yxy).d, + scene(pos+e.yyx).d-scene(pos-e.yyx).d)); +} + +MarchResult raymarch(in vec3 ro, in vec3 rd) +{ + vec3 p = ro+rd; + float s = .0; + float id = M1; + float t = 0.; + SceneResult d; + for (int i = 0; i < 100; ++i){ + d = scene(p); + t += d.d; + p += rd*d.d; + s = float(i); + if (d.d < 0.01 || t > 100.) { + break; + } + } + MarchResult res; + res.position = p; + res.normal = calcNormal(p); + res.sres = d; + res.sres.d = t; + return res; +} + +vec3 shade(MarchResult mr, vec3 rd, vec3 ld) +{ + float l = max(dot(mr.normal,ld),.0); + float a = max(dot(reflect(ld,mr.normal),rd),.0); + float s = pow(a,10); + + float m = mod(mr.sres.cid,8.); + + vec3 col = vec3(.8,.4,.2); + if (mr.sres.mid == M1){ + if (m < 1.) + col = vec3(.2,.6,.9); + else if (m < 2.) + col = vec3(.9,.6,.2)*.1; + else + col = vec3(.9,.2,.6)*.1; + } + else if (mr.sres.mid == M2) + { + col = vec3(.8,.2,.4); + } + else { + col = vec3(1.,.5,.5)*.25; + } + return l * col * .5 + s * (col * vec3(1.1,1.2,1.2))*.8; +} + +void main(void) +{ + + vec3 cp = vec3(sin(10.*ffti)+10.,5.+sin(ffti*20.),cos(20.*ffti)+20.); + vec3 ct = vec3(0); + vec2 uv = gl_FragCoord.xy / v2Resolution.xy; + vec2 q = -1.0+2.0*uv; + q.x *= v2Resolution.x/v2Resolution.y; + + vec3 cf = normalize(ct-cp); + vec3 cr = normalize(cross(vec3(0,1,0),cf)); + vec3 cu = normalize(cross(cf,cr)); + vec3 rd = normalize(mat3(cr,cu,cf)*vec3(q,radians(90.0))); + vec3 ld = -rd; + + + vec3 col = vec3(0); + + MarchResult m = raymarch(cp,rd); + if (m.sres.d < 100.) + { + col = shade(m,rd,ld); + } + + col += glow * .3; + + // Hi rimina! Using your code here! + + vec4 pcol = vec4(0.0); + vec2 puv = vec2(20./v2Resolution.x, 20./v2Resolution.y); + vec4 mults = vec4(0.1531, 0.11245, 0.0918, 0.051); + pcol = texture2D(texPreviousFrame, uv) * 0.1633; + pcol += texture2D(texPreviousFrame, uv) * 0.1633; + for (int i = 0; i < 4; ++i) + { + pcol += texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i]; + } + col += pcol.rgb; + col *=0.35; + + col = mix(col, texture2D(texPreviousFrame, uv).rgb,.5); + + col = smoothstep(-.1, 1., col); + + out_color = vec4(col,1); + +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_provod.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_provod.glsl new file mode 100644 index 000000000..e43b5874c --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_provod.glsl @@ -0,0 +1,199 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define T(s,t) texture(s,(t+.5)/textureSize(s,0)) +#define ns2(s) T(texNoise,s).r +#define fft(f) T(texFFT,f).r +#define ffts(f) T(texFFTSmoothed,f).r +#define ffti(f) T(texFFTIntegrated,f).r + +float t = fGlobalTime; + +float vmax(vec3 v){return max(max(v.x,v.y),v.z);} +float vmax(vec2 v){return max(v.x,v.y);} +#define bx(v,s) vmax(abs(v)-s) +#define rm(a) mat2(cos(a),sin(a),-sin(a),cos(a)) + +#define rep(v,s) (mod(v,s)-s*.5) + +float wat = 0.; + +vec2 w(vec3 p) { + vec2 ret = vec2(1e6, -1.); + float r = length(p.xz); + float h = ns2(p.xz*7.) * 4.; + h += smoothstep(20., 3., r) * 6.; + float d = p.y - h + 3.; + + vec3 pp = p; + pp.xz -= .01*p.y*p.y+vec2(3.); + float pr = .1 * mod(pp.y, 1.5); + float lppxz = length(pp.xz); + float pd = lppxz - .6 - pr; + pp.y -= 25.; + pd = max(pd, pp.y); + + pp.y -= cos(lppxz*.2)*2.-1.8; + //pp.y + float pld = length(pp) - 7.; + pld = max(pld, pp.y); + pld = max(pld, -.01-pp.y); + //pld *= .5; + + float plr = atan(pp.x, pp.z); + pld = max(pld, rep(plr*4., 5.)); + pld *= .4; + + pd = min(pd, length(pp-vec3(-1.,-1.,1.))-.8); + pd = min(pd, length(pp-vec3(1.,-1.,1.))-.9); + + if (dL||dd.x<.001*l) break; + } + return vec2(l,dd.y); +} + +vec3 sd = normalize(vec3(1., .4, 1.)); +vec3 sunc = vec3(.7, .5, .6); + +vec3 skyc(vec3 d) { + return mix( + vec3(.1, .4, .7), + sunc, + pow(max(0., dot(d,sd)), 70.)); +} + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 C=vec3(0.); + + vec3 O=vec3(0., 5., 15.), D=normalize(vec3(uv, -2.)); + mat2 ry=rm(.2+.2*sin(t)); + D.yz *= rm(.3+.03*cos(t*.3)); + O.xz *= ry; + D.xz *= ry; + O += normalize(O) * 60.; + + float L=230.; + vec3 kc=vec3(1.); + for (int bc=0;bc<2;++bc){ + vec2 lm = tr(O,D,0.,L); + vec3 sc = skyc(D); + if (lm.x>L) { + //c = mix(c, vec3(.1), lm.x/L); + C += kc * sc; + //C = mix(C, vec3(.1), clamp(0., 1., D.y * lm.x)); + break; + } + + vec3 p = O+D*lm.x; + vec3 n = wn(p); + + vec3 md = vec3(1.); + if (lm.y == 0.) + md = vec3(.3, .3, .8); + if (lm.y == 1.) + md = vec3(.7, .7, .1); + if (lm.y == 2.) + md = vec3(.2, .9, .3); + if (lm.y == 3.) { + md = vec3(.3, .1, .0)*.7 * (ns2(n.xz*1000.) + ns2(p.xy*100.)); + //md = vec3(.3, .1, .0); + } if (lm.y == 4.) { + md = vec3(1., 1., .0)*2.; + } else if (lm.y == 5.) { + md = vec3(.3, .1, .0)*.7 * (ns2(n.xz*1000.) + ns2(p.xy*100.)); + } + + vec3 c = vec3(0.); + p+=n*.1; + if (tr(p,sd,0.,10.).x>=10.) c += md * sunc * max(0., dot(sd, n)); + + vec3 skydir = vec3(-sd.x,sd.y,-sd.z); + c += .05 * md * skyc(skydir);// * max(0., dot(skydir, n)); + + c = mix(c, sc, pow(lm.x/L,3.)); + + C += c * kc; + + if (lm.y != 0.) + break; + + O = p; + D = reflect(D, n); + kc *= mix(md, sc, lm.x/L); + } + + out_color = vec4(sqrt(C), 0.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_rimina.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_rimina.glsl new file mode 100644 index 000000000..68ac53d0f --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_rimina.glsl @@ -0,0 +1,185 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.5).r; + +int ID = 0; + +vec3 glow = vec3(0.0); + +const float E = 0.001; +const float FAR = 100.0; +const int STEPS = 64; + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0); +} + +void rotate(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + + +float scene(vec3 p){ + + vec3 pp = p; + + rotate(pp.xz, fft*20.0); + rotate(pp.xy, fft*10.0); + + + + float safe = box(pp, vec3(20.0)); + + pp = abs(pp)-vec3(6.0); + rotate(pp.zy, fft*10.0); + + float kuutio = box(pp-vec3(0.0, -1.0, 0.0)*2.0, vec3(1.0, 2.0, 1.0)*2.0); + kuutio = min(kuutio, box(pp-vec3(-1.0, 0.0, 0.0)*2.0, vec3(2.0, 1.0, 1.0)*2.0)); + kuutio = min(kuutio, box(pp-vec3(0.0, 0.0, -1.0)*2.0, vec3(1.0, 1.0, 2.0)*2.0)); + + pp = p; + rotate(pp.xy, time*0.5); + float tunneli = -box(pp, vec3(15, 15.0+3.0*sin(time), FAR*2.0)); + tunneli = max(tunneli, -safe); + + float m = mod(p.z-(fft*10.0+time*0.5), 8.0)-4.0; + if(m > 0.0){ + glow += vec3(0.6, 0.1, 0.8) * 0.1 / (abs(tunneli)+0.05); + } + + if( kuutio < tunneli){ + ID = 1; + } + else{ + ID = 0; + } + + return min(tunneli, kuutio); + + +} + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + + for(int i = 0; i < STEPS; ++i){ + float d = scene(p); + t += d; + p = ro + rd * t; + + if(d < E || t > FAR){ + break; + } + } + + return t; +} + +vec3 colorify(vec3 p, int id){ + vec3 col = vec3(0.8, 0.0, 0.3); + float m = mod(p.z-(fft*10.0+time*0.5), 8.0)-4.0; + + if(id == 0){ + if(m > 0.0){ + col = col.bgr; + } + else{ + col = 1.0-col; + } + } + + return col; +} + +vec3 normals(vec3 p){ + vec3 e = vec3(E, 0.0, 0.0); + + return normalize(vec3( + scene(p+e.xyy) - scene(p-e.xyy), + scene(p+e.yxy) - scene(p-e.yxy), + scene(p+e.yyx) - scene(p-e.yyx) + )); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = -1.0 + 2.0*uv; + q.x *= v2Resolution.x/v2Resolution.y; + + + vec3 ro = vec3(0.0, 2.0, 40.0); + vec3 rt = vec3(0.0, 0.0, -1.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z) * vec3(q, radians(60.0))); + + float t = march(ro, rd); + vec3 p = ro + rd * t; + int id = ID; + vec3 n = normals(p); + + vec3 col = vec3(0.1, 0.0, 0.1); + + if( t < FAR){ + col = colorify(p, id); + col += (1.0/t); + + if(ID == 1){ + for(int i = 0; i < 2; ++i){ + rd = reflect(rd, n); + ro = p+n*E*2.0; + t = march(ro, rd); + p = ro + rd * t; + id = ID; + n = normals(p); + + col += colorify(p, id); + col += (1.0/t); + if(ID != 1){ + break; + } + } + col *= 0.333; + } + } + + col += glow*0.25; + + float d = length(p-ro); + float fa = 1.0 - exp(-d*0.04); + col = mix(col, vec3(0.2, 0.1, 0.3), fa); + + col = smoothstep(-0.1, 1.2, col)* smoothstep(0.8, 0.005*0.799, distance(uv, vec2(0.5))*(0.9+0.005)); + + col = smoothstep(-0.2, 1.2, col); + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_tater.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_tater.glsl new file mode 100644 index 000000000..86202dc7f --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_tater.glsl @@ -0,0 +1,256 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define STEPS 128.0 +#define MDIST 250.0 +#define pi 3.1415926535 +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define pmod(p,x) (mod(p,x)-0.5*(x)) +#define lr 90.0 +vec3 gl = vec3(0); +vec3 gl2 = vec3(0); +vec2 path(float t){ + return vec2(sin(t),cos(t)); +} + + +vec2 map(vec3 p){ + vec2 a = vec2(9999); + vec2 b = vec2(9999); + float t = mod(fGlobalTime,1000); + vec3 po = p; + + float ffti = texture(texFFTIntegrated,0.0).x; + float fft = texture(texFFTSmoothed,0.1).x; + float fft2 = texture(texFFTSmoothed,0.7).x; + + p.yz*=rot(-ffti*0.2); + + float th = atan(p.y,p.z); + th*=80.0; + float r = length(p.yz)-lr; + p.y = r; + p.z = th; + + + //INNER SPIRAL + p.xy-=path(p.z*0.2)*4.0; + + vec3 p2 = p; + p.xy*=rot(-p.z); + p.x = abs(p.x)-1.0; + b.x = length(p.xy)-0.5; + + + b.y = 1.0; + a=(a.x1.0)d.x = sqrt(d.x); + + + if(d.x<0.01){ + if(d.y==7.0&&bnc==0.0){ + vec3 n = norm(p); + ro = p+n*0.5; + rd = n; + dO = 0.0; + bnc = 1.0; + } + else{ + if(d.y == 3.0){ + d.x = 0.1; + } + else{ + shad = i/STEPS; + hit = true; + break; + } + } + } + if(dO>MDIST){ + p = ro+rd*MDIST; + break; + } + dO+=d.x*0.6; + } + vec3 al; + if(hit){ + + vec3 n = norm(p); + vec3 ld = normalize(vec3(0.25,0.25,-1.0)); + vec3 h = normalize(ld-rd); + float spec = pow(max(dot(n,h),0),20.0); + + + + col = vec3(1.0-shad); + if(d.y ==4.0) d.y = floor(mod(p.z*0.3,3.0))+1.0; + + if(d.y==1.0) al = mix(vec3(0,0.2,1.0),vec3(0,1.0,0.2),0); + if(d.y==2.0) al = vec3(0,0.5,0.5)*1.5; + if(d.y==3.0) al = mix(vec3(0,0.2,1.0),vec3(0,1.0,0.4),1); + if(d.y==7.0) al = vec3(0,1.0,1.0); + if(d.y==9.0) al = vec3(0.5,0.9,0); + col*=al; + col+=spec*0.2; + } + col = mix(col,vec3(0.05,0,0.15),dO/MDIST); + col+=gl*0.6; + col+=gl2*0.05; + col = pow(col,vec3(0.75)); + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_totetmatt.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_totetmatt.glsl new file mode 100644 index 000000000..e21b274f8 --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_totetmatt.glsl @@ -0,0 +1,201 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texTex5; +/* + + +-- HELLO -- + + + +*/ +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} +vec3 op ; + +float baseTT(float t){ + return clamp(abs(sin(t))-.5,0.,.35)*2.; +} +float TT(vec2 t){ + float q = .90; + for(float i=1.;i<=8.;i++){ + + q =q + sign(mod(i,1.)-.5)* baseTT(t.y+t.x*i*3.1415+i*2.)/(i*4.); + t*=rot(-.785); + } + return pow(q,2.5); +} +float diam(vec3 p,float s){ + p = abs(p); + return (p.x+p.y+p.z-s)*inversesqrt(3.); +} +float ring(vec3 p,float size,float lol){ + + float h = abs(length(p.xy)-(size+lol*.2))-.1; + return max(abs(p.z)-.1-lol*1.,h); +} +float box(vec3 p,vec3 b){ + vec3 q = abs(p)-b; + return length(max(vec3(0.),q))+min(0.,max(q.x,max(q.y,q.z))); +} +vec2 sdf(vec3 p){ + + if(mod(fGlobalTime,20)<=10){ +p.z +=fGlobalTime*20; + p.xz /=7.; + p.xz = asin(sin(p.xz)*.9); + p.xz *=7.; + } + vec3 wtP=p; + vec3 ringP = p; + vec2 h; + p.xy*=rot(texture(texFFTIntegrated,.6).r); + p.xz *=rot(texture(texFFTIntegrated,.3).r); + float lol = TT(+texture(texFFT,abs(p.x*.01)).r*.1+TT(p.zx*.8)/8.+vec2(sin(atan(p.x,p.z)*4.)/4.,p.y))*.5; + h.x= mix(diam(p,1.+lol), length(p)-(1.+lol),sin(p.y*2.+fGlobalTime*10)*.5+.5); + h.y = 1.-lol; + op = p; + + + + // HELLO FOLKS :: + // LEARN UTC TIME AT SCHOOL ! IT MIGHT SERVE TO ORGANISE SHADER JAM :D :D :D + + + + + float lim = 7.; + for(float i=0;i<=lim;i++){ + vec2 t; + vec3 localRingP = ringP; + float lolelol = 0.; + if(i==5.) lolelol = lol; + localRingP.xz *=rot(texture(texFFTIntegrated,clamp(i/(lim+.1),.0,1.)).r); + localRingP.yz *=rot(texture(texFFTIntegrated,clamp(i/(lim+.1),.0,1.)).r); + t.x = ring(localRingP,1.5+i*.3+2.*texture(texFFTSmoothed,.33).r*100,lolelol); + t.y = 2.+i; + h = t.x < h.x ? t:h; + if(h.x ==t.x) op =localRingP; + } +vec2 t; + wtP.xz*=rot(fGlobalTime*5.); + + wtP.yz*=rot(fGlobalTime*5.); + t.x = mix(box(wtP,vec3(20.)),diam(wtP,20.),sin(floor(texture(texFFTIntegrated,.3).r*20))*.75+.5); + t.x = box(abs(wtP)-3.5,vec3(.25+lol*2.,.25+lol*3.,.25+lol*2.)); + t.y= 1.; + + + h = t.x < h.x ?t:h; + return h; +} + +#define q(s) s*sdf(p+s).x +vec2 e=vec2(-.003,.003); +vec3 norm(vec3 p){return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(.0,.2,.3)));} +vec3 txt(vec2 uv){ + + int x = int(abs(uv.x)*50.); + int y = int(abs(uv.y)*50.); + float z = mix((x^y)/100.,(x|y)/100.,sin(length(uv)+texture(texFFTIntegrated,.3).r)*.5+.5); + z = sqrt(texture(texFFT,z).r)*5.; + return pal(z); +} +#define ao(rp,n,k) (sdf(rp+n*k).x/k) +#define AO(rp,n) (ao(rp,n,.1)+ao(rp,n,5.1)+ao(rp,n,10.1)) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 col = vec3(.02); + vec3 ro= vec3(sin(fGlobalTime)*5.,15.,-7.); + vec3 rt = mod(fGlobalTime,20)<=10 ? vec3(0.,10.5,0.):vec3(0.,1.5,0.) ; + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z,vec3(0.,-1.,0.))); + vec3 y = normalize(cross(z,x)); + vec3 rd = mat3(x,y,z)*normalize(vec3(uv,1.)); + vec3 light = vec3(1.,2.,-3.); + vec3 rp = ro; + vec3 acc = vec3(0.); + /* + + LETS TRY REFRACTION + + */ + float IOR = 1.02; + bool inside=false; + for(float i=0;i<=128;i++){ + + vec2 d = sdf(rp); + if(inside) d.x = abs(d.x); + if(mod(d.y,3.) == 0.){ + vec2 tuv= op.xy; // not the TÜV + tuv *=rot(texture(texFFTIntegrated,.5).r*10); + acc +=pal(d.y*.1)*exp(4.*-abs(d.x))/(39.+sin(atan(tuv.x,tuv.y)*100)*30.); + d.x = max(.01,abs(d.x)); + } + if(d.y <.8 && d.x <.1){ + vec2 tuv= op.xy; // not the TÜV + tuv *=rot(texture(texFFTIntegrated,.5).r*10); + acc +=vec3(.5,2.,1.)*exp(-abs(d.x))/(49.+sin(atan(tuv.x,tuv.y)*10)*30.); + d.x = max(.01,abs(d.x)); + } + if(length(rp)>100) break; + if(d.x <=.001){ + vec3 n = norm(rp); + if(d.y== 7. || d.y == 4.){ + + n += (fract(TT(op.xz)+TT(op.xy)+TT(op.zy))-.5)*.1 ; + if(!inside){ + + rd = refract(rd,n,1./IOR); + rp -=n*.005; + inside = true; + } else { + n = -n; + vec3 _rd = refract(rd,n,IOR); + if(dot(_rd,_rd)==0.){ + + rd = reflect(rd,n); + rp +=n*.005; + } else{ + rd =_rd; + rp -=n*.005; + inside = false; + } + } + col += sqrt(pal(d.y*.1+.5))*.2; + } else { + + float diff = max(0.,dot(normalize(light-rp),n)); + float sp = max(0.,dot(normalize(ro-rp),reflect(-normalize(light),n))); + sp = pow(sp,32.); + float fr = pow(1.+dot(n,rd),8.); + col = txt(vec2(atan(op.x,op.z),op.y)*.2)*diff+vec3(1.,.7,.5)*sp; + col = mix(vec3(.1),col,fr+AO(rp,n)/3.); + break; + } + } + rp+=rd*d.x; + } + col +=acc; + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_visy.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_visy.glsl new file mode 100644 index 000000000..9ed49aa6b --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_visy.glsl @@ -0,0 +1,233 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +float NEAR_CLIPPING_PLANE=0.00001; +float FAR_CLIPPING_PLANE=1000.; +const int NUMBER_OF_MARCH_STEPS=350; +float EPSILON=0.15; +float DISTANCE_BIAS=0.03; +float t = 0.; +vec3 pc; + +float sdHexPrism( vec3 p, vec2 h ) +{ + vec3 q = abs(p); + return max(q.z-h.y,max((q.x*0.866025+q.y*0.5),q.y)-h.x); +} + +vec3 opRep( vec3 p, vec3 c ) +{ + return mod(p,c) - 0.5 * c; +} + +void pR(inout vec2 p, float a) { + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +vec3 hit; + +float mu; + +vec2 scene(vec3 pos) { + + float offs = 1.0-mod(pos.z,0.2); + float offs2 = 1.0-mod(pos.z,0.2); + + if (pos.z < 1.5) { + offs = 1.0; + offs2 = 1.0; + } + + vec3 p = pos+vec3(0.0,0.0,-4.0); + pR(p.xy,t*.1); + p = opRep(p,vec3(2.1,1.25,0.)); + float d1 = sdHexPrism(p,vec2(0.45,abs(sin(mu*0.5+p.z))+offs)); + + vec3 p2 = pos+vec3(0.0,0.0,-4.0); + pR(p2.xy,t*.1); + p2+=vec3(1.05,0.65,0.0); + p2 = opRep(p2,vec3(2.1,1.25,0.)); + float d2 = sdHexPrism(p2+vec3(0.,0.0,0.),vec2(0.45,abs(cos(mu*0.6+p2.z))+offs2)); + + float mate = 0.0; + + if (d1 < d2) mate = 1.0; + + return vec2(min(d1,d2),mate); +} + +vec3 raymarch(vec3 position, vec3 direction) +{ + float total_distance = NEAR_CLIPPING_PLANE; + float acc = 0.; + float mate = 0.0; + for(int i = 0 ; i < NUMBER_OF_MARCH_STEPS ; ++i) + { + vec3 pos = position + direction * total_distance; + vec2 result = scene(pos); + acc+=cos(result.x*1.)*.05; + mate = result.y; + if(result.x < EPSILON) + { + return vec3(total_distance, acc, mate); + } + + total_distance += result.x * DISTANCE_BIAS; + + + if(total_distance > FAR_CLIPPING_PLANE) + break; + } + return vec3(FAR_CLIPPING_PLANE, acc, mate); +} + +vec3 nr(vec3 n) { + return normalize(n); +} + +vec3 normal( in vec3 pos ) +{ + vec3 eps = vec3(.3,0.,0.)*EPSILON; + vec3 nor = vec3( + scene(pos+eps.xyy).x - scene(pos-eps.xyy).x, + scene(pos+eps.yxy).x - scene(pos-eps.yxy).x, + scene(pos+eps.yyx).x - scene(pos-eps.yyx).x ); + return nr(nor); +} + +#define OBJECT_REFLECTIVITY 0.5 + +float fresnelApprox(float n1, float n2, vec3 normal, vec3 incident) +{ + // Schlick aproximation + float r0 = (n1-n2) / (n1+n2); + r0 *= r0; + float cosX = -dot(normal, incident); + if (n1 > n2) + { + float n = n1/n2; + float sinT2 = n*n*(1.0-cosX*cosX); + // Total internal reflection + if (sinT2 > 1.0) + return 1.0; + cosX = sqrt(1.0-sinT2); + } + float x = 1.0-cosX; + float ret = r0+(1.0-r0)*x*x*x*x*x; + + // adjust reflect multiplier for object reflectivity + ret = (OBJECT_REFLECTIVITY + (1.0-OBJECT_REFLECTIVITY) * ret); + return ret; +} + +float orenNayarDiffuse( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float albedo) { + + float LdotV = dot(lightDirection, viewDirection); + float NdotL = dot(lightDirection, surfaceNormal); + float NdotV = dot(surfaceNormal, viewDirection); + + float s = LdotV - NdotL * NdotV; + float t = mix(1., max(NdotL, NdotV), step(0., s)); + + float sigma2 = roughness * roughness; + float A = 1. + sigma2 * (albedo / (sigma2 + .13) + .5 / (sigma2 + .33)); + float B = .45 * sigma2 / (sigma2 + .09); + + return albedo * max(0., NdotL) * (A + B * s / t) / 3.14159; +} + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + t=fGlobalTime*0.1; + + t = mod(t,16.0); + + //if (uv.x < 0.5) uv.x = 1.0-uv.x; + + + float tt = 0.1*cos(t*uv.x*1.); + + //if (uv.y > 0.5 && pc.r < tt) uv.y = 1.0-uv.y; + //else if (uv.y < 0.5 && pc.r >= tt) uv.y = 1.0-uv.y; + + + uv -= 0.5+0.1*abs(cos(t*0.8)); + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + + mu = 20+cos(t*10.)*2.; + + uv*=0.5; + + //uv*=distance(uv,vec2(abs(cos(t*0.2+uv.x*2.1+uv.y*2.1)*0.25)))*15.0; + + vec3 direction = nr(vec3(uv, 0.)); + + float FOV = 6.; + + float mo = t*0.8; + + vec3 camera_origin = vec3(mo,0.0,0.0); + vec3 lookAt = vec3(mo,0.0,1.0+cos(t*0.1)); + + vec3 forward = nr(lookAt-camera_origin); + vec3 right = nr(vec3(forward.z, 0., -forward.x )); + vec3 up = nr(cross(forward,right)); + + vec3 ro = camera_origin; + vec3 rd = nr(forward + FOV*uv.x*right + FOV*uv.y*up); + + vec3 result = raymarch(ro, rd); + float sz = mu*1.; + float tta = tan(cos(t*10.+uv.y*sz+uv.x*sz))+1.; + float fog = pow(1.*tta / (1.*tta + result.x), .2); + + vec3 materialColor = vec3(1.1-result.x*.01*.5,1.2-cos(result.x*.1)*.5,2.9*.5)*0.05; + + if (result.z == 1.0) { + materialColor = 0.5-vec3(abs(cos(mo+t*0.1+uv.y*10.+uv.x*10.0))-result.x*.1*1.,0.1-cos(result.x*.3)*.5,0.*.1); + } + + vec3 intersection = ro + rd*result.x; + + vec3 nrml = normal(intersection); + vec3 light_dir = nr(vec3(sin(result.x*.1),1.5*sin(t*0.4),-5.)); + vec3 ref = reflect( rd, nrml ); + + float dom = smoothstep( 0.5, 1.9, ref.y); + float spe = pow(clamp( dot( ref, light_dir ), 0., 1.0 ),32.); + + float diffuse = orenNayarDiffuse(light_dir,rd,nrml,0.3,2.5-result.x*0.5)-result.y*.1; + + float fresnel = fresnelApprox(result.x*0.05, 0.1, nrml, vec3(0.1,0.2,0.3))*1.5; + + vec3 light_color = vec3(1.0); + vec3 ambient_color = light_color; + vec3 diffuseLit = materialColor * (diffuse * light_color + ambient_color); + vec3 c = fresnel*diffuseLit*fog+dom*.2+spe*.6; + if (result.x >= FAR_CLIPPING_PLANE ) c=vec3(0.0); + out_color = clamp(vec4(c,1.0)*vec4(0.9,0.8,1.1,1.0),vec4(0.0),vec4(1.0)); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_wrighter.glsl b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_wrighter.glsl new file mode 100644 index 000000000..f123e2aa6 --- /dev/null +++ b/shader_file_sources/2021_08_13_shader_jam_prevoke/grabber_inerciaroyale_wrighter.glsl @@ -0,0 +1,154 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + + + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define pi acos(-1.) +#define iTime fGlobalTime +#define R v2Resolution +#define U fragCoord +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) +#define T(u) texture(texPreviousFrame, (u)/R) +#define pmod(p,a) mod(p,a) - 0.5*a +/// 3 out, 3 in... +vec3 hash33(vec3 p3) +{ + p3 = fract(p3 * vec3(.1031, .1030, .0973)); + p3 += dot(p3, p3.yxz+33.33); + return fract((p3.xxy + p3.yxx)*p3.zyx); + +} + +vec3 n; + +vec2 box( in vec3 ro, in vec3 rd, vec3 boxSize, out vec3 outNormal ) +{ + vec3 m = 1.0/rd; // can precompute if traversing a set of aligned boxes + vec3 n = m*ro; // can precompute if traversing a set of aligned boxes + vec3 k = abs(m)*boxSize; + vec3 t1 = -n - k; + vec3 t2 = -n + k; + float tN = max( max( t1.x, t1.y ), t1.z ); + float tF = min( min( t2.x, t2.y ), t2.z ); + if( tN>tF || tF<0.0) return vec2(-1.0); // no intersection + outNormal = -sign(rd)*step(t1.yzx,t1.xyz)*step(t1.zxy,t1.xyz); + return vec2( tN, tF ); +} + + + + + + + +vec2 trace(vec3 ro, vec3 rd){ + return box(ro,rd,vec3(1),n); +} + +#define beat iTime/60*127*1. + + +vec3 gp; + +vec3 get(vec3 p){ +p *= 1.1; +p.xz *= rot(0.5 + iTime*0.3); +p.xy *= rot(0.3 + iTime + sin(iTime)); +vec3 op = p; + +p.x += (iTime + sin(iTime))*0.1; + float c = floor(p.x*2.); + c = mod(c,2)/2; + gp = p; + vec3 cc = vec3(mix(0.2 + sin(p.xzy)*0.0,vec3(0) + 1.5 + 4 *mod(floor(p.y)*40.,2),c)); +p = op; + cc = mix(cc,4.5 * mod(beat,1.)-cc,smoothstep(0.001,0.,length(p.y) - 0.5)); + return cc; +} + + + + + + + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + //pxSz = fwidth(uv.y); + + vec2 U = gl_FragCoord.xy; + vec3 col = vec3(0); + + vec3 ro = vec3(0); + vec3 p = ro; + vec3 rd = normalize(vec3(uv,0.1)); + rd.xz *= rot((sin(iTime*0.5) + sin(iTime))*0.3); + rd.yz *= rot(iTime*0.2); + + vec2 t = trace(p,rd); + p += rd*t.y; + vec3 c = get(p); + vec3 att = vec3(1)*c; + + + float bounces = 40; + float ratio = 0. + 1*mod(floor(gp.z*2),2.)*0.9; + p += n*0.01 ; + for(float bnc = 0.; bnc < bounces; bnc++){ + vec3 diff = hash33(vec3(uv*111.,bnc + iTime*0.1)); + if(dot(diff,n)<0.) + diff = -diff; + vec3 refl = -reflect(rd,n); + vec3 rdd = mix(diff,refl,ratio); + rdd = normalize(rdd); + vec2 t = trace(p,rdd); + vec3 pp = p + rdd*t.y; + vec3 scene = get(pp); + col += scene*att/bounces; + + } + + { + float d = length(uv) - 0.3; + + + float db = length(uv) - 0.2; + if(mod(beat,1) < 0.25) + col = mix(col,1.-col*1.,smoothstep(0.001,0.,d)); + else if(mod(beat,4) > 3) + col = mix(col,col*0.1*vec3(1,0,0),smoothstep(0.001,0.,db)); + + if(abs(uv.x) > 0.55 && mod(beat,16) > 14) + col = col*0.1*vec3(1,0.8,0); + + + } + if(abs(uv.y) > 0.4) + col = col*0.1*vec3(0,0,0); + + + + + col = pow(max(col,0),vec3(0.4545)); + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_08_14_shader_jam_nevoke/Flopine_chibitech_visuals.glsl b/shader_file_sources/2021_08_14_shader_jam_nevoke/Flopine_chibitech_visuals.glsl new file mode 100644 index 000000000..6b16d837b --- /dev/null +++ b/shader_file_sources/2021_08_14_shader_jam_nevoke/Flopine_chibitech_visuals.glsl @@ -0,0 +1,173 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define PI acos(-1.) +#define TAU (2.*PI) + +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define crep(p,c,l) p-=(c*clamp(round(p/c),-l,l)) +#define pal(c,t,d) (vec3(0.5)+vec3(0.5)*cos(TAU*(c*t+d))) +#define rep(p,d) p=(mod(p,d)-d*0.5) +#define mo(p,d) p=abs(p)-d;if(p.y>p.x)p=p.yx + +#define frt(sp,off) fract((fGlobalTime+off)*sp) +#define bouncy(sp,off) sqrt(sin(frt(sp,off)*PI)) +#define swi(sp,off) floor(sin(frt(sp,off)*TAU)+1.) + +struct obj{ + float d; + vec3 sha; + vec3 li; +}; + +obj minobj (obj a, obj b) +{return (a.d3 and 7+(l*t/30)%4 or 4) +end end end +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/blackle_first_round.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/blackle_first_round.lua new file mode 100644 index 000000000..ecf78f696 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/blackle_first_round.lua @@ -0,0 +1,15 @@ +function TIC()cls()t=time()/3e3l={}s=math.sin +t=t+s(t*8)/9 +for i=1,40 do +l[i]={x=s(t+i)*239,y=s(t+i*97)*149}end +for i=1,40 do +v=l[i]m=1e9w=v +for j=1,40 do +p=l[j]n=(p.x-v.x)^2+(p.y-v.y)^2 +if n9) then +m=n +w=p +end +end +line(w.x,w.y,v.x,v.y,i%4+8)end +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/dresdenboy_first_round.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/dresdenboy_first_round.lua new file mode 100644 index 000000000..5ef5a3867 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/dresdenboy_first_round.lua @@ -0,0 +1,3 @@ +function TIC()t=time()//32 +cls()s=math.sin(t/9)tri(90,50,108,30,120,50,7)tri(120,50,220,100,160,100,7)tri(180,0,230,10+s*5,140,60,5)circ(107,38,2,0) +for i=0,100 do poke(16320+i%48,(i%48*2)*(3-i%3))v=(i*3+t)%80pix(93-v-(v*i*.2)%5,52+v*(.7+s*.1),i)end end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/exoticorn_first_round.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/exoticorn_first_round.lua new file mode 100644 index 000000000..70b3d5c60 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/exoticorn_first_round.lua @@ -0,0 +1,12 @@ +function TIC()t=time()/999 +cls()r=9 +for i=0,135 do +r=(r*57+13)%64pix(-t*(r+10)%240,i,-r/16) +end +for i=0,399 do +x=i%8-3+t//1-t +y=i//8%5-2z=40-i//40-math.max(0,x+y%3)^3 +f=40/z +s=(2*(9-i//40))*f +rect(120+x*40*f-s,68+y*40*f-s,s*2,s*2,i+t//1)end +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_first_round.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_first_round.lua new file mode 100644 index 000000000..3ad0fa51f --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_first_round.lua @@ -0,0 +1,19 @@ +function TIC()t=time() +m=math +s=m.sin +c=m.cos +b=t/600 +z=120 +circ(z+30*s(b),64+70*c(b),100,t/100) +circ(z,30,15,4) +circ(z,50,20,4) +x=z +y=70 +for i=0,10 do +tri(115+i%2*10,10,z,20,110+i%2*20,20,4) +circ(x,y,5,4) +a=m.sin(t/300) +x=x+5*s(a*i) +y=y+5*c(a*i) +end +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_quarter.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_quarter.lua new file mode 100644 index 000000000..4690b2de8 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_quarter.lua @@ -0,0 +1,18 @@ +m=math +s=m.sin +c=m.cos +function SCN(y) +poke(16321,y*2) +poke(16322,y-64) +end +function TIC()t=time()cls() +for k=0,3 do +S=(k+t/600)%4 +d=m.min(S,1) +for i=0,3.2,.01 do +for j=0,7 do +circ(120-S*(40-j*2)*c(i*d),60+8*S+S*(-35-j*2)*s(i*d),2,j+2) +end +end +end +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_semi.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_semi.lua new file mode 100644 index 000000000..3dbadd24c --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gasman_semi.lua @@ -0,0 +1,14 @@ +m=math +s=m.sin +c=m.cos +C=circ +Z=120 +function TIC()t=time()/100 +cls()r=t/4 +for a=0,6.2,.3 do +for b=0,6.2,.3 do +C(Z-32*(b+2)/4*(a-3),80+b*4+8*s(a+t),2,9) +x=60*s(a)*s(r+b)z=30*c(a)y=10*s(t) +C(Z+x,65+z+y,2,4) +C(Z+60*s(r)+x/3,45+z/3+y,2,4) +end end end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gopher_first_round.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gopher_first_round.lua new file mode 100644 index 000000000..53530c3bb --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/gopher_first_round.lua @@ -0,0 +1,2 @@ +t=0o=math.cos +TIC=load"t=t+.01 for p=0,32640 do poke4(p,p/(29+t/3.14%2))end for i=0,14 do z=15p=120q=68r=p s=q u=o(t+1.4)/4w=6.28*(o(t)+i/15)for j=0,9 do r=r+z*o(w-j*u-11)s=s+z*o(w-j*u)line(p,q,r,s,i+1)circ(p,q,3+2*o(4*t+j),j+9*t)p,q,z=r,s,z*.9 end end" \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_first_round.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_first_round.lua new file mode 100644 index 000000000..57154cdb8 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_first_round.lua @@ -0,0 +1,8 @@ +o=16320r=math.random +for i=3,47,3 do +poke(o+i,255)poke(o+1+i,i*4)poke(o+2+i,0)end +function TIC()cls()line(0,40,0,96,9)for x=1,239 do +for y=0,135 do +c=pix(x-1,y)for i=1,c do +n=y+i/(c+1)k=n-72+r(8)n=n+k/(7+k*k/(1+r(3))+.1)pix(x,n,pix(x,n)+1)end +end end end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_quarter.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_quarter.lua new file mode 100644 index 000000000..455dba0bb --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/jobe_quarter.lua @@ -0,0 +1 @@ +TIC=load't=time()/555m=math cls()r={2,3,4,6,9,1} for i=0,32639 do x=i%120S=m.sin y=i/66 n=m.atan(x,y)*6+S(t)d=(x*x+y)/5e3*(9+6*S(t)*S(n+t))if d>1 and d<7then poke4(i,r[d//1])end end s={"trans","rights"}x={35,25}i=t%8//4+1print(s[i],x[i],50+30*S(t),12,Z,6)' \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_first_round.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_first_round.lua new file mode 100644 index 000000000..c023bb34d --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_first_round.lua @@ -0,0 +1,11 @@ +m=math +s=m.sin +function g(h,H) return {x=-5+h*13+20*s(h/3+H/19+t),y=H+9*((h%2)+s(h*6+s(t)))} end +function TIC()t=time()/400 +for j=-20,200,5 do +for i=0,20 do +J=j+s(t)a=g(i-1,j)b=g(i,j)d=g(i+1,j) +tri(a.x,a.y,b.x,b.y,d.x,d.y,(i+j/4)%4+8) +end +end +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_quarter.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_quarter.lua new file mode 100644 index 000000000..6faedf346 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/mantratronic_quarter.lua @@ -0,0 +1,3 @@ +s=math.sin +function r(X,Y,A)return X*s(A-11)-Y*s(A)end +TIC=load't=time()/499 cls()for z=-3,3,.1 do for y=-3,3,.1 do for x=-3,3,.1 do q=s(t+y)%2 if z%2pix(X,Y)and q/2 or 0,-q) +r=(x*x+y*y)/8w=(S(x/5+g)+r%4)*9 +circ(X*2,v+w+144,5,w/6)end end end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_semi.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_semi.lua new file mode 100644 index 000000000..7a8655102 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/superogue_semi.lua @@ -0,0 +1 @@ +t=0n=32639TIC=load't=t+.3 for o=t%2,n,1.9 do h=o%240/40-3v=o/n-.5y=0i=16z=t;x=O(z/3)*4repeat X=x%10-5Y=-y%20Z=z%10-5i=i-1r=O((X*X+Y*Y+Z*Z)/32)y=y+r*v*2x=x+r*h;z=z+r*2until(r*9+i<9)poke4(o,i/4+y/4+y%1)end for i=0,9 do circ(120,112+i*5,i+8,-i)end'O=math.cos \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_first_round.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_first_round.lua new file mode 100644 index 000000000..6866e3485 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_first_round.lua @@ -0,0 +1,7 @@ +for i=0,47 do t=0m=32640poke(16367-i,i*5)end +function TIC()t=t+.2T=3*math.cos(t)for o=0,m +do u=o%240/136-.9v=o/m-.5l=3i=0repeat +X=l*u-T*3Y=T*T-l*v-4Z=l+T*T-19 +g=math.min((X*X+Y*Y+Z*Z)^.5-5,5-T*T/7-l*v)l=l+g +i=i+1until i>14or g<.05or l>16poke4(o,i)end +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_quarter.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_quarter.lua new file mode 100644 index 000000000..252984871 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/tomcat_quarter.lua @@ -0,0 +1 @@ +TIC=load"for o=0,p do l=0i=14u=o%120/68-1repeat x=A(l*(s+u*k)-2*s)y=l*A(o/p-.5)z=A(l*(k-u*s)-2*k)a=M(x,y)b=M(z,y)a=b>z and M(x,z)or a i=i-1g=(a*a+b*b-a-b+.5)^.5-.05l=l+g until i<0or g<.05or l>16poke(o,i)end s=s+k/9k=k-s/9"k=1s=0p=16319M=math.max A=math.abs \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/visy_first_round.lua b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/visy_first_round.lua new file mode 100644 index 000000000..a1efb64d5 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_battle_lovebyte_battlegrounds/visy_first_round.lua @@ -0,0 +1,13 @@ +p=pix +s=math.sin +cls() +print("Demo.",32,0,12) +function TIC()t=time()//32 +for y=5,136,2 do for x=0,240 do +p(x/s(t*y),y,(x+y+t)/9) +end end +for y=0,4 do for x=0,50 do +c=p(x+t%128,y)*(y+x)*.1 +circ(x*9+s(t*.4+y)*4,y*12+48+32*s(x*.04+t*.1),9-x/4,c) +end end +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_jam_lovebyte/gasman.lua b/shader_file_sources/2021_09_25_byte_jam_lovebyte/gasman.lua new file mode 100644 index 000000000..6bd7a0113 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_jam_lovebyte/gasman.lua @@ -0,0 +1,97 @@ +m=math +c=m.cos +s=m.sin +msg="<3 LOVEBYTE <3" +msgwidth=print(msg,0,0) +v={ + {-1,-1,0}, + {-1,1,0}, + {1,1,0}, + {1,-1,0}, + {0,0,1}, + {0,0,-1} +} +for i=0,47 do + poke(32320+i,peek(16320+i)) +end +cy=0 +function SCN(y) + if y=cx and y>=cy) then + a1=m.atan2(x-ix1,y-iy1)/m.pi*32 + a2=m.atan2(x-ix2,y-iy2)/m.pi*32 + pix(x,y,((a1//1~a2//1)&3)*3) +end +end end + +v1={} +v2={} +w={} +a=t/400 +for i=1,6 do + v1[i]={ + v[i][1]*c(a)+v[i][3]*s(a), + v[i][2], + v[i][3]*c(a)-v[i][1]*s(a) + } + v2[i]={ + v1[i][1]*c(a)-v1[i][2]*s(a), + v1[i][2]*c(a)+v1[i][1]*s(a) + } + w[i]={ + 40*v2[i][1],40*v2[i][2] + } +end +tri3d(w,1,2,5,5) +tri3d(w,2,3,5,7) +tri3d(w,3,4,5,9) +tri3d(w,4,1,5,11) +tri3d(w,1,2,6,5) +tri3d(w,2,3,6,7) +tri3d(w,3,4,6,9) +tri3d(w,4,1,6,11) +for i=0,90 do + rect(cx+120+60*s(i/50+t/456)*s(i/10+t/139),cy-130+i,8,130-i,i) +end +print(msg, cx-msgwidth*2,cy-8,time()/32,true,4) +end +function line3d(w,i,j) + line( + cx+120+w[i][1],cy-85+w[i][2], + cx+120+w[j][1],cy-85+w[j][2], + 4) +end +function tri3d(w,i,j,k,clr) + tri( + cx-120+w[i][1],cy+85+w[i][2], + cx-120+w[j][1],cy+85+w[j][2], + cx-120+w[k][1],cy+85+w[k][2], + clr) +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_jam_lovebyte/mantratronic.lua b/shader_file_sources/2021_09_25_byte_jam_lovebyte/mantratronic.lua new file mode 100644 index 000000000..59bfed90a --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_jam_lovebyte/mantratronic.lua @@ -0,0 +1,63 @@ +m=math +s=m.sin +c=m.cos +tau=m.pi*2 +function rot(lx,ly,la) +return lx*c(la)-ly*s(la) +end + +function SCN(l) +r=t +for i=0,15 do +poke(0x3fc0+i*3,(r%15)*s(i)*15) +poke(0x3fc0+i*3+1,0) +poke(0x3fc0+i*3+2,((r+10)%15)*i) +end +end + +function OVR() +for i=0,47 do +poke(0x3fc0+i,i//3*15) +end +tt=t*10 +for i=1,20 do +circb(109,51,((tt+i)*5)%120,math.min(0,15*s(i/5))) +end +print(": ____ __ ____________ :",5,40,15,true) +print(": ____/ \\/ o\\/ __\\__ __/___ :",5,48,15,true) +print(": /___\\ \\_/ / _/_/ \\____/ :",5,56,15,true) +print(": \\__/\\\\__/\\__/\\/ \\___/\\ :",5,64,15,true) +print(": \\_\\/ \\_\\/\\_\\/ \\__\\dc@ :",5,72,15,true) +print(":good jam! planet hacked! now to sleep:",5,80,15,true) +-- noooooooo escape chars! +end +function TIC()t=time()/999 +cls() + for x=-12,12,.2 do + for y=-6,6,.1 do + a=m.atan(x,y) + d=(x^2+y^2)^2 + q=m.abs(x)+m.abs(y) + q=q + X=rot(x,y,s(t*s(d/10))) + Y=rot(y,-x,s(t*c(d/10))) + Q=m.abs(X)+m.abs(Y) + D=s(c(d))*10 + if q%3 > 1 then + rect(120+D*X,68+D*Y,5,5,Q+t*10) + elseif q%3 > .5 then + circ(120+D*X,68+D*Y,5*q%6,Q+t*10) + else + line(120+D*X,68+D*Y,125+D*X,63+D*Y,Q+t*10) + end + end + end + for i=0,500 do + y=m.random(136) + x=m.random(240) + p=pix(x,y) + for j=1,10 do + pix(x+j,y,p) + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_jam_lovebyte/pancelor.lua b/shader_file_sources/2021_09_25_byte_jam_lovebyte/pancelor.lua new file mode 100644 index 000000000..c103e4046 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_jam_lovebyte/pancelor.lua @@ -0,0 +1,95 @@ +-- pos: 0,0 +m=math +mc=m.cos +ms=m.sin +r=m.random +t=0 +add=table.insert +deli=table.remove +dir={0,0,-1,1,0,0} +trace"start" +function TIC() + if t==0 then + cls() + L={} + pq(1,2,3) + end + if t%60==0 then + add(L,{ + u=-1, + v=r()*1.8-.9, + r=r(4)+2, + t0=t+r(10), + d=r()/2-.25, + c=r(15), + }) + end + + for _=0,99 do + dist=remap(r(),0,1,.45,1.414)^2.8 + ang=r()*6.28 + u=dist*mc(ang) + v=dist*ms(ang) + base=remap(m.atan2(v,u)+t/240,-3.14,3.14,-8,8) + circ(u2x(u),v2y(v),1,cool(base)) + end + + i=1 + while i<=#L do + b=L[i] + tt=t-b.t0 + b.u=b.u+remap(mc(tt/60),-1,1,-.002,.010) + b.v=b.v+remap(mc(tt/10),-1,1,-.01*(1-b.d),.01*(1+b.d)) + b.r=b.r+remap(ms(tt/20),-1,1,-.04,.03) + b.c=b.c+tt/10000 + a=remap(ms(tt/20),-1,1,.3,3) + elli(u2x(b.u),v2y(b.v),b.r,b.r*a,warm(b.c)) + elli(u2x(b.u),v2y(b.v),b.r/2,b.r*a/2,warm(b.c)-1) + if b.r<0 then + deli(L,i) + else + i=i+1 + end + end + + t=t+1 +end + +function warm(c) + return c%7+1 +end +function cool(c) + return c%8+8 +end + +function u2x(u) + return remap(u,-1,1,0,239) +end +function v2y(v) + return remap(v,-1,1,0,135) +end +function x2u(x) + return remap(x,0,239,-1,1) +end +function y2v(y) + return remap(y,0,135,-1,1) +end + +function remap(x,a,b,u,v) + return u+(v-u)*(x-a)/(b-a) +end + +function qq(...) + s="" + args=table.pack(...) + for i=1,args.n do + s=s..args[i].." " + end + return s +end +function pq(...) + trace(qq(...)) +end +function pqr(...) + if r()<0.01 then pq(...) end +end \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_jam_lovebyte/pestis_1.lua b/shader_file_sources/2021_09_25_byte_jam_lovebyte/pestis_1.lua new file mode 100644 index 000000000..041361cca --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_jam_lovebyte/pestis_1.lua @@ -0,0 +1 @@ +t=0TIC=load't=t+.1k=s(t/7)/5 for i=0,32639,2 do x=i%240y=i//240u=(x-120)/68v=(y-68)/68q=0u,v=u+k*v+k,v-k*u w=1-k*u for j=0,29 do p=((u*q%1-.5)^2+(v*q%1-.5)^2+((w*q+t)%1-.5)^2)^.5-.1 if p<.2 then poke4(i+p*99%2,-q/2)break end q=q+p end end's=math.sin \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_jam_lovebyte/pestis_2.lua b/shader_file_sources/2021_09_25_byte_jam_lovebyte/pestis_2.lua new file mode 100644 index 000000000..daed33b9f --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_jam_lovebyte/pestis_2.lua @@ -0,0 +1 @@ +h=load'i,l=...w=i*1.256+s(s(t/5+l)+t/4+l*2)return s(w)*l*20+120+s(l*t/5)*9,s(w+8)*l*20+68+s(l*t/8)*9'TIC=load'cls()t=time()/1e3s=math.sin for l=7,1,-1 do for i=0,4 do x,y=h(i,l)for j=0,5 do u,v=h(j,l+1)for k=0,2 do line(x+k,y,u+k,v,11+l+k)end end end end' \ No newline at end of file diff --git a/shader_file_sources/2021_09_25_byte_jam_lovebyte/sir_garbagetruck.lua b/shader_file_sources/2021_09_25_byte_jam_lovebyte/sir_garbagetruck.lua new file mode 100644 index 000000000..c2b97cb24 --- /dev/null +++ b/shader_file_sources/2021_09_25_byte_jam_lovebyte/sir_garbagetruck.lua @@ -0,0 +1,167 @@ +function TIC()t=time()//32 + chk=chk+1 + tq=mf(t/16) + if (chk==100) then + gr(tq) + chk=0 + end + + fkc(1) + + for i=15,75,5 do + dhex(xc,yc,i,i/5) + end + + ht(-10,t/100) + ht(110,t/100) + +-- if (m.abs(chk/8)==chk/8 ) then +-- fkc(3) +-- end + + yo=ms(t/102)*25 + print('HACK THE PLANET',30,100+yo,4,false,2,false) + + hackface() + +end +-- pos: 0,0 +m=math +ms=m.sin +mc=m.cos +mf=m.floor +pi=m.pi +xc=240/2 +yc=136/2 + +dots = { + {3,1},{6,1}, + {4,2},{5,2}, + {1,4},{8,4}, + {2,5},{7,5}, + {4,7},{5,7}, + {3,8},{6,8} + } + +lines={ + {3,1},{3,3}, + {3,3},{4,3}, + {4,2},{4,7}, + {5,2},{5,7}, + {5,3},{6,3}, + {6,3},{6,1}, + {1,4},{8,4}, + {2,5},{7,5}, + {3,8},{3,6}, + {3,6},{4,6}, + {5,6},{6,6}, + {6,6},{6,8} + } + +hofs=(2*pi)/12 + +function hackface() + circ(xc,yc,12,4) + circb(xc,yc,8,0) + rect(xc-8,yc-8,20,8,4) + circ(xc-4,yc-3,2,0) + line(xc-8,yc-8,xc+12,yc-4,0) + elli(xc+4,yc-4,4,3,0) + +end + +-- let's learn to spell +function mkhex(r) + hext={} + for i=1,6 do + ang=(2*pi)/6 * i + x=(mc(ang+hofs)*r) + y=(ms(ang+hofs)*r) + xy={x,y} + hext[i]=xy + end + return hext +end + +function dhex(xo,yo,r,c) + hex=mkhex(r) + x2=hex[6][1]+xo + y2=hex[6][2]+yo + for i=1,6 do + x1=hex[i][1]+xo + y1=hex[i][2]+yo + line(x1,y1,x2,y2,c) + x2=x1 + y2=y1 + end +end + + +function fkc(b) + for x=2,240,2 do + for y=2,136,2 do + c=pix(x,y) + cc=pix(x-b,y) + ccc=pix(x,y-b) + ts=ms(t) + tc=mc(t) + c1=c+ts + c2=c+tc + pix(x+ts,y+tc,c1) + pix(x,y,c2) + pix(x-1,y-1,ccc) + pix(x,y,cc) + + end + end +end + +off=25 +scl=10 + +function gr(tr) + for x1 = 1,240,8 do + for y1 = 1,136,8 do + circ (x1+4+tq,y1+4+tq,3,x1*y1>>2) + circb (x1+3,y1+3,3,3) + p = ms(x1*y1) + circb(x1+tq,y1+tq,3,p) + end + end +end + +function ht(xo,r) + xr = ms(r)*50 + yr = mc(r)*50 + for i=1,24,2 do + x1=lines[i][1]*scl+off+xo + y1=lines[i][2]*scl+off + x2=lines[i+1][1]*scl+off+xo + y2=lines[i+1][2]*scl+off + x1r=x1+xr + y1r=y1+yr + x2r=x2+xr + y2r=y2+yr + -- freaking editor missing + -- emacs keys + line(x1,y1,x1r,y1r,8) + line(x1r,y1r,x2r,y2r,2) + line(x1,y1,x2,y2,6) + x1=x2 + y1=y2 + end + + for i=1,12 do + x=dots[i][1]*scl+off+xo + y=dots[i][2]*scl+off + circ(x,y,scl/2,5) + circb(x,y,scl/2,6) + end +end + +-- dammit I just want to have +-- this reset ever so often and +-- I forgot how to do that with +-- binary operators + +chk = 0 \ No newline at end of file diff --git a/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/gopher.lua b/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/gopher.lua new file mode 100644 index 000000000..3fa2ee470 --- /dev/null +++ b/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/gopher.lua @@ -0,0 +1 @@ +t=0o=math.sin q=elli TIC=load"cls(11)t=t+.2x=300-t*4%340 q(x-34,2*o(t)+47,10,1,3)q(x,68,40,20,4)q(x-15,40,18,18,4)q(x-35,45,10,2,3)q(x-27,36,3,3,0)q(x-27-o(t),35,1,1,12)q(x+36+o(t*2),59,5,12,4)for i=0,999 do q(i%17*17-20,109+i/5+2*o(i+t),30,38,9+i%2)end" \ No newline at end of file diff --git a/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/jobe.lua b/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/jobe.lua new file mode 100644 index 000000000..edd96096a --- /dev/null +++ b/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/jobe.lua @@ -0,0 +1,15 @@ +m=math +c=circ +function TIC()cls()t=time()/99 +for a=20,67 do +z=202/a +for b=0,240 do +x=t+z-b*z/99pix(b,a+68,x+z//1)end +end +h=9*m.abs(m.sin(t))for x=90,130 do +for y=58,99 do +c(x,y-h,3,12)end +end +for x=85,99 do +c(x,84-h,3,3)end +c(91,70-h,3,0)c(99,70-h,3,0)end \ No newline at end of file diff --git a/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/nusan.lua b/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/nusan.lua new file mode 100644 index 000000000..1f6bd5e23 --- /dev/null +++ b/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/nusan.lua @@ -0,0 +1,2 @@ +s=math.sin +TIC=load"cls()t=time()/512 for i=0,239 do y=60+s(t+i/29+s(5*t-i/59))*20*s(t+i/87)for j=0,136 do pix(i,y+j,8+j/9-t)end if i%28==0 then u,v=i-20-9*s(t+i/9),y+5*s(t*5+i)circ(u,v,5,12)circ(u+5,v-5,3,13)pix(u+6,v-7,0)rect(u+8,v-5,5,1,3)end end" \ No newline at end of file diff --git a/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/superogue.lua b/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/superogue.lua new file mode 100644 index 000000000..cf8178a3a --- /dev/null +++ b/shader_file_sources/2021_09_26_byte_jam_lovebyte_duck/superogue.lua @@ -0,0 +1,2 @@ +k=load'x,y=...elli(x,y,16,9,4)r(x+8,y-8,8,4)r(x+10,y-11,2,12)r(x+11,y-11,1,0)elli(x+16,y-8,5,1,3)' +TIC=load't=t+.01s=math.sin;cls(9)for i=1,5 do v=68+i*9k((i*48+t*9)%260-32,s(t+i)*8+v)for x=0,240 do line(x,s(x/39+i*t)*(5+i)+v,x,136,13-i)end end't=0r=circ \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_byte_jam_inercia/mantratronic_inerciajam.lua b/shader_file_sources/2021_10_30_byte_jam_inercia/mantratronic_inerciajam.lua new file mode 100644 index 000000000..1eea2a794 --- /dev/null +++ b/shader_file_sources/2021_10_30_byte_jam_inercia/mantratronic_inerciajam.lua @@ -0,0 +1,173 @@ +local pal = "0500042b2b2156553b33803378801c86807aaaaa23d1e129acaa9bffe167bffb63cc8000dbd5d1f3ff79fefffeff9d37" +function tovram(str) + local o=0 + for c=1,#str,2 do + local v=tonumber(str:sub(c,c+1),16) + poke(0x3fc0+o,v) o=o+1 + end +end +tovram(pal) +local gfx = "8040fffffffffffffffffffffffffffffffffffffffffffffff0ffffff05ffffff08ffffff00fff00058ff05ced9f08e999908d999998d999999d99999999999999900000000eedddddd999999999999e9999999999999999999999999999999777000ffffffc000ffff9dd800ff9999900f9999920099602eec902ec9992ec99999fffffffffffffff0fff0000e0000eecceecc9999999999999999999799999999ffff00000000ccccecc99ddd99999999999920007777750c7e999100999999420fffffffc0000000ddee90dd9999999c2699999909999990199991029999025ef00000ff00e9920f9996990f9999990f11111000b282bc8020cc2c50e18c2880ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000007fffff000fffffff1fffffff0fffffff0ffffff02ffffff00ffffff0c7777721e77770ecc7770ec99770e999970d999990d9999e7c999997999999799c9999979999779999979999297990990799029109990990099909909999099079909999990c999990c999e99c9999999c9999777999777999777999977999999999999999999929999999991799999189999962c9999905899991851999618e09100288505cc5885b85ed1c81885e01cd188e021e80221208501200f010010f1e22e5081e1082110c011010f8021220f1158010f01000ffff0ffffff10f10f00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c9fffff199ffff0c99fff0c999fff0c999ff0c9999ff199999f0c9999e99997999999979999997990999799990999999969999999999999990999999970990d7070996077960970799990779990777999990799999079999e9799999997999999999999999999999999999999999999999e999999999999999999999999a9120029961200099500101999999999999dddd9ddddddddddddddddddddddd1021c000e105880c22212112ddddddddddddddddddddddddddddddddddddddddc1120120828c08c021c82cc562111210ddddddd1ddddddd0ddddddd0ddddddd0fffffffffffffffffffffffffffffff0fffffff0fffffff0fffff004fff00919f0999999089999990997999949779999997799999777799997777999777777999999997799999799999979999997999999999999999999999999e999999999979999999999999999999099699999009999904999990d99999049999990d999999999999d9999d6ad9999d0ad999d0aad999e0aad99d0aada9d40aaaadc1aaaaaddddddddddddddddddddddddddddddaddddddadddddaaaddaaaaaaddaaaaaaeddddddddddddddddadddddddaddddddaddddddaddddddaddddddaddddddadddddaddddd00dddddd0fdddddd0fddddd00fddddd0ffdddd00ffdddd0fffddd00fffff099709fff17709ffff0707fffff007ffffff07ffffff07ffffff07ffffff077777777977777777777777777777777777777777777777777777777777777777999999777999977777797777777777777e777776777777707777777077777770099999990999999d099999d009999d030999e03a999d03aa99d03aaadd03aaaac13aaaaa13aaaaaa3aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaddaaaaaaadaaaaaaaaaaaaaaaaaaaaa2aaaaaa2aaaaa22aaaaa27aaaaaddddddddddddddddaddddddaaaaaaaaaaaaaaaaaaaaaaaa4aaaaaa40aaaaaa01dda0ffffda00ffffaa0fffffa000ffff0120ffff0110ffff1220ffff122b0fffffffff06fffffff0fffffff1fffffff0fffffff0fffffff0fffffffffff000007777777777777777777777777777777777777777677777770777777707777707777777607777770c7777770077777aaa7777aaaa6777aaaa077aaaaa07aaaaaae03aaaaa03aaaaaa3aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2aaaa222aaa22aaaaaaaaaaa2aaaaaa27aaaa22aaaaa27aaaa22aaaaa2aaaaaaaaaaaaaaaaaaaaaaa2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0aaaaaa00aaaa400faaaaa000aaaa00ffaaa00fffaa00ffff400fffff00ffffffffffffffffffffff22b90fff08950ffff0920fffff00fffffff0ffffffffffffffffffffffffffffff07d777f077d7770a77777700000007fffffff1fffffff0fffffff0ffffffff077777060677776070777777766777776777777a27777700077777aa0006777a07aaaaaa7aaaaaaa7aaaaaaa7aaaaaaaaaaaaaaaaaaaaaaa200000000fffffffaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaa4000000000ffffffffffaaaaaaaaaaaaaaaaaaaaaa40aaaaa000a40000ff000fffffffffffffffffffffaa4000ffa000ffff01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00a77affff077affff077affff00aafffff0a0fffff0a0ffff0d00ffff000f0fffffff0fffffff0fffffff0fffffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" +function tomem(str) + local tnb=tonumber + local o=tnb(str:sub(1,2),16)*256 + local w=tnb(str:sub(3,4),16)*8-1 + local d=str:sub(5,str:len()) + local y=0 + for x = 1,#d,1 do + local c=tnb(d:sub(x,x),16) + poke4(o+y,c) y=y+1 + if y>w then y=0 o=o+1024 end + end +end +tomem(gfx) + +strings={"Hello!", +"My name is Diego Mantroya!", +"You mistook my nationality", +"prepare to die.", +"", +"Psychic is mind magic we wish we had", +"Psychics are people you can pay", +"to tell you what you want to hear", +"Psychics are full of shit!", +"", +"Symphonies are a type", +"of classical music", +"Symphonies use lots of instruments", +"Symphonies are longer than", +"most drone songs", +"", +"Psychic Symphony is", +"nothing to do with either of these", +"He is PS", +"and is probably wishing I'd stop!", +"He should drink caipirinha!", +"And more superbock!", +"", +"If you are a Lemon Shark", +"Please dont eat Psychic Symphony", +"He is full of noise.", +"If you like jazz though...", +"Jeenio is full of that!", +"", +"Happy 20th INERCIA!", +"May it always be 2005!", +"", +"Image tool code by Decca, release soon", +"the rest by Diego Mantroya", +""} + + + + +-- nothing to see up there! +-- no idea why that character count is +-- so high... + +strings2 = { +"ok time to get weird", +"we dont need trolling", +"where we're going", +""} + +shapes = 5 +shape = 4 +tau = math.pi*2 +s1 = 40 +s2 = 20 + sxo=0 + syo=0 + nxo=0 + nyo=0 +nc=3 +function throwshapes(ft,levels) + for i=0,shapes do + sa=tau/shapes*i + ft/3 + sx=s1*math.sin(sa) + sy=s1*math.cos(sa) + if i==0 then + else + line(sx+120,sy+68,sxo+120,syo+68,nc) + for j=0,shape do + na=tau/shape*j +(sa+ft) + nx=math.sin(na) + ny=math.cos(na) + if j==0 then + else + for k=1,levels do + line(nx*s2/k+sx+120,ny*s2/k+sy+68,nxo*s2/k+sx+120,nyo*s2/k+sy+68,nc) + end + end + nxo=nx + nyo=ny + end + end + sxo=sx + syo=sy + end +end + +ot=-1 +c=10 +sc=14 +ls=3 +p={} +function TIC() +cls(c) +t=time() +for I=0,376,3 do +dI=I-(t/300)%3 +line(dI,0,dI-136,136,c-1) +end +lt=t//4000 +if lt==ot then +else +shapes=(math.random()*8 + 3)//1 +shape=shapes +ls=(math.random()*3 + 1)//1 +ot=lt +c=16*math.random() +nc=c+6 +sc=c+4 +s2=30+20*math.random() +s1=30+20*math.random() +for I=1,400 do +p[I] = {x=240*math.random(),y=136*math.random()} +end +end +throwshapes(t/1000,ls) +for I=1,10 do + dx=40*math.sin(t/1000+tau*I/10) + dy=40*math.cos(t/1000+tau*I/10) + spr(0,5+dx,30+dy,15,1,0,0,8,8) + spr(0,235-64+dx,30+dy,15,1,1,0,8,8) +end +for I=1,400 do +pc=pix(p[I].x,p[I].y) +dis=t//100-lt*40 +if lt%2 == 0 then +for J=-dis//2,dis//2 do +pix(p[I].x+J,p[I].y,pc) +end +else +for J=-dis//2,dis//2 do +pix(p[I].x,p[I].y+J,pc) +end +end +end +str=(lt% #strings2)+1 +strlen=print(strings2[str],0,-10) +print(strings2[str],120-strlen/2,115,0) +end + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_0b5vr.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_0b5vr.glsl new file mode 100644 index 000000000..ff12f63cd --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_0b5vr.glsl @@ -0,0 +1,237 @@ +#version 410 core + +#define lofi(i,j) (floor((i)/(j))*(j)) +#define fs(i) (fract(sin((i)*114.514)*1919.810)) + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +float time; +float seed; + +const float FAR=20.; +const float PI=acos(-1.); +const float TAU=PI*2.; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float random(){ + seed++; + return fs(seed); +} + +mat2 r2d(float t){ + float c=cos(t); + float s=sin(t); + return mat2(c,-s,s,c); +} + +mat3 orthBas(vec3 z){ + z=normalize(z); + vec3 up=abs(z.y)>.999?vec3(0,0,1):vec3(0,1,0); + vec3 x=normalize(cross(up,z)); + return mat3(x,cross(z,x),z); +} + +vec3 sampleLambert(vec3 N){ + float p=TAU*random(); + float ct=sqrt(random()); + float st=sqrt(1.0-ct*ct); + return orthBas(N)*vec3(cos(p)*st,sin(p)*st,ct); +} + +vec4 ibox(vec3 ro,vec3 rd,vec3 s){ + vec3 o=ro/rd; + vec3 t=abs(s/rd); + vec3 fv=-o-t; + vec3 bv=-o+t; + float f=max(fv.x,max(fv.y,fv.z)); + float b=min(bv.x,min(bv.y,bv.z)); + if(f<.0||b1.){return true;} + + float h=heck(p); + float s=floor(h); + float dens=mix(.4,.8,step(1.,mod(h,2.))); + + float dice=fs(s+dot(p,vec3(5,8,1))); + return dice>dens; +} + +struct QTR { + vec3 cell; + vec3 pos; + float len; + float size; + bool hole; +}; + +QTR qt(vec3 ro,vec3 rd){ + QTR r; + r.size=1.; + vec3 dicecell=lofi(ro+rd*1E-2*0.5,0.5)+0.5/2.; + float dice=dot(dicecell,vec3(1,-3,0)); + float piston=smoothstep(-.5,.5,sin(dice+time)); + vec3 off=vec3(0,0,piston); + ro+=off; + + for(int i=0;i<4;i++){ + r.size/=2.; + r.cell=lofi(ro+rd*1E-2*r.size,r.size)+r.size/2.; + + if(isHole(r.cell)){break;} + + float dice=fs(dot(r.cell,vec3(3,4,5))); + if(dice>r.size+.2){break;} + } + vec3 o=(ro-r.cell)/rd; + vec3 t=abs(r.size/2./rd); + vec3 bv=-o+t; + float b=min(bv.x,min(bv.y,bv.z)); + r.len=b; + + r.pos=r.cell-off; + r.hole=isHole(r.cell); + + return r; +} + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 p=uv*2.-1.; + p.x*=v2Resolution.x/v2Resolution.y; + + time=fGlobalTime; + seed=texture(texNoise,uv*8.).x*8.; + seed+=fract(time); + + vec3 col=vec3(0); + vec3 colRem=vec3(1); + + vec3 co=vec3(3,1,1.5); + vec3 ct=vec3(0,0,0); + mat3 basis=orthBas(co-ct); + + vec3 ro0=co+(basis*vec3(2.*p,0)); + ro0+=orthBas(vec3(1))*vec3(0,-.4*time,0); + vec3 ro=ro0+basis*vec3(random(),random(),0)/v2Resolution.y*2.; + vec3 rd0=basis*normalize(vec3(p*.0,-1)); + vec3 rd=rd0; + + float samples=1.; + bool shouldInit=false; + bool isFirstRay=true; + + for(int i=0;i<200;i++){ + if(shouldInit){ + ro=ro0; + rd=rd0+basis*vec3(random(),random(),0)/v2Resolution.y*2.; + colRem=vec3(1); + samples++; + shouldInit=false; + } + + QTR qtr=qt(ro,rd); + + if(!qtr.hole){ + float size=qtr.size/2.; + size-=.01; + size=max(0.,size); + vec4 isect=ibox(ro-qtr.pos,rd,vec3(size)); + if(isect.wFAR||(dot(ro,vec3(1))>2.&&dot(rd,vec3(1))>0.)){ + float h=heck(ro); + float sw=step(1.,mod(h,2.)); + col+=colRem*mix(.1,2.,sw); + float scan=step(.99,sin(.2*ro.y+4.0*time)); + col+=colRem*scan*vec3(10.,.1,.1); + shouldInit=true; + } + } + + col=pow(col/samples,vec3(.4545)); + col*=1.0-.3*length(p); + col=vec3( + smoothstep(.1,.9,col.x), + smoothstep(.0,1.0,col.y), + smoothstep(-.1,1.1,col.z) + ); + + col=mix(texture(texPreviousFrame,uv).rgb,col,.5); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.glsl new file mode 100644 index 000000000..de8f2e03f --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.glsl @@ -0,0 +1,167 @@ +#version 410 core +#define PI (acos(-1.)) + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform float fMidiKnob; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float pModPolar(inout vec2 p, float repetitions) { + float angle = 2.*PI/repetitions; + float a = atan(p.y, p.x) + angle/2.; + float r = length(p); + float c = floor(a/angle); + a = mod(a,angle) - angle/2.; + p = vec2(cos(a), sin(a))*r; + // For an odd number of repetitions, fix cell index of the cell in -x direction + // (cell index would be e.g. -5 and 5 in the two halves of the cell): + if (abs(c) >= (repetitions/2.)) c = abs(c); + return c; +} + +vec2 rX(const in vec2 p, const in float ang) { + float nA = ang * PI; + float c = cos(nA), s = sin(nA); + return vec2(p.x*c - p.y*s, p.x*s + p.y*c); +} + +float sdRoundCone( in vec3 p, in float r1, float r2, float h ) +{ + vec2 q = vec2( length(p.xz), p.y ); + + float b = (r1-r2)/h; + float a = sqrt(1.0-b*b); + float k = dot(q,vec2(-b,a)); + + if( k < 0.0 ) return length(q) - r1; + if( k > a*h ) return length(q-vec2(0.0,h)) - r2; + + return dot(q, vec2(a,b) ) - r1; +} +float opUnion( float d1, float d2 ) { return min(d1,d2); } +float opSubtraction( float d1, float d2 ) { return max(-d1,d2); } +float opIntersection( float d1, float d2 ) { return max(d1,d2); } +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + + + +float map(vec3 p, float f) { + vec3 cp = p; + + cp.yz = rX(cp.yz, 1.1); + cp.xz = rX(cp.xz, fGlobalTime * .2); + + pModPolar(cp.xz, 12.); + + float bc = length(cp-vec3(1,0,0)) - 1;// + f *100; + float bk = length(p-vec3(0,.2,0)) - 1.2; + bc = max(-bk, bc); + + + vec3 cp1 = p; + cp1.yz = rX(cp1.yz, 1.1); + cp1.xz = rX(cp1.xz, fGlobalTime * .2); + + float bk1 = length(cp1-vec3(0.5,-.3,2.)) - 0.25; + bc = max(-bk1, bc); + + float bk2 = length(cp1-vec3(-0.5,-.3,2.)) - 0.25; + bc = max(-bk2, bc); + + + float bd = p.y + 2; + + +// float bt = sdRoundCone(p, 1., .3, 1.6); +// bc = min(bc, bt); +// float bt1 = sdRoundCone(p-vec3(0,1.5,0), 0.2, 0.2, 1.); +// bc = min(bc, bt1); +// vec3 p1 = p; +// p1.yz = rX(p1.yz, -1.75); + +// p1 -= vec3(0, -2, 0); +// float bt2 = sdRoundCone(p1, 0.2, 0.5, 1.); +// bc = min(bc, bt2); + return min(bc,bd); +} + +vec3 gNorm(vec3 hit, float f) { + vec3 e = vec3(1e-2,0,0); + float d = map(hit, f); + return normalize(vec3(map(hit+e.xyy, f)-d, + map(hit+e.yxy, f)-d, + map(hit+e.yyx, f)-d)); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(0,0,-10); + vec3 rd = normalize(vec3(uv,1)); + + float trav = 0.0; + float hit = 0.0; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + + for (int i=0; i<100; i++) { + hit = map(ro+rd*trav, f); + trav += hit; + if (hit < 0.01) { + break; + } + + if (hit > 20.) { + break; + } + + } + + if (trav < 20.) { + vec3 hitPoint = ro+rd*trav; + vec3 lightPos = vec3(0,10,-5); + vec3 normLight = normalize(lightPos-hitPoint); + vec3 norm = gNorm(ro+rd*trav, f); + float diffval = clamp(dot(norm,normLight)*.5,0,1); + vec3 baseColor = vec3(1,0.4,0.0); + if (hitPoint.y < -1) { + baseColor = vec3(0,.7,0); + } + out_color = vec4(baseColor * vec3(diffval),1); + //out_color = vec4(1,1,1,1); + return; + } + + out_color = vec4(0.6,0.4,0.4, 1.0); + return; + + + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + //out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Exca.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Exca.glsl new file mode 100644 index 000000000..c3612e3ec --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Exca.glsl @@ -0,0 +1,206 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float fft = 0.0; +float ffts = 0.0; +float ffti = 0.0; +float beat = 0.0; +float beatstep = 0.0; + +vec3 repeat( vec3 p, vec3 c) +{ + vec3 q = vec3(0.0); + vec3 q2 = mod( p+ 0.5*c,c)-0.5*c; + return q2; +} + +vec3 rotate( vec3 p, float x, float y, float z){ + mat3 rotx = mat3(1.0, 0.0, 0.0, 0.0, cos(x), -sin(x), 0.0, sin(x), cos(x)); + mat3 roty = mat3( cos(y), 0.0, sin(y), 0.0, 1.0, 0.0, -sin(y), 0.0, cos(y)); + mat3 rotz = mat3( cos(z), -sin(z), 0.0, sin(z), cos(z), 0.0, 0.0, 0.0, 1.0); + + return rotx*roty*rotz*p; +} + + + +vec3 smoothUnion(vec3 a, vec3 b, float k) +{ + float h = clamp(0.5 + 0.5*(b.x-a.x)/k,0.0, 1.0); + float d = mix(b.x,a.x,h)-k*h*(1.0-h); + float s = step(a.x, b.x); + return vec3(d, mix(a.y, b.y, s),0.0); +} + +vec3 getcam( vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize(target-cam); + vec3 right = normalize(cross(vec3(0,1,0), forward)); + vec3 up = normalize(cross(forward, right)); + + return normalize( forward*fov + right*uv.x + up*uv.y); +} + +float sphere( vec3 p, float r){ + return length(p)-r; +} + +float roundcube( vec3 p, vec3 b, float r){ + vec3 d = abs(p)-b; + return min( max( d.x, max( d.y, d.z) ), 0.0)+length(max(d,0.0))-r; +} + +float ground( vec3 p, float h){ + return p.y -h; +} +vec3 Union(vec3 a, vec3 b){ + return a.x < b.x ? a : b; +} + +vec3 map( vec3 p ){ + + vec2 id = floor(p.xz/8.0+0.5); + + vec3 cp = rotate( + repeat(p, vec3(8.0, 0.0, 8.0)), + sin(p.y*0.1)*0.2, + ffts*sin(id.y+id.x+ ffti*4.0+ fGlobalTime+p.y+ffti*5.0)*2.0+sin(fGlobalTime*0.33+p.y-ffti*2.0)*4.0+ffti*5.0, + cos(p.y*0.1)*0.2 + + ); + vec3 c = vec3( roundcube(cp, vec3(0.4, 29.0, 0.4), 0.2), 1.0, 0.0); + + float h1 = texture(texNoise, p.xz*0.1+vec2(fGlobalTime*0.01-ffti*0.25, fGlobalTime*0.015)).r*0.5* (0.5+fft*1.0); + float h2 = texture(texNoise, p.xz*0.1+vec2(fGlobalTime*0.015+0.17*ffti, -fGlobalTime*0.015)).r*0.5 * (0.25+ffts*2.0); + + float h = mix(h1,h2,0.5); + + vec3 gr = vec3( ground(p, h*2.0), 2.0, h); + + return smoothUnion(c,gr,2.5); + + return vec3(sphere(p, 0.5), 1.0, 0.0); +} +vec3 normal( vec3 p ){ + vec3 c = map(p); + vec2 e = vec2( 0.1, 0.0); + return normalize( vec3( + map(p+e.xyy).x, + map(p+e.yxy).x, + map(p+e.yyx).x + )-c.x); +} + +float diffuse( vec3 p , vec3 l, vec3 n){ + return max(0.0, dot(n, normalize(l-p))); +} + +vec3 march(vec3 cam, vec3 rd, out vec3 p, out float t) +{ + for(int i = 0; i < 100; i++) + { + p = cam + rd*t; + vec3 r = map(p); + t+=r.x; + if(r.x < 0.01){ + return r; + } + if(t > 50.0){ + t = 50.0; + return vec3(-1.0); + } + } + t = 50.0; + return vec3(-1.0); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col = vec3(1.0); + + fft = texture(texFFT, 0.25).r; + ffts = texture(texFFTSmoothed, 0.25).r; + ffti = texture(texFFTIntegrated,0.25).r; + + beat = floor(fGlobalTime*1.45); + beat = mod( beat/4.0, 8.0); + beatstep = fract( fGlobalTime*2.0); + + float travel = 3.0; + + float time = fGlobalTime*0.2; + + vec3 cam = vec3( + sin(time)*6, + 2 + cos(time), + cos(time)*6+time + ); + vec3 target = vec3( + 0.0, + 1.5+ cos(time*0.5), + time + cos(time*4.0) + ); + vec3 light = vec3( sin(fGlobalTime)+5.0, 4.0, time+sin(time)); + float fov = 0.5; + + + if(beat < 2.0){ + uv*= sin(uv); + } + else if(beat < 4.0){ + uv *= 1.0 + sin(uv.x*20.0 + time)*0.2 + cos(uv.y*20. + time)*0.2; + } + else if(beat < 6.0){ + uv *= 1.0 - sin(uv.x*20.0 + time)*0.2 - cos(uv.y*20. - time)*0.2; + } + + + vec3 rd = getcam( cam, target, uv, fov); + + + + vec3 p = vec3(0.0); + vec3 res = march( cam, rd, p, travel); + + vec3 n = normal(p); + if(res.y < 0.5){ + // Bg + } + else if(res.y < 1.5){ + //ground mat + col = vec3(0.0,0.7,0.9)*diffuse(p, light, n); + } + else if(res.y < 2.5){ + //twister + float ly = abs(sin((p.y+fGlobalTime)*10.0)); + col = mix(vec3(0.0,0.7,0.9), vec3(1.0, 0.7, 0.0), res.z*0.5)*diffuse(p, light, n); + col += smoothstep(1.0, 4.0, p.y)*(0.5/ly); + } + + col = mix( col, vec3(0.0,0.45,0.90), smoothstep( 10.0, 20.0, travel)); + + + + out_color = vec4(col,1.0); + +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.glsl new file mode 100644 index 000000000..6c49c3655 --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.glsl @@ -0,0 +1,187 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define rot(a) mat2(cos(a), sin(a), -sin(a), cos(a)) +#define pi acos(-1.) +float t= mod(fGlobalTime, 100.+(2*pi))*.195; + +float cc(float t){ + return mix(floor(t), floor(t+1), pow(smoothstep(0.,1., fract(t)), 40.)); +} +float smin(float a, float b, float k){ + float h = max(0., k-abs(a-b))/k; + return min(a,b)-h*h*k*.25; +} +float sbt(vec3 p, vec2 s){ + return length(vec2(length(p.xy)-s.x, p.z))-s.y; +} +float sbb(vec3 p, vec3 s){ + p=abs(p)-s; + return mix(max(max(p.x,p.y), p.z), length(p.xz), .26); +} +float fr1; +float d2; +float mainFractal( vec3 p){ + + vec3 p1 = p; + // + //p.x = abs(p.x)-20.; + + //p1.yx = abs(p1.yx); + p1.yz*=rot(2.34); + float k, sc = 1.; + for(float i = 0;i < 10; i++){ + p1.xz*=rot(p.y*.06251+i*i+cc(t*.31)+t*.25); + p1=abs(p1)-.2246-i*.215; + k = max(1., 1.877/dot(p1,p1)); + p1 *= k; + sc *= k; + } + + p1.z = (fract(p1.z/20.-.5)-.5)*20.; + + float d = sbb(p1, vec3(1.)) / sc; + fr1 += .15/(.1+d*d); + d2 = d; + //d = max(d, -sbb(p, vec3(15.))); + return d*.26; +} + +float h(float a){ + return fract(sin(a*435.)*375.); +} +float g1,d1; +float fr2; +float center(vec3 p){ + float d = mainFractal(p); + + float tt = t; + //tt += h(sin(p.x+t))*.001*.5; + p.xz*=rot(p.y*.34+tt*10.); + + float a = length(p)-3.-sin(p.x*.34+t)*sin(sin(p.z*.45+t)); + a=mix(a, sbb(p, vec3(5.)), sin(cc(t))*.5+.5); + + d1 = a; + g1+=1./(.1+a*a)*texture(texFFTSmoothed, 0.01).r*10.; + d = smin(d, a, 1.); + return d; +} + +float centerLight(vec3 p){ + + float d = center(p); + + // p.y=abs(p.y); + //p.xz*=rot(p.y*.05); + + float a = length(p)-3.; + fr2 += 1./(1.+a*a*a); + d = smin(d,a,1.); + + + + return d; +} + +float dr; +float noseQueCrestaEraEsto(vec3 p){ + float d = centerLight(p); + //p.xz*=rot(t+p.z*.01); + //p.yz*=rot(t+p.z*.025342); + //p=abs(abs(p)-9.)-4.; + //float drr = (length(p)-1.); + //d = smin(d, drr, 1.); + //dr=drr; + return d; +} +float ff; +float m(vec3 p){ + float d = noseQueCrestaEraEsto(p); + + vec3 p1 = p; + p.x=abs(p.x)-50.; + p.yz*=rot(p.y*.0124+t*.1); + p.xz*=rot(p.y*.04+cc(t*.546)+t*sin(cc(-t*.25)+p.z*.00029895)*.75); + p.y += cc(t)+t; + p.x += sin(p.y*.34+t*40.); + for(int i = 0; i < 2; i++) + p.xz = abs(p.xz)-15.-texture(texNoise, p.yz).r*.03153; + float a = length(p.xz)-1.-texture(texFFTSmoothed, 0.01).r*20.; + ff += .15/(3.5+a*a); + d = min(d, a); + p1.xz = abs(p.xz)-10.; + p1.yz*=rot(p1.z); + //float cucu = sbb(p1, vec3(1., 2., 9.)); + dr = a; + //d=min(d, cucu); + return d; +} + +vec3 nm(vec3 p){ + const vec2 e = vec2(-.02424, 0.0345345); + + return normalize(m(p)-vec3(m(p-e.xyy), m(p-e.yxy),m(p-e.yyx))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 s = vec3(0.01, 0.01,-15.-sin(t*.525)*20.-40.); + s.x += sin(t); + s.xy *= rot(cc(t)); + vec3 p = s; + uv*=rot(sin(cc(t*2.))); + vec3 tg = vec3(0.6); + tg.yz*=rot(sin(cc(t)*.25));tg.xz*=rot(t); + vec3 cz = normalize(tg-s); + vec3 cx = normalize(cross(cz, vec3(0., -1., 0.))); + vec3 cy = normalize(cross(cz,cx)); + vec3 r = mat3(cx,cy,cz)*normalize(vec3(-uv, 1.-length(uv)*.85+fract(length(uv)+cc(t*.25)))); + vec2 dh = vec2(0.0); + vec3 co = vec3(0.)-length(uv)*.51; + for(int i = 0; i < 200; i++){ + dh.y = m(p)*.65; + if(abs(dh.y) < .001) { + vec3 n = nm(p); + vec3 l = normalize(vec3(-1.)-p); + float dif = max(0., dot(l, n)); + float fr = pow(max(0., 1+dif), 3.); + float sp = pow(max(0., dot(reflect(-l, n), r)),50.); + co = vec3(dif+sp)*min(fr, .45); + if(abs(d2) < .5 || abs(dr) < .5) r=reflect(r, n), p+=20.; + else break; + } + if(dh.x > 200) break; + dh.x += dh.y; + p+=dh.y*r; + co-=g1*vec3(0.45,0.3, 0.64)*.00024; + co+=fr1*vec3(1., .45, 0.)*.000445; + co += fr2*vec3(0.45,0.3, 0.64)*.131; + co += ff *vec3(0.1)*.1; + //co = smoothstep(0., 1., co); + co = pow(co,vec3(1.083434)); + co += max(0., length(p-s)/300.)*vec3(0.034,0.034, 0.15)*.5; + } + out_color = vec4(co, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Tater.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Tater.glsl new file mode 100644 index 000000000..df504c6e7 --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_Tater.glsl @@ -0,0 +1,246 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float md1; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define STEPS 128.0 +#define MDIST 128.0 +#define pi 3.1415926535 +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define sat(a) clamp(a,0.,1.) +#define pmod(p,x) (mod(p,x)-0.5*(x)) +float psin(float x, float b){ + float xx = floor(b*x)/b; + return sin(xx)+(sin(floor(b*x+1.0)/b)-sin(xx))*mod(b*x,1.0); +} +vec2 vor(vec2 m, vec3 p, vec3 s){ + float scl = 0.2; + vec3 c = round(scl*p+s); + c+=sin(fract(72985*sin(dot(c,c.yzx+33.3)))*6.+fGlobalTime*3)*0.3; + c*=(1./scl); + float v = length(c - p); + return vMDIST){ + dO = MDIST; + break; + } + } + vec3 bg = mix(vec3(0.5,0.4,0.85),vec3(0.45,0.45,0.9),clamp(rd.y*5,-1,1)); + if(hit){ + vec3 n = norm(p); + vec3 ld = normalize(vec3(20,45,0)-p); + vec3 rr = reflect(rd,n); + float diff = max(0,dot(n,ld)); + float amb = dot(n,ld)*0.5+0.5; + float spec = pow(max(0.,dot(rr,ld)),40); + float fres = pow(max(0.7+dot(rd,n),0),2.0); + vec3 al = vec3(0.2,0.25,0.75); + #define AO(a,n,p) smoothstep(-a,a,map(p+n*a).x) + float ao = AO(0.3,n,p)*AO(0.5,n,p)*AO(0.9,n,p); + float sss = 0.; + for(float i = 0.; i<20.; i++){ + float dist = i*0.09; + sss+=smoothstep(0.,1.,map(p+ld*dist).x/dist)*0.033; + } + + + if(d.y==2.0) al*=2; + col = vec3(1.0-shad); + col = al*mix(vec3(0.3,0,0.3),vec3(1),mix(diff,amb,0.25)); + col+=spec*0.3*bg; + col+=sss*0.3; + col*=mix(ao,1.0,0.3); + col = pow(col,vec3(0.7)); + + //WAVEY COLOR + sss = 0.; + float ssmag = 1.; + ld = normalize(vec3(0,100,0)-p); + if(d.y==3.0){ld = normalize(vec3(p.x,0,p.z)); + ssmag = 1.5; + + } + spec = pow(max(.0,dot(rr,ld)),20.0); + vec3 wcol = vec3(0); + al = vec3(0.2,0.6,1); + for(float i = 0.; i<20.; i++){ + float dist = i*0.3; + sss+=smoothstep(0.,1.,map(p+ld*dist).x/dist)*0.06*ssmag; + } + wcol = mix((1.0-shad),1.,0.5)*vec3(sss)*al; + wcol+=spec*0.3; + col = mix(col,wcol,wavey); + } + col = mix(col,bg,pow(dO/MDIST,2.5)); + out_color = vec4(col,1); +} + + + + + + diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_alkama.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_alkama.glsl new file mode 100644 index 000000000..5ca90e3a5 --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_alkama.glsl @@ -0,0 +1,127 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float pi = acos(-1); +float tt = mod(fGlobalTime, 20*pi)*130/120; +float ft=fract(tt); +float it=floor(tt); +float t = it+ft*ft*ft; + +vec3 rep(vec3 p, float r) { return mod(p,r)-r*.5; } +mat2 rot(float a) { float c=cos(a),s=sin(a); return mat2(c,s,-s,c); } +float sphere(vec3 p, float r) { return length(p)-r; } +float torus(vec3 p, float r, float s) { vec2 b=vec2(length(p.xy)-r, p.z); return length(b)-s; } +vec2 moda(vec2 p, float r) { + r = 2*pi/r; + float a=mod(atan(p.y,p.x), r) - r*.5; + return length(p) * vec2(cos(a),sin(a)); +} + +float g=0; +float scene(vec3 p) { + p.xz*=rot(t*.1); + p.yz*=rot(t*.1); + + p.xz = moda(abs(p.xz), 5.); + p.yz = moda(abs(p.yz), 9.+3*cos(t)); + vec3 p2 = p; + p2.xz += .1*sin(10*p2.yz + t); + float tr = torus(p2, 1.4*p.x, .15+.1*sin(t)); + + //p.xz = moda(abs(p.xz), 5.); + //p.yz = moda(abs(p.yz), 5.); + float gtr = torus(p, 2., .15); + g+=.1/(.001+pow(abs(gtr),2.)*3.); + + p.xy = moda(abs(p.xy), 5.); + p.yz = moda(abs(p.yz), 5.); + gtr = torus(p, 2., .15); + g+=.1/(.001+pow(abs(gtr),2.)*3.); + + float bx=sphere(rep(p, 0.05), 0.0025); + + float d= max(tr,bx)-(.02+.01*sin(t)); + return max(d,-sphere(p+vec3(.0,.8,-2.),1)); +} + +vec3 norm(vec3 p) { + vec2 e=vec2(.001,0); + return normalize(scene(p)-vec3(scene(p-e.xyy),scene(p-e.yxy),scene(p-e.yyx))); +} + +float sss(vec3 p, vec3 l, float d) { return smoothstep(0,1,scene(p+l*d)/d); } +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv /= 1. - length(uv)*(1+sin(t)); + if(mod(t,8)>6.) { + uv.x=abs(uv.x); + } + if(mod(t,10)>8.) { + uv.y=abs(uv.y); + } + vec3 o=vec3(0,.8,-2.); + vec3 tg=vec3(0); + tg+=.75*vec3(sin(t),cos(t),sin(t)); + + vec3 f=normalize(tg-o); + vec3 s=normalize(cross(f,vec3(.5+.5*sin(t),1,0))); + vec3 u=normalize(cross(s,f)); + vec3 dir=normalize(f*(.75+.2*sin(t))+uv.x*s+uv.y*u); + + vec3 col=vec3(0); + vec3 lp=vec3(4); + + float d=0.0; + vec3 p=o; + int i=0; + for(i=0; i<200; i++) { + float h=scene(p)*.3; + if(abs(h)<0.0001*d) { + vec3 n=norm(p); + vec3 ld=normalize(lp-p); + float diff=max(0.,(dot(n,ld))); + float fres=pow(max(0., 1-dot(n,-dir)), 2.); + col += pow(diff, 2.) * fres * acos(-dir); + + float a=0.; + float steps=5.; + for(float j; j100.) { + break; + } + d+=h; + p=o+dir*d; + } + col -= i/800.; + col += g*.0005*min(vec3(1),.8*acos(dir)); + + out_color.rgb = col; +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_cosamentale.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_cosamentale.glsl new file mode 100644 index 000000000..e05a9182f --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_cosamentale.glsl @@ -0,0 +1,109 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float time= fGlobalTime*1.5; +mat2 rot(float t){ float c = cos(t); float s = sin(t); return mat2(c,-s,s,c);} +float zl; +float box(vec3 p ,vec3 b){ vec3 q = abs(p)-b; + return length(max(q,vec3(0.)))-min(0.,max(q.x,max(q.y,q.z)));} +float map(vec3 p,vec4 ta){ + + float t1 = ta.z; + float d4 = length(p*vec3(0.1,5.,0.1)+vec3(0.,-10.-step(0.1,fract(time))*100.,0.))-2.; + float d1 = 100.; + vec3 rr = vec3(3.,0.,0.); + vec3 pv = p; + vec3 rv = vec3(5.,0.,5.); + vec3 pl = mod(p,rr)-0.5*rr; + if(step(0.5,fract(time*0.25))>0.){ + d1 = max(length(p+vec3(0.,2.,0.)+vec3(ta.x,0.,ta.y))-t1*5.,-(length(p.y+sin(time*5.)*5.)-2.)); + } + else{ d1 = length(pl.xz+ta.xy)-0.5;} + float d2 = p.y+1.5+texture(texNoise,p.xz*0.1).x*3.+sin(length((p.xz+ta.xy)*2.)-time*10.)*t1*0.25; + vec3 pr = p; + pr.xz *= rot(p.y); + float d3 = distance(p.y,0.2)-texture(texNoise,pr.xz*0.2).x+0.225; + zl = min(d4,d1); + return min(min(d1,min(d3,d2)),d4);} + float rm(vec3 p,vec3 r,vec4 ta){ + float dd = 0.; + for(int i =0 ; i <64 ; i++){ + float d = map(p,ta); + if(dd>20.){dd=20.; break;} + if(d<0.01){break;} + p += r*d; + dd += d; + } + return dd; + } + vec3 nor(vec3 p,vec4 ta){vec2 e = vec2(0.01,0.); return normalize(map(p,ta)-vec3(map(p-e.xyy,ta),map(p-e.yxy,ta),map(p-e.yyx,ta)));} + float rd(float t){ return fract(sin(dot(floor(t),45.))*7845.26);} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uc = uv; + uv -= 0.5; + uv *= 2.; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float tm = smoothstep(0.1,0.,fract(time)); + vec2 pm = (vec2(texture(texNoise,vec2(0.5,time*5.)).x,texture(texNoise,vec2(0.25,time*5.)).x)-0.5)*0.1; + float l2 =step(0.75,fract(time*0.5)); + float l1 = mix(0.,step(0.5,uc.y),l2); + float mmv= pow(texture(texNoise,vec2(time,0.3)).x,0.5); + vec3 p = vec3(0.,0.,-2.*mmv-4.); + + //float t2 = texture(texNoise,vec2(0.5,floor(time))).x*2.; + vec3 r = normalize(vec3(uv+vec2(0.,-mix(0.5,mix(-0.2,0.5,l1),l2))+tm*pm,rd(time)*2.)); + float tt = mix(time,-time,l1); + r.xz *= rot(tt); + p.xz *= rot(tt); + + float tx = fract(floor(time)*0.1)*10.; + vec2 px = (vec2(texture(texNoise,vec2(0.5,tx)).x,texture(texNoise,vec2(0.25,tx)).x)-0.5)*5.; + vec4 ta = vec4(px,pow(fract(time*0.7),3.),0.); + + //float r1 = smoothstep(10.,0.,rm(p,r)); + float r2 = 0.; + float se = fract(sin(uv.x*v2Resolution.y+uv.y)*7845.236); + float se2 = se*6.28; + float a = sqrt(1.-se*se); + vec3 rn = vec3(a*cos(se2),a*sin(se2),(se-0.5)*2.); + rn *= sqrt(se); + for(int i = 0 ; i < 2 ; i++){ + float d = rm(p,r,ta); + if(step(0.1,zl)>0.2){ + vec3 pp = p+ r*d; + vec3 n = nor(pp,ta); + r = n*rn; + p = pp+r*0.1; + } + else{r2=1.;break;} + } + float b = sqrt(32.); + float c = 0.; + float d = pow(length(uv.y),1.5)*texture(texNoise, vec2(0.75,time)).x*0.02; + for(float i = -0.5*b; i<= 0.5*b ; i +=1.) + for(float j = -0.5*b ; j<=0.5*b ; j +=1.){ + c += texture(texPreviousFrame,uc+vec2(i,j)*d).a; + } + c /= 5.; + float c2 = c+r2; + vec3 c3 = mix(vec3(1.),3.*abs(1.-2.*fract(c2*0.3+0.5+vec3(0.,-1./3.,1./3.)))-1.,0.2)*c2; + out_color = vec4(c3,r2); +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_dok.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_dok.glsl new file mode 100644 index 000000000..b0c09100d --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_dok.glsl @@ -0,0 +1,78 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define PI 3.1416 +#define PI2 (2.0*PI) +#define gain 1.0 + +vec2 pol2(vec2 uv) { + return vec2(length(uv), fract(atan(uv.x,uv.y)/PI2)); +} +mat2 rot2(float a) { return mat2(cos(a), sin(a), -sin(a), cos(a));} + +void main(void) +{ + vec2 uv = (gl_FragCoord.xy - 0.5 * v2Resolution) / v2Resolution.y; + vec3 col = vec3(0); + float ef = fGlobalTime/2.0; + vec2 ev = pol2(uv + vec2(sin(ef), cos(ef)) * 0.1); + vec2 cv = pol2(uv); + vec2 lv = ev; + vec2 UV = uv; + uv.y += mix(0.95, 0.85, abs(sin(fGlobalTime+2.0*texture(texFFTIntegrated, 0.1).r))) * sign(uv.y); + vec2 pv = pol2(uv); + + float ff = texture(texFFTSmoothed, 0.1).r * gain; + float ey = step(pv.x, 1.0); + float ni = ey; + float nl = mix(10, 15, ff); + float pr = mix(0.25, 0.05, 5.0*ff); + ni = ni * step(pr, ev.x) + (1-ni)*step(fract(nl*pv.x), mix(0.1, 0.05, ff)); + + float li = step(fract(25.0*lv.y + sin(50*(lv.x) - fGlobalTime)), mix(0.05, 0.1, ff)); + float ci = step(fract(50.0*cv.y + sin(10*(cv.x) - fGlobalTime)), mix(0.05, 0.1, ff)); + col.r = ni + ey * li + ci * li; + col.r += 2*texture(texFFT, pv.x).r; + + float r = 0; + for (float i = 0; i < 1.0; i += 0.1) { + float rr = mix(0.5, 0.75, sin(fGlobalTime/4)); + r += step(pol2(UV + vec2(rr,0)*rot2(fGlobalTime + i*PI2)).x, 0.05+ff); + } + if (sign(UV.y) > 0) + col.r += r; + + r = 0; + for (float i = 0; i < 1.0; i += 0.1) { + float rr = mix(0.5, 0.75, sin(fGlobalTime/4)); + r += step(pol2(UV + vec2(rr,0)*rot2(-fGlobalTime + i*PI2)).x, 0.05+ff); + } + if (sign(UV.y) < 0) + col.r += r; + + + float sp= fGlobalTime/2.0; + vec2 sv = UV+vec2(sin(sp),cos(sp))*0.04; + r = 0; + for (float i = 0; i < 10.0; i += 0.11) { + float rr = mix(0.2, 1.0, sin(i+fGlobalTime/4)); + r += step(pol2(sv + vec2(rr,0)*rot2(-fGlobalTime + i*PI2)).x, 0.01+ff); + } + if (r > 0) + col.r = 1.0 - col.r; + + + col.rgb = col.rrr; + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_msieursoleil.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_msieursoleil.glsl new file mode 100644 index 000000000..f2376aabc --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_msieursoleil.glsl @@ -0,0 +1,238 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float midi01; +uniform float midi02; +uniform float midi03; +uniform float midi04; +uniform float midi05; +uniform float midi06; +uniform float midi07; +uniform float midi08; +uniform float midi09; +uniform float midi10; +uniform float midi11; +uniform float midi12; +uniform float midi13; +uniform float midi14; +uniform float midi15; +uniform float midi16; +uniform float midi17; +uniform float midi18; +uniform float midi19; +uniform float midi20; +uniform float midi21; +uniform float midi22; +uniform float midi23; +uniform float midi24; +uniform float midi25; +uniform float midi26; +uniform float midi27; +uniform float midi28; +uniform float midi29; +uniform float midi30; +uniform float midi31; +uniform float midi32; +uniform float midi33; +uniform float midi34; +uniform float midi35; +uniform float midi36; +uniform float midi37; +uniform float midi38; +uniform float midi39; +uniform float midi40; +uniform float midi41; +uniform float midi42; +uniform float midi43; +uniform float midi44; +uniform float midi45; +uniform float midi46; +uniform float midi47; +uniform float midi48; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime + +#define mod01 floor(mod(time, 4.0)) +#define smod01 smoothstep(fract(mod(time, 4.0)), 0.25, 0.75) +#define fft texture(texFFTSmoothed, 0.01).x * 50.0 * midi03 + + +struct Matter + +{ + float m; + int type; + bool reflected; + float glow; +}; + +struct Ray +{ + vec3 o; + vec3 p; + vec3 dir; + vec3 t; + +}; + +struct Res +{ + vec3 col; +}; + +Matter mat; +Ray ray; +Res res; + +mat2 rot(float a) +{ + float ca = cos(a); + float sa = sin(a); + + return mat2(ca, sa, -sa, ca); +} + +float sphere(vec3 p, float s) +{ + + return length(p) - s; +} + +float box(vec3 p, vec3 s) +{ + p = abs(p) - s; + + + return max(p.x, max(p.y, p.z)); +} + +void map(inout Matter ma, vec3 p) +{ + float mat01 = 10.0, mat02 = 10.0; + vec3 p01 = p, p02 = p; + + p01.xy *= rot(0.5 + sin(time * 2.0 + smod01 * 5.0)) * 1.0; + p01.yz *= rot(0.5 + sin(time * 2.0 + smod01 * 5.0)) * -1.0; + + + p02.xy *= rot(sin(smod01 * 4.0 + sin(ray.p.z * 0.5)) * 2.0); + p02.yz *= rot(sin(smod01 * 2.0+ sin(ray.p.x * 0.2)) * 2.0); + + mat01 = sphere(p + vec3(1.0 * sin(time * 0.25 * mod01), 1.0 * smod01, 0.0), 0.2 * fft); + mat01 = min(mat01, sphere(p02 + vec3(-4.0 * sin(time * 0.25 * mod01), -2.0 * smod01, 0.0), 0.2* fft)); + mat01 = min(mat01, sphere(p02 + vec3(-4.0 * sin(time * 0.15 * mod01), -2.0 * smod01, 0.0), 0.5 * fft)); + mat01 = min(mat01, sphere(p02 + vec3(-3.0 * sin(time * 0.25 * mod01), -3.0 * smod01, 0.0), 0.75 * fft)); + mat01 = min(mat01, sphere(p02 + vec3(-2.0 * sin(time * 0.35 * mod01), -1.0 * smod01, 0.0), 0.2 * fft)); + + mat01 = min(mat01, sphere(p02 + vec3(-5.0 * sin(time * 0.15 * mod01), -5.0 * smod01, 0.0), 1.5 * fft)); + mat01 = min(mat01, sphere(p02 + vec3(-10.0 * sin(time * 0.25 * mod01), -5.0 * smod01, 0.0), 1.75 * fft)); + mat01 = min(mat01, sphere(p02 + vec3(-5.0 * sin(time * 0.35 * mod01), -15.0 * smod01, 0.0), 1.2 * fft)); + + mat02 = -box(p01, vec3(15.0)); + + ma.m = min(mat01, mat02); + ma.glow += pow(0.15/(0.05+abs(ma.m)), 1.0); + ma.glow += pow(0.10/(0.05+abs(mat02)), 3.0); + if(mat02 < 0.01) + { + ma.type = 1; + + return; + } + ma.type = 0; + //ma.m = min(mat01, mat02); + + +} + + +vec3 normal(vec3 p) +{ + vec2 uv = vec2(0.01, 0.0); + + Matter mat02, mat03, mat04; + + map(mat02, p + uv.xyy); + map(mat03, p + uv.yxy); + map(mat04, p + uv.yyx); + + return(mat.m - normalize(vec3(mat02.m, mat03.m, mat04.m))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + + uv *= rot(0.5 + sin(time * 1.0 + mod01 * 0.1)); + + if(uv.x > 0.0) + { + ray.o = vec3(-1.0 * sin(smod01 * 15.0 * mod01), -10.0 * cos(time + smod01 * 25.0), 16.0), ray.t = vec3(0.0); + } + else if(uv.y > 0.0) + { + ray.o = vec3(0.5 * cos(smod01 * 5.0 * mod01),15.0 , -2.0 * sin(time + smod01 * 1.0)), ray.t = vec3(0.0); + } + else if(uv.y < 0.0) + { + ray.o = vec3(5.5 * cos(smod01 * 5.0 * mod01),10.0 , -5.0 * sin(time + smod01 * 1.0)), ray.t = vec3(0.0); + }else { + ray.o = vec3(1.0 * sin(smod01 * 5.0 * mod01), 5.0 * cos(time + smod01 * 5.0), 14.0), ray.t = vec3(0.0); + } + + vec3 fr = normalize(ray.t-ray.o); + vec3 ri = normalize(cross(vec3(0.0, 1.0, 0.0), fr)); + vec3 up = normalize(cross(fr, ri)); + ray.dir = normalize(fr + uv.x * ri + uv.y * up); + ray.p = ray.dir * 0.25 + ray.o; + + res.col = vec3(1.0); + mat.reflected = false; + + for(int i = 0; i < 200; ++i) + { + map(mat, ray.p); + + + + res.col -= 0.001 * midi02 * fft * mat.glow * mix(vec3(0.0, 1.0, 1.0), vec3(1.0,0.5, 0.0), clamp(1.0 * (0.5 +uv.x), 0.0, 1.0)) * fft; + + if(mat.m < 0.01) + { + mat.m = 15.0 * midi01; + + if(mat.type == 1 && !mat.reflected) + { + vec3 n = normal(ray.p); + + ray.dir = reflect(ray.dir, -n); + mat.reflected = true; + } + } + + ray.p += ray.dir * mat.m; + } + + res.col = mix(res.col, texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy).xyz, 0.925); + + out_color = vec4(res.col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_provod.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_provod.glsl new file mode 100644 index 000000000..a6e67e005 --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_provod.glsl @@ -0,0 +1,139 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float t = fGlobalTime; +#define pi 3.1415927 +#define TT(t,v) texture(t, ((v)+.5)/textureSize(t,0)) +float fft(float f){return TT(texFFT,f).r;} +float ffts(float f){return TT(texFFTSmoothed,f).r;} +float ffti(float f){return TT(texFFTIntegrated,f).r;} +#define rep(v,s) (mod(v,s)-(s)*.5) +float hash(float f){return fract(sin(f)*54353.42347);} +mat2 rot(float a){return mat2(cos(a),sin(a),-sin(a),cos(a));} + +vec3 circ(vec2 uv, float h) { + float r=length(uv); + float a=atan(uv.x,uv.y); + a/=pi;a+=1.; + a+=2.; + float f = 4. * ffts(floor(a*(5. + 50. * hash(h)))); + r -= f; + + float mask = step(abs(r-.3), .1); + float masz = .2 * hash(h+.1); + mask *= step(mod(a + sin(t),.1+masz),.04+.1*masz); + + return mix(vec3(.1,.2,.3),vec3(.5,.2,.3),min(f*40., 3.)) * mask; +} + +vec3 dots(vec2 p) { + //p = fract(p) - .5; + p = rep(p,vec2(.2)); + return vec3(.1,.4,.6) * step(length(p), .01); +} + +vec3 plane(float O, float D, float S, vec2 ouv, vec2 duv, float n) { + float l = (S - O) / D; if (l < 0.) return vec3(0.); + vec2 uv = ouv + duv * l; + + if (n == 1.) + uv.y += floor(t) + pow(fract(t), 2.); + + float xoffc = floor(uv.y); + float xoffp = t * (.2 - 1. * sin(2. * pi * hash(xoffc+.3))) + hash(xoffc); + //xoffp = + float xoff = floor(xoffp/2.)*2. + 2. * pow(fract(xoffp), 3.); + uv.x += xoff; + + vec2 pc = floor(uv); + vec2 p = fract(uv) - .5; + + vec3 c = vec3(0.); + + c += circ(p*1.5, hash(pc.x*.18+pc.y*34.)) * 4.; + + //c += vec3(.1, .2, .3) * step(length(p), .1); + c += dots(uv) * 4.; + + //c + + + return c / l; +} + + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 C=vec3(0.); + + float seed = uv.x*45.43278 + uv.y*17.643 + t*3.4; + + float foc = 6.; + float fov = 1./2.; + float ls = .05; + + const int NS = 16; + float tt = fGlobalTime * 130./120.; + for(int si = 0; si < NS; ++si) { + seed = fract(seed); + vec3 O,D; + + t = tt + hash(seed+=.01) * .03; + vec2 dp = vec2(hash(seed+=.1), hash(seed+=.2)); + + vec3 at = vec3(uv, fov) * foc; + O = vec3(dp * ls, 0.); + D = normalize(at - O); + + vec3 S=vec3(1., 1.1, 10.), DS=vec3(2.); + //O += vec3(.1 + .4*sin(t*.17 + ffti(.3)*.1), .4, 5.); + + float tp = t / 2.; + float tc = floor(tp); + float tct = /*1. -*/ pow(fract(tp), 1.); + + vec3 o0 = S * .9 * (1. - 2. * vec3(hash(tc ),hash(tc+ .1),hash(tc+ .2))); + vec3 o1 = S * .9 * (1. - 2. * vec3(hash(tc+1.),hash(tc+1.1),hash(tc+1.2))); + + O += mix(o0, o1, tct); + + + D.xz *= rot(-.3 + .2 * (1. - 2. * mix(hash(tc+.3), hash(tc+1.3), tp))); + D.yz *= rot(-.2 + .3 * (1. - 2. * mix(hash(tc+.5), hash(tc+1.5), tp))); + D.xy *= rot(-.1 + .4 * (1. - 2. * mix(hash(tc+.6), hash(tc+1.6), tp))); + //D.yz *= rot(-.2); + + + S *= sign(D); + DS *= sign(D); + + //C += circ(uv); + for (float ip = 0.; ip < 2.; ++ip, S+=DS) { + C += plane(O.y, D.y, S.y, O.xz, D.xz, 0.); + C += plane(O.x, D.x, S.x, O.yz, D.yz, 1.); + C += plane(O.z, D.z, S.z, O.xy, D.xy, 2.); + } + } + + C /= float(NS); + + out_color = vec4(sqrt(C), 0.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_rimina.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_rimina.glsl new file mode 100644 index 000000000..d076702ca --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_rimina.glsl @@ -0,0 +1,147 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.5).r; + +const float E = 0.01; +const float FAR = 100.0; +const int STEPS = 60; + +vec3 glow = vec3(0.0); +float M = 0.0; + +vec3 COL1 = vec3(0.5, 0.3, 0.1); +vec3 COL2 = vec3(0.8, 0.1, 0.8); + +float box(vec3 p, vec3 b){ + vec3 d = abs(p) - b; + return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0); +} + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +float scene(vec3 p){ + vec3 pp = p; + + float safe = sphere(p, 10.0); + + + float orb = sphere(pp-vec3(0.0, 0.0, -8.0), 6.0+fract(fft*10.0)*2.5); + + rot(pp.xy, time); + rot(pp.xz, time*0.5); + rot(pp.yz, time*0.25); + + for(int i = 0; i < 5; ++i){ + pp = abs(pp)-vec3(0.5, 1.2, 1.0); + rot(pp.xz, time*0.5 + fft*5.0); + rot(pp.xy, time*0.5); + rot(pp.yz, time+fft*5.0); + } + + float a = box(pp, vec3(1.0)); + //a = max(a, -safe); + + vec3 g = vec3(1.0, 0.2, 0.1) * 0.08 / (abs(a)+0.01); + g += COL2 *0.05 / (abs(orb)+0.01); + g *= 0.5; + + glow += g; + + orb = max(abs(orb), 0.1); + a = max(abs(a), 0.2); + + return min(a, orb); +} + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + + for(int i = 0; i < STEPS; ++i){ + float d = scene(p); + t += d; + p = ro + rd * t; + + if(d < E || t > FAR){ + break; + } + } + return t; +} + +vec3 normals(vec3 p){ + vec3 e = vec3(E, 0.0, 0.0); + return normalize(vec3( + scene(p+e.xyy) - scene(p-e.xyy), + scene(p+e.yxy) - scene(p-e.yxy), + scene(p+e.yyx) - scene(p-e.yyx) + )); +} + +vec3 shade(vec3 p, vec3 rd, vec3 ld){ + vec3 n = normals(p); + float l = max(dot(n, ld), 0.0); + float a = max(dot(reflect(n, ld), rd), 0.0); + float s = pow(a, 20.0); + + return COL1 * l * 0.25 + COL2 * s * 0.75; + +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = -1.0 + uv*2.0; + q.x *= v2Resolution.x/v2Resolution.y; + + vec3 ro = vec3(0.0, 0.0, 10.0+fract(time+fft)); + vec3 rt = vec3(0.0, 0.0, -1.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z) * vec3(q, 1.0/radians(50.0))); + vec3 col = vec3(0.01, 0.02, 0.03); + + float t = march(ro, rd); + vec3 p = ro + rd * t; + + if(t < FAR){ + col += shade(p, rd, -z) + (1.0/t); + } + + col *= glow; + + vec3 prev = texture(texPreviousFrame, uv).rgb; + + col = mix(col, prev, 0.8); + + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_totetmatt.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_totetmatt.glsl new file mode 100644 index 000000000..d13b21b4b --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_totetmatt.glsl @@ -0,0 +1,132 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texTex5; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} +float box2(vec2 p,vec2 b){ + vec2 q = abs(p)-b; + return length(max(vec2(0.),q))+min(0.,max(q.x,q.y)); + } + +vec2 sdf(vec3 p){ + p.y -=.2; + p.xy *=rot(-.785*.5); + float bump = texture(texFFTSmoothed,.3).r*100; + vec2 h; + vec3 hp = p; + hp.y -=1.; + hp.x +=1.; + h.x = max(abs(hp.z)-.1-bump,box2(hp.xy,vec2(.5))); + h.y = 1.; + + vec2 t; + vec3 tp = p; + tp.x +=1.; + tp.y +=1.; + t.x = max(abs(tp.z)-.1-bump,box2(tp.xy,vec2(.5,1.))); + t.y = 1.; + + h = t.x < h.x ? t:h; + + tp = p; + tp.y+=.3; + tp.x +=.1; + t.x = max(abs(tp.z)-.1-bump,length(tp.xy)-1.75); + t.x = max(-tp.x+.1,t.x); + + float tt = max(abs(tp.z)-.2-bump,length(tp.xy)-1.); + tt = max(-tp.x,tt); + t.x= max(-tt,t.x); + t.y = 2.; + + h = t.x < h.x ? t:h; + return h; + } +#define q(s) s*sdf(p+s).x + vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +float diam2(vec2 p,float s){ + p = abs(p); + return (p.x+p.y-s)*inversesqrt(3.); +} +vec3 txt(vec2 uv){ + uv*=4.; + uv = vec2(log(length(uv)),atan(uv.y,uv.x))*3.1415; + uv.x -=texture(texFFTIntegrated,.3).r; + vec2 id = floor(uv); + uv = fract(uv)-.5; + vec3 col = vec3(.8,.2,.2); + if(mod(id.x,2.)==0.){ + uv*=4.; + uv.y +=fGlobalTime; + uv = fract(uv)-.5; + col = vec3(.2,.8,.2); + } + float d = diam2(uv,.2); + d= mix(d,abs(d)-.01,asin(sin(texture(texFFTIntegrated,.1+min(1.,fract(length(id)))).r*50))*.5+.5); // NOT SQUIDGAME + d= smoothstep(1.7*fwidth(d),0.,d); + + return .5*col*d; +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col = txt(uv); + + vec3 ro = vec3(sin(fGlobalTime),0.,-5.); + vec3 rt = vec3(0.); + vec3 rp = ro; + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z,vec3(0.,-1.,0.))); + vec3 y = normalize(cross(z,x)); + + vec3 rd = mat3(x,y,z)*normalize(vec3(uv,1.)); + vec3 light = vec3(1.,2.,-3.); + vec3 acc = vec3(0.); + float time = mod(fGlobalTime,10); +for(float i=0;i<=128.;i++){ + vec2 d = sdf(rp); + + + if(time < 5 && length(rp-vec3(.25,.1,.0)) >.6 ) acc += (d.y ==1. ? vec3(.2,.9,.2):vec3(.9,.2,.2))*exp(-abs(d.x))/(50.-min(40,texture(texFFT,.3).r*1000)); + if(time < 5 && fract(fGlobalTime+ length(rp)*.5)<0.5){ d.x = max(.001,abs(d.x));} + + if(d.x <.0001){ + vec3 n = norm(rp,.001); + vec3 nn = norm(rp,.01); + float diff = max(0.,dot(normalize(light-rp),n)); + float spc = max(0.,dot(normalize(light-ro),reflect(-normalize(light),n))); + spc = pow(spc,32); + if(d.y == 1.){ + col = vec3(.2,.9,.2)*diff; + } else { + col = vec3(.9,.2,.2)*diff; + + } + col = time < 5 ?col : mix(col, col*step(.2,length(nn-n)),floor(asin(sin(rp.y+fGlobalTime)*.5)*10)*.5+.5); + col +=spc*vec3(1.); + break; + } + rp +=rd*d.x; + + } + col +=acc; + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_z0rg.glsl b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_z0rg.glsl new file mode 100644 index 000000000..95bfef5bc --- /dev/null +++ b/shader_file_sources/2021_10_30_shader_royale_inercia/grabber_inerciaroyale_z0rg.glsl @@ -0,0 +1,199 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define FFT(a) (texture( texFFT, a).r * 100) +#define FFTI(a) (texture( texFFTIntegrated, a).r) +#define sat(a) clamp(a, 0.,1.) +vec2 _min(vec2 a, vec2 b) +{ + if(a.x < b.x) + return a; + return b; +} + +mat2 r2d(float a) { float c = cos(a), s = sin(a); return mat2(c, -s, s, c); } + +float _cube(vec3 p, vec3 s) +{ + vec3 l = abs(p)-s; + return max(l.x, max(l.y, l.z)); +} + +vec2 map(vec3 p) +{ + vec2 acc = vec2(1000.,-1.); + + acc = _min(acc, vec2(-p.y+.5-.1*abs(sin(length(p.xz*3.)))*sat(length(p.xz)), 1.)); + p.xz *= r2d(p.y+fGlobalTime); + acc = _min(acc, vec2(_cube(p, vec3(1.,5.,.1)), 0.)); + + return acc; +} + +vec3 getNorm(vec3 p, float d) +{ + vec2 e = vec2(0.01,0.); + return normalize(vec3(d)-vec3(map(p-e.xyy).x, map(p-e.yxy).x, map(p-e.yyx).x)); +} + +float hash11(float p) +{ + p = fract(p*.1031); + p *= p+33.33; + p *= p+p; + return fract(p); +} +float seed; +float rand() +{ + seed++; + return hash11(seed); +} + +vec3 getCam(vec3 rd, vec2 uv) +{ + vec3 r = normalize(cross(rd, vec3(0.,1.,0.))); + vec3 u = normalize(cross(rd, r)); + return normalize(rd+r*uv.x+u*uv.y); +} +vec3 accCol; +vec3 trace(vec3 ro, vec3 rd, int steps) +{ + accCol = vec3(0.); + vec3 p = ro; + for (int i = 0; i < steps; ++i) + { + vec2 res = map(p); + if(res.x < 0.01) + return vec3(res.x, distance(p, ro), res.y); + accCol += vec3(sin(length(p.xz)*3.+FFTI(.2)*10.)*.5+.5, .2,sin(p.x*10.)*.2+.8)*(1.-sat(res.x/.5))*.05; + p+=rd*res.x; + + } + return vec3(-1.); +} + +vec3 getMat(vec3 rd, vec3 res, vec3 p, vec3 n) +{ + vec3 col = vec3(0.); + col = n*.5+.5; + if (res.z == 0.) + { + col = mix(vec3(.6,.3,.1), vec3(.9,.1,.1), sat(-p.y-1.5))*2.; + } + if (res.z == 1.) + { + vec3 lpos = vec3(10.); + vec3 ldir = p-lpos; + vec3 h = normalize(rd+ldir); + col = vec3(.2)*pow(sat(dot(h, n)),3.); + + col += sat((sin(-FFTI(.1)*10.+length(p.xz)*1.)-.95)*100.)*mix(vec3(.6,.3,.1).zxy, vec3(.9,.3,.1), sin(fGlobalTime)*.5+.5); + + } + return col; +} + +vec3 rdr(vec2 uv) +{ + vec3 col = vec3(0.); +float dist = 20.*sin(fGlobalTime*.2); + float t = fGlobalTime*.25; +vec3 ro = vec3(sin(t)*dist,-3.+1.*sin(t*1.5),cos(t)*dist); + vec3 ta = vec3(0.,0.,0.); + vec3 rd = normalize(ta-ro); + rd = getCam(rd, uv); + vec3 res = trace(ro, rd, 128); + vec3 glow = vec3(0.); + if (res.y > 0.) + { + vec3 p = ro+rd*res.y; + vec3 n = getNorm(p, res.x); + + col = getMat(rd, res, p, n); + glow = accCol; + float gloss = 0.01+.1*texture(texTex4, p.xz*.1).x; + vec3 refl = normalize(reflect(rd, n)+gloss*((vec3(rand(), rand(), rand())-.5)*2.)); + if (res.z == 1.) + { + vec3 resrefl = trace(p+n*0.01, refl, 128); + if (resrefl.y > 0.) + { + vec3 prefl = p+refl*resrefl.y; + vec3 nrefl = getNorm(prefl, resrefl.x); + col += getMat(refl, resrefl, prefl, nrefl); + } + } + } + col += glow; + return col; +} +float _sqr(vec2 uv, vec2 s) +{ + vec2 p = abs(uv)-s; + return max(p.x, p.y); +} +void main(void) +{ + vec2 uv = (gl_FragCoord.xy-.5*v2Resolution.xy)/v2Resolution.xx; + vec2 ouv2 = uv; + float stpuv = .01;//+.1*length(uv); + uv = floor(uv/stpuv)*stpuv; + + seed = texture(texTex2, uv).x; + seed += fract(fGlobalTime); + vec2 ouv = uv; + float an = atan(uv.y, uv.x); + float astp = 3.14159265*2./mod(floor(fGlobalTime), 10.); + float a= mod(an+astp*.5, astp)-astp*.5; + + + + uv += vec2(sin(FFTI(.1)), cos(FFTI(.1)))*.1; + uv *= r2d(FFTI(.5)*.1); + + if (abs(uv.y)-.1 > 0.)//mod(fGlobalTime, 2.) < 1.) + { + uv = vec2(sin(a), cos(a))*length(uv); + uv += vec2(sin(FFTI(.1)), cos(FFTI(.1)))*.5; + uv *= 1.-length(uv); + } + vec3 col = rdr(uv); + if (abs(uv.y)-.1 > 0.) + col = (1.-col.yzx)*.15; + + + + col = mix(col, vec3(0.), 1.-sat((abs(uv.y-.2)-.001)*400.)); + float flicker = .1; + col = mix(col, col.xxx, sat(mod(fGlobalTime,flicker)/flicker)*sat(sin(fGlobalTime*.1)*10.)); + col = mix(col, col.xxx, sat(sin(fGlobalTime))-sat((abs(ouv.x)-.1)*400.)); + + float rep = .02; + vec2 idx = floor((ouv+rep*.5)/rep); + ouv = mod(ouv+rep*.5,rep)-rep*.5; + ouv *= r2d(FFTI(idx.x*.05)*2.25+idx.x*.5); + float shape = _sqr(ouv, vec2(.03-0.03*sat(length(uv*3.)))); + + col *= 1.-sat((shape)*400.); + + float an2 = atan(ouv2.y, ouv2.x); + col *= sat(max(sin(an2*10.+fGlobalTime+sin(length(ouv2)*20.-fGlobalTime*10.)), sin(fGlobalTime+length(ouv2)-.2))); + + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2021_11_27_byte_jam_demodulation/jobe.lua b/shader_file_sources/2021_11_27_byte_jam_demodulation/jobe.lua new file mode 100644 index 000000000..030a8623c --- /dev/null +++ b/shader_file_sources/2021_11_27_byte_jam_demodulation/jobe.lua @@ -0,0 +1,31 @@ +cls() +m=math +r=m.random +s=m.sin +function TIC() +t=time()/4999 +for i=0,47 do +--let's just go with the boring grayscale +poke(16320+i,i*5) +end +for a=r(32639),r(32639) do +poke4(a,peek4(a)*.9) +end +p1=r(7) +d=150+50*s(t*3) +x1=d +y1=0 +for i=1,9^4 do +p2=(p1+r(6)%5)+1 +a=2*p2/7*m.pi+t +x2=d*m.cos(a) +y2=d*s(a) +u=2.2+.4*s(t*3.3) +x=120+(x1+x2)/u +y=68+(y1+y2)/u +pix(x,y,math.min(15,pix(x,y)+1)) +p1=p2 +x1=x-120 +y1=y-68 +end +end \ No newline at end of file diff --git a/shader_file_sources/2021_11_27_byte_jam_demodulation/lynn.lua b/shader_file_sources/2021_11_27_byte_jam_demodulation/lynn.lua new file mode 100644 index 000000000..e05ec6afa --- /dev/null +++ b/shader_file_sources/2021_11_27_byte_jam_demodulation/lynn.lua @@ -0,0 +1,71 @@ +--i'm 3 and what is this +--shoutout to the cat sanctuary massiv +function TIC()t=time()//32 + --vic20 palette rulez cuz it has pink. + --c64 sux, cope harder lmao + r={0x00,0xff,0xa8,0xe9,0x77,0xb6,0x85,0xc5,0xa8,0xe9,0x55,0x92,0x42,0x7e,0xbd,0xff} + g={0x00,0xff,0x73,0xb2,0x2d,0x68,0xd4,0xff,0x5f,0x9d,0x9e,0xdf,0x34,0x70,0xcc,0xff} + b={0x00,0xff,0x4a,0x87,0x26,0x62,0xdc,0xff,0xb4,0xf5,0x4a,0x87,0x8b,0xca,0x71,0xb0} + + q=math.random(8,32) + + for i=0,15 do + poke(0x3fc0+3*i,r[i+1]) + poke(0x3fc0+3*i+1,g[i+1]) + poke(0x3fc0+3*i+2,b[i+1]) + end + + s=136/5 + k={7,9,1,9,7} + for i=0,4 do + rect(0,s*i,240,s,k[i+1]) + end + + blobs() + kefrens(8) + + -- what is math i'm baby + x=(math.cos(t/24)*64)+30 + y=(math.sin(t/20)*24)+68 + + -- uwu no politics pwease v.v + print("trans rights",x+2,y+2,0,false,3) + print("trans rights",x,y,8,false,3) + s=(math.sin(t/16)*16)+30 + print("fuckings to transphobes",(x-47)+s,y+25,0,false,2) + print("fuckings to transphobes",(x-46)+s,y+24,8,false,2) + + + -- holy shit ny'all are so much better + -- i am die + + end + + -- yes theyre kefrens bars + -- not alcatraz bars + -- suck it photon + function kefrens(p) + + x=(math.sin(t/8)*32)+120 + k={0,12,13,6,7,1,7,6,13,12,0} + for i=0,96 do + for j=1,11 do + s=(math.cos(t/6+(i/p))*32) + line((x+j)+s,i+10,(x+j)+s,136,k[j]) + end + end + end + + function blobs() + + for i=0,32 do + + x=(math.cos(t/16+i)*64)+120+i + y=(math.sin(t/i)*8)+68+i + r=(math.cos(t/8-i)*8)+16 + + circ(x,y,r,i/6) + + end + + end \ No newline at end of file diff --git a/shader_file_sources/2021_11_27_byte_jam_demodulation/mantratronic.lua b/shader_file_sources/2021_11_27_byte_jam_demodulation/mantratronic.lua new file mode 100644 index 000000000..4f24f3965 --- /dev/null +++ b/shader_file_sources/2021_11_27_byte_jam_demodulation/mantratronic.lua @@ -0,0 +1,85 @@ +p={} +sz=25 +tau=math.pi*2 +depth=3 +function SCN(l) +for i=0,15 do +r=i*(8+8*(math.sin(tau/6*5+t/9+l/100))) +poke(0x3fc0+i*3,math.min(r,255)) --?? +g=i*(8+8*(math.sin(t/9+l/100))) +poke(0x3fc0+i*3+1,g) +b=i*(8+8*(math.cos(t/9+l/100))) +poke(0x3fc0+i*3+2,b) +end +end + +function zsort() +for i=1,#p do +j=i +while j>1 and p[j-1].z>p[j].z do +p[j-1],p[j]=p[j],p[j-1] +j=j-1 +end +end +end + +function e1() +for i=1,sz^2 do +y=i//(sz/2)-sz/2 +a=(i%sz)/sz*tau +d=sz+sz/2*math.cos(y/5+t/4) +x=d*math.sin(a+t/7+math.sin(y/sz)) +z=d*math.cos(a+t/7+math.sin(y/sz)) +p[i]={x=x,y=y,z=z} +end +zsort() +for i=1,#p do +circ(120+p[i].x*p[i].z/9+20*math.sin(p[i].y/5),58+p[i].y*p[i].z/9,p[i].z/5,p[i].z/4) +end +end +function e2() +for i=1,sz^2 do +y=i//(sz/2)-sz/2 +a=(i%sz)/sz*tau +d=sz/2*math.sin(t/depth)+sz*math.sin(y/sz) +x=d*math.sin(a+t/13) +z=d*math.cos(a+t/13) +a2=t/11 +p[i]={x=x*math.cos(a2)-y*math.sin(a2),y=y*math.cos(a2)+x*math.sin(a2),z=z} +end +for i=2,#p do +line(120+p[i].x*p[i].z/9+20*math.sin(p[i].y/5),58+p[i].y*p[i].z/9,120+p[i-1].x*p[i-1].z/9+20*math.sin(p[i-1].y/5),58+p[i-1].y*p[i-1].z/9,(math.abs(p[i-1].z)+math.abs(p[i].z))/8+8) +end +end +function e3() +for y=0,135 do for x=0,239 do +X=x-120 +Y=y-68 +a=math.atan(X,Y) +d=math.sqrt(X^2+Y^2) +pix(x,y,8+8*math.sin(10*math.sin(depth*a+t/2)+d/10+t)) +end +end +end + +function OVR() +for i=0,47 do +poke(0x3fc0+i,255) +end +dy=5+10*math.sin(t/10) +print("greets to jobe, lynn, pestis, aldroid",25,50+dy,15) +print("and all at demodulation!",50,60+dy,15) +end + +function TIC()t=time()/320 +cls() +p={} +if t%30 < 10 then +e3() +elseif t%30 < 20 then +e2() +else +e1() +depth=2+math.random(5)//1 +end +end \ No newline at end of file diff --git a/shader_file_sources/2021_11_27_byte_jam_demodulation/pestis.lua b/shader_file_sources/2021_11_27_byte_jam_demodulation/pestis.lua new file mode 100644 index 000000000..4f3415c9b --- /dev/null +++ b/shader_file_sources/2021_11_27_byte_jam_demodulation/pestis.lua @@ -0,0 +1,20 @@ +function TIC()t=time()/199 + for j=.2,10,.03 do + circb(120+s(j+t*5)*29,68+s(j+t*7)*29,299*j,0) + for i=0,9 do + l=(t+5/j+i/9)//1,s(t)^2>1e-4or cls(15) + r=s(l+i*2)+i+2 + w=l+i*4+s(s(t/19)*2+t/17) + q=20*j + for k=0,2 do + m=(k+1)//2-q/2 + rect(s(w)*r*19*j+120+m,s(w+8)*r*19*j+68+m,q-k//2,q-k//2,2+k-.6/j) + end + end + end + for i=0,32639 do + poke4(i,peek4(i)-s(i*i*t)) + end + print("Greetings to Demodulation!!!!! pestis sends much love from Finland. Ran out of ideas so time to write scrollers... This wasn't going to fit 256b so whatever. Join us at lovebyte 2022!! 11-13.2.2022",240-t%199*20,68+s(t)*50,12,1,3) + end + s=math.sin \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_seminar_tokyo_demofest/2021_TDF_0b5vr.pdf b/shader_file_sources/2021_12_11_shader_seminar_tokyo_demofest/2021_TDF_0b5vr.pdf new file mode 100644 index 000000000..e31c55b83 Binary files /dev/null and b/shader_file_sources/2021_12_11_shader_seminar_tokyo_demofest/2021_TDF_0b5vr.pdf differ diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_Kamoshika.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_Kamoshika.glsl new file mode 100644 index 000000000..4a7aaecb2 --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_Kamoshika.glsl @@ -0,0 +1,165 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define hash(x) fract(sin(x)*1763.2632) +#define saturate(x) clamp(x,0,1) +const float pi=acos(-1); +const float pi2=acos(-1)*2; +const float N=50; + +mat2 rot(float a){ + float s=sin(a),c=cos(a); + return mat2(c,s,-s,c); +} + +float rt=1e5; +vec3 rn; +float rid; +vec2 ruv; +void intersect(vec3 ro,vec3 rd,vec3 ce,mat2 M,float id,float s){ + M[0][1]*=s; + M[1][0]*=s; + vec3 n=vec3(vec2(0,1)*M,0); + float t=dot(ce-ro,n)/dot(rd,n); + if(t<0||t>rt)return; + vec3 q=ro+t*rd-ce; + q.yx*=M; + if(q.x*s<0)return; + vec2 p=q.xz; + + p.x=abs(p.x)*.8; + if(p.x>sin(p.y*50)*.025+.4+p.y*.4)return; + if(p.y<0)p*=1.5; + p.y=abs(p.y); + if(length(p)>sin(atan(p.y,p.x)*2)+smoothstep(.1,0.,p.y)*.3)return; + if(dot(rd,n)>0)n*=-1; + + + rt=t; + rn=n; + rid=id; + ruv=q.xz; +} + +vec3 hsv(float h,float s,float v){ + vec3 res=fract(h+vec3(0,2,1)/3)*6-3; + res=saturate(abs(res)-1); + res=(res-1)*s+1; + res*=v; + return res; +} + +float n3d(vec3 p){ + vec3 i=floor(p); + vec3 f=fract(p); + vec3 b=vec3(13,193,9); + vec4 h=vec4(0,b.yz,b.y+b.z)+dot(i,b); + f=f*f*(3-2*f); + h=mix(hash(h),hash(h+b.x),f.x); + h.xy=mix(h.xz,h.yw,f.y); + return mix(h.x,h.y,f.z); +} + +float fbm(vec3 p){ + float ac=0,a=1; + for(int i=0;i<5;i++){ + ac+=n3d(p*a)/a; + a*=2; + } + return ac-.5; +} + +float density(vec3 p){ + return saturate(fbm(p*.5)-p.y*.03-.7); +} + +#define odd(x) step(1,mod(x,2)) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1)*.5; + vec3 col=vec3(0); + + float cam=odd(time*.2); + float L=4+odd(time*.4-1)*4; + vec3 ro=vec3(0,0,time); + ro.xy=mix(vec2(0,L),vec2(L*.5,0),cam); + vec3 rd=normalize(vec3(uv,-2)); + rd=mix(vec3(-rd.x,rd.z,rd.y),vec3(rd.z,rd.y,-rd.x),cam); + //rd=vec3(-rd.x,rd.z,rd.y); + + for(float i=0;isin(p.y*50)*.025+.4+p.y*.4)return; + if(p.y<0)p*=1.5; + p.y=abs(p.y); + if(length(p)>sin(atan(p.y,p.x)*2)+smoothstep(.1,0.,p.y)*.3)return;*/ + + vec3 ld=normalize(vec3(-5,2,-2)); + + if(rt<100){ + float h=hash(rid); + ruv.x=abs(ruv.x); + float w=fbm(vec3(ruv,hash(rid*1.2)*500)); + h+=fbm(vec3(ruv+w*5,hash(rid*1.1)*500))*.3; + col+=hsv(h,.8,fract(h*5+hash(rid*1.3))); + col*=smoothstep(-1.,-.93,sin(atan(ruv.y,ruv.x)*40)); + rn.x+=fbm(vec3(ruv*10,hash(rid*1.3)*500)); + float diff=max(dot(ld,rn),0); + float spec=pow(max(dot(reflect(ld,rn),rd),0),20); + float m=.6; + float lp=5; + + col*=diff*(1-m)*lp+spec*m*lp+.3; + }else{ + col+=vec3(.5,.6,.9)*.1; + col=mix(col,vec3(1),pow(max(dot(ld,rd),0),100)*2); + } + + vec3 rp=ro; + float tra=1,rs=1,t=0,den,ac=0; + for(int i=0;i<20;i++){ + if(t>rt)break; + den=density(rp+t*rd); + ac+=tra*den; + tra*=1-den; + if(tra<.001)break; + t+=rs; + } + col+=ac; + + col=pow(col,vec3(1/2.2)); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_phi16.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_phi16.glsl new file mode 100644 index 000000000..28bca42a9 --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/final/grabber_tdf2021_phi16.glsl @@ -0,0 +1,157 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +vec2 res = v2Resolution; + +float rand(vec2 p) { + return fract(sin(dot(p,vec2(1,1.001)))*10000); +} + +float map(vec3 o) { + if(distance(o, vec3(time*2,20,time*4)) < 10) return 0; + ivec3 cd = ivec3(o.zxy); + if(cd.z < 0) return 1; + if(cd.z > 63) cd.z = 63; + int cdz = cd.z-1; + ivec2 tc = cd.xy + ivec2(cdz%8,cdz/8)*64; + return texture(texPreviousFrame, (tc+0.5)/res).a; +} + +bool cast(vec3 o, vec3 d, out vec3 ii, out vec3 ir, out vec3 tw, out float e) { + vec3 u = floor(o); + vec3 s = sign(d); + d = abs(d); + vec3 r = (o-u-0.5)*s+0.5; + for(int i=0;i<100;i++) { + float t = map(u); + if(t > 0.) { + e = t; + ii = u; + ir = (r-0.5)*s; + return true; + } + vec3 l = (1-r)/d; + vec3 m = step(l,l.yzx) * step(l,l.zxy); + tw = -s*m; + r += d*length(l*m) - m; + u += s*m; + } + return false; +} +bool cast2(vec3 o, vec3 d, out vec3 ii, out vec3 ir, out vec3 tw, out float e) { + vec3 u = floor(o); + vec3 s = sign(d); + d = abs(d); + vec3 r = (o-u-0.5)*s+0.5; + for(int i=0;i<40;i++) { + float t = map(u); + if(t > 0.) { + e = t; + ii = u; + ir = (r-0.5)*s; + return true; + } + vec3 l = (1-r)/d; + vec3 m = step(l,l.yzx) * step(l,l.zxy); + tw = -s*m; + r += d*length(l*m) - m; + u += s*m; + } + return false; +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 ouv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 c = vec3(0.); + vec3 o = vec3(time*2,20,time*4); + vec3 d = vec3(uv,1); + float ga = 0.0; + d.xz *= mat2(cos(ga),-sin(ga),sin(ga),cos(ga)); + ga = 0.2; + d.yz *= mat2(cos(ga),-sin(ga),sin(ga),cos(ga)); + vec3 ii,ir,tw; + float e; + if(cast(o,d,ii,ir,tw,e)) { + vec3 pos = ii+ir+0.5; + c = vec3(1.); + if(e > 0.5) { + + vec3 normal = tw; + vec3 refl = reflect(normalize(pos-o),normal); + vec3 s = vec3(0); + for(int i=0;i<16;i++) { + float ra = rand(uv*1000+time+1+i*0.5)*6; + float rr = rand(uv*1000+time+2+i*0.9)*3; + vec3 rc = vec3(sin(ra)*cos(rr), cos(ra)*cos(rr), sin(rr)); + vec3 sph = dot(rc,normal) < 0 ? -rc:rc; + refl = mix(refl, sph, 0.5); + if(cast2(pos-d*0.01, refl, ii,ir,tw,e)) { + if(e < 0.5) s += (cos(vec3(0,1,-1)*2/3*3.1415926535+ii.x*0.25)*0.5+0.5)*3; + } + } + s /= 16.; + c = s; + } + } + + float a = texture(texPreviousFrame, ouv).a; + ivec3 cd = ivec3(gl_FragCoord.xy, 0); + cd.z = cd.x/64 + cd.y/64*8; + + cd.xy %= 64; + if(fract(time) < 0.5) { + if(cd.z == 0) { + int count = 0; + for(int i=0;i<9;i++) { + if(i == 4) continue; + ivec2 d = ivec2(i/3-1,i%3-1); + count += texture(texPreviousFrame, ouv+d/res).a > 0.5 ? 1 : 0; + } + if(a > 0.5 && 2 <= count && count <= 3)a = 1; + else if(a < 0.5 && count == 3) a = 1; + else a -= 0.75; + } else { + int cdz = cd.z-1; + ivec2 tc = cd.xy + ivec2(cdz%8,cdz/8)*64; + a = texture(texPreviousFrame, (tc+0.5)/res).a; + } + + if(cd.z == 0 && length(cd.xy-31) < 2 && rand(uv*1000+time) < 0.5) a = 1; + + } + + vec3 bl = vec3(0.); + for(int i=0;i<16;i++) { + vec2 d = (vec2(rand(uv*1000+time+i),rand(uv*1001+time+i)) - 0.5) * 5; + d = sign(d) * pow(abs(d),vec2(2)); + bl += texture(texPreviousFrame, ouv + d/res).rgb; + } + bl/=16; + c = mix(c,bl,0.7); + + out_color = vec4(c,a); + +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_0b5vr.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_0b5vr.glsl new file mode 100644 index 000000000..5ebeb629d --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_0b5vr.glsl @@ -0,0 +1,183 @@ +#version 410 core + +#define fs(i) (fract(sin((i)*114.514)*1919.810)) +#define lofi(i,j) (floor((i)/(j))*(j)) + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float PI=acos(-1); +const float TAU=PI*2.; + +float time; +float seed; + +float random(){ + seed=fs(seed); + return seed; +} + +mat3 orthBas(vec3 z){ + z=normalize(z); + vec3 up=abs(z.y)>.99?vec3(0,0,1):vec3(0,1,0); + vec3 x=normalize(cross(up,z)); + return mat3(x,cross(z,x),z); +} + +mat2 r2d(float t){ + return mat2(cos(t),sin(t),-sin(t),cos(t)); +} + +vec3 sampleLambert(vec3 n){ + float phi16=TAU*random(); + float ct=sqrt(random()); + float st=sqrt(1.0-ct*ct); + return orthBas(n)*vec3( + cos(phi16)*st, + sin(phi16)*st, + ct + ); +} + +vec4 ibox(vec3 ro,vec3 rd,vec3 s){ + vec3 src=ro/rd; + vec3 dst=abs(s/rd); + vec3 fv=-src-dst; + vec3 bv=-src+dst; + float f=max(max(fv.x,fv.y),fv.z); + float b=min(min(bv.x,bv.y),bv.z); + if(f<0.||b0. + || d1>.8 + ); + if(r.hole){break;} + float d2=fs(dot(vec3(4,5,6),r.cell)); + if(d2>.5){break;} + } + + + vec3 src=(ro-r.cell)/rd; + vec3 dst=abs(r.size/2./rd); + vec3 bv=-src+dst; + float b=min(min(bv.x,bv.y),bv.z); + r.len=b; + + return r; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 p=uv*2.-1.; + p.x*=v2Resolution.x/v2Resolution.y; + + time=fGlobalTime; + seed=texture(texNoise,uv*8.).x; + seed+=fract(time); + + vec3 col=vec3(0); + vec3 colRem=vec3(1); + + p.xy*=r2d(.4); + + vec3 co=vec3(0,1,2); + co.zx*=r2d(.2*time); + vec3 ct=vec3(.2,-1,0); + vec3 cz=normalize(co-ct); + + vec3 ro=co; + vec3 ro0=ro; + vec3 rd=orthBas(cz)*normalize(vec3(p,-2)); + vec3 rd0=rd; + + bool shouldInit=true; + float samples=0.; + + for(int i=0;i<99;i++){ + if(shouldInit){ + shouldInit=false; + ro=ro0; + rd=rd0; + colRem=vec3(1); + samples++; + } + + QTR qtr=qt(ro,rd); + + vec4 isect=vec4(1E2); + vec3 off=vec3(0); + if(!qtr.hole){ + off.y-=1.; + float d1=fs(dot(qtr.cell,vec3(.2,.8,.6))); + off.y-=sin(d1*6.+time); + vec3 size=vec3(qtr.size/2.-.02); + isect=ibox(ro-qtr.cell-off,rd,size); + } + + if(isect.w<1E2){ + ro+=rd*qtr.len; + + if((ro-off).y>-1.*qtr.size.x){ + col+=colRem*5.; + colRem*=0.; + } + + vec3 N=isect.xyz; + colRem*=.3; + + rd=mix( + sampleLambert(N), + reflect(rd,N), + .5 + ); + }else{ + ro+=rd*qtr.len; + } + + if(colRem.x<.01){ + shouldInit=true; + } + } + + col/=samples; + col*=1.0-length(p)*.3; + col=vec3( + smoothstep(.1,.9,col.x), + smoothstep(.0,1.,col.y), + smoothstep(-.1,1.1,col.z) + ); + + out_color = vec4(col,1); +} diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_Kamoshika.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_Kamoshika.glsl new file mode 100644 index 000000000..b10fb7d06 --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_Kamoshika.glsl @@ -0,0 +1,102 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define hash(x) fract(sin(x)*1532.2672) +#define saturate(x) clamp(x,0,1) +#define ease(x,s) smoothstep(.5-s,.5+s,fract(x)) +const float pi2=acos(-1)*2; +const float cs=.25; + +vec2 hash22(vec2 p){ + vec2 v=vec2(dot(p,vec2(1.5263,1.1632)),dot(p,vec2(1.8273,1.3162))); + //return hash(v)*2-1; + float t=time*cs; + return sin(hash(v)*pi2+(floor(t)+ease(t,.1))*5); +} + +float p2d(vec2 p){ + vec2 i=floor(p); + vec2 f=fract(p); + vec2 b=vec2(1,0); + vec2 u=f*f*(3-2*f); + return mix(mix(dot(f-b.yy,hash22(i+b.yy)),dot(f-b.xy,hash22(i+b.xy)),u.x), + mix(dot(f-b.yx,hash22(i+b.yx)),dot(f-b.xx,hash22(i+b.xx)),u.x), + u.y); +} + +float fbm(vec2 p){ + float ac=0,a=1; + for(int i=0;i<5;i++){ + ac+=p2d(p*a)/a; + a*=2; + } + return saturate(ac); +} + +vec3 hsv(float h,float s,float v){ + vec3 res=fract(h+vec3(0,2,1)/3)*6-3; + res=saturate(abs(res)-1); + res=(res-1)*s+1; + res*=v; + return res; +} + +mat2 rot(float a){ + float s=sin(a),c=cos(a); + return mat2(c,s,-s,c); +} + +#define odd(x) step(1,mod(x,2)) +float sqWave(float x){ + float i=floor(x); + return mix(odd(i),odd(i+1),ease(x,.05)); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1)*.5; + vec3 col=vec3(0); + + uv*=.3+sqWave(time*.2)*.7; + uv-=sin(vec2(.5,.7)*time*.5)*.5; + uv*=rot(time*.2); + + float cp=time; + for(int i=0;i<20;i++){ + float L=1-fract(cp)+i; + float id=floor(cp)+i; + vec2 p=uv/atan(.001,L)*.001; + float c1=saturate(sin(fbm(p*.5+hash(id)*500)*20)); + c1+=pow(sin((time*cs-.25)*pi2)*.5+.5,30)*.4; + float a=hash(id*1.1)*pi2; + vec2 v=vec2(cos(a),sin(a))*.5; + float c2=saturate(sin(fbm(p*.25+hash(id*1.2)*500+time*v)*20)); + float c=c1+pow(c1*c2,5)*8; + float L2=dot(p,p)*10+L*L; + col+=hsv(hash(id*1.3),.8,c)*exp(-L2*.01); + } + + float l=2; + col=col/(1+col)*(1+col/l/l); + //col=hsv(uv.y,.5,.5); + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gam0022.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gam0022.glsl new file mode 100644 index 000000000..5b561092c --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gam0022.glsl @@ -0,0 +1,122 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 200.0 * sin(fGlobalTime) ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +#define time fGlobalTime +#define PI acos(-1) +#define TAU (2.*PI) +#define saturate(x) clamp(x, 0, 1) + +float sdBox(vec3 p, vec3 b) { + vec3 q = abs(p) - b; + return length(max(q, 0)) + min(0, max(q.x, max(q.y, q.z))); +} + +void U(inout vec4 m, float d, float a, float b, float c) { + if (d < m.x) m = vec4(d, a, b, c); +} + +void rot(inout vec2 p, float a) { + p *= mat2(cos(a), sin(a), -sin(a), cos(a)); +} + +vec4 map(vec3 p) { + vec3 pos = p; + p = mod(p, 1) - 0.5; + // return length(p) - 0.1; + vec4 m = vec4(1, 1, 1, 1); + + float s = 1.; + for(int i = 0; i < 5; i++) { + p = abs(p) - 0.5; + rot(p.xy, -0.5); + p = abs(p) - 0.4 + 0. * cos(TAU * time / 4); + rot(p.yz, -0.1); + + float a = 1.4; + p *= a; + s *= a; + } + + U(m, sdBox(p, vec3(0.5, 0.05, 0.05)) / s, 1, 1, 0); + U(m, sdBox(p, vec3(0.5 + 0.5 * (cos(TAU * time / 4)), 0.06, 0.05)) / s, 0, 0.1, 0.5); + U(m, sdBox(p, vec3(0.2, 0.6, 0.1)) / s, 0, saturate(cos(TAU * (time + pos.z / 8))), -0.5); + + return m; +} + +vec3 fbm(vec3 p) { + return sin(p) + sin(p*2) / 2 + sin(p*4) / 4; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + /*vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t;*/ + + vec3 col = vec3(0); + + vec3 ro = vec3(0, 0, time); + vec3 ray = vec3(uv, 1.1 + cos(TAU * time / 8)); + ray += 0.1 * fbm(vec3(1, 2, 3) + TAU * time / 4); + // rot(ray.xy, time); + // rot(ray.yz, time); + ray = normalize(ray); + + float t = 0.; + for(int i = 0; i < 100; i++) { + vec3 p = ro + ray * t; + vec4 m = map(p); + float d = m.x; + if (m.y == 1.) { + t += d; + if (d < 0.001) { + col += 0.005 * float(i); + break; + } + } else { + t += abs(d) * 0.5 + 0.01; + col += saturate(0.001 * vec3(1 + m.w, 1, 1 - m.w) * m.z / abs(d)); + } + } + + col = mix(vec3(0), col, exp(-0.7 * t)); + + out_color = vec4(col, 1); + +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gaz.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gaz.glsl new file mode 100644 index 000000000..be6440674 --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gaz.glsl @@ -0,0 +1,63 @@ +#version 410 core + +uniform float fGlobalTime;// in seconds +uniform vec2 v2Resolution;// viewport resolution (in pixels) +uniform float fFrameTime;// duration of the last frame, in seconds + +uniform sampler1D texFFT;// towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed;// this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated;// this is continually increasing +uniform sampler2D texPreviousFrame;// screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location=0)out vec4 out_color;// out_color must be written in order to see anything + +vec4 plas(vec2 v,float time) +{ + float c=.5+sin(v.x*10.)+cos(sin(time+v.y)*20.); + return vec4(sin(c*.2+cos(time)),c*.15,cos(c*.1+time/.4)*.25,1.); +} + +#define B(1-fract(t*2)) +#define R(p,a,t)mix(a*dot(p,a),p,cos(t))+sin(t)*cross(p,a) +#define Y p=p.xp.y?p.zxy:p.zyx +#define H(h)(cos((h)*6.3+vec3(0,23,21))*.5+.5) + +void main(void) +{ + vec2 uv=vec2(gl_FragCoord.x/v2Resolution.x,gl_FragCoord.y/v2Resolution.y); + uv-=.5; + uv/=vec2(v2Resolution.y/v2Resolution.x,1); + + vec3 p,d=normalize(vec3(uv,1)),c=vec3(0); + float i=0,g=0,s,a,e,t=fGlobalTime; + + for(;i++<99;){ + p=d*g; + p.z-=-t; + p=R(p,vec3(.577),clamp(sin(t/4)*6,-.5,.5)+.6); + Y;N; + p=asin(sin(p)); + s=2; + for(int i=0;i++<8;){ + p=abs(p); + Y; + s*=e=1.8/min(dot(p,p),1.2); + p=abs(p)*e-vec3(7+B,1,4); + } + + a=.3; + p-=clamp(p,-a,a); + g+=e=length(p.xy)/s; + if(e<.001)c+=mix(vec3(1),H(log(s)*.3+.8),.5)*.5/i; + + } + c*=c*c; + out_color=vec4(c,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gyabo.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gyabo.glsl new file mode 100644 index 000000000..3d33af0ec --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_gyabo.glsl @@ -0,0 +1,108 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +#define time fGlobalTime +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +vec4 getf(vec2 uv) { + uv = abs(uv * 0.15); + float m0 = texture(texFFTSmoothed, uv.x).x * 5.0; + float m1 = texture(texFFTSmoothed, uv.y).x * 5.0; + return vec4( + m0 * m1, + m0 - m1, + m0 + m1, 1.0) * 2.0; +} + +float box(vec3 p, vec3 s) { + p = abs(p) - s; + return max(p.x, max(p.y, p.z)); +} + +vec2 rot(vec2 p, float a) { + float c = cos(a); + float s = sin(a); + return vec2( + p.x * c - p.y * s, + p.x * s + p.y * c); +} + +float map(vec3 p) { + float t = length(mod(p, 2.0) - 1.0) - 0.45; + float h = length(getf(mod(p.xz * 0.2, 1.0)).xyz) * 0.5; + t = min(t, (h + 1.0) - dot(abs(p), vec3(0, 1, 0))); + t = min(t, length(mod(p.xz, 2.0) - 1.0) - 0.1); + t = min(t, length(mod(p.zy, 2.0) - 1.0) - 0.1); + t = min(t, length(mod(p.xy, 2.0) - 1.0) - 0.1); + vec3 ap = p; + float bd = box(mod(ap, 2.0) - 1.0, vec3(0.4)); + t = max(-bd, t); + + return t; +} + +vec3 getnor(vec3 p) { + float t = map(p); + vec2 d = vec2(0.001, 0.0); + return normalize(vec3( + t - map(p + d.xyy), + t - map(p + d.yxy), + t - map(p + d.yyx))); +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 auv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + auv = auv * 2.0 - 1.0; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 dir = normalize(vec3(uv, 1.0)); + dir.xz = rot(dir.xz, time * 0.01); + //dir.zy = rot(dir.zy, time * 0.03); + + vec3 pos = vec3(0, 0, time); + float t = 0.0; + for(int i = 0 ; i < 100; i++) { + t += map(pos + dir * t) * 0.75; + } + + vec3 ip = pos + dir * t; + vec3 N = normalize(getnor(ip)); + vec3 V = normalize(ip); + vec3 L = normalize(vec3(1,2,3)); + vec3 H = normalize(N + V); + float D = max(0.0, dot(N, L)); + float S = max(0.0, pow(dot(H, N), 64.0)); + + vec3 fog = vec3(2,2,3) * t * 0.02; + float vvvv = 1.0 - dot(auv * 0.4, auv); + out_color = vec4(map(ip + 0.5)); + out_color *= D; + out_color *= S; + out_color.xyz += fog; + out_color += getf(uv) * 0.5; + out_color *= vvvv; + +} diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_notargs.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_notargs.glsl new file mode 100644 index 000000000..c99ec7254 --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_notargs.glsl @@ -0,0 +1,82 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +mat2 rot(float a) +{ + return mat2(cos(a), -sin(a), sin(a), cos(a)); +} + +float dist(vec3 pos) +{ + float d = 10e+10; + pos.x += sin(pos.z + time * 4.0) * 0.5; + pos.y += sin(pos.z + time * 4.0 + 2.) * 0.5; + pos = mod(pos, 8.0) - 4.0; + float scale = 1.0; + for (int i = 0; i< 6; ++i) + { + pos -= sin(time + vec3(1, 2, 3)) * .05 + 0.5; + if (pos.x < pos.y) pos.xy = pos.yx; + if (pos.y < pos.z) pos.yz = pos.zy; + if (pos.x < pos.z) pos.xz = pos.zx; + + pos = abs(pos); + } + d = min(d, (length(pos) - 0.3)); + d = min(d, length(pos.xy) - 0.1); + d = min(d, length(pos.yz) - 0.05); + d = min(d, length(pos.xz) - 0.05); + return d; +} + +vec3 calcColor(vec2 uv) +{ + vec3 pos = vec3(0, 0, time * 10.); + + vec3 dir = normalize(vec3(uv, 1.0)); + dir.xy = dir.xy * rot(time * 0.5); + dir.xz = dir.xz * rot(sin(time * 0.5) * 0.3); + dir.yz = dir.yz * rot(sin(time * 0.5 + 0.5) * 0.3); + + for (int i = 0; i < 128; ++i) + { + float d = dist(pos) * 0.9; + if (d < 0.001) return vec3(1, 1, 1) * float(i) / 128.; + pos += dir * d; + } + return vec3(1, 1, 1); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + out_color = vec4(calcColor(uv) + vec3(sin(uv.x), sin(uv.y * 5.0 + 4. + time), sin(uv.y * 2. + 3. + time)) * 0.3, 1.0 +); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_phi16.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_phi16.glsl new file mode 100644 index 000000000..b5d9a0661 --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_phi16.glsl @@ -0,0 +1,102 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +vec3 quad(vec3 o, vec3 d, float a1, float a2) { + o.xz *= mat2(cos(a1),-sin(a1),sin(a1),cos(a1)); + d.xz *= mat2(cos(a1),-sin(a1),sin(a1),cos(a1)); + o.yz *= mat2(cos(a2),-sin(a2),sin(a2),cos(a2)); + d.yz *= mat2(cos(a2),-sin(a2),sin(a2),cos(a2)); + float t = -o.z / d.z; + vec3 c = o+t*d; + return vec3(c.xy, t); +} + +float rand(vec2 p) { + return fract(sin(dot(p,vec2(1,1.001)))*10000); +} + +float ti = fGlobalTime; + +float box(vec3 p, vec3 s) { + vec3 q = abs(p) - s; + return length(max(q,vec3(0))) + min(max(q.x,max(q.y,q.z)), 0.); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 ouv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 c = vec3(0); + float a = 0; + + vec3 o = vec3(0,0,-5); + vec3 d = vec3(uv,1); + a = ti*0.1; + o.xz *= mat2(cos(a),-sin(a),sin(a),cos(a)); + d.xz *= mat2(cos(a),-sin(a),sin(a),cos(a)); + + for(int j=0;j<20;j++) { + float lo = tanh(sin(ti*2.5)*10.)+1.; + lo += tanh(cos(ti*2.5)*10.)+1.; + float dex = uv.x * 1000.0 * (1+rand(vec2(j,1))); + float dey =uv.y * 1000.*(1+rand(vec2(j,0))); + if(fract(ti) < 0.5) dex = dey = 0; + vec3 p = quad(o-vec3(0,0,(j-10)*0.3),d,j*lo*0.1+dex,j*lo*0.4+dey); + vec3 pp = o+p.z*d; + float d4 = 10000; + for(int i=0;i<8;i++) { + vec3 ce = vec3(rand(vec2(i,0)), rand(vec2(i,1)), rand(vec2(i,2))) - 0.5; + ce *= 1.; + float s = 1.; + vec3 p2 = pp + ce; + p2 = mod(pp + ce + s/2.,vec3(s)) - s/2.; + p2.xz *= mat2(cos(a),-sin(a),sin(a),cos(a)); + p2.yz *= mat2(cos(a),-sin(a),sin(a),cos(a)); + float dd = box(p2, vec3(0.2+rand(vec2(floor(ti),0))*0.1)); + d4 = min(max(dd,-d4), max(-dd,d4)); + } + float f = box(pp, vec3(1.)); + d4 = max(d4, -f); + vec3 pr = pp; + pr = mod(pr + 0.5 + ti, 1.) - 0.5; + float f2 = box(pr, vec3(0.2)); + d4 = max(d4, -f2); + vec3 cc = cos(vec3(0,2,4)+j*0.2+ti)*0.5+0.5; + cc += exp(-max(f,0)*20.)*2.; + cc += exp(-max(f2,0)*20.)*1.; + cc /= pow(length(pp),2.); + c += smoothstep(0.1, -0.1, d4) * 0.1 * cc; + c += smoothstep(0.01, -0.01, abs(d4)-0.03) * 0.4 * cc; + } + + vec3 u = vec3(0); + for(int k=0;k<12;k++) { + float a = rand(vec2(k,0) + uv*1000.+ti) * 6.; + float r = rand(vec2(k,1) + uv*1000.+ti)*(1-cos(length(uv)*2.))*0.2; + vec2 d = vec2(cos(a),sin(a)) * r; + u += texture(texPreviousFrame, ouv + d).rgb; + } + u /= 12; + c = mix(c,u,0.7); + + out_color = vec4(c,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_sp4ghet.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_sp4ghet.glsl new file mode 100644 index 000000000..4d1c72fff --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/quarter/shadershowdown_tdf2021_sp4ghet.glsl @@ -0,0 +1,172 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define saturate(x) clamp((x), 0,1) +const float PI = acos(-1); +const float TAU = 2 * PI; +const vec3 up = vec3(0,1,0); +const vec3 l = normalize(vec3(.2, 1, .2)); + +mat2 r2d(float t){ + float c = cos(t), s = sin(t); + return mat2(c,s,-s,c); +} + +mat3 ortho(vec3 z, vec3 up){ + vec3 cu = normalize(cross(z, up)); + vec3 cv = cross(cu, z); + return mat3(cu,cv,z); +} + +vec3 bg(vec3 n){ + float qq = dot(l,n) * .5 + .5; + float q = qq + pow(qq,16)*2; + vec3 p = ortho(l, up) * n; + vec2 tp = vec2(atan(p.z, length(p.xy)), atan(p.y, p.x)) / TAU; + q += texture(texNoise, tp * 5 + time * .2).x; + return vec3(q); +} + +void chmin(inout vec4 a, in vec4 b){ + a = a.x < b.x ? a : b; +} + +float box(vec3 p, vec3 b){ + p = abs(p) - b; + return length(max(p, 0)) + min(0, max(p.x, max(p.y, p.z))); +} + +vec4 to(vec3 p){ + float s = 2 / (1 + dot(p,p)); + return vec4(s*p, s-1); +} + +vec3 from(vec4 p){ + float s = 1 / (1 + p.w); + return s * p.xyz; +} + +vec4 map(vec3 q){ + vec4 d = vec4(1000, 0,0,0); + vec3 p = q; + float f = length(p); + vec4 p4 = to(p); + float t = time * .2; + p4.zw *= r2d(-t); + p4.yw *= r2d(3*t); + p = from(p4); + float e = length(p); + float cor = max(1,f) * min(1, 1/e); + + float bx = box(p, vec3(1.1)); + bx = max(bx, -box(p, vec3(1))); + bx = max(bx, -box(p, vec3(2, .5, .5))); + bx = max(bx, -box(p, vec3(.5, 2, .5))); + bx = max(bx, -box(p, vec3(.5, .5, 2))); + bx = max(bx, -box(vec3(abs(p.yz)-1, p.x).zxy, vec3(.5, .3, .3))); + bx = max(bx, -box(vec3(abs(p.xz)-1, p.y).xzy, vec3(.3, .5, .3))); + bx = max(bx, -box(vec3(abs(p.xy)-1, p.z), vec3(.3, .3, .5))); + bx *= cor * .5; + chmin(d, vec4(bx, 1,0,0)); + + bx = box(p, vec3(2.1)); + bx = max(bx, -box(p, vec3(2))); + bx = max(bx, -box(p, vec3(3, 1, 1))); + bx = max(bx, -box(p, vec3(1, 3, 1))); + bx = max(bx, -box(p, vec3(1, 1, 3))); + bx = max(bx, -box(vec3(abs(p.yz)-2, p.x).zxy, vec3(1, .5, .5))); + bx = max(bx, -box(vec3(abs(p.xz)-2, p.y).xzy, vec3(.5, 1, .5))); + bx = max(bx, -box(vec3(abs(p.xy)-2, p.z), vec3(.5, .5, 1))); + bx *= cor * .5; + chmin(d, vec4(bx, 1,0,0)); + + vec2 xy = vec2(length(p.xz) - .5,p.y); + float thk = length(xy); + float th = atan(p.x, p.z); + float ph = atan(xy.y, xy.x); + vec3 pp = vec3(mod(24 * th, TAU) - PI, thk - .2, mod(12 * ph, TAU) - PI); + pp.xz /= TAU; + float tr = box(pp, vec3(.3, .01, .45)); + tr *= cor * .5; + chmin(d, vec4(tr, 2, 0,0)); + + return d; +} + +vec3 normal(vec3 p, vec2 e){ + return normalize(vec3( + map(p + e.xyy).x - map(p - e.xyy).x, + map(p + e.yxy).x - map(p - e.yxy).x, + map(p + e.yyx).x - map(p - e.yyx).x + )); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 pt =uv - 0.5; + pt /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 c = vec3(0); + + c.rg = uv; + + vec3 ro = vec3(0,1.7, 8); + vec3 fo = vec3(0); + + vec3 rd = ortho(normalize(fo-ro), up) * normalize(vec3(pt, 1)); + vec3 p = ro; + float t =0; + vec4 d; + for(int i=0; i<256; i++){ + p = ro + rd*t; + d = map(p); + t += d.x; + if(abs(d.x) < .001 || t > 25){ + break; + } + } + + if(abs(d.x) < 0.001){ + vec3 n = normal(p, vec2(.01, 0)); + vec3 h = normalize(l-rd); + vec3 re = reflect(rd, n); + float nh = saturate(dot(n,h)); + float nl = saturate(dot(n,l)); + vec3 al = d.y == 1 ? vec3(.99, .2, .1) : vec3(.2, .7, .8); + float fre = pow(1 - saturate(dot(n, -rd)), 5); + + c += al * nl; + c += al * (.1 + pow(nh, 20)); + c += fre * vec3(.1, .7, .3); + c += al * bg(re); + + float ao = 0; + for(int i=1; i<=20;i++){ + ao += saturate(map(p + n * i * .1).x / (i * .1)); + } + c *= ao / 20; + }else{ + c = bg(rd); + } + + c = pow(c, vec3(.4545)); + c *= 1 - dot(pt,pt); + out_color = vec4(c,0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_Kamoshika.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_Kamoshika.glsl new file mode 100644 index 000000000..342ffc2c3 --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_Kamoshika.glsl @@ -0,0 +1,164 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define saturate(x) clamp(x,0,1) +#define rotpi4(v) v=vec2(v.x+v.y,-v.x+v.y)/sqrt(2) +const float pi=acos(-1); + +mat2 rot(float a){ + float s=sin(a),c=cos(a); + return mat2(c,s,-s,c); +} + +#define odd(x) step(1,mod(x,2)) +float sqWave(float x){ + float i=floor(x); + float s=.1; + return mix(odd(i),odd(i+1),smoothstep(.5-s,.5+s,fract(x))); +} + +float smin(float a,float b,float k){ + float h=max(k-abs(a-b),0); + return min(a,b)-h*h*.25/k; +} + +vec3 pos=sin(vec3(13,0,7)*time*.1); +float map(vec3 p){ + float d; + //d=length(p)-.3; + vec3 q=p; + q.y=.7-abs(q.y); + + d=q.y; + q.zx=fract(q.zx)-.5; + + vec2 dq=mix(vec2(-.2),vec2(.27,.1),sqWave(time*.15)); + float a=1; + for(int i=0;i<5;i++){ + vec3 v=q; + v.zx=abs(v.zx); + if(v.z>v.x)v.zx=v.xz; + d=min(d,max(v.x-.1,(v.x*2+v.y)/sqrt(5)-.3)/a); + q.zx=abs(q.zx); + rotpi4(q.xz); + q.xy-=dq; + rotpi4(q.yx); + + q*=2; + a*=2; + } + + q=p-pos; + float t=length(q)-.3; + q*=15; + q.xy*=rot(time*1.3); + q.yz*=rot(time*1.7); + t=max(t,(abs(dot(sin(q),cos(q.yzx)))-.2)/15); + + d=smin(d,t,.3); + + return d; +} + +vec3 calcN(vec3 p){ + vec2 e=vec2(.001,0); + return normalize(vec3(map(p+e.xyy)-map(p-e.xyy), + map(p+e.yxy)-map(p-e.yxy), + map(p+e.yyx)-map(p-e.yyx))); +} + +vec3 hsv(float h,float s,float v){ + vec3 res=fract(h+vec3(0,2,1)/3)*6-3; + res=saturate(abs(res)-1); + res=(res-1)*s+1; + res*=v; + return res; +} + +vec3 march(inout vec3 rp,inout vec3 rd,inout vec3 ra,inout bool hit){ + vec3 col=vec3(0); + float d,t=0; + hit=false; + for(int i=0;i<100;i++){ + d=map(rp+rd*t); + if(abs(d)<.0001){ + hit=true; + break; + } + t+=d; + } + rp+=t*rd; + + vec3 ld=normalize(-rp); + + vec3 n=calcN(rp); + vec3 ref=reflect(rd,n); + + float diff=max(dot(ld,n),0); + float spec=pow(max(dot(reflect(ld,n),rd),0),20); + float fog=exp(-t*t*.2); + + d=length(rp-pos)-.3; + float mat=smoothstep(.01,.1,d); + float phase=length(rp)*4-time*2; + vec3 al=hsv(floor(phase/pi)*pi*.4,.8,1); + al=mix(vec3(.9),al,mat); + float f0=mix(.01,.8,mat); + float m=mix(.01,.9,mat); + float fs=f0+(1-f0)*pow(1-dot(ref,n),5); + float lp=3/abs(sin(phase)); + + col+=al*diff*(1-m)*lp; + col+=al*spec*m*lp; + col=mix(vec3(0),col,fog); + + col*=ra; + ra*=al*fs*fog; + + rp+=.01*n; + rd=ref; + + return col; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1)*.5; + vec3 col=vec3(0); + + vec3 ro=vec3(0,-.3,1.9); + ro.zx*=rot(time*.1); + + vec3 rd=normalize(vec3(uv,-2)); + rd.zx*=rot(time*.1); + + vec3 ra=vec3(1); + bool hit=false; + + col+=march(ro,rd,ra,hit); + if(hit)col+=march(ro,rd,ra,hit); + if(hit)col+=march(ro,rd,ra,hit); + + col=pow(col,vec3(1/2.2)); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_gam0022.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_gam0022.glsl new file mode 100644 index 000000000..7e614ec13 --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_gam0022.glsl @@ -0,0 +1,154 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +#define time fGlobalTime +#define saturate(x) clamp(x, 0, 1) +#define PI acos(-1) +#define TAU (2*PI) +#define beat (time*140/60) +#define VOL 0 +#define SOL 1 +#define beatTau (beat*TAU) + +float fft(float d) { + return texture( texFFT, fract(d) ).r; +} + +float ffts(float d) { + return texture( texFFTSmoothed, fract(d) ).r; +} + + +float sdBox(vec3 p, vec3 b) { + vec3 q = abs(p) - b; + return length(max(q, 0)) + min(0, max(q.x,max(q.y,q.z))); +} + +void U(inout vec4 m, float d, float a, float b, float c) { + if (d < m.x) m = vec4(d, a, b, c); +} + +vec3 pal(float a) { + return 0.5 + 0.5 * cos(TAU * (a + vec3(0, 1, 2) / 3)); +} + +void rot(inout vec2 p, float a) { + p *= mat2(cos(a), sin(a), sin(-a), cos(a)); +} + +vec4 map(vec3 p) { + vec4 m = vec4(1, VOL, 0, 0); + vec3 pos = p; + vec3 id = abs(pos); + + float a = 1 + 5 * ffts(0.01); + p = mod(p, a) - 0.5 * a; + + float b = 1.4; + float s = 1; + + for (int i = 0; i < 5; i++) { + p = abs(p) - 0.5; + rot(p.xz, -0.5); + p = abs(p) - 0.4; + rot(p.zy, -0.2); + + s *= b; + p *= b; + } + + float d = pow(fract(id.x * 5), 0.5); + + U(m, sdBox(p, vec3(2, 0.1, 0.1)) / s, SOL, 1, pos.x * 10); + U(m, sdBox(p, vec3(2, 0.2, 0.1)) / s, VOL, 10 * fft(d), d); + U(m, sdBox(p, vec3(0.3, 5, 0.1)) / s, VOL, 200 * fft(d), d); + + return m; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col = vec3(0); + + vec3 ro = vec3(0, 0, time); + vec3 ray = vec3(uv, 1); + rot(ray.xy, TAU * 2.313 * floor(beat)); + ray = normalize(ray); + + float t = 0; + for(int i = 0; i < 100; i++) { + vec3 p = ro + ray * t; + vec4 m = map(p); + float d = m.x; + + if (m.y == SOL) { + t += d; + if (d < 0.01) { + col += 0.01 * float(i); + break; + } + } else { + t += abs(d) * 0.5 + 0.01; + col += saturate(0.002 * pal(m.w) * m.z / abs(d)); + } + } + + vec2 uv2 = saturate(abs(uv)); + + float wave = fft(uv2.x * 0.5) - uv2.y; + + col = mix(vec3(0), col, exp(-1.4 * t)); + + float b = mod(beat, 4); + + if (b < 1) { + col += 5 * wave; + } else if (b < 2) { + col += -100 * wave; + } else if (b < 3) { + rot(uv, -TAU * mod(beat, 1) / 4); + float d = abs(uv.x) + abs(uv.y); + + d = mod(d * 4, 0.5); + + float th = exp(-5 * mod(beat, 1)); + + if (d < th - 0.1 && d < th) { + col += 5 * wave; + } else { + col += -100 * wave; + } + } else { + col += 10 * wave; + } + + + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_phi16.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_phi16.glsl new file mode 100644 index 000000000..3dad8b16b --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/grabber_tdf2021_phi16.glsl @@ -0,0 +1,146 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime*160/120; + +float rand(vec2 p) { + return fract(sin(dot(p,vec2(1,1.001)))*10000); +} + +vec3 trace(float x, out vec3 t) { + float u = floor(x); + float f = fract(x); + vec3 o0 = vec3(rand(vec2(u+0,0))-0.5, rand(vec2(u+0,1))-0.5, u+0) * vec3(40,20,60); + vec3 t0 = vec3(rand(vec2(u+0,2))-0.5, rand(vec2(u+0,3))-0.5, 1) * vec3(40,40,15)* 8; + vec3 o1 = vec3(rand(vec2(u+1,0))-0.5, rand(vec2(u+1,1))-0.5, u+1) * vec3(40,20,60); + vec3 t1 = vec3(rand(vec2(u+1,2))-0.5, rand(vec2(u+1,3))-0.5, 1) * vec3(40,40,15) * 8; + vec3 o = mix(o0,o1,6*pow(f,5) - 15*pow(f,4) + 10*pow(f,3)); + o += t0 * pow(1-f,3) * f; + o -= t1 * pow(f,3) * (1-f); + t = (o1-o0) * (30*pow(f,4) - 60*pow(f,3) + 30*pow(f,2)); + t += t0 * (-3*pow(1-f,2) * f + pow(1-f,3)); + t -= t1 * (3*pow(f,2)*(1-f) - pow(f,3)); + return o; +} + +float capsule(vec3 p, vec3 a, vec3 b) { + vec3 pa=p-a,ba=b-a; + float h = clamp(dot(pa, ba)/dot(ba,ba),0,1); + return length(pa-ba*h); +} + +float map(vec3 o) { + float x = floor(time*4)/4; + vec3 T; + vec3 p = trace(x,T); + for(int i=-1;i<8;i++) { + x += 1/4.; + vec3 q = trace(x,T); + if(capsule(o,p,q) < rand(vec2(x,0)) * 4 + 1.5) return 0; + p = q; + } + if(rand(o.xz) < 0.1 || rand(o.xy) < 0.01 || rand(o.yz) < 0.01) return 1; + return 0; +} + + +float vao(vec2 s, float c) { + return (s.x+s.y+max(c,s.x*s.y))/3; +} + +float ao(vec3 ii, vec3 ir, vec3 tw) { + vec3 tu = tw.yzx; + vec3 tv = tw.zxy; + vec4 s = vec4(map(ii-tu),map(ii-tv),map(ii+tu),map(ii+tv)); + + vec4 c = vec4(map(ii-tu-tv),map(ii-tu+tv),map(ii+tu-tv),map(ii+tu+tv)); + float v = mix(mix(vao(s.xy, c.x),vao(s.xw, c.y),dot(ir,tv)+0.5), + mix(vao(s.zy, c.z),vao(s.zw, c.w),dot(ir,tv)+0.5),dot(ir,tu)+0.5); + return 1-pow(v,2)*0.5; + +} +bool cast(vec3 o, vec3 d, out vec3 ii, out vec3 ir, out vec3 tw) { + vec3 u = floor(o); + vec3 s = sign(d); + d = abs(d); + vec3 r = (o-u-0.5)*s+0.5; + for(int i=0;i<100;i++) { + if(map(u) > 0.5) { + ii = u; + ir = (r-0.5)*s; + return true; + } + vec3 l = (1-r)/d; + vec3 m = step(l,l.yzx) * step(l,l.zxy); + tw = -s*m; + r += d*length(l*m) - m; + u += m*s; + } + return false; + +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +time +=( rand(uv*1000+time)*0.01 + fract(gl_FragCoord.x/2) * 0.04 + fract(gl_FragCoord.y/2) * 0.02) *0.5; + vec3 c = vec3(0); + + vec3 T; + vec3 o = trace(time,T); + vec3 d = vec3(uv,1+dot(uv,uv)*0.5); + trace(time+0.1,T); + T = normalize(T); + vec3 B = normalize(cross(T,vec3(0,1,0))); + vec3 N = cross(B,T); + d = d.x*B + d.y*N + d.z*T; + vec3 ii,ir,tw; + if(cast(o,d,ii,ir,tw) || true) { + vec3 pos = ii+ir+0.5; + vec3 normal = sign(ir)*normalize(pow(abs(ir),vec3(10))); + c = vec3(1); + c *= ao(ii+tw,ir,tw); + c *= exp(-pow(distance(pos,o),2)*0.001); + + vec3 pl = trace(time+0.4, T); + vec3 sd = normalize(pl-pos); + float ra = max(0,dot(normal, sd)) / pow(distance(pl,pos), 0.5); + cast(pos-d*0.01, sd, ii,ir,tw); + if(distance(pos,ii+ir+0.5) < distance(pl,pos)) ra *= 0.0; + + if(distance(o,pl) < distance(o,pos)) ra += 0.1 / distance(pl, o+dot(pl-o,d)*d) * 9; + + pl = trace(time+0.15 + (cos(time*3.1415926535)*0.5+0.5)*0.2, T); + sd = normalize(pl-pos); + float ga = max(0,dot(normal, sd)) / pow(distance(pl,pos), 0.2); + if(distance(pos,ii+ir+0.5) < distance(pl,pos)) ga *= 0.0; + ga *= cos(ii.z+ir.z+0.5)*0.5+0.5; + if(distance(o,pl) < distance(o,pos)) ga += 0.1 / distance(pl, o+dot(pl-o,d)*d) * 2; + + float rim = pow(1-max(0,dot(normal,normalize(o-pos))), 2); + c *= (ga*vec3(1,0,0.5) + ra*vec3(0,0.5,1)+rim*vec3(0.5,0.25,0.75)*0.1) * 8; + } + + // now I have completed all things I prepared beforreeeee + + // what should i do + c *=cos(dot(uv,uv)); + out_color = vec4(c,1); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/sender_sp4ghet_tdf2021.glsl b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/sender_sp4ghet_tdf2021.glsl new file mode 100644 index 000000000..87a5b11a8 --- /dev/null +++ b/shader_file_sources/2021_12_11_shader_showdown_tokyo_demofest/semi/sender_sp4ghet_tdf2021.glsl @@ -0,0 +1,198 @@ +#version 410 core + +uniform float fGlobalTime;// in seconds +uniform vec2 v2Resolution;// viewport resolution (in pixels) +uniform float fFrameTime;// duration of the last frame, in seconds + +uniform sampler1D texFFT;// towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed;// this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated;// this is continually increasing +uniform sampler2D texPreviousFrame;// screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location=0)out vec4 out_color;// out_color must be written in order to see anything +#define time fGlobalTime +#define dt fFrameTime +#define get_id(x,n)floor((x)*(n)) +//#define lofi(x,n) get_id(x,n) / (n) +//#define saturate(x) clamp((x), 0,1) + +//const float PI = acos(-1); +//const float TAU = 2 * PI; +const vec3 up=vec3(0,1,0); + +mat3 ortho(vec3 z,vec3 up){ + vec3 cu=normalize(cross(z,up)); + vec3 cv=cross(cu,z); + return mat3(cu,cv,z); +} + +const int n_part=5; +vec3 psn[n_part],vel[n_part]; +float rad[n_part]=float[](1,1.5,2,3,.5); + +void chmin(inout vec4 a,vec4 b,float k){ + float h=max(0,k-abs(a.x-b.x))/k; + float x=min(a.x,b.x)-h*h*h*k/6; + vec3 aa=a.xpRange/2-1){ + vel[i].x=.9*abs(vel[i].x)*-sign(psn[i].x); + } + + if(b.y>pRange/2-1){ + vel[i].y=.9*abs(vel[i].y)*-sign(psn[i].y); + } + + if(b.z>pRange/2-1){ + vel[i].z=.9*abs(vel[i].z)*-sign(psn[i].z); + } + } + } + + float shad(vec3 ro,vec3 rd,vec3 sp,float r,float k,float maxt){ + vec3 oc=ro-sp; + float b=dot(oc,rd); + float c=dot(oc,oc)-r*r; + float h=b*b-c; + float d=-r+sqrt(max(0,r*r-h)); + float t=-b-sqrt(max(0,h)); + return(t<0||t>maxt)?1:smoothstep(0.,1.,k*d/t); + } + + void main(void) + { + vec2 uv=vec2(gl_FragCoord.x/v2Resolution.x,gl_FragCoord.y/v2Resolution.y); + vec2 pt=uv-.5; + pt/=vec2(v2Resolution.y/v2Resolution.x,1); + vec3 c=vec3(0); + + int seed=int(gl_FragCoord.x+8000)*int(gl_FragCoord.y+7777)+int(1000*time); + + for(int i=0;i60){ + break; + } + } + + if(abs(d.x)<.001){ + vec3 n=normal(p,vec2(.01,0)); + vec3 al=vec3(.5); + vec3 lp=vec3(0,8,14); + vec3 l=normalize(lp-p); + float ld=length(lp-p); + float li=30/pow(ld,2); + + c=li*al*max(dot(n,l),0); + for(int i=0;i.999?vec3(0,0,1):vec3(0,1,0); + vec3 x=normalize(cross(up,z)); + return mat3(x,cross(z,x),z); +} + +vec3 cyclic(vec3 p,float pump){ + float warp=1.; + mat3 b=orthBas(vec3(1,-3,-2)); + vec4 accum=vec4(0); + for(int i=0;i<4;i++){ + p*=b; + p*=2.; + p+=warp*sin(p.yzx); + accum+=vec4( + cross(sin(p.zxy),cos(p)), + 1 + ); + warp*=1.3; + accum*=pump; + } + return accum.xyz/accum.w; +} + +float random(){ + seed++; + return fs(seed); +} + +float sdbox(vec3 p,vec3 s){ + vec3 d=abs(p)-s; + return min(0.,max(max(d.x,d.y),d.z))+length(max(d,0.)); +} + +vec3 sampleLambert(vec3 N){ + float p=TAU*random(); + float ct=sqrt(random()); + float st=sqrt(1.0-ct*ct); + return orthBas(N)*vec3(cos(p)*st,sin(p)*st,ct); +} + +float smin(float a,float b,float k){ + float h=linearstep(k,0.,abs(a-b)); + return min(a,b)-h*h*h*k/6.; +} + +vec4 mapMin(vec4 a,vec4 b){ + return a.xMDIST||i>STEPS-2.){ + d.y = 0.; + rl = MDIST; + break; + } + } + + col += vec3(shad)*0.1; + col+=glow*0.08*spec(fract(d.y*0.1)*0.4+0.2+t*0.001,1.0); + + + + out_color = vec4(col,0); + //HIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII + //:DDDDDD + + // \o/ \o/ \o/ \o/ + + // \o/ \o/ \o/ \o/ + // \o/ \o/ \o/ \o/ + // \o/ \o/ \o/ \o/ +} + +/* + _ _ ______ _ _ ____ + | | | | ____| | | | / __ \ + | |__| | |__ | | | | | | | | + | __ | __| | | | | | | | | + | | | | |____| |____| |___| |__| | + |_|__|_|______|______|______\____/_____ _______ ______ _____ + / ____|_ _| |\ \ / / ____|/ ____|__ __| ____| __ \ + | (___ | | | | \ \ / /| |__ | (___ | | | |__ | |__) | + \___ \ | | | | \ \/ / | __| \___ \ | | | __| | _ / + ____) |_| |_| |___\ / | |____ ____) | | | | |____| | \ \ + |_____/|_____|______\/ |______|_____/ |_| |______|_| \_\ +*/ + + + + + diff --git a/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_monsieursoleil.glsl b/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_monsieursoleil.glsl new file mode 100644 index 000000000..96ff20562 --- /dev/null +++ b/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_monsieursoleil.glsl @@ -0,0 +1,305 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float midi01; +uniform float midi02; +uniform float midi03; +uniform float midi04; +uniform float midi05; +uniform float midi06; +uniform float midi07; +uniform float midi08; +uniform float midi09; +uniform float midi10; +uniform float midi11; +uniform float midi12; +uniform float midi13; +uniform float midi14; +uniform float midi15; +uniform float midi16; +uniform float midi17; +uniform float midi18; +uniform float midi19; +uniform float midi20; +uniform float midi21; +uniform float midi22; +uniform float midi23; +uniform float midi24; +uniform float midi25; +uniform float midi26; +uniform float midi27; +uniform float midi28; +uniform float midi29; +uniform float midi30; +uniform float midi31; +uniform float midi32; +uniform float midi33; +uniform float midi34; +uniform float midi35; +uniform float midi36; +uniform float midi37; +uniform float midi38; +uniform float midi39; +uniform float midi40; +uniform float midi41; +uniform float midi42; +uniform float midi43; +uniform float midi44; +uniform float midi45; +uniform float midi46; +uniform float midi47; +uniform float midi48; + +// HI THERE + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime + +struct Matter +{ + float m; + float glow; + float glow01; + bool reflected; + vec3 norm; + float glowacc; + int type; +}; + +struct Ray +{ + vec3 p; + vec3 o; + vec3 dir; + vec3 t; +}; + +struct Light +{ + float shad; + vec3 sunPos; + vec3 sunDir; +}; + +struct Res +{ + vec3 col; + vec3 col01; + vec3 col02; +}; + +Matter mat; +Ray ray; +Res res; +Light li; + +mat2 rot(float a) +{ + float ca = cos(a); + float sa = sin(a); + return mat2(ca, sa, -sa, ca); +} + +float rep(float p, float r) +{ + return (fract(abs(p) / r - 0.5) - 0.5) * r; +} + +float box(vec3 p, vec3 r) +{ + p = abs(p)-r; + return max(p.x, max(p.y, p.z)); +} + +float sphere(vec3 p, float r) +{ + return length(p)- r; +} + +void map(inout Matter ma, vec3 p) +{ + float mat01 = 10.0, mat02 = 10.0, mat03 = 10.0, mat04 = 10.0, mat05 = 10.0, mat06 = 10.0, mat07 = 10.0; + + vec3 p01 = p, p02 = p, p03 = p; + + p01.xz *= rot(time * 0.5 + floor(time) * 0.2); + p02.zx *= rot(time * 0.25 + floor(time) * 0.1); + p03.yz *= rot(time * 0.1 + floor(time) * 0.05); + + p01.z = rep(p01.z, 0.1); + p02.x = rep(p02.x, 0.1); + p03.y = rep(p03.y, 0.1); + float f = texture( texFFTSmoothed, 0.1 ).r * 10; + + + float size = 0.5 + 1.25 * abs(sin(time * 0.55 + floor(time * 2.0) * 0.1 + f * 0.25) ); + float midS = 0.002; + + mat01 = sphere(p, size); + mat01 = max(mat01, -sphere(p, size)); + + mat02 = mat01; + mat03 = mat01; + + mat01 = max(mat01, box(p01, vec3(size, size, midS))); + mat02 = max(mat02, box(p02, vec3(midS, size, size))); + mat03 = max(mat03, box(p03, vec3(size, midS, size))); + + mat01 = min(mat01, mat02); + mat01 = min(mat01, mat03); + + p.xz *= rot(time * 0.5 + floor(time) * 0.2); + + mat04 = box(p, vec3(0.65)); + mat04 = max(mat04, - box(p, vec3(0.65) * 0.9975)); + + p.yz *= rot(time * 0.1 + floor(time) * 0.1); + + mat05 = box(p, vec3(0.85)); + mat05 = max(mat05, - box(p, vec3(0.85) * 0.9975)); + + p.zy *= rot(time * 0.1 + floor(time) * 0.05); + + mat06 = box(p, vec3(1.15)); + mat06 = max(mat06, - box(p, vec3(1.15) * 0.9975)); + + p.xz *= rot(time * 0.1 + floor(time) * 0.3); + + mat07 = box(p, vec3(1.55)); + mat07 = max(mat07, -box(p, vec3(1.55) * 0.9975)); + + mat04 = min(mat04, mat05); + mat04 = min(mat04, mat06); + mat04 = min(mat04, mat07); + + ma.glow += 0.01 + f * 0.1/(0.05+ clamp(mat01, 0.0, 1.0)); + + if(mat04 < 0.01 && mat01 < 0.01) + { + ma.type = 2; + + mat01 = max(mat04, mat01); + ma.glow += 0.45 + f * 0.5/(0.05+ clamp(mat01, 0.0, 1.0)); + + ma.m = mat01; + return; + } + + //mat01 = max(mat01, box(p01, vec3())) + + + + ma.m = mat01; +} + +//Will try T32 linear ! + +vec3 tri(vec3 p, vec3 n) +{ + p *= 0.5; + + return (texture(texNoise, p.xz).rgb * n.z * n.z+ + texture(texNoise, p.zy).rgb * n.x * n.x+ + texture(texNoise, p.xz).rgb * n.y * n.y); +} + +vec3 normals(vec3 p) +{ + vec2 uv = vec2(0.001, 0.0); + + Matter m02, m03, m04, m05, m06, m07; + + map(m02, uv.xyy); + map(m03, uv.xyy); + map(m04, uv.yxy); + map(m05, uv.yxy); + map(m06, uv.yyx); + map(m07, uv.yyx); + + vec3 nor = vec3(m02.m - m03.m, + m04.m - m05.m, + m06.m - m07.m + ); + + return normalize(nor); +} + +void main(void) +{ + vec2 uv01 = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + ray.o = vec3(fract(mod(time, 4.0)) * 4.0, 0.0, 2.0), ray.t = vec3(0.0); + vec3 fr = normalize(ray.t-ray.o); + vec3 ri = normalize(cross(fr, vec3(0.0, 1.0, 0.0))); + vec3 up = normalize(cross(fr, ri)); + ray.dir = normalize(fr + uv.x * ri + uv.y * up); + ray.p = ray.dir * 0.25 + ray.o; + mat.reflected = false; + + res.col = vec3(1.0 - (pow(uv.y + 0.5, 2.0) * 2.0)); + + for(int i = 0; i < 100; i++) + { + //ray.p.zx *= rot(time * 0.1) * 0.1; + + map(mat, ray.p); + + + + if(mat.m < 1.0) + { + if(mat.type == 2) + { + vec3 n = normals(ray.p); + if(mat.m < 0.0001 && !mat.reflected) + { + n = reflect(ray.dir, -n); + + ray.dir = mix(ray.dir, n, 0.5); + + mat.m = 0.5; + mat.reflected = true; + } + + res.col += 0.017 * mix(vec3(0.0, 0.5, 1.0), vec3(1.0, 0.5, 0.0), pow((uv.y + 0.5) + fract(time), 2.2)) * mat.glow * uv.y; + if(mat.m < 0.0001) + { + /*vec3 n = normals(ray.p); + vec3 t = tri(ray.p, n); + float tt = t.x * 0.29 + 0.58 * t.y + 0.11 * t.z; + mat.m = 0.5; + res.col -= res.col01 * tt;*/ + mat.m = 0.5; + } + } + + + + } + + ray.p += ray.dir * mat.m; + } + uv01.xy *= rot(0.002); + + res.col = mix(texture(texPreviousFrame, vec2(uv01)).xyz, res.col, 0.0 + mod(time, 4.0) * 0.1); + + out_color = vec4(res.col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_rimina.glsl b/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_rimina.glsl new file mode 100644 index 000000000..9ed132be6 --- /dev/null +++ b/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_rimina.glsl @@ -0,0 +1,156 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.5).r; + +const int STEPS = 60; +const float FAR = 100.0; +const float E = 0.001; + +const vec3 FOG_COLOR = vec3(0.02, 0.1, 0.2); +const vec3 LIGHT_COLOR = vec3(0.9, 0.2, 0.3); + +vec3 glow = vec3(0.0); + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +float scene(vec3 p){ + + vec3 pp = p; + + float offset = 20.0; + + //pp.z = mod(pp.z + offset*0.5, offset)-offset*0.5; + + float safe = sphere(p, 5.0); + + for(int i = 0; i < 5; ++i){ + pp = abs(pp)-vec3(1.0, 0.5, 2.5); + rot(pp.xy, time); + rot(pp.yz, fft+ time); + rot(pp.xz, fft*0.5); + } + + float a = sphere(pp, 3.0); + float b = sphere(pp-vec3(4.0, 5.0, 1.0), 5.0); + + vec3 g = vec3(1.0, 0.0, 0.3) * 0.05 / (abs(a)+0.01); + g = vec3(0.1, 0.5, 0.5) * 0.05 / (abs(b)+0.01); + g *= 0.5; + + glow += g; + + //a = max(abs(a), 0.9); + b = max(abs(b), 0.5); + + return max(min(a, b), -safe); + +} + +float march(vec3 ro, vec3 rd){ + vec3 p = ro; + float t = E; + for(int i = 0; i < STEPS; ++i){ + float d = scene(p); + t += d; + p = ro + rd*t; + + if(d < E || t > FAR){ + break; + } + } + + return t; +} + + +vec3 normals(vec3 p){ + vec3 e = vec3(E, 0.0, 0.0); + return normalize(vec3( + scene(p+e.xyy) - scene(p-e.xyy), + scene(p+e.yxy) - scene(p-e.yxy), + scene(p+e.yyx) - scene(p-e.yyx) + )); +} + +vec3 shade(vec3 rd, vec3 p, vec3 ld){ + vec3 n = normals(p); + + float l = max(dot(n, ld), 0.0); + float a = max(dot(reflect(ld, n), rd), 0.0); + float s = pow(a, 20.0); + + return vec3(0.8, 0.2, 0.5)*l*0.5 + vec3(1.0, 0.0, 0.8)*s*0.5; +} + + + +//http://www.iquilezles.org/www/articles/fog/fog.htm +vec3 fog(vec3 col, vec3 p, vec3 ro, vec3 rd, vec3 ld){ + float dist = length(p-ro); + float sunAmount = max( dot(rd, -ld), 0.0 ); + float fogAmount = 1.0 - exp( -dist*0.05); + vec3 fogColor = mix(FOG_COLOR, LIGHT_COLOR, pow(sunAmount, 10.0)); + return mix(col, fogColor, fogAmount); +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = -1.0 + 2.0 * uv; + q.x *= v2Resolution.x/v2Resolution.y; + + vec3 ro = vec3(20.0*cos(time*0.5), 1.0+sin(time*2.0), 20.0*sin(time*1.0)); + vec3 rt = vec3(0.0, -1.0, 0.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x, y, z) * vec3(q, 1.0/radians(50.0))); + + float t = march(ro, rd); + vec3 p = ro + t*rd; + + vec3 ld = -z; + + vec3 col = vec3(0.0); + if(t < FAR){ + col = shade(rd, p, ld); + } + + col += glow; + col = fog(col, p, ro, rd, ld); + + vec3 prev = texture(texPreviousFrame, uv).rgb; + + col = mix(col, prev, 0.65); + + col = smoothstep(-0.2, 1.1, col); + + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_totetmatt.glsl b/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_totetmatt.glsl new file mode 100644 index 000000000..6aa7b4d62 --- /dev/null +++ b/shader_file_sources/2021_12_31_shader_jam_fieldfx/grabber_silvester_totetmatt.glsl @@ -0,0 +1,217 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texTex5; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +/** + +HELLO FIELDFX, HAPPY NEW YEAR !!!! + + + +Thanks a lot, love to everybody !!! +*/ + +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} +float hex(vec2 p,float s){ + p = abs(p); + return max(p.x*.866026+p.y*.5,p.y)-s; +} +float tunnel(vec3 p){ + p.z +=fGlobalTime; + p.xy*=rot(asin(sin(p.z))*.1+p.z*.1); + return -hex(p.xy,3); +} +// From art of code, bT_Td +float hexdist(vec2 uv){ + uv = abs(uv); + float c = dot(uv,normalize(vec2(1,1.73))); + c = max(c,uv.x); + return c; +} +vec4 hexcoords(vec2 uv){ + vec2 r = vec2(1,1.73); + vec2 h = r*.5; + vec2 a = mod(uv,r)-h; + vec2 b = mod(uv-h,r)-h; + vec2 gv = dot(a,a) < dot(b,b) ? a:b; + float x = atan(gv.x,gv.y); + float y= .5*hexdist(gv); + vec2 id = uv-gv; + return vec4(x,y,id.x,id.y); +} +float grid(vec3 p){ + vec4 hexgrid = hexcoords((p.xy*rot(p.z*.1))*.5); + hexgrid.xy/=.5; + float tt = texture(texFFTIntegrated,.3).r; + return max(abs(asin(sin(p.z+tt*5)))-.1,-(hexgrid.y-.23/.5)); + } + + /* + It's a jam so I prepared this, sorry not sorry :D + + + */ + float sdRoundedBox( in vec2 p, in vec2 b, in vec4 r ) +{ + r.xy = (p.x>0.0)?r.xy : r.zw; + r.x = (p.y>0.0)?r.x : r.y; + vec2 q = abs(p)-b+r.x; + return min(max(q.x,q.y),0.0) + length(max(q,0.0)) - r.x; +} +float sdBox( in vec2 p, in vec2 b ) +{ + vec2 d = abs(p)-b; + return length(max(d,0.0)) + min(max(d.x,d.y),0.0); +} + float lm_eye(vec2 uv){ +uv.y +=.06; + uv.x =abs(uv.x)-.4; + float d = length(uv)-.2; + float e = length(uv+vec2(.0,.1))-.19; + return max(d,-e); +} + +float lm(vec2 uv){ + float a= length(uv)-1.; + float b= length(uv)-.9; + + float e = sdRoundedBox(uv,vec2(1.5,.2),vec4(.05)); + + float eye = lm_eye(uv); + float cap = sdRoundedBox(uv-vec2(1.1,0),vec2(.5,.25),vec4(.2)); + float ccap= sdRoundedBox(uv-vec2(1.1,0),vec2(.4,.15),vec4(.2)); + float hat = sdBox(uv-vec2(0.,1.),vec2(.1,.05)); + cap = max(-uv.x+.87,max(cap,-ccap)); + float bb = sdBox(uv-vec2(.0,.2),vec2(.975,.05)); + uv +=vec2(0.,.2); + float m = max(uv.y,length(uv)-.5+texture(texFFT,.33).r*2); + uv +=vec2(0.,.05); + float mm = max(uv.y,length(uv)-.4); + m = abs(m)-.03; + return min(bb,min(hat,min(cap,min(m,min(eye,max(-e,max(a,-b))))))); +} + +float laughingman(vec3 p){ + + return max(abs(p.z)-.2,lm(p.xy)); + } +vec2 sdf(vec3 p){ + vec2 h; + h.x = tunnel(p); + h.y = 1.; + + vec2 t ; + t.x = max(-h.x,grid(p)); + t.y = 2;; + h = t.x < h.x ?t:h; + + t.x = laughingman(p); + t.y =3.; + h = t.x < h.x ?t:h; + + t.x = max(abs(p.z)-.1,length(p.xy)-1.7); + t.x = max(t.x,-max(abs(p.z)-.5,length(p.xy)-1)); + t.y =4.; + h = t.x < h.x ?t:h; + return h; +} +#define q(s) s*sdf(p+s).x +vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} + +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(.2,.4,.6)));} +float txt(vec2 uv){ + + float tt = texture(texFFTIntegrated,.5).r; + uv *=rot(floor(tt*10)*.1); + ivec2 uuv = ivec2(abs(uv)*128); + float q = uuv.x | uuv.y; + float t = uuv.x ^ uuv.y; + float r = texture(texFFT,q/128+texture(texFFTIntegrated,t/128).r*.1).r; + return r; +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float ttt1= texture(texFFTIntegrated,.3).r*2.; + float ttt2= texture(texFFTIntegrated,.7).r*2.; + vec3 col = sqrt(pal(fract(fGlobalTime)+txt(uv))*txt(uv)); + vec3 ro = vec3(0.,.5,-5.)+1e-5; + ro.xy +=vec2(sin(ttt1),cos(ttt2))*.5; + vec3 rt = vec3(0.)+1e-5; + rt.yx +=vec2(sin(ttt1*.3),cos(ttt2*.6)); + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z,vec3(0.,-1.,0.))); + vec3 y = normalize(cross(z,x)); + // Yes I followed Seminar from 0b5vr + vec3 rd = mat3(x,y,z)*normalize(vec3(uv,1.-asin(sin(-fGlobalTime))*length(uv))); + + vec3 rp = ro; + vec3 light = vec3(1.,2.,-3.); + float dd = 0; + float s = 1.; + vec3 acc = vec3(0.); + for(float i=0;i<=128.;i++){ + vec2 d = sdf(rp); + d.x *=s; + dd +=d.x; + if(d.y==4.){ + + acc +=vec3(.1)*exp(-abs(d.x))/(60*sin(10*fGlobalTime+atan(rp.x,rp.y)*5.1)+65.); + d.x = max(.001,abs(d.x)); + } + if(dd>50) break; + rp +=rd*d.x; + if(d.x <.0001){ + vec3 n = norm(rp,.001); + float dif = max(0.,dot(normalize(light-rp),n)); + float fr = pow(max(0.,1-dot(-rd,n)),4.); + // ONE day 'ill learn it by heart float spc = pow(max(0.,dot(normalize(rp),reflect(normalize(light),n))),32); + vec3 nn = norm(rp,.01); + if(d.y ==1.){ + col = (1.-dot(n,nn))*pal(rp.z)+vec3(.01)*dif+fr*vec3(.01,.02,.03); + } else if(d.y==2.) { + + float h = step(.01,length(nn-n)); + if(h==0){ + + if(s==1) rd = refract(rd,n,2.5); + s*=-1.; + + rp+=rd*.01; + continue; + } + col =min(1.,002*exp(5*-rp.z))*h*sqrt(pal(rp.z*.02+fract(fGlobalTime)+txt(uv))*txt(uv)); + col = sqrt(col); + break; + } else if(d.y==3){ + + acc+= vec3(.1,.3,.5)*dif; + rd = reflect(rd,n); + rp+=rd*.01; + continue; + } + break; + + } + } + col +=acc; + out_color = vec4(sqrt(col),1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_02_11_byte_jam_lovebyte/borb_frogparty.lua b/shader_file_sources/2022_02_11_byte_jam_lovebyte/borb_frogparty.lua new file mode 100644 index 000000000..834c1f1eb --- /dev/null +++ b/shader_file_sources/2022_02_11_byte_jam_lovebyte/borb_frogparty.lua @@ -0,0 +1,160 @@ +--[[ + borb here!! + cheers to potato imaginator :) + hope you can make it next time! + + let's go tobach, + mantratronic and gasman!!! +]] +-- HMMMMMMM +-- let's make a frog???? + +sin=math.sin +cos=math.cos +atan2=math.atan2 +pi=math.pi +to=table.insert +abs=math.abs + +len=function(a,b)return math.sqrt(a^2+b^2)end +dist=function(a,b)return len(a.x-b.x,a.y-b.y)end +pal=function(c1,c2) + if c1==nil and c2==nil then + for i=0,15 do poke4(0x3ff0*2+i,i)end + end + poke4(0x3FF0*2+c1,c2) +end + + +x,y=0,0 + +cols={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} +worldcol=0 +--84 +--124 +frog=function(x,y,s) + return{ + x=x, + y=y, + s=s, + c=6, + upd=function(E) + -- it's easier to update something + -- if you actually call the update function lol + for i,f in ipairs(flys)do + if abs(E.x-f.x)<4*E.s and abs(E.y-f.y)<4*E.s then + cls(t//25%15) + worldcol=(t//25)%16+1 + for i,c in ipairs(cols)do + pal(c,(c+t//25)%16+1) + end + end + end + end, + drwEye=function(E,x,y,sx,sy) + circ(E.x+x*E.s,E.y+y*E.s,2*E.s,12) + circ(E.x+(x+sx)*E.s,E.y+(y+sy)*E.s,1*E.s,0) + end, + drw=function(E) + circ(E.x,E.y,4*E.s,E.c) + + local theta=atan2(Y-E.y,X-E.x) + + E:drwEye(-3,-4,cos(theta),sin(theta)) + E:drwEye(3,-4,cos(theta),sin(theta)) + end + } +end + +frog1=frog(84,124,2) +frog2=frog(144,114,5) + + +function fly(x,y) + + return { + x00=x,y00=y,s=1, + theta=math.random()*12, + --cols={}, + upd=function(E) + E.x0=E.x00+50*sin(t*0.01) + E.y0=E.y00-20*cos(t*0.01) + E.x=E.x0+60*cos(t*.05)+10*sin(t*0.005+E.theta*2) + E.y=E.y0+30*sin(t*.05+E.theta)-20*cos(t*.002+E.theta*.5) + end, + drw=function(E) + pal(14,((8+(E.theta+t*0.1)%8)+worldcol)%16+1) + if true then--t%2==0 then + elli(E.x-6*E.s,E.y,4*E.s,1*E.s,14) + elli(E.x+6*E.s,E.y,4*E.s,1*E.s,14) + end + circ(E.x,E.y,E.s*2,0) + end, + } +end + +flys={} +flycoords={ +{20,60}, +{50,20}, +{140,20}, +{120,80}, +} +for i,c in ipairs(flycoords)do + to(flys,fly(c[1],c[2])) +end + +function SCN(l) + +end + +function flower(x,y,s) + return { + x=x,y=y,s=s, + drw=function(E) + col=4+t//10%4 + --rect(E.x-14*E.s,E.y-4*E.s,30*E.s,130,0) + for y=E.y,130,2*E.s do + rect(E.x+E.s*1.5*sin(t*0.05+y/4),y,2*E.s,2*E.s,col) + end + elli(E.x+1.5*sin(t*0.05),E.y,8*E.s,2*E.s,col) + end, + } +end +flows={} +to(flows,flower(15,60,1)) +to(flows,flower(30,90,3)) +to(flows,flower(210,40,1)) +to(flows,flower(230,80,1)) +to(flows,flower(205,100,2)) + +t=0 +cls(0) +function TIC() + --cls(8) + --X,Y=mouse() + + for i,f in ipairs(flys)do + f:upd() + end + X,Y=flys[2].x,flys[2].y + --flys[1].x,flys[1].y=X,Y + frog1:upd() + frog2:upd() + for i,E in ipairs(flows)do + E:drw() + end + + frog1:drw() + frog2:drw() + for i,f in ipairs(flys)do + f:drw() + end + + for y=129,136 do for x=0,240 do + pix(x,y,(x+y)%3+5) + end end + t=t+1 + print("borb",215,130,0) + print("EMUUROM",1,130,0) +end \ No newline at end of file diff --git a/shader_file_sources/2022_02_11_byte_jam_lovebyte/gasman_voyager.lua b/shader_file_sources/2022_02_11_byte_jam_lovebyte/gasman_voyager.lua new file mode 100644 index 000000000..8eed19287 --- /dev/null +++ b/shader_file_sources/2022_02_11_byte_jam_lovebyte/gasman_voyager.lua @@ -0,0 +1,128 @@ +m=math +-- my god it's full of stars +stars={} +starcount=400 +armcount=2 -- ok, let's stick to 2 +-- naming things is hard +swirliness=0.1 +galaxysize=100 + +for i=1,starcount do + -- y variation that's greater + -- in the centre? + -- I think I want it to be more + -- flying saucer shaped + -- another gaussian distribution + -- trick? + -- I think that's doing it + radius=m.random(galaxysize) + -- how close it is to the middle + centrality=1-(radius/galaxysize) + thicness=40*centrality + dy=( + m.random()*thicness-thicness/2 + + m.random()*thicness-thicness/2 + + m.random()*thicness-thicness/2 + )/2 + arm=m.random(armcount) + armangle=arm*m.pi*2/armcount + -- ok, I think the distance from the + -- arm centre should be a sort of + -- gaussian normal distribution + -- and i don't know the formula for + -- that + -- but i do know that's what you get + -- if you add several random + -- numbers together, like throwing + -- N dice + armdeviation=( + m.random()+m.random()+m.random() + * centrality + ) + -- ship it! + stars[i]={ + radius, -- radius + armangle+armdeviation+swirliness*radius, -- angle + (galaxysize*1.5-radius)/50, -- dot size + dy, -- vertical variation + -- middle ones should be brighter + centrality*8+m.random(8) -- colour + } +end + +bgstars={} +bgstarcount=400 +for i=1,bgstarcount do + bgstars[i]={ + m.random(240),m.random(136), + -- they shouldn't go all the way + -- to pink + m.random(8) + } +end + + +-- set palette +-- blue - cyan - white +-- so blue reaches 1 first +-- then green, then red +for i=1,15 do + t=i/15 + -- masta_luke777 thinks it should + -- have a tinge of pink + -- so how about I make the green + -- and blue elements top out at + -- like 220 or something + -- yes, that's a nice amount of pink + poke(16320+i*3,t^4*191+64) --r + poke(16320+i*3+1,t*150+32) --g + poke(16320+i*3+2,t^0.25*150+32) --b +end + +function TIC() +spin=time()/2400 +twirl=time()/10000 +cx=120 +cy=68 +cls() +-- i think i want to do a sort of +-- slow camera descent into the +-- galactic plane +camy=cy+35*m.cos(time()/10000) + -- maybe some background stars + -- for ambience... +for i=1,bgstarcount do + star=bgstars[i] + pix( + (star[1]-time()/70)%240, + (star[2]+camy)%136, + star[3]) +end +for i=1,starcount do + star=stars[i] + x=m.sin(star[2]+spin)*star[1] + y=m.cos(star[2]+spin)*star[1] + z=y*2 + x=x*m.sin(twirl)+z*m.cos(twirl) + -- time for some palette variation + circ( + x+cx, + y+camy+star[4], + -- I think some sort of perspective + -- scaling might be good + -- yeah, kinda subtle + -- but i think that's as far as + -- it should go... + star[3]+(z+100)/400, + star[5]) +end + + craft=time()/2000 + x=m.sin(109+spin+craft)*80 + y=m.cos(109+spin+craft)*50 +circb( + x+cx, + y+camy, + 2,15 +) +end diff --git a/shader_file_sources/2022_02_11_byte_jam_lovebyte/mantratronic_lb22jam.lua b/shader_file_sources/2022_02_11_byte_jam_lovebyte/mantratronic_lb22jam.lua new file mode 100644 index 000000000..55bf8b84d --- /dev/null +++ b/shader_file_sources/2022_02_11_byte_jam_lovebyte/mantratronic_lb22jam.lua @@ -0,0 +1,68 @@ +t=0 + +for i=0,15 do +poke(0x3fc0 + i*3, math.min(255,i*32)) +poke(0x3fc0 + i*3 + 1, math.max(0,i*24-128)) +poke(0x3fc0 + i*3 + 2, math.max(0,i*24-256)) +end + +cls() +for y=0,136 do for x=0,240 do +pix(x,y,(x+y+t)>>3) +end end + +function OVR() +t1=(t/1600)%1 +if t1 < .5 then +t1=(t1-.25)*math.pi*2 +circ(120+500*math.sin(t1),68+20*math.cos(t1),10,0) +else +t1=(t1+.25)*math.pi*2 +sx=120+500*math.sin(t1) +sy=68+20*math.cos(t1) +print(" ___ ",0+sx,0+sy,0,true) +print(" | ",0+sx,4+sy,0,true) +print("##=##",0+sx,8+sy,0,true) +print(" | ",0+sx,12+sy,0,true) +print(" ___ ",0+sx,13+sy,0,true) +end + +end + +function TIC() + +if(t%141==0) then +for y=0,136 do for x=0,240 do +pix(x,y,((math.pi*math.atan(x-120,y-68))+t)%4+1) +end end +circ(120,68,50+5*math.sin(t/150),15) +end + +if(t%423==77) then +print("LOVE",40,20,15,false,7) +print("BYTE",50,80,15,false,7) +end +if(t%423==218) then +print("RIFT",50,20,15,false,7) +print("TLC",60,80,15,false,7) +end +if(t%423==359) then +print("#BUZZ",20,20,15,false,7) +print("<3ALL",20,80,15,false,7) +end + +d=1+2*math.random() +for i=1,5000 do +x=240*math.random() +y=136*math.random() +a=math.atan(x-120,y-68) + +op=pix(x,y)-1 +if op >= 0 then +pix(x+d*(math.sin(a)+math.sin(t/300)),y+d*(math.cos(a)+math.sin(t/300)),op) +else +pix(x+d*math.sin(a),y+d*math.cos(a),0) +end +end +t=t+1 +end \ No newline at end of file diff --git a/shader_file_sources/2022_02_11_byte_jam_lovebyte/tobach_bytejam.lua b/shader_file_sources/2022_02_11_byte_jam_lovebyte/tobach_bytejam.lua new file mode 100644 index 000000000..60549d727 --- /dev/null +++ b/shader_file_sources/2022_02_11_byte_jam_lovebyte/tobach_bytejam.lua @@ -0,0 +1,177 @@ +--[[ +tobach here!! :) +greetz to mt, borb and gasman +lovebyte rulez!! B-) +let's do this!! +]]-- + +--time for some scanline nonsense :^) + +function SCN(scnln) + + --[[ + --for twister + --damn you last minute scanline stuff!!! + if scnln>30 then + poke(0x3ffa,math.sin(time()/200+scnln/66)*20) + poke(0x3ff9,math.sin(time()/400+scnln/66)*math.sin(time()/800)*50) + else + poke(0x3ffa,0) + poke(0x3ff9,0) + end + ]]-- + + --works with checkerboard + if scnln<32 then + poke(0x3ff9,math.sin(time()/500+scnln/16)*20) + else + poke(0x3ff9,0) + end + + +end + +q=22 +function TIC() + cls() + t=time()/100 + -- NOW ALL AT ONCE :))) + --cls() + --oldskool() + groovy() + sheep() + --twist() + print("come to fieldfx",30,110,12,true,2) +end + +function twist() + for i=31,135 do + line(0,i,240,i,i/16) + end + + for a=31,135 do + x=math.sin(a/q+t/2)*33+120 + y=math.sin(a/q+90+t/2)*33+120 + z=math.sin(a/q+180+t/2)*33+120 + if x:) + + --loving gasmans galaxy thing, very cool :)) + + for k=0,135,8 do + for j=-1,1 do + for i=1,300,8 do + rect(i+j*4-t*4%32,0+j*4+k+math.sin(time()/500)*4,4,4,1) + end + end + end + + for k=0,135,16 do + for j=-1,1 do + for i=1,300,16 do + rect(i+j*8-t/1.2*8%32,0+j*8+k+math.sin(time()/500)*8,8,8,2) + end + end + end + + for k=0,135,32 do + for j=-1,1 do + for i=1,300,32 do + rect(i+j*16-t*8%32,0+j*16+k+math.sin(time()/500)*16,16,16,3) + end + end + end + + for k=0,135,64 do + for j=-1,1 do + for i=1,300,64 do + rect(i+j*32-t*8%64,0+j*32+k+math.sin(time()/500)*32,32,32,4) + end + end + end + + for i=0,31 do + line(0,i,240,i,14+i%3) + end + + for i=1,3 do + print("LOVEBYTE",50+i,5+i,15-i,true,3) + end +end + +--now thats organised! + +function oldskool() + for l=0,5 do + for i=0,7 do + line(0,34+math.sin(t/2+l/2)*20+i,240,34+math.sin(t/2+l/2)*20+i,i) + end + end + --new floor perhaps?? + for i=-240,240,16 do + line(i+120+math.sin(time()/300)*10,68,i*2+120+math.sin(time()/400)*20,136,1) + line(i+120+math.sin(time()/300)*10+1,68,i*2+120+math.sin(time()/400)*20+1,136,2) + end + for i=68,136,8 do + line(0,i+t*2%8,240,i+t*2%8,1) + line(0,i+t*2%8-1,240,i+t*2%8-1,2) + end + --lets go even MORE oldskool + --""""alcatraz"""" bars ;) + for i=1,136 do + ksin=math.sin(time()/250+i/16)*math.sin(time()/600+i/8)*50 + for l=0,7 do + line(120+l+ksin,i,120+l+ksin,136,l/2) + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/final_dave84.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/final_dave84.lua new file mode 100644 index 000000000..df7058866 --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/final_dave84.lua @@ -0,0 +1,15 @@ +--Ran out of time before realising my for loops were nested. The perils of live coding. +s=math.sin +c=math.cos +function TIC()t=time()/32 +cls() +for y=0,136 do +line(50+30*s(t+y/6*100)+s(y/5+t)*10,y,190+30*c(t+y/6*100)+c(y/5+t)*10,y,1) +for i=0,32639 do + x=peek4(i) + if x>0 then + poke4(i,x+i/3) + end +end +end +end \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/final_pestis.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/final_pestis.lua new file mode 100644 index 000000000..2e0a4aab1 --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/final_pestis.lua @@ -0,0 +1 @@ +TIC=load't=time()/199 for i=t%1,M,1.9 do u=i%240/99-1v=i/M-.5k=s(t/8)u,w=u+k,1-k*u x=s(t/3)y=t z=0j=0repeat Y=y%4-2m=5-(Y*Y+x*x+z*z/50)^.5x=x+u*m y=y+v*m z=z+w*m j=j+1until j>m*9poke4(i,z/5+9+s(y+z/2))print("\\\\o/\\n/\\\\",t%240,62,0)end'M=32639s=math.sin \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_dave84.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_dave84.lua new file mode 100644 index 000000000..6db06f2e4 --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_dave84.lua @@ -0,0 +1,10 @@ +s=math.sin +c=math.cos +function TIC() +t=time()/10 +for y=-68,68 do for x=-120,120 do +X=math.atan2(x,y)*4 +Y=10000/(x*x + y*y)^(2+c(t/400)) +cl=s(X+t/50)*5 + s(Y+t/50)*5 +pix(x+120,y+68,(cl*3)%10+1) +end end end \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_dresdenboy.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_dresdenboy.lua new file mode 100644 index 000000000..0785ee4a2 --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_dresdenboy.lua @@ -0,0 +1,3 @@ +t=0s=math.sin +x=120y=68w=50TIC=load"cls()circ(x,y,y-t%4,1)for i=-1,1,2 do v=i*t/9r=w+i*9line(x,y,x+s(v)*r,y+s(v+11)*r,t/i%16)end for i=1,12 do print(i,x+s(i/2)*w,y+s(i/2+11)*w)end t=t+.1" +function SCN(a)for i=0,2 do poke(16323+i,s(a/25+i*2)*x+x)end end \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_jobe.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_jobe.lua new file mode 100644 index 000000000..ccc6b2245 --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_jobe.lua @@ -0,0 +1,9 @@ +o=16320memset(o,0,48)for i=3,47,3 do +poke(o+i,255)poke(o+i+1,i*5)end +r=math.random +function v(b)return(b+r(50))*h +end +function TIC()for x=0,999 do +x=r(240)-1y=r(136)-1 +c=pix(x,y)a=c>0 and circ(x,y,1,c+1)or 1h=math.sin(x/76)line(x,v(39),x,v(55),r(4))end +end \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_lynn.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_lynn.lua new file mode 100644 index 000000000..b9ccccce2 --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_lynn.lua @@ -0,0 +1,8 @@ +s=math.sin +c=math.cos +function TIC()t=time()//32 +for i=0,32 do +circ((s(t/9+i)*8)+(c(t/16)*20)+120,68,160-i*2,i/4)end +print("eat dmplngs",86,62,9)for i=20,200 do for j=1,7 do +x=(s(t/8+i/24)*c(t/13+i/11)*42)+120+j +line(x,i,x,240,(8+(t//32)*8)+j)end end end \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_pestis.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_pestis.lua new file mode 100644 index 000000000..71e99ada2 --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_pestis.lua @@ -0,0 +1 @@ +TIC=load'cls()t=t+3e-3 for i=0,480 do l=i/99+t/5x=(s(s(l/5)+l/5)*1e4+l)%300-20y=s(s(l*9)+l*7)*59+68print(s(l*99)<0 and"v"or"^",x,y,0)x=s(i)*t*99%300-20y=i/3r=20+5*s(i*4+t*3)circ(x,y,r,8+i/55)x=t*99%300-9rect(x,50,20,2,0)rect(x,48,2,2,0)end't=1e6s=math.sin \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_totetmatt.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_totetmatt.lua new file mode 100644 index 000000000..f1164f4cc --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_totetmatt.lua @@ -0,0 +1,6 @@ +m=math c,s=m.cos,m.sin +function TIC()t=time()*.001 +for y=136,0,-1 do for x=0,240 do +v=m.asin(s(y-x+t)*.5)*5pix(x,y,y*.1+v%4+t*9)end +for i=0,11 do q=60x,y=c(i+t)*q+120,s(i+t)*q+68 +circ(x,y,10+s(t),t*10+10+i%6)end line(120,68,c(t)*q+120,s(-t)*q+68,t)end end \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_visy.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_visy.lua new file mode 100644 index 000000000..5581d0380 --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/quarter_visy.lua @@ -0,0 +1,4 @@ +j=0 c=math.cos f=math.floor o=48 function e() elli(x,y,n,m,t*j) +for i=0,8 do ellib(x+i,y+i,n-i*1,m-i*1,0)end end +function TIC()t=time()*.0007 cls() v=c(t)*48 for i=4,11,.5 do x=v+i*16 y=54+f(c(t+(i*t))*40) n=16 m=12 j=i +e()end rect(v+o,o+9,148,64,4)end \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_dave84.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_dave84.lua new file mode 100644 index 000000000..a4ff1e2e9 --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_dave84.lua @@ -0,0 +1,17 @@ +s=math.sin +t=0 +function TIC() +cls(10) +for i=0,150 do + elli((i*8+t*20)%240+20*s(t),(i*30+t*10)%136+20*s(t),16,6,1) +end +for x=0,240 do +for y=0,136 do + cl=s(x/20+t)+s(y/20+t)+s(x&y) + if pix(x,y) == 1 then + pix(x,y,cl+12) + end +end +end +t=t+0.05 +end \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_pestis.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_pestis.lua new file mode 100644 index 000000000..6ca82da5e --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_pestis.lua @@ -0,0 +1,2 @@ +-- GO VISY! +TIC=load'cls()t=time()/3e3 for i=0,999 do pix(s(i)*99%240,i,6+s(i*t)*2)end for z=-50,19 do for j=0,699 do k=j%3w=j/99r=49-(z*z)^.5-z+s(w*9)*3+s(t)^99*99*s(w*99)circ(s(w+t)*r+120-k*2,s(w+8+t)*r/2+50-z,1,2+k+z//19+s(z))end end's=math.sin \ No newline at end of file diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_totetmatt.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_totetmatt.lua new file mode 100644 index 000000000..e69de29bb diff --git a/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_visy.lua b/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_visy.lua new file mode 100644 index 000000000..fb9590920 --- /dev/null +++ b/shader_file_sources/2022_02_12_byte_battle_lovebyte/semi_visy.lua @@ -0,0 +1,12 @@ +e=elli +c=math.cos +p=print +s={"i","am","the","oracle","ask","me"} +function TIC()cls()t=time()//8 +v=120+9*c(t*.04) +for y=0,136,1 do +x=v+c((y+y*t*.001)+t*.01)*32 +e(x,y,5+y,5,t*.0+(t>>2+(5-y)%7)) +end +p(s[((t>>8)%7)+1],v,15+(t>>5)%64,15-(t>>2)%7) +end \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_Tater.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_Tater.glsl new file mode 100644 index 000000000..b9e2f5583 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_Tater.glsl @@ -0,0 +1,181 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float md1; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define fft texture(texFFTSmoothed,0.1).x + +#define STEPS 90.0 +#define MDIST 1500.0 +#define pi 3.14159265 +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define pmod(p,x) (mod(p,x)-0.5*(x)) +#define time mod(fGlobalTime,300) +float h21(vec2 a){ + return fract(sin(dot(a,vec2(12.9898,78.233)))*43644.45345); + +} +float dibox(vec3 p, vec3 b, vec3 rd){ + vec3 dir = sign(rd)*b*0.5; + vec3 rc = (dir-p)/rd; + return min(rc.x,rc.z)+0.1; +} +float dibox2(vec3 p, vec3 b, vec3 rd){ + vec3 dir = sign(rd)*b*0.5; + vec3 rc = (dir-p)/rd; + return (rc.z)+0.1; +} +float box(vec3 p, vec3 b){ + vec3 q = abs(p)-b; + return length(max(q,0.))+min(max(q.x,max(q.y,q.z)),0.); +} +float lim(float p, float s, float lima, float limb){ + return p-s*clamp(round(p/s),lima,limb); + +} +vec3 spiral(vec3 p, float R){ + p.xz*=rot(p.y/R); + vec2 s = sign(p.xz); + p.xz=abs(p.xz)-R*0.5; + p.xz*=rot(time*pi/3); + float poy = p.y; + p.y=0.; + p.yz*=rot(mix(0.,pi/4.,1./(R*0.5+1.5)))*-sign(s.x*s.y); + p.y=poy; + return p; +} +float torus(vec3 p, vec2 q){ + return length(vec2(length(p.xz)-q.x,p.y))-q.y; + +} +float anim = 0; +vec3 rdo = vec3(0); +vec3 glow = vec3(0); +vec2 map(vec3 p){ + vec3 rd2 = rdo; + + float speed = 70; + + float rotation = tanh(sin(time*2)*8)*0.0005; + p.xy*=rot(p.z*rotation); + rd2.xy*=rot(p.z*rotation); + float rotation2 = tanh(cos(time*3)*8)*0.0005; + if(anim>0.5) + rotation2 =0.0005; + p.zy*=rot(p.z*rotation2); + rd2.zy*=rot(p.z*rotation2); + vec3 po2 = p; + + vec2 a = vec2(0); + p.z+=speed*time; + vec3 po = p; + + float m2 =60; + //p.y = pmod(p.y,m2); + //p.y+=40; + float bsize = 16.; + float m = 20; + + vec2 id = floor(p.xz/m); + + p.xz = pmod(p.xz,m); + float sideBox = 12; + //p.x = lim(p.x-m/2,m,-sideBox/2,sideBox/2); + + p.y+=tanh(sin(time+floor(h21(id)*pi*4.))*8.)*(40.+anim*20); + a.x = box(p,vec3(bsize*0.5,4,bsize*0.5))-0.3; + vec3 glowCol = vec3(0.8,0.7,0.2)*(64/STEPS); + glowCol.xy*=rot(sin(time)*0.5+0.5+h21(id)*2-1.); + glow+=exp(-a.x)*glowCol*0.1; + + // if(abs(id.x)0.5) + anim = 1; + + vec3 col = vec3(0); + vec3 ro = vec3(0,0,-10)*3; + if(anim>0.9){ + ro = vec3(0,40,-50)*8; + } + vec3 lk = vec3(0,0,0); + vec3 f = normalize(lk-ro); + vec3 r = normalize(cross(vec3(0,1,0),f)); + vec3 rd = normalize(f*(0.7)+uv.x*r+uv.y*cross(f,r)); + rdo = rd; + vec3 p = ro; + vec2 d = vec2(0); + float rl = 0; + float shad = 0; + + for(float i = 0; i MDIST){ + break; + } + } + + //col = vec3(shad); + col+=glow*0.25; + + col = pow(col,vec3(0.45)); + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_eimink.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_eimink.glsl new file mode 100644 index 000000000..faf4c9391 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_eimink.glsl @@ -0,0 +1,175 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, .5).r; +float ffts = texture(texFFTSmoothed,60.).r; + +const float E = 0.001; +const float FAR = 100.0; +const int STEPS = 64; + +vec3 glow = vec3(0.0); + + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + + return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0); +} + +float scene(vec3 p){ + vec3 pp = p; + + for(int i = 0; i < 5; ++i){ + pp = abs(pp) - vec3(0.75, 2.0, 1.5); + rot(pp.xz, time*0.3+sin(4.*fft)); + rot(pp.zy, fft*2.5); + rot(pp.xy, fft*0.5+time*0.1); + } + + float cubes = box(pp, vec3(7.0, 0.3, 15.0)); + + + pp = p; + for (int i = 0; i < 3; ++i){ + pp = abs(pp) - vec3(8.3,3.7,1.); + rot(pp.xz, time*.1); + rot(pp.zy, fft*8.); + rot(pp.xy, fft*0.4+time*0.1); + } + float spheres = sphere(pp,1.+ffts*50.); + + if (mod(time,4) == 0) + { + glow += vec3(0.08, 0.45, 0.85) * 0.05 / (abs(spheres) + 0.01); + glow += vec3(.86,.89,.2)*.09 / (abs(cubes)+0.01); + } + else{ + glow += vec3(0.08, 0.45, 0.85) * 0.05 / (abs(cubes) + 0.01); + glow += vec3(.86,.89,.2)*.09 / (abs(spheres)+0.01); + } + + return sphere(p,1.+ffts*120.); +} + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + for(int i = 0; i < STEPS; ++i){ + float d = scene(p); + t += d; + p = ro + rd * t; + + if(d < E || t > FAR){ + break; + } + } + return t; +} + +vec3 normals(vec3 p){ + vec3 e = vec3(E, 0.0, 0.0); + return normalize(vec3( + scene(p + e.xyy) - scene(p - e.xyy), + scene(p + e.yxy) - scene(p - e.yxy), + scene(p + e.yyx) - scene(p - e.yyx) + )); +} + +vec3 shade(vec3 rd, vec3 p, vec3 ld){ + vec3 n = normals(p); + + float l = max(dot(n, ld), 0.0); + float a = max(dot(reflect(rd, ld), n), 0.0); + float s = pow(a, .1); + + return vec3(1.)*l + vec3(.9)*s; +} + +// Ok so.. lots of this shader is from rimina's live streams... big kudos to them! + +void main(void) +{ + vec3 col; + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = -1.0 + 2.0*uv; + q.x *= v2Resolution.x/v2Resolution.y; + + vec3 ro = vec3(2.0-sin(time)+sin(2*time)*4., -4.0+sin(time)*3., 23.0+cos(time)*10.); + vec3 rt = vec3(0.0, 0.0, -1.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x, y, z) * vec3(q, 1.0/radians(90.0))); + + float t = march(ro, rd); + vec3 p = ro + rd * t; + vec3 ld = normalize(vec3(0.0, 0.0, -10.0)-p); + + rot(q, time*0.5); + + if(t < FAR){ + col = shade(rd, p, ld); + } + + else col = texture(texRevision,((sin(time)+1.5)+sin(2*time)+1.+cos(fft*.5))*(vec2(q.x*.5+sin(time*.8),q.y+cos(time*.1)))).rgb*.4; + + col += glow; + + col = mix(col, texture2D(texPreviousFrame, uv).rgb,.5); + + // Hi rimina! Using your code here! + + vec4 pcol = vec4(0.0); + vec2 puv = vec2(20./v2Resolution.x, 20./v2Resolution.y); + vec4 mults = vec4(0.1531, 0.11245, 0.0918, 0.051); + pcol = texture2D(texPreviousFrame, uv) * 0.1633; + pcol += texture2D(texPreviousFrame, uv) * 0.1633; + for (int i = 0; i < 2; ++i) + { + pcol += texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * mults[i]; + } + col += pcol.rgb; + col *=0.32; + + col = smoothstep(-.1,1.,col); + + out_color = vec4(col,1.); + + //////////////////// + // SLAVA UKRAINI! // + //////////////////// + +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_exca.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_exca.glsl new file mode 100644 index 000000000..8b58a9422 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/ghost/2022_04_revision_jam_ghost_exca.glsl @@ -0,0 +1,243 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float fft = 0.0; +float ffts = 0.0; +float ffti = 0.0; +float time = 0.0; + +vec3 cam = vec3(0.0); +vec3 target = vec3(0.0); + +vec3 rotate( vec3 p, float x, float y, float z) +{ + mat3 rotx = mat3( 1.0, 0.0, 0.0, 0.0, cos(x), -sin(x), 0.0, sin(x), cos(x)); + mat3 roty = mat3( cos(y), 0.0, sin(y), 0.0, 1.0, 0.0, -sin(y), 0.0, cos(y)); + mat3 rotz = mat3( cos(z), - sin(z), 0.0, sin(z), cos(z), 0.0,0.0,0.0, 1.0); + return rotx*rotz*roty*p; + +} + +vec3 repeat( vec3 p, vec3 c) +{ + return mod(p + 0.5*c, c)-0.5*c; +} + +vec3 texmap( vec3 p, vec3 n) +{ + return mat3( texture(texTex2, p.yz).rgb, texture(texTex2, p.xz).rgb, texture(texTex2, p.yz).rgb)*n; +} + + +vec3 getcam(vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize( target - cam); + vec3 right = normalize( cross( vec3(0,1,0), forward) ); + vec3 up = normalize( cross( forward, right )) ; + return normalize( forward*fov + right * uv.x + up * uv.y); +} + +float ground( vec3 p, float h) +{ + return p.y-h; +} + +vec3 U( vec3 a, vec3 b) +{ + return vec3( min(a.x,b.x), mix(a.y, b.y,step(b.x, a.x)), mix(a.z, b.z,step(b.x, a.x))); +} + +float roundbox( vec3 p, vec3 b, float r) +{ + vec3 d = abs(p)-b; + return min(max(d.x, max(d.y, d.z)), 0.0)+length(max(d,0.0))-r; +} + +vec3 map( vec3 p) +{ + float gh = texture(texNoise, p.xz*0.02).r + texture(texNoise, p.xz*0.02).r*3.0; + + + vec3 cp = repeat( p, vec3( 8.0, 0.0, 8.0)); + cp =rotate( cp+vec3(0, -4.0, 0.0), ffti,0.0, 0.0); + + float cube = roundbox( cp, vec3(1,0.5,1),0.15); + float gr = ground( + p, + gh + ); + + vec3 u = vec3( cube, 1.0, gh); + u = U( u, vec3(gr, 2.0, gh)); + + return u; +} + +vec3 march( vec3 cam, vec3 rd, out vec3 p, out float t) +{ + for(int i = 0; i < 300; i++) + { + p = cam + rd*t; + vec3 r = map(p); + t += r.x; + if(r.x < 0.01){ + return r; + } + if(t > 50.0) + { + return vec3(-1.0); + } + } + return vec3(-1.0); +} + +float fftd( float cmp, float x) +{ + return smoothstep(0.01, 0.0,abs( texture(texFFT, x).r-cmp)); +} + +vec3 normal( vec3 p) +{ + vec3 c = map(p); + vec2 e = vec2(0.01, 0.0); + return normalize( vec3( + map(p+e.xyy).x, + map(p+e.yxy).x, + map(p+e.yyx).x + )-c.x); +} + +float light( vec3 p, vec3 l, vec3 n) +{ + return max( 0.0, dot(n, normalize(l-p))); +} + +void main(void) +{ + time = fGlobalTime; + + fft = texture(texFFT, 0.05).r; + ffts = texture(texFFTSmoothed, 0.05).r; + ffti = texture(texFFTIntegrated, 0.05).r; + + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 vuv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 col1 = vec3( 1.0, 0.9, 0.75); + vec3 col2 = vec3( 0.0, 0.5, 0.75); + + vec3 light1 = vec3( sin(time)*10.0, 5.0, cos(time)*5.0); + + vec3 col = vec3(0.0); + cam = vec3(0,8,20); + + + target = vec3(0,1,0.0); + float fov = 1.2; + + vec3 rd = getcam( cam, target, uv, fov); + + vec3 p = cam; + float travel = 0.0; + vec3 res = march( cam, rd, p, travel); + + if(res.y > 1.5) + { + vec3 n = normal(p); + float sx = floor(mod(p.x, 2.0)); + float sz = floor(mod(p.z, 2.0)); + + col = mix( col1, col2, sx + sz) * light(p, light1, n); + + + //col = vec3(0.2, 0.6, 0.9)* smoothstep(-0.5, 0.5,res.z); + col = mix( col, col2, smoothstep(0.0, 0.5,res.z)); + col *= light(p, light1, n); + } + else if(res.y > 0.5) + { + vec3 n = normal(p); + col = vec3(1.0, 0.8,0.2) * light(p, light1, n); + + vec3 refd = reflect( rd, n); + vec3 refoutP = p; + float refoutT= 0.0; + vec3 refr = march( p+refd*0.02, refd, refoutP, refoutT); + vec3 rcol = vec3(0.0); + if(refr.y > 1.5) + { + vec3 rn = normal(refoutP); + float sx = floor(mod(refoutP.x, 2.0)); + float sz = floor(mod(refoutP.z, 2.0)); + + rcol = mix( col1, col2, sx + sz) * light(refoutP, light1, rn); + + rcol = vec3(0.2, 0.6, 0.9)* smoothstep(-0.5, 0.5,res.z); + rcol = mix( rcol, vec3(0., 0.8, 0.3), smoothstep(0.0, 0.5,res.z)); + rcol *= light(refoutP, light1, rn); + } + else + { + vec3 rn = normal(refoutP); + rcol = vec3(1.0)* texmap(refoutP, rn) * light(refoutP, light1, rn); + + } + col = mix(col, rcol, 0.5); + } + + + vec2 center = vec2( 0.5); + vec2 duv = center - vuv; + float angle = atan( duv.y, duv.x)*0.25; + vec3 fftc = mix( vec3(0.0,0.0, 0.2), vec3(0.2, 0.5,0.4), 1.0-vuv.y)+vec3(.5)*fftd( 1.0-vuv.y, 0.1+abs(0.5-vuv.x) ); + + + col = mix(col, fftc, smoothstep(20.0, 50.0, travel)); + + + + out_color = vec4(col, 1.0); +} + + + + + + + + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_evvvvil.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_evvvvil.glsl new file mode 100644 index 000000000..fbc266c1d --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_evvvvil.glsl @@ -0,0 +1,173 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(.0035,-.0035); float t,tt,b,bb,g,cr,gg,ggg,f,fb,fm,ft; vec3 ro,np,rp,bp,cp,pp,op,sp,po,no,al,lp,ld,cop;vec4 su=vec4(0); +float noi(vec3 p){ + vec3 f=floor(p),s=vec3(7,157,113); p-=f;vec4 h=vec4(0,s.yz,s.y+s.z)+dot(f,s); p=p*p*(3.-2.*p); + h=mix(fract(sin(h)*43758.5),fract(sin(h+s.x)*43758.5),p.x); h.xy=mix(h.xz,h.yw,p.y); + return mix(h.x,h.y,p.z);} +float cno(vec3 p,float k){ float f=0.; p.z+=tt*k;f+=0.5*noi(p);p=2.1*p;f+=0.25*noi(p+1.);p=2.2*p; + f+=0.125*noi(p+2.);p=2.3*p; return f;} +float bo(vec3 p,vec3 r){p=abs(p)-r; return max(max(p.x,p.y),p.z);} +float b2d(vec2 p,vec2 r){ p=abs(p)-r;return length(max(p,0))+min(max(p.x,p.y),0);} +float cy(vec3 p,vec3 r){return max(abs(length(p.xz)-r.x)-r.y,abs(p.y)-r.z/2.);} +float cx(vec3 p,vec3 r){return max(abs(length(p.yz)-r.x)-r.y,abs(p.x)-r.z/2.);} +float cz(vec3 p,vec3 r){return max(abs(length(p.xy)-r.x)-r.y,abs(p.z)-r.z/2.);} +float cap(vec3 p, float h, float r ){ p.y -= clamp( p.y, 0.0, h );return length( p ) - r;} +float ext(vec3 p,float sdf,float h){ vec2 w=vec2(sdf,abs(p.y)-h); return min(max(w.x,w.y),0.)+length(max(w,0));} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +float smin( float d1, float d2, float k ){float h=max(k-abs(d1-d2),0.0);return min(d1, d2) - h*h*0.25/k;} +float smax( float d1, float d2, float k ){float h=max(k-abs(-d1-d2),0.0);return max(-d1,d2)+h*h*0.25/k;} +vec2 smin(vec2 a,vec2 b,float k){float h=clamp(.5+.5*(b.x-a.x)/k,0.,1.);return mix(b,a,h)-k*h*(1.-h);} +vec3 proj(vec3 p){ + p=vec3(atan(p.x,p.z)*8.,abs(abs(p.y)-25.)-7.,length(p.xz)-5.-bb); + //p=vec3(abs(atan(p.z,p.x))*10.-5., (10.-length(p)), abs(atan(length(p.xz),p.y))*10.); + //p.yz-=.5*exp(p.y*.1); + //p.yz*=r2(.3*exp(p.y*.1)); + p.xy=mod(p.xy+vec2(0,tt*2.),2.)-1.; + return p; +} +/* VOLUMETRIC CLOUDS */ +float cmp( vec3 p){ + float t=length(p)-2; + return t; +} +/* ORBITTTTTTTTT */ +vec4 c=vec4(4.57,2,10,0.1); + +/* MMMAAAAPPPPPPPPPPPPPPPPPPPP*/ +vec2 mp( vec3 p, float ga ){ + op=p; + + float tn=texture(texNoise,p.xy).r; + //f = texture( texFFTSmoothed, abs(op.z*.01) ).r *500; + //float ta=smoothstep(0.,1.,(clamp(sin(p.y*.01+tt*.5),-.25,.25)*2.+.5)); + //p=mix(p,p.xzy,ta); + //float mxr=clamp(sin(tt*.65+p.z*.1),-.5,.5)+.5; +vec3 ccp=p;ccp.y=abs(ccp.y)-5; + vec2 h,t=vec2(length(p+tn*.2)-4,0); + vec3 vp=p; + vp.xy*=r2(.785+tt*.5+fm*.1); + t.x=smax(abs(abs(vp.y)-.2-fb*.1)-.5,t.x,.5); + float disp=sin(p.y*.5+tt*2.+fb)*.2; + pp=p-disp; //tubes + pp.xz=abs(pp.xz)-2; + t.x=smin(t.x,length(pp.xz)-.2,1.); + vec3 sp=pp; + sp.xz*=r2(sin(p.y*.4+tt+fm*.5)); + t.x=smin(t.x,length(abs(sp.xz)-.5-abs(p.y)*.1)-.05,0.7); + float inside=length(p)-3; + h=vec2(inside,2); + inside=min(inside,cy(ccp,vec3(7.5,.01,.2))); + t=t.x120) break; + t.x+=h.x;t.y=h.y; + } if(t.x>120) t.y=-1; + return t; +} +#define a(d) clamp(mp(po+no*d,0).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d,0).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uuv=uv; + uv -= 0.5; uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + tt=mod(fGlobalTime,62.82); + fb = texture( texFFTSmoothed, 0.02 ).r *250; + fm = texture( texFFTSmoothed, 0.15 ).r *600; + + //bb=max(0.,-3.+floor(tt*.25)+smoothstep(0.,1.,min(fract(tt*.25),.25)*4.)); + //b=smoothstep(0.,1.,clamp(sin(tt*.5),-.25,.25)*2.+.5); + + ///////////////////////// CCCCCCAAAAAAAAAAAAAMMMMMMMM + ro=vec3(cos(tt*c.w+c.x)*c.z,sin(tt*.4)*2.,sin(tt*c.w+c.x)*c.z*1.5); + vec3 cw=normalize(vec3(0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + float ft = texture( texFFTSmoothed, abs(rd.x)*.05 ).r *200; + co=fo=vec3(.1,.2,.4)-length(uv)*.1-rd.y*.1+ft*.005; + + lp=ro+vec3(0,2,0); + z=tr(ro,rd);t=z.x; + if(z.y>-1){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy,0).x+ + e.yyx*mp(po+e.yyx,0).x+ + e.yxy*mp(po+e.yxy,0).x+ + e.xxx*mp(po+e.xxx,0).x);//al=mix(vec3(.0,0.20,.7),vec3(.1,0.40,.5),sin(cop*2.5)*.5+.5); + al=mix(vec3(.4,.3-sin(op.y-.5)*.1,.7),vec3(0),z.y*1.3); + //if(z.y<5)al=vec3(0); + if(z.y>1)al=vec3(1); + ld=normalize(lp-po); + float attn=1.0-pow(min(1.0,length(lp-po)/20.),4.0), + dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),30); + co=mix((sp+al*(a(.1)*a(.3)+.2)*(dif+s(1)*.3))*attn,fo,min(fr,.5)); + co=mix(fo,co,exp(-.00005*t*t*t)); + } + //cr=cmp(ro-1.) + /*cr=0+fract(dot(sin(uv*476.567+uv.yx*785.951+tt),vec2(984.156))); + for(int i=0;i<120;i++){ + cp=ro+rd*(cr+=1./3.);//(cr+=60./150.); + if(su.a>.99||cr>t) break; + float de=clamp(-cmp(cp)+2.*cno(cp,10.),0.,1.); //-0.2-mp(cp).x+0.5*cno(cp*0.5,1.) + su+=vec4(vec3(mix(1.,0.,de)*de),de)*(1.-su.a); + }*/ + co=mix(co,su.xyz,su.a*0.8); //mix(su.xyz,fo,1.-exp(-.000005*cr*cr*cr)),su.a*.9) + //float light=clamp(-0.5-mp(cp-ld*.5).x+2.5*cno(cp*5,5),0.,1.);//cloud lighting + //su+=vec4(vec3(mix(de*de,light,de)),de)*(1-su.a); //co=su.xyz; + co=co+g*.2*vec3(.0,.1,.7)+gg*.2*vec3(.7,.1,.1)+ggg*.2; + //if(length(lp-ro) 50.0){ + t = 50.0; + return vec3(lowest, -1,-1); + } + } + return vec3(lowest, -1,-1); +} + +vec3 normal( vec3 p) +{ + vec3 c = map(p); + vec2 e = vec2(0.01, 0.0); + return normalize( vec3( + map( p + e.xyy).x, + map( p + e.yxy).x, + map( p + e.yyx).x + )-c.x); +} + +float light( vec3 p, vec3 l, vec3 n) +{ + return max( 0.0, dot(n, normalize( l- p))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 vuv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + ffts = texture(texFFTSmoothed, 0.1).r; + ffti = texture(texFFTIntegrated, 0.1).r; + + beat = floor( fGlobalTime * 136.0/60.0); + beatstep = fract( fGlobalTime * 136.0/60.0); + bar = floor( beat /8.0); + + time = ffti*2.5 + fGlobalTime*0.1; + + vec3 col = vec3(0.0); + vec3 cam = vec3( + sin(time*0.1-bar*2.0)*10.0, + abs(sin(time*0.05 + bar*3.0)*7.9)-1.5, + cos(time*0.1+bar*1.1)*7.0 + ); + vec3 target = vec3(0,0,0); + + target -= cam*0.25; + + float fov = 2.2 + sin(bar*6.3); + + vec3 light1 = vec3(sin(time*10.0), 10.0, 0.0); + + vec3 rd = getcam(cam, target, uv, fov); + + rd *= 1.0 +0.05* vec3( sin(time*0.25), cos(time*0.3), sin(time*0.4)); + + vec3 p = cam; float t = 2.0; + vec3 res = march( cam, rd, p, t); + + vec3 gold = vec3(1.8, 1.5, 0.5); + + if(res.y > 1.5){ + + vec3 n= normal(p); + vec2 pat = vec2( + step( mod(p.x, 1.0),0.5), + step( mod(p.z, 1.0),0.5) + ); + col = mix(gold, gold*0.25, pat.x-pat.y) * light(p,light1,n)*0.25; + + col = max( col, gold*0.25) * texmap(p*0.25,n*1.0) * 5.0; + + vec3 outp = vec3(0.0); + float outt = 0.0; + vec3 shadow = march( p + n * 0.1, normalize( light1-p), outp, outt)*0.95; + + col *=0.125+ 1.0*smoothstep( 0.0, 0.5, shadow.x); + + + } + else if(res.y > -0.5){ + + vec3 n= normal(p); + col = gold * light(p,light1,n); + + vec3 refrd = reflect( rd, n); + vec3 refp = p; + vec3 refc = vec3(0.0); + float reft = 0.0; + vec3 refres = march( p+rd*0.01, refrd, refp, reft); + + vec3 refn = normal(refp); + if(refres.y > 1.5) + { + col = vec3(1.0) * light(refp,light1,refn); + } + else if(refres.y > 0.5) + { + vec2 pat = vec2( + step( mod(refp.x, 1.0),0.5), + step( mod(refp.z, 1.0),0.5) + ); + refc = col = mix(gold, gold*0.25, pat.x-pat.y) * light(refp,light1,refn); + } + col = mix(col, refc, 0.5); + + } + + float fft2 = texture(texFFTSmoothed, vuv.x).r*25.0; + //col += 0.25* smoothstep(0.9, 1.0,length(fft2-uv.y-1.0)); + + col +=gold* glow*0.04; + + col = mix( col, vec3(0.0), smoothstep(5.0, 50.0, t)); + + + vuv -=0.5; + vuv *= 0.97; + vuv +=0.5; + + + vec3 previous = texture( texPreviousFrame, vuv).rgb; + col += previous * 0.9 * smoothstep(0.0, 0.1, ffts*10.0); + + if(mod(bar, 5.0) < 0.5) col.rgb = col.bgr; + else if(mod(bar, 5.0) < 1.5) col.rgb = col.grb; + else if(mod(bar, 5.0) < 2.5) col.rgb = col.gbr; + else if(mod(bar, 5.0) < 3.5) col.rgb = vec3(length(col)*0.5); + + + out_color = vec4( col, 1.0);; +} + + + + + + + + + + + diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_kostik.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_kostik.glsl new file mode 100644 index 000000000..29bb43d21 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/lug00ber/2022_04_revision_jam_lug00ber_kostik.glsl @@ -0,0 +1,184 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texDfox; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float fMidiKnob; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define INF (1./0.) +#define PI 3.14159265 +#define rep(p,s) (mod(p,s)-s/2.) +#define rep2(p,s) (abs(rep(p,2.*s))-s/2.) +#define time fGlobalTime + +#define mr(t) (mat2(cos(t), sin(t), -sin(t), cos(t))) + +float ffti(float t) {return texture(texFFTIntegrated, t).r;} +float ffts(float t) {return texture(texFFTSmoothed, t).r;} + +float box(vec3 p, vec3 s) { + p = abs(p)-s; + return max(p.x, max(p.y, p.z)); +} + +vec3 ct(vec3 p) { + if(p.x < p.y) p.xy = p.yx; + if(p.y < p.z) p.yz= p.zy; + if(p.x < p.y) p.xy = p.yx; + return p; +} + +float hash(float t) { + return fract(sin(t * 3234.12345)); +} + +float glow = 0.; + +float map(vec3 op) { + op.z += time + 20.*ffti(.07); + float m = INF; + vec3 p = op; + p = 2.-abs(p); + + float off = 0.; + vec3 p1 = p; + for(float i=0.; i<1.; ++i) { + p1 += vec3(hash(i), hash(i+.17), hash(i+.21)); + off += hash(dot(vec3(.17, .21, .92), floor(p1/6.))); + p1 *= 2.; + } + m = min(m, max(p.x, p.y) + 1. + off); + + p = op; + float wires = INF; + float t = time / 4.; + t = floor(t) + smoothstep(.8, 1., fract(t)); + for(float i = 0.; i<3.;++i) { + p.xz *= mr(.22); + p.yz *= mr(.28); + p = rep2(p, vec3(130.) / exp2(i)); + p.xz *= mr(.3); + p.yz *= mr(.13); + if(i == 2.) p.xz *= mr(t * .1); + p = abs(p)-1.2; + p = ct(abs(p)); + wires = min(wires, length(p.yz)-.1); + + vec3 p1 = p; + p1.x = rep2(p1.x + time, 12.); + p1 = abs(p1)-.2; + p1.yz *= mr(3.*p1.x); + float m1 = max(abs(p1.s)-2, length(p1.yz)-.01); + wires = min(wires, m1); + glow += .01 / abs(m1+.003); + } + m = max(m, -wires+.3); + m = min(m, wires); + + p = op; + float zdiv = 8.; + float cz = floor(p.z/zdiv); + p.z = rep(p.z, zdiv); + float ang = hash(cz) * 2*PI + time * (hash(cz+.111)*2.-1.); + p.xy -= 3.*vec2(cos(ang), sin(ang)); + p1 = p; + float figure = INF; + p.xz *= mr(3.*time * mix(.3, .9, hash(cz+.1344))); + p.yz *= mr(3.*time * mix(.3, .9, hash(cz+.37887))); + if(hash(cz + .911) < .5) { + figure = box(p, vec3(.5)); + } else { + p = abs(p); + figure = dot(p, normalize(vec3(1.))) - .4; + } + float h = hash(cz+1.221); + float pawah = min(1., ffts(h)*90.); + glow += mix(.001, .003, pawah) / abs(figure-mix(.01, .3, pawah)); + m = min(m, figure); + + return m; +} + +vec3 normal(vec3 p) { + vec2 E = vec2(0., .001); + return normalize( + vec3(map(p+E.yxx), map(p+E.xyx), map(p+E.xxy)) - map(p)); +} + +vec3 bg(vec3 n) { + vec2 uv = vec2(atan(n.x, n.z), atan(n.x, n.y)); + return 1.*vec3(.5, .7, 1.); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv1 = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 c = vec3(0.); + vec3 O = vec3(0.,0.,-3.), D = normalize(vec3(uv, 1.)); + D.xz *= mr(.3); + D.yz *= mr(.1); + D.xy *= mr(time*.3 + .1*ffti(.09)); + float d = 0., i; + vec3 p; + bool hit = false; + for(i=0.; i<64.;++i) { + p = O+D*d; + float m = map(p); + d += m; + if(m < .001 * d) { + hit = true; + break; + } + } + if(hit) { + vec3 n = normal(p); + vec3 col = vec3(1.); + vec3 bg = bg(D); + vec3 expVec = vec3(1., 1.3, 1.3); + vec3 cc = mix(bg, col, dot(n, vec3(0.,0.,-1.)) * exp(-d*expVec*.1)); + cc += col * max(0., dot(abs(D), n)) * exp(-d*expVec*.1); + c += cc; + c = mix(c, vec3(0.), glow * exp(-d*.04)); + } else { + c= bg(D); + } + + vec2 e = vec2(.003 + .003 * (sin(time)*.5+.5), .0); + vec3 prev = vec3( + texture(texPreviousFrame, uv1-e).r, + texture(texPreviousFrame, uv1).g, + texture(texPreviousFrame, uv1+e).b + ); + + float mad = 1.2*mix(.2, .1, sin(time)*.5+.5); + c -= .04/(smoothstep(.2, .0, prev)+mad); + c += .2 * smoothstep(.5, 1., prev); + c = max(c, vec3(0.)); + + out_color = vec4(c, 1.); +} + + + + + + diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_blackle.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_blackle.glsl new file mode 100644 index 000000000..5e232fb22 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_blackle.glsl @@ -0,0 +1,151 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texDfox; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 plane(vec3 cam, vec3 ini, vec3 o, vec3 n, vec3 tn) { + float t = dot(o-ini, n)/dot(n,cam); + vec3 p = (cam*t+ini)-o; + vec3 l1 = normalize(cross(n,tn)); + vec3 l2 = normalize(cross(n,l1)); + return vec3(dot(p,l1),dot(p,l2),t); +} + +#define ro(r) mat2(cos(r),sin(r),-sin(r),cos(r)) +float bpm = 145; +float mul = 6*60/bpm; +float linedist(vec2 p, vec2 a, vec2 b) { + float k = dot(p-a,b-a)/dot(b-a,b-a); + return distance(p,mix(a,b,clamp(k,0,1))); +} + + +float love(vec2 p) { + //p.x=abs(p.x); + p.x = sqrt(p.x*p.x+.001); + p.y+=.1; + return linedist(p,vec2(.2,.2),vec2(-0.2,-.2))-.2; +} + +vec4 tex(vec2 crds, int i) { + float pulse = fGlobalTime - floor(fGlobalTime*mul)/mul; + if(i%3==0)crds *= ro(fGlobalTime); + crds.x+=.5; + crds*=.6+pulse*.5; + if(abs(crds.y)>.5||abs(crds.x)>.5)return vec4(0); + if(i%6==0) return texture(texTex1,crds+.5); + if(i%6==2) return texture(texTex3,crds+.5); + if(i%6==3) return texture(texTex4,crds+.5); + if(i%6==4) return texture(texChecker,crds+.5); + if (length(crds)>.5)return vec4(0); + if(i%6==1) return texture(texRevision,crds+.5).xyzy; + //float d = linedist() + if (length(crds-vec2(.7,-.2))<.5)return vec4(0); + if (length(crds-vec2(-.7,-.2))<.5)return vec4(0); + if (length(crds-vec2(-.4,-.7))<.5)return vec4(0); + if (length(crds-vec2(.2,-.85))<.5)return vec4(0); + return texture(texDfox,crds+.5)*2.; +} + +vec3 curve(float k) { + float t = fGlobalTime/9 + k; + float w = 1 + sin(floor(fGlobalTime)*45)*.3; + return vec3(sin(t*w),cos(t*9),sin(t*2.5))*4; +} + +vec2 delt(vec2 p) { + mat2 k = mat2(p,p)-mat2(0.001); + return normalize(love(p) - vec2(love(k[0]),love(k[1]))); +} + +void main(void) +{ + vec4 last = texture(texPreviousFrame,gl_FragCoord.xy/v2Resolution.xy); + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 cam = normalize(vec3(1,uv)); + vec3 init = vec3(-3,0,0); + + vec4 col = vec4(0); + float mt = 1e4; + for (int i = 0; i < 200; i++) { + vec3 org = curve(float(i)*3.14159/100); + vec3 hit = plane(cam, init, org, normalize(-org), normalize(vec3(cos(vec2(-org.z,org.x)),0))); + if (hit.z > .8 && hit.z < mt) { + vec4 tx = tex(hit.xy,i); + if (tx.w > 0.5) { + col = tx; + + mt = hit.z; + } + } + } + + out_color = (mt>0.)?col:vec4(0); + //out_color = mix(out_color ,last,sin(fGlobalTime)*.4+.5); + out_color = mix(out_color, last*.9, 1-clamp(out_color.w,0,1)); + //out_color = mix(out_color ,last,sin(fGlobalTime)*.4+.5); + + float sx = floor(gl_FragCoord.x/v2Resolution.x*30)/30; + sx = abs(sx-.5)*2; + if (gl_FragCoord.y/v2Resolution.y < texture(texFFT,sx).x*50) out_color=vec4(1); + + float pulse = fGlobalTime - floor(fGlobalTime*mul)/mul; + uv *= ro(cos(fGlobalTime*mul*3.1415)*.3); + uv.y += cos(fGlobalTime/2*mul)*.1; + uv.x += sin(fGlobalTime/2*mul)*.1; + uv *= (1+pulse); + float lv = love(uv); + float edge = smoothstep(0.,-.1,lv); + vec3 n = normalize(vec3(1*edge,delt(uv)*(1-edge))); + vec3 r = reflect(cam,n); + float spec= length(sin(n*4)*.5+.5)/sqrt(3.); + if (lv<0.)out_color.xyz=vec3(.9,.1,.1)+pow(spec,10)*3; + +} + + +// gotta go have easter dinner with the family here in EDT land +// see you all at the compos tomorrow morning! +// make sure to tune in for 4k exegfx! + + + + + + + + + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_monsieursoleil.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_monsieursoleil.glsl new file mode 100644 index 000000000..d652a7d18 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/mack/2022_04_revision_jam_mack_monsieursoleil.glsl @@ -0,0 +1,314 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float midi01; +uniform float midi02; +uniform float midi03; +uniform float midi04; +uniform float midi05; +uniform float midi06; +uniform float midi07; +uniform float midi08; +uniform float midi09; +uniform float midi10; +uniform float midi11; +uniform float midi12; +uniform float midi13; +uniform float midi14; +uniform float midi15; +uniform float midi16; +uniform float midi17; +uniform float midi18; +uniform float midi19; +uniform float midi20; +uniform float midi21; +uniform float midi22; +uniform float midi23; +uniform float midi24; +uniform float midi25; +uniform float midi26; +uniform float midi27; +uniform float midi28; +uniform float midi29; +uniform float midi30; +uniform float midi31; +uniform float midi32; +uniform float midi33; +uniform float midi34; +uniform float midi35; +uniform float midi36; +uniform float midi37; +uniform float midi38; +uniform float midi39; +uniform float midi40; +uniform float midi41; +uniform float midi42; +uniform float midi43; +uniform float midi44; +uniform float midi45; +uniform float midi46; +uniform float midi47; +uniform float midi48; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +struct Matter +{ + float m; + float glow; + float glow02; + int type; + bool reflec; +}; + +struct Ray +{ + vec3 p; + vec3 dir; +}; +vec3 res; +Matter mat; +Ray ray; + +mat2 rot(float a) +{ + float ca = cos(a); + float sa = sin(a); + + return mat2(ca, sa, -sa, ca); +} + +float sphere(vec3 p, float r) +{ + return length(p) -r; +} + +float box(vec3 p, vec3 r) +{ + p= abs(p) -r; + return max(p.x, max(p.y, p.z)); +} + +vec3 opRepl(vec3 p, float c, vec3 l) +{ + return p-c*clamp(round(p/c), -l,l); +} + +vec2 opRepl(vec2 p, float c, vec2 l) +{ + return p-c*clamp(round(p/c), -l,l); + +} + +vec3 rand(vec3 p) +{ + return fract(sin(vec3(dot(p, vec3(1.0, 57.0, 113.0)), dot(p, vec3(57.0, 113.0, 1.0)), dot(p, vec3(113.0, 1.0, 57.0))))*4356.23569); +} + +vec3 voronoi(vec3 x) +{ + vec3 p = floor(x); + vec3 f = fract(x); + + float id = 0.0; + vec2 res = vec2(100.0); + for(int k = -1; k<=1;++k) + for(int j = -1; j<=1;++j) + for(int i = -1; i<=1;++i) + { + vec3 b = vec3(float(i), float(j), float(k)); + +vec3 r = vec3(b)-f+rand(p+b); + float d = dot(r,r); + + if(d 0.) + { + depth = res.y; + vec3 p = ro+rd*res.y; + vec3 n = getNorm(p, res.x); + col = n*.5+.5; + + col = (vec3(23, 24, 51)/255.).zxy*sat(dot(normalize(vec3(n.x, -1., n.z)), n)); + } + col += accLight; + col = mix(col, background, 1.-sat(exp(-depth*depth*0.001))); + return col; +} + +vec3 rdr2(vec2 uv) +{ + vec3 col = vec3(0.); + vec2 dir = normalize(vec2(1.)); + float str = 0.1*FFTS(.2)*1.; + + col.x = rdr(uv+dir*str).x; + col.y = rdr(uv).y; + col.z = rdr(uv-dir*str).z; + return col; +} +float lenny(vec2 v) +{ + return abs(v.x)+abs(v.y); +} +void main(void) +{ + _seed = texture(texNoise, gl_FragCoord.xy/v2Resolution.xy).x+fGlobalTime; + vec2 uv = (gl_FragCoord.xy-.5*v2Resolution.xy)/v2Resolution.xx; + vec2 ouv2 = uv; + vec2 ouv = uv; + //uv *= r2d(-fGlobalTime*.5); + //uv = abs(uv); + //uv -= vec2(.2+uv.y, 0.); + uv *= r2d(.1*fGlobalTime); + //uv = abs(uv); + //uv *= r2d(sin(mix(lenny(uv), length(uv), -2.)*15.-fGlobalTime)); + float stp = .2*length(uv); + vec2 uv2 = floor(uv/stp)*stp; + uv2 *= r2d(.01*fGlobalTime); + uv2 = abs(uv2); + //uv *= r2d(FFTI(.1)*10.); + //uv = abs(uv); + //uv -= vec2(.25); + + vec3 col = rdr2(uv+rdr(uv).xy*.1)*1.; + col += rdr(uv2)*.25; + col *= 1.-sat(length(uv)); + //col = mix(vec3(0.), vec3(199, 242, 58)/255., col*.4); + col = pow(col, vec3(2.45)); + //col *= vec3(199, 242, 58)/255.; + float beat = 1./8.; +// col += (mod(fGlobalTime, beat)/beat)*sat(FFTS(.1)*col)*45.; + float repy = .05; + float idy = floor((ouv.y+repy*.5)/repy); + col = mix(col, col.zxy, mod(idy+int(fGlobalTime*8.),5.)/5.); + +col = mix(col, texture(texPreviousFrame, gl_FragCoord.xy/v2Resolution.xy).xyz, .5); + col.xy *= r2d(fGlobalTime*.5); + col = abs(col); + ouv *= r2d(ouv.x*5.*sin(fGlobalTime*.5)); + ouv.y += fGlobalTime*2.1; + col = mix(col, col.zxy, sat((min(sin(ouv.y*100.), sin(ouv.x*100.))+.97)*5.)); + + float repx = .1; + ouv2.x = abs(ouv2.x); + float idx = floor((ouv2.x+repx*.5)/repx); + col *= 1.-sat((abs(ouv2.y)-.1-FFTS(idx/10.))*10.); + + out_color = vec4(col.yxz, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_goose.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_goose.glsl new file mode 100644 index 000000000..b5a88039c --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_goose.glsl @@ -0,0 +1,280 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); + + } + + mat2 Rot(float a) { + float s=sin(a), c=cos(a); + return mat2(c, -s, s, c); +} +float smin(inout float d1, inout float d2, float k ) { + float h = clamp( 0.5 + 0.5*(d2-d1)/k, 0.0, 1.0 ); + return mix( d2, d1, h ) - k*h*(1.0-h); +} +float sdcc( vec3 p, vec3 a, vec3 b, float r ) +{ + vec3 pa = p - a, ba = b - a; + float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 ); + return length( pa - ba*h ) - r; +} +float map(vec3 p) { + vec3 op = p; + + p = op; + + float base = length(p) - 2.5; + //base = min(base, nopp); + vec3 np = p; + np.x = abs(np.x); + float offset = length(np-vec3(1.8,-0.6,0)) - 1.75; + base = smin(base, offset, 1.); + np = p; + np.x = abs(np.x); + np.xy *= Rot(0.55); + float no = sdcc(np-vec3(.2,3,0), vec3(0,2,0), vec3(0,-1,0), 0.9); + base = smin(base, no, 0.25); + + return base; +} +vec3 norm(vec3 hp) { + vec3 e=vec3(1e-2,0,0); + float d = map(hp); + return normalize(vec3(map(hp + e.xyy) - d, + map(hp + e.yxy) - d, + map(hp + e.yyx) - d)); +} + +float sd5(in vec2 p, in float r, in float rf) +{ + const vec2 k1 = vec2(0.809016994375, -0.587785252292); + const vec2 k2 = vec2(-k1.x,k1.y); + p.x = abs(p.x); + p -= 2.0*max(dot(k1,p),0.0)*k1; + p -= 2.0*max(dot(k2,p),0.0)*k2; + p.x = abs(p.x); + p.y -= r; + vec2 ba = rf*vec2(-k1.y,k1.x) - vec2(0,1); + float h = clamp( dot(p,ba)/dot(ba,ba), 0.0, r ); + return length(p-ba*h) * sign(p.y*ba.x-p.x*ba.y); +} +float dot2( in vec2 v ) { return dot(v,v); } + +float sdH( in vec2 p ) +{ + p.x = abs(p.x); + + if( p.y+p.x>1.0 ) + return sqrt(dot2(p-vec2(0.25,0.75))) - sqrt(2.0)/4.0; + return sqrt(min(dot2(p-vec2(0.00,1.00)), + dot2(p-0.5*max(p.x+p.y,0.0)))) * sign(p.x-p.y); +} +vec2 uvs(vec3 p) +{ + p = normalize(p); + float x = atan(p.z, p.x) / 6.283; + float y = asin(p.y) / 3.141; + return vec2(0.5) + vec2(x,y); +} +void draw(vec2 uv, float dist, vec3 mx, inout vec3 color) +{ + float dc = fwidth(dist) * 0.5; + color = mix(color,vec3(0,0,0),smoothstep(dc,-dc,dist-0.01) ); + color = mix(color, mx, smoothstep(dc, -dc, dist)); +} +float cir(vec2 p, float radius) +{ + return length(p) - radius; +} +float tD(vec2 p, float width, float height) +{ + vec2 n = normalize(vec2(height, width / 2.0)); + return max( abs(p).x*n.x + p.y*n.y - (height*n.y), -p.y); +} +float sduc( vec2 p, float r1, float r2, float h ) +{ + p.x = abs(p.x); + float b = (r1-r2)/h; + float a = sqrt(1.0-b*b); + float k = dot(p,vec2(-b,a)); + if( k < 0.0 ) return length(p) - r1; + if( k > a*h ) return length(p-vec2(0.0,h)) - r2; + return dot(p, vec2(a,b) ) - r1; +} +float sdlr(vec2 uv, vec2 a, vec2 b, float lw) +{ + vec2 pa = uv-a, ba = b-a; + float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 ); + return length( pa - ba*h ) - lw*0.5; +} +void sceneDistance2(vec2 p, inout vec3 color) { + vec2 np = p; + np *= Rot(fGlobalTime); + //draw(p, sduc(p, .1, .05, .1 ), vec3(0.8,0.95,.43), color); + + float f = texture( texFFTSmoothed, .5 ).r * 1000; + draw(np, sd5(np, .4+(.1*f), .4), vec3(1.,0.97,.0), color); + + float angleStep = 360.0/10.; + for (int i=0; i<10; i++) { + float theta = float(i) * angleStep + (fGlobalTime*50.); + float Px = -0.065 + ((0.35 +(.1*sin(f))) * cos(radians(theta)) + (0.15 * abs(sin(fGlobalTime+(float(i)*100.)))) ); + float Py = -0.05 + ((0.35 +(.1*sin(f))) * sin(radians(theta)) + (0.15 * abs(sin(fGlobalTime+(float(i)*100.)))) ); + + float egg = sduc(p-vec2(Px, Py), .1, .05, .1 ); + float size = 12.; + float heart = sdH((p*size)-vec2(Px*size, Py*size)-vec2(0.,-0.5)); + draw(p, egg, vec3(1.,0.97,.7), color); + draw(p, heart, vec3(1.,0.,.0), color); + + } +} + + + + +void sceneDistance(vec2 p, inout vec3 color) +{ + p = p-vec2(.23, 0.5); + p *= Rot(1.55); + p.y *= 1.55; + draw(p, cir(p-vec2(.0, -0.11), 0.005), vec3(0.), color); + + vec2 np = p; + np.x = abs(np.x); + float c1 = cir(np-vec2(.15, 0.05), 0.075); + draw(p, cir(np-vec2(.15, 0.05), 0.075), vec3(1.), color); + vec2 npx = np; + npx.x *= 1.75; + draw(p, cir(npx-vec2(.25, 0.05), 0.04), vec3(0.), color); + draw(p, cir(np-vec2(.133, 0.06), 0.01), vec3(1.), color); + + np = p; + np *= Rot(2.1); + draw(p, tD(np-vec2(.04,0.0), 0.055, 0.055), vec3(0.), color); + np = p; + np.x = abs(np.x); + np *= Rot(0.4); + draw(p, sdlr(np-vec2(.15,-0.1), vec2(0.05,0.05), vec2(-0.05,0.05), 0.001), vec3(0.), color); + np *= Rot(0.5); + draw(p, sdlr(np-vec2(.175,-0.05), vec2(0.05,0.05), vec2(-0.05,0.035), 0.001), vec3(0.), color); + + +np = p; + np.x = abs(np.x); + np *= Rot(0.84); + draw(p, sduc(np-vec2(-0.025,0.13), .005, .005, .1 ), vec3(0.), color); + + +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = log(m.y+1); + + float f = texture( texFFTSmoothed, d ).r * 100; + + float r = length(uv); + vec3 color = mix( vec3(1), vec3( 173./255., 216./255., 230./255.), r+f); + + float scale= v2Resolution.y /2.; + vec2 center= gl_FragCoord.xy -v2Resolution.xy /2.; + vec2 pos; + float radius= scale /10.; + float width= 40.; + float c; + + float p= 1.; + float a= .05; + float b= .0; + d= 40.; + + float rate= .9; + float amp= scale/1.75; + + + radius *= .8; + pos= center - vec2( amp, 0.) *sin(fGlobalTime *rate); + c= width -abs(( sin( pos.x /radius)+ sin( pos.y /radius) -sin( fGlobalTime *rate) *2.5) *d); + color += vec3( vec2(0.), pow(c,p)*a +b); + + radius *= .8; + pos= center - vec2( amp, 0.) *sin( fGlobalTime *rate *.8); + c= width -abs(( sin( pos.x /radius)+ sin( pos.y /radius) -sin( fGlobalTime *rate) *2.5) *d); + color += vec3( pow(c,p)*a +b); + + radius *= .8; + pos= center - vec2( amp, 0.) *sin(fGlobalTime *rate *1.25); + c= width -abs(( sin( pos.x /radius)+ sin( pos.y /radius) -sin( fGlobalTime *rate) *2.5) *d); + color += vec3( 0., pow(c,p)*a +b, 0.); + + + + + vec3 cam = vec3( 0, 0, -12 ); + vec3 dir = normalize( vec3( uv, 1 ) ); + float t = 0.; + for( int i = 0; i < 100; ++i ) { + vec3 hp = cam + dir * t; + float d = map(hp); + t += d; + if( d < 0.0001 || t > 100.0 ) { + break; + } + } + sceneDistance2(uv, color); + if( t < 100.0 ) { + + f = texture( texFFTSmoothed, 0 ).r * 100; + + vec3 p = cam + dir * t; + p.yz *= Rot(0.1*sin(fGlobalTime*6.)); + p.xy *= Rot(-1.6); + vec2 uv2 = uvs(p); + color = vec3(1.,0.8,0.8);//newCol.rgb; + + vec3 n = norm(p); + vec3 lp = vec3(0, 1, -4); + vec3 l = normalize(lp - p); + vec3 normalizedLightDirection = normalize(lp-p); + float diffuseLightingValue = clamp( dot(n, l)*.35+.65 , 0.0, 0.65); + vec3 newColor = vec3(0.0); + newColor = vec3(255./255., 150./255.,150./255.); + + + color = newColor * vec3(diffuseLightingValue); + color /= .5; + sceneDistance(uv2, color); + + } + + + out_color = vec4(color,1);//f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_lechugafeliz.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_lechugafeliz.glsl new file mode 100644 index 000000000..517eddd08 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_lechugafeliz.glsl @@ -0,0 +1,173 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + + + +#define PI acos(-1) +#define t mod(fGlobalTime, 5.) +#define rot(a) mat2(cos(a), sin(a),-sin(a), cos(a)) +#define esf(p, s) length(p)-s +#define line(p, L) min(L, max(0., p)) +#define rep(p, S) (fract(p/S-.5)-.5)*S + +vec3 s = vec3(0.01, -4.01, -10.); +vec3 tg = vec3(0.,floor(mod(t,3.)), 0.); + +vec4 plas( vec2 v) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( t + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(t)), c * 0.15, cos( c * 0.1 + t / .4 ) * .25, 1.0 ); +} + +float box(vec3 p, vec3 s){ + p=abs(p)-s; + return max(max(p.x, p.y), p.z); +} +struct Data{ + float d, id; +}; +struct Acf{ + float d, dd; +}; +struct Ace{ + float d,dd,ddd,dddd; +}; +Acf acf = Acf(0.,0.); +Ace ace = Ace(0.,0., 0.,0.); + +float kiff(vec3 p){ + return box(p, vec3(4., 1., .4)); +} + +float smin(float a, float b, float k){ + float h = max(0., k-abs(a-b))/k; + return min(a,b)-h*h*k*.25; +} + +float ss(float tt){ + tt = tt/20.; + return 1; +} +Data m(vec3 p){ + vec3[20] pp; + p.xz *= rot(sin((t+p.x*p.x)*.0285-.615)*.5-.5); + //p.xz *= rot(sin(floor(t))); + p.yz*=rot(sin((t*.0125)*20.1415)); + p.xz*=rot(ss(t)); + p.z += t*1.; + p*=.74; + pp[0] = p; + pp[1] = p; + pp[2] = p; + p.xz = rep(p.xz,1.); + float d = esf(p.xy,.01); + float dd = esf(p.zy, .01); + + acf.d += .01/(.1+d*d)*.1; + acf.dd += .01/(.1+dd)*.7; + + vec2 gid = vec2(2.5); + vec2 idp1 = floor(pp[1].xz/gid-.5); + pp[1].y += sin(t*idp1.y)*.5-.5; + pp[1].xz = rep(pp[1].xz, gid); + + + float k1 = box(pp[1]-vec3(0.,.2,1.), vec3(1.)); + + for(float i = 0.; i < 3.; i++){ + pp[2].xz *= rot(t); + pp[2].yz*=rot(t); + //pp[2].xyz -= i*.1; + } + float ss0,ss1,ss2,ss3,ss4; + ss0 = ss1 = ss2 = ss3 = ss4 = sin(floor(t))*2-2.; + float k2 = esf(pp[2]-vec3(0., ss0, 0.), .65-plas(p.yx).x*.01); + float k3 = esf(pp[2]-vec3(ss1, 0., 0.), .45+plas(p.yz).x*.057); + float k4 = esf(pp[2]-vec3(0., 0.,ss2), .56+plas(-p.zy).x*.2541); + float k5 = esf(pp[2]-vec3(ss3, ss2, 0.), .84+plas(p.xy).x*.18561); + float k6 = esf(pp[2]-vec3(ss2,ss3, ss4), 1.); + + ace.d += .0025/(.525+k2*k2*k2); + ace.dd += .0825/(.525+k3*k3*k3); + ace.ddd += .0725/(.525+k4); + ace.dddd += .0725/(.525+k5); + + d=min(d,k1); + d=min(d,dd); + float dd1 = 1.; + dd1=smin(dd1,k2, .85); + dd1=smin(dd1,k3, .85); + dd1=smin(dd1,k4, .85); + dd1=smin(dd1,k5, .85); + dd1=smin(dd1,k6, .85); + ace.d += .015/(.025+dd1*dd1); + d = smin(dd1, d, 1.); + d *= .75; + return Data(d, 0.); +} +vec3 nm(vec3 p){ + const vec2 e = vec2(0.01, 0.); + return normalize(m(p).d- vec3(m(p-e.xyy).d,m(p-e.yxy).d,m(p-e.yyx).d)); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 p = s; + vec3 cz = normalize(tg-s); + vec3 cx = normalize(cross(cz,vec3(0., -1.,0.))); + vec3 cy = normalize(cross(cz,cx)); + vec3 r = mat3(cx,cy,cz)*normalize(vec3(-uv, .45)); + + vec3 co = vec3(0.); + float dd; + Data dt; + vec3 l = normalize(vec3(-1.)); + l.yz *= rot(sin(t)*.25-.25); + vec3 n; + for(float i = 0; i < 64; i++){ + dt = m(p); + if(dt.d < 0.01){ + n = nm(p); + float dif = max(0., dot(l, n)); + float esp = max(0., pow(dot(reflect(-l, n), -r), 20.)); + co = vec3(dif+esp); + } + if(dd > 300) co=vec3(0.); + dd += dt.d; + p += dt.d*r; + } + + co += acf.d * vec3(0.34, 0.1, 0.45)*.18525; + + co += ace.d * vec3(0., .56, .56)*.01434; + co += ace.dd * vec3(0.56, .856, .256)*.01434; + co += ace.ddd * vec3(0.345, .56, .356)*.01434; + co += ace.dddd * vec3(0.7, .256, .5656)*.01434; + co += .001+length(uv)*sin(t*18.4)*.25-.25; + + co = pow(co, vec3(1.92424))*.22; + + + out_color = vec4(co, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_nusan.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_nusan.glsl new file mode 100644 index 000000000..112fc3c38 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_nusan.glsl @@ -0,0 +1,183 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = mod(fGlobalTime, 300)*.3; + + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +float rep(float t, float s) { + return (fract(t/s+0.5)-0.5)*s; +} +vec2 rep(vec2 t, vec2 s) { + return (fract(t/s+0.5)-0.5)*s; +} +vec3 rep(vec3 t, vec3 s) { + return (fract(t/s+0.5)-0.5)*s; +} + +float rnd(float t) { + return fract(sin(t*457.884)*271.533); +} + +float rnd(vec2 t) { + return fract(dot(sin(t*457.884),vec2(271.533))); +} + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1), pow(smoothstep(0,1,fract(t)), 10)); +} + +float fft(float t) { + return texture(texFFTSmoothed, t).x; +} + +vec3 pop=vec3(0); +float map(vec3 p) { + + vec3 bp=p; + + p.xz -= normalize(p.xz) * (80*curve(time, 0.1)/(0.01+length(p))); + + p.y += time*5 + curve(time, 7)*19; + + p.y = rep(p.y, 20); + + float oo=5; + p.x-=oo; + p.xz *= rot(bp.y*0.1); + p.x+=oo; + + float d3=1000; + float t=time*.3+curve(time, 0.5); + float s=1.9 + curve(time+bp.y*0.01, 0.3)*6; + for(int i=0; i<5; ++i) { + p.xz *= rot(0.7+i*.7+t); + p.yz *= rot(0.3+i+curve(time, 0.5)*7); + p.xz = abs(p.xz)-s; + s*=0.9; + + d3 = min(d3, length(p.xy)-.3); + } + + float ss=smoothstep(50,3,length(bp)); + float d = box(p, vec3(.2+ss*.8)); + float d2 = d; + pop+=vec3(0.5,0.7,1)*0.3/(1.5+abs(d3)); + //d=min(d, d3); + vec3 p2=bp; + p2.xz *= rot(sin(time*3 - length(p2.xz)*0.01)*3); + p2.xy *= rot(sin(time*0.5 - length(p2.xz)*0.01)*3); + d = min(d, abs(box(p2, vec3(10)))); + p2 += sin(d2*0.5); + d = min(d, length(p2.xy)-1); + d = min(d, length(p2.zy)-1); + + return d; +} + +void cam(inout vec3 p) { + p.yz *= rot(sin(time*0.2)*0.6); + p.xz *= rot(time*0.1); +} + +vec3 norm(vec3 p, float s) { + vec2 off=vec2(s, 0); + return normalize(vec3(map(p+off.xyy), map(p+off.yxy), map(p+off.yyx))-vec3(map(p-off.xyy), map(p-off.yxy), map(p-off.yyx))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv.y -= curve(time, 0.2)*0.1; + + + vec2 uv2 = uv; + for(int i=0; i<3; ++i) { + uv2 *= rot(time*.3+i); + uv2.x=abs(uv2.x); + } + float gr=25+50 * curve(time+.7,.4); + //uv += (fract(uv2*gr)-.5)*.03*curve(time, 0.3); + + //uv=floor(uv*gr)/gr; + + //uv *= 1 - 0.3 * curve(time+.1, 0.2); + + float dither=mix(0.9,1.,rnd(uv)); + + vec3 s=vec3(0,0,-50); + vec3 r=normalize(vec3(uv, 1)); + + cam(s); + cam(r); + + vec3 col=vec3(0); + + vec3 p=s; + float dd=0; + vec3 diff=vec3(.3,0.7,1); + float t2 = time - floor(abs(uv.x)*30); + diff.xz *= rot(0.7+t2*.3); + diff.xy *= rot(0.3+t2*.1); + for(int i=0; i<90; ++i) { + + float d=abs(map(p)); + if(d<0.001) { + vec3 n=norm(p, 0.01); + //r=reflect(r,n); + diff.xz *= rot(0.7+time*.3); + diff.xy *= rot(0.3+time*.1); + diff=abs(diff); + if(length(p.xz)<5) { + + break; + } + d=0.1; + } + if(d>100.0) break; + + p+=r*d*dither; + dd+=d*dither; + col += diff*0.001/(0.1+abs(d)); + + } + + float fog=1-clamp(dd/100.0,0,1); + col += diff * 3 * length(norm(p, 0.05)-norm(p, 1.1)) * fog; + col += pop * 0.09 * curve(time, .05); + col=smoothstep(0,1,col); + col = pow(col, vec3(0.4545)); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_provod.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_provod.glsl new file mode 100644 index 000000000..fbfca5a0f --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_provod.glsl @@ -0,0 +1,177 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 E=vec3(0.,.001,1.); +float VM(vec3 v){return max(max(v.x,v.y),v.z);} +#define box(v,s) VM(abs(v)-(s)) +#define rm(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define T(S,V) texture(S,(V+.5)/textureSize(S,0)) +#define ffti(v) T(texFFTIntegrated,v).r +#define ffts(v) T(texFFTSmoothed,v).r +#define no(v) T(texNoise,v).r +float t=fGlobalTime; +float hash(float f){return fract(sin(f)*58794.4238);} +float hash(vec2 f){return hash(dot(f,vec2(17.543,119.5435)));} + +float g1 = 0.; + +float he(vec2 p) { + return no(p * 3.) * 20.; +} + +vec3 cp; +float w(vec3 P) { + float d = 1e6; + vec3 p = P; + + //if (false) + { + //p.y -= 1.; + p -= cp; + p.xz *= rm(ffti(5.)*.5); + p.xy *= rm(ffti(7.)*.3); + float b = box(p, vec3(.4)); + g1 += 1. / (1. + abs(b)); + d = min(d, b); + } + + { + p = P; + float h = he(p.xz); + float e = p.y - h + 3.; + d = min(d, e); + d = min(d, p.y); + } + + + return d; +} + +float tr(vec3 O, vec3 D, float l, float L){ + g1 = 0.; + for (int i=0;i<100;++i){ + float d=w(O+D*l);l+=d; + if (d<.001*l||l>L)break; + } + return l; +} + +vec3 wn(vec3 p){ + return normalize(vec3( + w(p+E.yxx)-w(p-E.yxx), + w(p+E.xyx)-w(p-E.xyx), + w(p+E.xxy)-w(p-E.xxy))); +} + +vec2 curl(vec2 p) { + float dd = .1; + vec2 v = vec2( + no(p+E.zx*dd) - no(p-E.zx*dd), + no(p+E.xz*dd) - no(p-E.xz*dd) + ) / (dd * 2.); + + return vec2(v.y, -v.x); +} + +vec3 sd = normalize(vec3(-1., .2, -.7)); +vec3 sc = vec3(.9, .6, .3); +vec3 bg(vec3 O, vec3 D){ + if (D.y < 0.) + return vec3(1.); + + float l = (50. - O.y) / D.y; + vec2 p = O.xz + D.xz * l; + + vec3 b = vec3(.2, .5, .9); + + b = mix(b, vec3(1.), smoothstep(.2, .4, no(p*2.))); + b = mix(vec3(1.), b, pow(max(0., D.y+.01), .4)); + return b; +} + +vec4 pp(vec2 p) { + vec4 c=T(texPreviousFrame, p); + c.rgb = pow(c.rgb, vec3(2.)); + return c; +} + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + t -= .05 * hash(uv+t*.01); + + vec3 O=vec3(0.,6.,5.),D=normalize(vec3(uv, -1.)),C=vec3(0.); + + O.z -= t * 8. + ffti(3.) * 4.; + D.xy *= rm(sin(ffti(.7) * .1) * .4); + D.xz *= rm(.3);//sin(fft*.1)*.2); + + cp = O + vec3(-5., sin(t), -10. + 3.*sin(t*.4) - 4. * ffts(6.)); + + vec3 th=vec3(1.); + for(int r=0; r<2; ++r) { + float L=100.,l=tr(O,D,0.,L); + vec3 sky=bg(O, D); + vec3 c = vec3(0.); + + float gf = exp(g1 * .2) * .2; + c += vec3(.6,.4,.2) * gf; + + if (l < L){ + vec3 p=O+D*l,n=wn(p); + vec3 mc=vec3(.3,.7,.4); + + if (p.y < .05) + mc = vec3(.2, .6, .9); + + float sl=10., ss = step(sl, tr(p,sd,.05,sl)); + c += ss * mc * sc * ( + max(0., dot(n,sd)) + + pow(max(0., dot(n, normalize(sd-D))), 30.) + ); + c = mix(c, sky, l/L); + + C += th * c; + + if (p.y > .05) + break; + + O = p + .1 * n; + D = reflect(D, n); + th *= mc; + } else { + c += sky; + //C += vec3(.6,.4,.2) * exp(g1) * .2; + C += th * c; + break; + } + } + + //C=vec3(l/L); + + uv = gl_FragCoord.xy; + uv += curl(uv * .05) * 300.; + vec4 pc = pp(uv); + C = mix(C, pc.rgb, .8); + + out_color = vec4(sqrt(C), 0.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_totetmatt.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_totetmatt.glsl new file mode 100644 index 000000000..6c1722ed9 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_totetmatt.glsl @@ -0,0 +1,158 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texDfox; +uniform sampler2D texDojoe; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +// +// ** La jeunesse emmerde le Front National ** +// + float bpm = texture(texFFTIntegrated,.3).r*2.+fGlobalTime*.1; +float smin(float a,float b,float r){ + + float k = max(0.,r-abs(a-b)); + return min(a,b) - k*k*.25/r; + } +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} +vec3 pal(float a){return .5+.5*cos(6.28*(1*a+vec3(0.,.3,.6)));} +float ease_out(float a){return 1.-pow(a-1.,2);} +#define PI 3.1415 +float pModPolar(inout vec2 p, float repetitions) { + float angle = 2*PI/repetitions; + float a = atan(p.y, p.x) + angle/2.; + float r = length(p); + float c = floor(a/angle); + a = mod(a,angle) - angle/2.; + p = vec2(cos(a), sin(a))*r; + // For an odd number of repetitions, fix cell index of the cell in -x direction + // (cell index would be e.g. -5 and 5 in the two halves of the cell): + if (abs(c) >= (repetitions/2)) c = abs(c); + return c; +} + +vec2 sdf(vec3 p){ + vec2 h; + vec3 op = p; + vec2 q = vec2(length(p.xz)-5.,p.y); + h.x = -(length(q)-4. + -dot(asin(sin(p*2)),asin(cos(p.yzx*9)))*.1 + //-min(20.,texture(texFFTSmoothed,.3+op.y*.01).r*20) + ) + ; + h.x *=.7; + h.y = 1; + + vec3 tp = op; + tp.y +=dot(sin(tp*7),cos(tp.zxy*7))*.1; + vec2 r = vec2(length(tp.xz)-3.,tp.y); + r.x = abs(r.x)-.2; + r*=rot(atan(op.x,op.z)+bpm); + r.y = abs(r.y)-.2+(sin(atan(op.x,op.z)*4+bpm*4)*.2+.2); + + vec2 t ; + t.x = length(r)-.1; + t.y = 2.; + + + h = t.x< h.x ? t:h; + tp = op; + + tp.xz*=rot(asin(sin(-fGlobalTime))); + float id = pModPolar(tp.xz,4); + tp.yz *= rot(sin(id+bpm)*.5); + tp.x -=3;; + t.x = length(tp.xz)-.1; + + t.y =3.; + + h.x = smin(t.x,.8*h.x,.5); + return h; + +} + +#define q(s) s*sdf(p+s).x + +vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yyx)+q(e.yxy)+q(e.xxx));} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv*=1.1;; + uv *=rot(fGlobalTime*.5); + bpm = floor(bpm)+ease_out(fract(bpm)); + float id = floor(uv.x+-bpm+length(uv)+dot(sin(uv*20),cos(uv.yx*36))*.1); + //uv*= fract(-bpm+length(uv)+dot(sin(uv*4),cos(uv.yx*4))*.1); + vec3 col = vec3(.1); + vec3 ro = vec3(1.,1.,-3.); + ro.xz *=rot(-bpm); + vec3 rt = vec3(1.,0,0.); + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z,vec3(0.,-1,0.))); + vec3 y = normalize(cross(z,x)); + + vec3 rp = ro; + vec3 rd = mat3(x,y,z)*normalize(vec3(uv,1.-.8*sqrt(length(uv)))); + vec3 light = vec3(1.,2.,-3.); + float dd =0.; + vec3 acc = vec3(0.); + for(float i=0;i<128;i++){ + + vec2 d = sdf(rp); + if(d.y == 2. ) { + float tt = texture(texFFT,.3).r*200; + + vec3 yellow = vec3(.7,.7,.0); + + acc +=mix(vec3(.7,.7,.0), vec3(.2,.2,.5),sin(atan(rp.x,rp.z)*4)*.5+.5)*exp(-abs(d.x))/(60.-min(59,tt*10)); + + d.x = max(.001,abs(d.x)); + } + rp+=rd*d.x; + + dd+=d.x; + if(dd >50) break; + + if(d.x< .0001){ + vec3 n = norm(rp,.001); + vec3 n2 = norm(rp,.002); + float dif = max(0.,dot(normalize(light-rp),n)); + float spc = pow(max(0.,dot(rd,reflect(normalize(light),n))),2.); + if(d.y == 1) { + col = vec3(1.-fract(fGlobalTime)) * dif * + mod(floor(fGlobalTime*.5+rp.x*.01),2)==0 ? texture(texRevision,rp.xy*vec2(1.,-1)*.25+fGlobalTime*.1).rgb : texture(texDojoe,rp.xy*vec2(1.,-1)*.25+fGlobalTime*.1).rgb + + ; + } else if(d.y == 3) { + + col = vec3(1.)*dif; + } + + col +=smoothstep(.1,.11,length(n-n2))*dif+spc*.5*pal(spc); + break; + + + } + } + +/* out_color = vec4(mod(id,2)==0? col+acc : + + pal(floor( 10*length(col+acc+uv.x)+fGlobalTime+length(uv))*.0125+.4),1.); + */ + out_color = vec4(col+acc,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_wbcbz7.glsl b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_wbcbz7.glsl new file mode 100644 index 000000000..7734e8d18 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_jam_revision_online/wayfinder/2022_04_revision_jam_wayfinder_wbcbz7.glsl @@ -0,0 +1,155 @@ +#version 410 core + +/* + +TEST TEST TEST + +IDW DA NYA +AMIIIIIGAAAAA +BK RULEZ FOREVER + +FUCK THE WAR + +GREETZ TO DIVERGREETZ TO DIVERGREETZ TO DIVERGREETZ TO DIVERGREETZ TO DIVERGREETZ TO DIVER +GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER GREETZ TO DIVER + +greets to everyone and much kudos to UA bois: TS-Labs, VBI, noob, robus, ivanpirog, keen and the others +fuck the war, fuck the politics! + +funked up rings from bottom right, kinda 2002ish -_- + +--wbcbz7 18.04.2022 @ revision satellites 2022 +*/ + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texDfox; +uniform sampler2D texDojoe; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define PI 3.14159 + +float hash(vec2 uv) {return fract(sin(dot(vec2(54001.52, 520042.2), uv))* 2003.5); } + +float tt = mod(fGlobalTime + 0.01*hash(gl_FragCoord.xy/v2Resolution), 180.0); + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define REP(N, T) T N(T p, T r) { return T(mod(p+.5*r, r)-.5*r); } + +REP(rep ,float) +REP(rep2 ,vec2) +REP(rep3 ,vec3) + +float box(vec3 p, vec3 b) { + vec3 q = abs(p) - b; + return length(max(q, 0.0)) + min(max(max(q.x, q.y), q.z), 0.0); +} + +mat2 rot2(float a) {return mat2(cos(a), -sin(a), sin(a), cos(a));} + +vec3 cart2cyl(vec3 a) {return vec3(length(a.xy), atan(a.y, a.x), a.z);} + +float map(vec3 p) { + p = rep3(p, vec3(400.0, 2000, 20)); + p.xz *= rot2(0.06*tt); + p = cart2cyl(p); + p.xz *= rot2(0.01*tt); + float t = 0.; + + t = box(rep3(p + vec3(5.5, 0.1+1*sin(tt*0.3), 0.0), vec3(25.0+30*sin(tt*0.4), PI/4, 12.)), vec3(0.1, 0.1, 4.0)); + t = min(t, box(rep3(p + vec3(5.1, 5+1*sin(tt*0.3), 0.0), vec3(21.0+30*sin(tt*0.1), PI/2, 26.)), vec3(0.2, 0.1, 4.0))); + t = max(t, -box(rep3(p + vec3(1.1, 5+1*sin(tt*0.3), 0.0), vec3(11.0+30*sin(tt*0.1), PI/6, 26.)), vec3(0.2, 0.1, 16.0))); + + + return t; +} + +vec2 tr(vec3 o, vec3 d) { + float t = 0; + float acc = 0; + + vec3 p = o; + + for (int i = 0 ; i < 128; i++) { + p = o + d*t; + float ct = max(abs(map(p)), 0.001); + acc += exp(-2.0 * ct) * ((mod(p.z + tt*1.4, 11) < 10) ? 2 : 1); + t += ct; + } + + return vec2(t, acc); +} + +vec3 getCam(vec2 uv, float a, float sp) { + float f = 1.0 / (a * 2.0 * PI); + float r = length(uv); + float phi = atan(uv.y, uv.x), theta = atan(r/(sp*f))*sp; + + return vec3 ( + sin(theta)*cos(phi), + sin(theta)*sin(phi), + -cos(theta) + ); +} + +mat3 la(vec3 o, vec3 e, vec3 up) { + vec3 w = normalize(e - o); + vec3 u = normalize(cross(w, up)); + vec3 v = normalize(cross(u, w)); + + return mat3(u,v,w); +} + +vec3 colorme(float t) { + vec3 u = vec3(0.3, 0.2, 1.0); + vec3 a = vec3(0.9, 0.9, 0.2); + + vec3 b = vec3(1); + vec3 y = vec3(1,0,0); + + return clamp(smoothstep(u, a, vec3(.5*sin(t*0.4)+.5)), vec3(0.), vec3(1)); +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv.x += 0.1*fract(sin(fGlobalTime*4.6)*67.5*(round(uv.y*32)/32)) * texture(texFFT, 0.02).r; + uv.y += 0.1*fract(sin(fGlobalTime*4.6)*47.5*(round(uv.y*32)/32)) * texture(texFFT, 0.01).r; + + float adj = tt*50.0; + + vec3 o = 6*vec3(sin(tt*0.2), cos(tt*1.24), 0.0) + vec3(0,0, 6 + adj + 3*sin(tt*1.2)); + vec3 e = 1*vec3(sin(tt*1.24), cos(tt*0.3), 0.0) + vec3(0,0, + adj); + + o += 0.5*hash(uv)*sin(tt*1.4); + + vec3 r = getCam(uv,0.3*sin(tt*0.3)*cos(tt*0.5) + 1.0, 0.2*sin(tt*0.3)*cos(tt*0.5) + 1.0)*la(o, e, vec3(0,0,1)); + //vec3 r = getCam(uv, 0.5, 1.0)*la(o, e, vec3(0,0,1)); + //vec3 r = normalize(vec3(uv, -1.5))*la(o, e, vec3(0,0,1)); + + vec2 t = tr(o, r); + vec3 p = o+t.y*r; + + + vec3 color = vec3((60 / (t.x*t.x)) * t.y); + + if (mod(fGlobalTime, 2) < 1.5) out_color = vec4(pow(color/(1+color), vec3(0.45)), 1.0); + else + out_color = vec4(pow(colorme(t.x*0.1+tt*0.3) * color/(1+color), vec3(0.45)), 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_evvvvil.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_evvvvil.glsl new file mode 100644 index 000000000..140abfd68 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_evvvvil.glsl @@ -0,0 +1,134 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(-.00035,.00035);float t,tt,b,bb,g,gg,a,s;vec3 pp,op,tp,po,no,al,ld; +vec4 c=vec4(0,25,10,.1); +float smin(float a,float b,float k){float h=max(0,k-abs(a-b));return min(a,b)-h*h*.25/k;} +float smax(float a,float b,float k){float h=max(0,k-abs(-a-b));return max(-a,b)+h*h*.25/k;} +vec2 smin(vec2 a,vec2 b,float k){float h=clamp(.5+.5*(b.x-a.x)/k,0.,1.);return mix(b,a,h)-k*h*(1.-h);} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +float cy(vec3 p,vec3 r){return max(abs(length(p.xz)-r.x)-r.y,abs(p.y)-r.z);} +vec2 fb( vec3 p) +{ + b=sin(p.y*15)*.03; + vec2 h,d,t=vec2(length(p)-5,0); + t.x=smax(length(p.xz)-3,t.x,0.5); + pp=p;pp.xz*=r2(sin(p.y*.4-tt)*.4); + pp.xz=abs(pp.xz)-3; + h=vec2(cy(pp,vec3(.5,.2,7.)),1); + h.x=smin(h.x,cy(abs(pp)-.75,vec3(.2-b,.05,6.)),0.5); + + tp=pp; + tp.xz*=r2(.785); + tp=abs(tp); + tp.xz*=r2(.785); + tp.y=mod(tp.y,2)-1.; + d=vec2(cy(tp.yxz,vec3(.1,.01,2.5)),0); + tp.xz*=r2(.785); + tp=abs(tp)-1.8; + d.x=smin(d.x,cy(tp,vec3(.1-b*.5,.05,3.)),.3); + d.x=max(d.x,abs(p.y)-6); + + pp.y=mod(pp.y-tt*2.,3)-1.5; + pp.xz*=r2(-tt); + pp.xz=abs(pp.xz)-max(0,abs(p.y*.15)-1.5); + s=length(pp); + g+=0.5/(0.1+s*s*20); + h.x=smin(h.x,s,1.); + h.x=smin(h.x,length(pp.xz)-.02,.2); + h.x=smin(h.x,max(length(pp.xz)-20,2.5),p.y*.5-5); + + + t=smin(t,h,1.5); + t=smin(t,d,.5); + tp.y=mod(p.y-tt*4.,4)-2; + h=vec2(length(tp),1); + gg+=0.2/(0.1+h.x*h.x*100); + t=smin(t,h,.5+p.y*0.05); + t.x*=0.6; + return t; +} +vec2 mp( vec3 p) +{ + + vec2 h,t=fb(p); + h=fb(p*.3); + h.x/=.3; + t=smin(t,h,1.5); + + return t; +} +vec2 tr( vec3 ro,vec3 rd ) +{ + vec2 h,t=vec2(.1); + for(int i=0;i<128;i++){ + h=mp(ro+rd*t.x); + if(h.x<.0001||t.x>60) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>60) t.y=-1; + return t; +} +#define a(d) clamp(mp(po+no*d).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +tt=mod(fGlobalTime,62.83)*.5; + //float f = texture( texFFT, d ).r * 100; + b=ceil(cos(tt*.4)); + vec3 ro=mix( + vec3(1,10+sin(tt*.4)*11,cos(tt*.4)*2), + vec3(cos(tt*.4)*8,10+sin(tt*.4)*12,sin(tt*.4)*8), + + b), + cw=normalize(vec3(0,12+6*b,0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + co=fo=vec3(.17,.13,.12)-length(uv)*.2-rd.y*.1; + + z=tr(ro,rd);t=z.x; + if(z.y>-1){ + po=ro+rd*t; + ld=normalize(ro-po); + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x); + al=mix(vec3(.4,.6,.7),vec3(.7,.5,.3),z.y); + float dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),40); + + co=mix(sp+al*(a(.1)*a(.5)+.2)*(dif+s(2)),fo,min(fr,.5)); + co=mix(fo,co,exp(-.00002*t*t*t)); + } + co+=g*.2*vec3(.1,.2,.5)+gg*.2*vec3(.9,.5,.3); + + //IM DONE THANKX FOR WATCHING + //MUCH LOVE GOES TO JETLAG: PROVOD, KEEN, DREW + //I HOPE YOU GUYS ARE SAFE + //FUCK THE WAR!!! + + + out_color = vec4(pow(co,vec3(.45)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_exca.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_exca.glsl new file mode 100644 index 000000000..5712ba684 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/final/2022_04_revision_final_exca.glsl @@ -0,0 +1,250 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float ffts = 0.0; +float ffti; +float beat; +float beatstep; +float bar; + +float glow = 0.0; + +vec3 getcam( vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize( target - cam); + vec3 right = normalize( cross( vec3(0,1,0), forward)); + vec3 up = normalize( cross( forward, right)); + return normalize( forward*fov + uv.y * up + uv.x * right); +} + +float sphere(vec3 p , float r) +{ + return length(p)-r; +} + +float ground(vec3 p, float h) +{ + return p.y-h; +} +float wall(vec3 p, float x) +{ + return p.x-x; +} + +vec3 repeat( vec3 p, vec3 q) +{ + return mod(p +0.5*q, q) -q*0.5; +} + +vec3 map( vec3 p) +{ + float g = ground(p, 0.0); + float wl = wall(p, -4.0); + float wr =-wall(p, 4.0); + g = min(wl,g); + g = min(wr,g); + + + vec3 bp = repeat( p, vec3( 0.0, 0.0, 10.0)); + + vec3 bounce = vec3( 0.0, -abs(sin(time*1.5)*0.5)-0.5, 0.0); + float s = sphere(bp+bounce, 0.5+ffts*15.0); + + vec3 bounce2 = vec3( 2.0, -abs(sin(time*0.5)*1.25)-0.5, 2.0); + float s2 = sphere(bp+bounce2, 0.5+ffts*15.0); + vec3 bounce3 = vec3( -1.5, -abs(sin(time*1.25)*1.1)-0.5, 0.0); + float s3 = sphere(bp+bounce3, 0.5+ffts*15.0); + vec3 bounce4 = vec3( 0.7, -abs(sin(time*1.75))-0.5, -3.0); + float s4 = sphere(bp+bounce4, 0.5+ffts*15.0); + + s = min( s, s2); + s = min( s, s3); + s = min( s, s4); + + + float mat = g < s ? 1.0 : 2.0; + + s = min(g,s); + + + + return vec3( s, mat, 1.0); +} + +vec3 march( vec3 cam, vec3 rd, out vec3 p, out float t) +{ + for(int i = 0;i < 250; i++) + { + p = cam + rd*t; + vec3 r = map(p); + t += r.x*0.5; + if( r.x < 2.0){ + glow +=0.05; + } + + if(r.x < 0.001){ + return r; + } + if(t > 50.0){ + t = 50.0; + return vec3(-1.0); + } + } + return vec3(-1.0); +} + +vec3 normal( vec3 p) +{ + vec3 c = map( p); + vec2 e = vec2(0.01, 0.0); + return normalize( vec3( + map(p+e.xyy).r, + map(p+e.yxy).r, + map(p+e.yyx).r + + )-c.x); +} + +float light(vec3 p, vec3 l, vec3 n) +{ + return max(0.0, dot( n, normalize(l-p))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 vuv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + ffts = texture(texFFTSmoothed, 0.1).r; + ffti = texture(texFFTIntegrated, 0.1).r; + + beat = floor( fGlobalTime * 136.0/60.0); + beatstep = fract( fGlobalTime * 136.0/60.0); + bar = floor( beat / 4.0); + + time = fGlobalTime*0.1 + ffti*2.5; + + vec3 col = vec3(0.0); + vec3 cam = vec3(0,2,2); + + cam += abs(sin(bar)*2.5); + + + vec3 target = vec3(0,1,-5); + vec3 light1 = vec3(sin(time)*10.0,10.0,0); + float fov = sin(bar*3.1)*1.5 + 3.0; + + + + + + vec3 rd = getcam( cam, target, uv, fov); + vec3 p = cam; float t = 0.0; + vec3 res = march( cam, rd, p, t); + + vec3 n = normal(p); + + if(res.y > 1.5) + { + vec3 refrd = reflect( rd, n); + vec3 refp = p; + float reft = 0.0; + vec3 refres = march( p + refrd*0.01, refrd, refp, reft); + vec3 refn = normal( refp); + + vec3 refc = vec3(0.0); + if(refres.y > 1.5) + { + vec3 rrefrd = reflect( refrd, n); + vec3 rrefp = refp; + float rreft = 0.0; + vec3 rrefres = march( refp + rrefrd*0.01, rrefrd, rrefp, rreft); + vec3 rrefn = normal( rrefp); + + vec3 refc = vec3(0.0); + if(rrefres.y > 1.5) + { + vec2 pat = vec2( + step( mod(time+ rrefp.x+rrefp.y, 1.0), 0.5), + step( mod(-time+ rrefp.z, 1.0), 0.5) + ); + + refc = mix( vec3(1.0, 0.5, 0.0), vec3(0.0, 0.5, 1.0), pat.x+pat.y) * vec3(1.0)*(0.5+light(rrefp,light1,rrefn)*0.75); + + } + else + { + vec2 pat = vec2( + step( mod(time+ rrefp.x+rrefp.y, 1.0), 0.5), + step( mod(-time+ rrefp.z, 1.0), 0.5) + ); + + refc = mix( vec3(1.0, 0.5, 0.0), vec3(0.0, 0.5, 1.0), pat.x+pat.y) * vec3(1.0)*(0.5+light(rrefp,light1,refn)*0.75); + + } + col = mix(col, refc, 0.5); + + } + else + { + vec2 pat = vec2( + step( mod(time+ refp.x+refp.y, 1.0), 0.5), + step( mod(-time+ refp.z, 1.0), 0.5) + ); + + col = mix( vec3(1.0, 0.5, 0.0), vec3(0.0, 0.5, 1.0), pat.x+pat.y) * vec3(1.0)*(0.5+light(refp,light1,refn)*0.75); + + } + col = mix(col, refc, 0.5); + + + } + else if(res.y > -0.5){ + vec2 pat = vec2( + step( mod(time+ p.x+p.y, 1.0), 0.5), + step( mod(-time+ p.z, 1.0), 0.5) + ); + + col = 0.5* mix( vec3(1.0, 0.5, 0.0), vec3(0.0, 0.5, 1.0), pat.x+pat.y) * vec3(1.0)*(0.5+light(p,light1,n)*0.75); + } + + vec3 previous = texture( texPreviousFrame, vuv).rgb; + + col += glow*0.1*vec3(1.0, 0.5, 0.0); + + col += previous * 0.5 + smoothstep(0.0, 0.1, ffts); + + out_color = vec4( col, 1.0); + + } + + + + + + + + + + + \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_blackle.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_blackle.glsl new file mode 100644 index 000000000..1254c1ce6 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_blackle.glsl @@ -0,0 +1,142 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float t =0; +float ot = 0; +#define ro(r) mat2(cos(r),-sin(r),sin(r),cos(r)) + +float linedist(vec2 p, vec2 a, vec2 b) { + float k = dot(p-a,b-a)/dot(b-a,b-a); + return distance(p,mix(a,b,clamp(k,0,1))); +} + +float doodad(vec3 p, vec2 a, vec2 b, float s) { + s/=2.; + float wire = max(min(length(p.yz-a)-.04, length(p.yz-b)-.04),abs(p.x)-s-.04); + return min(max(linedist(p.yz,a,b)-.05,abs(abs(p.x)-s)-.02),wire); +} + +vec2 poop(vec2 a, vec2 b, float d1, float d3, float side) { + float d2 = distance(a,b); + float p = (d1*d1+d2*d2-d3*d3)/d2/2; + float o = side*sqrt(d1*d1-p*p); + return a + mat4x2(-p,-o,o,-p,p,o,-o,p)*vec4(a,b)/d2; +} + +float scene(vec3 p) { + float dist = 1e4; + vec2 D = ro(t*7.)*vec2(.15,0); + p.x-=0.025; + { + float side = 1.; + vec2 M = vec2(-.4*side,0); + vec2 a = poop(M,D,.4,.6,side); + vec2 b = poop(M,D,.4,.6,-side); + vec2 c = poop(M,a,.4,.5,side); + vec2 d = poop(b,c,.35,.4,side); + vec2 e = poop(b,d,.4,.6,side); + + dist = min(dist, doodad(p,D,a,.0)); + dist = min(dist, doodad(p,M,a,.1)); + dist = min(dist, doodad(p,D,b,.2)); + dist = min(dist, doodad(p,M,b,.3)); + dist = min(dist, doodad(p,b,d,.0)); + dist = min(dist, doodad(p,M,c,.0)); + dist = min(dist, doodad(p,c,d,.1)); + dist = min(dist, doodad(p,b,e,.1)); + dist = min(dist, doodad(p,c,a,.2)); + dist = min(dist, doodad(p,d,e,.2)); + } + p.x+=0.05; + { + float side = -1.; + vec2 M = vec2(-.4*side,0); + vec2 a = poop(M,D,.4,.6,side); + vec2 b = poop(M,D,.4,.6,-side); + vec2 c = poop(M,a,.4,.5,side); + vec2 d = poop(b,c,.35,.4,side); + vec2 e = poop(b,d,.4,.6,side); + + dist = min(dist, doodad(p,D,a,.0)); + dist = min(dist, doodad(p,M,a,.1)); + dist = min(dist, doodad(p,D,b,.2)); + dist = min(dist, doodad(p,M,b,.3)); + dist = min(dist, doodad(p,b,d,.0)); + dist = min(dist, doodad(p,M,c,.0)); + dist = min(dist, doodad(p,c,d,.1)); + dist = min(dist, doodad(p,b,e,.1)); + dist = min(dist, doodad(p,c,a,.2)); + dist = min(dist, doodad(p,d,e,.2)); + } + return dist; + + return length(p)-1; +} + +vec3 norm(vec3 p) { + mat3 k = mat3(p,p,p)-mat3(0.001); + return normalize(scene(p)-vec3(scene(k[0]),scene(k[1]),scene(k[2]))); +} +float bpm = 127; +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + out_color = vec4(0); + uv += texture(texNoise,uv*6).xy*0.01; + + float m = 2*60/bpm; + float rng = floor(m*fGlobalTime)/m; + float w = fGlobalTime - rng; + t =rng + mix(pow( w,3.),w,.8); + ot =t ; + t += fract(cos(rng)*456)*3; + + vec3 cam = normalize(vec3(1.8+cos(rng*45)*.5,uv)); + vec3 init = vec3(-3,cos(rng*445)*.3,-.2); + + float ry = sin(cos(rng*64)*100)*.3; + cam.xz*=ro(ry); + init.xz*=ro(ry); + float rz = t*.5 + cos(rng*64)*100; + cam.xy*=ro(rz); + init.xy*=ro(rz); + + vec3 p = init; + bool hit = false; + bool trig = false; + for (int i = 0; i < 50 && !hit; i++) { + float dist = scene(p); + hit = dist*dist < 1e-6; + if (!trig) trig = dist<0.005; + p += cam*dist; + } + float v = 1-dot(uv,uv)*.5; + vec3 n = norm(p); + vec3 r = reflect(cam,n); + float fact = dot(cam,r); + vec2 grid = abs(asin(sin(uv*40.))); + float g =step(1.55,max(grid.x,grid.y)); + float f = step(.8,fact) + step(.4,fact)*step(.6,cos(uv.y*1000)); + out_color.xyz = min(vec3(1),hit ? vec3(f) : vec3(trig?1:g))*.8; + out_color.xyz += texture(texRevision,clamp(ro(ot)*(uv*6+vec2(4.2,2))+.5,0,1)).xyz; + out_color*=v; +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_evvvvil.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_evvvvil.glsl new file mode 100644 index 000000000..648506255 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_evvvvil.glsl @@ -0,0 +1,131 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(-.00035,.00035);float t,tt,b,bb,g,gg,r,a;vec3 op,pp,po,no,al,ld; +vec4 kp,c=vec4(0,5,20,.1); +float smin(float a,float b,float k){float h=max(0.,k-abs(a-b));return min(a,b)-h*h*.25/k;} +float smax(float a,float b,float k){float h=max(0.,k-abs(-a-b));return max(-a,b)+h*h*.25/k;} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +vec2 mp( vec3 p) +{ + op=p; + bb=1-(sin((p.z+tt*4.)*.064)*.5+.5); + p.x=abs(p.x)-15*bb; + p.xy*=r2(1.57*bb); + p.z=mod(p.z+tt*4.,50)-25; + pp=p; + pp.xz=abs(pp.xz)-7.3; + vec2 h,t=vec2(length(pp)-2.5,0); + t.x=smin(t.x,length(pp-1.6)-0.6,0.5); + t.x=smax(length(pp-1.7)-0.3,t.x,0.5); + h=vec2(length(pp-1.5)-0.5,2); + t=t.x60) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>60) t.y=-1; + return t; +} +#define a(d) clamp(mp(po+no*d).x/d,.0,1.) +#define s(d) smoothstep(.0,1.,mp(po+ld*d).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + tt=mod(fGlobalTime,70); + + b = texture( texFFTSmoothed, 0.05).r * 50; + gg = texture( texFFTSmoothed, 0.2).r * 50; + + vec3 ro=vec3(cos(tt*0.1)*13,13-sin(tt*0.4)*8,-10), + cw=normalize(vec3(0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + co=fo=vec3(.14,.13,.12)-length(uv)*.15-rd.y*.1; + z=tr(ro,rd);t=z.x; + if(z.y>-1){ + po=ro+rd*t; + ld=normalize(ro-po); + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x); + al=mix(vec3(.3,.4,.7)-r*15,vec3(.1)-r*15,z.y*1.3); + if(z.y>1) al=vec3(1); + float dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),40); + co=mix(sp+al*(a(.1)*a(.5)+.2)*(dif+s(2)),fo,min(fr,.5)); + co=mix(fo,co,exp(-.00005*t*t*t)); + + } + co+=g*.2*vec3(.9,.5,.1); + co=mix(co,co.xzy,length(uv)*.5); + out_color = vec4(pow(co,vec3(.45)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_exca.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_exca.glsl new file mode 100644 index 000000000..93f617456 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_exca.glsl @@ -0,0 +1,206 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + + float fft = 0.0; + float ffts = 0.0; + float ffti = 0.0; + float beat = 0.0; + float beatstep = 0.0; + float bar = 0.0; + + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 texmap( vec3 p, vec3 n) +{ + return mat3( texture(texNoise, p.yz).rgb, texture(texNoise, p.xz).rgb, texture(texNoise, p.xy).rgb) * n; +} + +vec3 getcam(vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize( target - cam); + vec3 right = normalize(cross(vec3(0,1,0), forward)); + vec3 up = normalize( cross(forward, right)); + return normalize( forward*fov + right * uv.x + up*uv.y); +} + +float sphere( vec3 p, float r) +{ + return length(p)-r; +} + +vec3 repeat( vec3 p, vec3 c) +{ + return mod(p+0.5*c,c) - c*0.5; +} + +vec3 map( vec3 p ) +{ + if( mod(bar, 8.0) < 4.5) + p = repeat(p, vec3( 2.0, 0.0, 3.0)); + + float h = texmap( p, p).r * ( + 0.1 + + smoothstep( 0.0, 0.1, ffts)*0.75+ + smoothstep( 0.1, 0.3, ffts)*1.5 + ); + float s = sphere(p, 0.25 + h); + return vec3(s, 1.0, 1.0); +} + + + +vec3 march( vec3 cam, vec3 rd, out vec3 p, out float t) +{ + for(int i =0 ;i < 100; i++) + { + p = cam + rd*t; + vec3 r = map(p); + t+=r.x*0.5; + if(r.x < 0.001) + { + return r; + } + if(t > 50.0) + { + t= 50.0; + return vec3(-1); + } + } + return vec3(-1.0); +} +float marchV( vec3 cam, vec3 rd) +{ + float t = 0.0; + float v = 0.0; + for(int i =0 ;i < 100; i++) + { + vec3 p = cam + rd*t; + vec3 r = map(p); + t+=r.x*0.5; + if(r.x < 10.001) + { + v +=1.0/50.0; + } + if(t > 50.0) + { + return v; + } + } + return 0.0; +} + + +vec3 normal( vec3 p ) +{ + vec3 c = map(p); + vec2 e = vec2( 0.001, 0.0); + return normalize( vec3( + map(p+e.xyy).x, + map(p+e.yxy).x, + map(p+e.yyx).x + )-c.x ); +} + +float light( vec3 p, vec3 l, vec3 n) +{ + return max( 0.0, dot( n, normalize(l-p) ) ); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 vuv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + float time = fGlobalTime; + + fft = texture( texFFT, 0.1).r; + ffts = texture( texFFTSmoothed, 0.1).r + texture( texFFTSmoothed, 0.05).r*4.; + ffti = texture( texFFTIntegrated, 0.1).r; + + beat = floor( time * 127.0/60.0); + beatstep = fract( time * 127.0/60.0); + bar = floor( beat / 4.0 ); + vec3 col1 = vec3(1.0, 0.5, 0.0); + vec3 col2 = vec3(0.0, 0.5, 1.0); + + + vec3 col = vec3(0.0); + vec3 cam = vec3( + sin(time*0.7+ffti)*2.0, + cos(time*0.5+ffti*0.1)*2.0, + sin(time*0.25)*2.0 + ); + vec3 target = vec3(0,0,0); + vec3 light1 = vec3( + sin(time)*10.0, + sin(time*0.5)*10.0, + sin(time*0.25)*10.0 + ); + vec3 light2 = vec3( + sin(time*0.5)*10.0, + sin(time*0.25)*10.0, + sin(time*0.55)*10.0 + ); + float fov = 3.2 + 1.5*sin(bar*4.2); + vec3 rd = getcam( cam, target, uv, fov); + + float travel = 0.0; + vec3 p = cam; + vec3 res = march(cam, rd, p, travel); + if(res.y > -0.5) + { + vec3 n = normal(p); + col = col1*light(p, light1, n) + + col2*light(p, light2, n); + } + + float v = marchV( cam, rd); + col += mix( col1, col2, uv.x+uv.y)*v*0.15 * (0.25 + smoothstep( 0.0, 0.05, ffts) +0.5* smoothstep( 0.5, 1.0, beatstep)); + + vuv -= 0.5; + vuv*=0.98; + vuv+=0.5; + + vec3 previous = texture( texPreviousFrame, vuv).rgb; + + if(mod(bar, 4.0) < 0.5) col = col.gbr; + else if(mod(bar, 4.0) < 1.5) col = col.bgr; + else if(mod(bar, 4.0) < 2.5) col = col.rbg; + + out_color = vec4( col + 0.85*previous*(0.15+0.85*smoothstep(0.0, 0.1, ffts)) , 1.0); +} + + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_goose.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_goose.glsl new file mode 100644 index 000000000..6fe510e64 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_goose.glsl @@ -0,0 +1,124 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +mat2 Rot(float a) { + float s=sin(a),c=cos(a); + return mat2(c,-s,s,c); +} + +vec2 hash(vec2 p) { + vec2 ml; + ml.x =atan(p.x,p.y)/3.14; + ml.y = 1/length(p)*.2; + float d = ml.y; + float f = texture( texFFTSmoothed, d ).r * .001; + mat2 m = mat2(15.32,83.43,117.38,289.59); + return fract(sin(m*p)*45678.789*f); + +} + +float vor(vec2 p) { + vec2 g = floor(p); + vec2 f = fract(p); + float dfp = 1.; + for(int y=-1;y<=1;y++){ + for(int x=-1;x<=1;x++){ + vec2 lp = vec2(x,y); + float h = distance(lp+hash(g+lp),f); + dfp=min(dfp,h); + } + } + return sin(dfp); +} + +float text(vec2 uv) { + float t =vor(uv*8.+vec2(fGlobalTime)); + t*=1.-length(uv*2.); + return t; +} + +float fbm(vec2 uv) { + float s = 0.; + float a = 1.; + + for(int i=0;i<4;i++){ + s+=text(uv)*a; + uv+=uv; + a*=.8; + } + return s; +} + +vec4 cols(vec2 uv) { + float t = pow(fbm(uv*.3),2.); + return vec4(vec3(t*8.,t*3.,t*8.),1.); +} + +vec2 uvs(vec3 p) { + p = normalize(p); + float x = atan(p.x,p.y)/6.283; + float y = asin(p.y) / 3.141; + return vec2(0.5)+vec2(x,y); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv = (2.0 * gl_FragCoord.xy - v2Resolution.xy) / v2Resolution.y; + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec3 col = vec3(1.); + vec3 cam = vec3(0,0,-5); + vec3 dir = normalize(vec3(uv,1)); + float t = 0.; + for (int i=0;i<100;i++){ + vec3 hp = cam+dir*t; + float d = length(hp)- 2.5; + t+=d; + if(d<0.0001 || t>100) { + break; + } + } + + col = (1.-cols(uv)).rgb; + + if (t < 100){ + vec3 p = cam + dir *t; + vec2 uv2 = uvs(p); + col = cols(uv2).rgb; + //col = vec3(1); + } + + out_color = vec4(col,1);//f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_monsieursoleil.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_monsieursoleil.glsl new file mode 100644 index 000000000..0a618872d --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_monsieursoleil.glsl @@ -0,0 +1,220 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float midi01; +uniform float midi02; +uniform float midi03; +uniform float midi04; +uniform float midi05; +uniform float midi06; +uniform float midi07; +uniform float midi08; +uniform float midi09; +uniform float midi10; +uniform float midi11; +uniform float midi12; +uniform float midi13; +uniform float midi14; +uniform float midi15; +uniform float midi16; +uniform float midi17; +uniform float midi18; +uniform float midi19; +uniform float midi20; +uniform float midi21; +uniform float midi22; +uniform float midi23; +uniform float midi24; +uniform float midi25; +uniform float midi26; +uniform float midi27; +uniform float midi28; +uniform float midi29; +uniform float midi30; +uniform float midi31; +uniform float midi32; +uniform float midi33; +uniform float midi34; +uniform float midi35; +uniform float midi36; +uniform float midi37; +uniform float midi38; +uniform float midi39; +uniform float midi40; +uniform float midi41; +uniform float midi42; +uniform float midi43; +uniform float midi44; +uniform float midi45; +uniform float midi46; +uniform float midi47; +uniform float midi48; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +struct Matter { + float m; + float glow; + float glow02; +}; + +struct Ray +{ + vec3 p; + vec3 dir; +}; + + +Matter mat; +Ray ray; +vec3 res; + +mat2 rot(float a) +{ + float ca = cos(a); + float sa = sin(a); + + return mat2(ca, sa, -sa, ca); +} + +vec3 rand(vec3 p) +{ + return fract( + sin( + vec3(dot(p, vec3(1.0, 57.0, 113.0)), + dot(p, vec3(57.0, 1.0, 113.0)), + dot(p, vec3(113.0, 57.0, 1.0) + ))) * 45362.2356); +} + +vec3 voronoi(vec3 x) +{ + vec3 p = floor(x); + vec3 f= fract(x); + + float id = 0.0; + vec2 res = vec2(100.0); + for(int k = -1; k<=1;++k ) + for(int j = -1; j<=1;++j ) + for(int i = -1; i<=1;++i ) + { + vec3 b=vec3(float(i), float(j), float(k)); + vec3 r = b-f+rand(p+b); + float d = dot(r,r); + + if(d < res.x) + { + res.x = d; + } else if(dL)break; + } + return l; +} +vec3 wn(vec3 p){ + return normalize(vec3( + w(p+E.yxx), + w(p+E.xyx), + w(p+E.xxy))- w(p)); +} + +vec3 bg(vec3 d){ + return vec3(1.); +} + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ld = normalize(vec3(1.)); + vec3 lc = vec3(.5); + + vec3 C=vec3(0.),O=vec3(0., 1., 5.),D=normalize(vec3(uv,-1.)); + D.xz *= rm(.45); + + D.xy *= rm(t*.2); + O.z -= ffti(4.) * 3.; + //O.x += t*3.; + + vec3 th=vec3(1.); + + for(int r=0;r<2;++r){ + float L=50.,l=tr(O,D,0.,L); + if(l>L) { + C += th * bg(D); + } + + vec3 p=O+D*l,n=wn(p); + vec3 mc=vec3(.5); + vec3 c= vec3(0.); + + //c += mc * lc * max(0., dot(n, ld)); + //c += mc * lc * pow(max(0., dot(n, normalize(ld-D))), 20.); + + C += th * mix(c, bg(D), l/L); + + th *= mc; + O = p + .01*n; + D = reflect(D, n); + } + + out_color = vec4(sqrt(C),0.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_totetmatt.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_totetmatt.glsl new file mode 100644 index 000000000..f6f61e0f0 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_totetmatt.glsl @@ -0,0 +1,91 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +// I CERTIFY ITS NOT A BOT + +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} +float diam(vec2 p,float s){ + p = abs(p); + return (p.x+p.y-s)*inversesqrt(3.); + + } +float smin(float a,float b,float r){ + float k = max(0.,r-abs(a-b)); + return min(a,b) -k*k*.25/r; + + } +float bpm = (fGlobalTime*60/130*4); +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + bpm = floor(bpm)+pow(fract(bpm),.5); + +vec3 col = vec3(.1); + vec3 p,d = normalize(vec3(uv,1.)); + + for(float i=0,g=0,e;i++<128;){ + + p = d*g; + p.z -=5.; + + vec3 gp = p; + gp.xy *=rot(gp.z*.1); + gp.y =-abs(gp.y); + gp.y +=1; + + + + +float dd,c=20./3.141592; + + gp.xz = vec2(log(dd=length(gp.xz)),atan(p.x,p.z))*c; + // ^^--- MAIS OUI CT SUR ENFAITE ! + gp.y/=dd/=c; + gp.y +=sin(gp.x)*.5; + gp.xz = fract(gp.xz+fGlobalTime)-.5; + + for(float j=0.;j<(4.-texture(texFFT,.3).r*10);j++){ + + gp.xzy = abs(gp.xzy)-vec3(.1,.01,.1); + gp.xz *=rot(-.785); + } + float ha_grid = dd*.8*min(diam(gp.xy,.01),diam(gp.zy,.01)); + + + + float f = ha_grid; + + float blob = length(p)-.5-texture(texFFT,.3).r*2.; + float gy = dot(sin(p*4),cos(p.zxy*2))*.1; + for(float j=0.;j<16;j++){ + + vec3 off = vec3(cos(j),tan(bpm+j),sin(j*3.33))+gy; + blob = smin(blob,length(p-off)-.125,.25); + + } + + f= smin(f,blob,.5); + g+=e=max(.001,f);; + col+= mix(vec3(1.,.2,sin(p.z+bpm)*.5+.5),vec3(.5,sin(p.z)*.5+.5,.9),fract(2.*i*i*e))*.25/exp(i*i*e); + + } + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_z0rg.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_z0rg.glsl new file mode 100644 index 000000000..f02209ceb --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/quarter/2022_04_revision_quarter_z0rg.glsl @@ -0,0 +1,126 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define sat(a) clamp(a, 0., 1.) + +vec2 _min(vec2 a, vec2 b) +{ + if (a.x < b.x) + return a; + return b; +} + +vec2 map(vec3 p) +{ + vec2 acc = vec2(10000.,-1.); + acc = _min(acc, vec2(length(p)-1.,0.)); + return acc; +} + +vec3 getNorm(vec3 p, float d) +{ + vec2 e = vec2(0.01,0.); + return normalize(vec3(d)-vec3(map(p-e.xyy).x, map(p-e.yxy).x, map(p-e.yyx).x)); +} + +vec3 getCam(vec3 rd, vec2 uv) +{ + float fov = 1.; + vec3 r = normalize(cross(rd, vec3(0.,1.,0.))); + vec3 u = normalize(cross(rd, r)); + return normalize(rd+fov*(r+uv.x+u*uv.y)); +} + +vec3 trace(vec3 ro, vec3 rd, int steps) +{ + vec3 p = ro; + for (int i = 0; i < steps; ++i) + { + vec2 res = map(p); + if (res.x < 0.01) + return vec3(res.x, distance(p, ro), res.y); + p+=rd*res.x; + } + return vec3(-1.); +} + +float _sqr(vec2 uv, vec2 s) +{ + vec2 l = abs(uv)-s; + return max(l.x, l.y); +} +mat2 r2d(float a) +{ + float c = cos(a); + float s = sin(a); + return mat2(c, -s, c, c); +} + +float hash11(float seed) +{ + return fract(sin(seed*123.456)*12.456); +} +float _seed; +float rand() +{ + return hash11(_seed++); +} +vec3 rdr(vec2 uv) +{ + vec2 ouv = uv; + vec3 col = vec3(0.); + + vec3 ro = vec3(0.,0.,-5.); + vec3 ta = vec3(0.,0.,0.); + vec3 rd = normalize(ta-ro); + + rd = getCam(rd, uv); + vec3 res = trace(ro, rd, 256); + + if (res.y > 0.) + { + vec3 p = ro+rd*res.y; + vec3 n = getNorm(p, res.x); + col = n*.5+.5; + } + + vec2 rep = vec2(.1); + vec2 id = floor((uv+rep*.5)/rep); + uv += (rand()-.5)*.05*sin(length(id+fGlobalTime)); + + uv = mod(uv+rep*.5,rep); + + uv *= r2d(sin(id.x+id.y+fGlobalTime)); + uv *= r2d(fGlobalTime+uv.x); + float shape = abs(_sqr(uv, vec2(.1)))-.01; + //col = vec3(sin(length(ouv.x*10.5)*fGlobalTime)*.5+.5, .5,.7)*(1.-sat(shape*400.)); + return col; +} + +void main(void) +{ + vec2 uv = (gl_FragCoord.xy-.5*v2Resolution.xy)/v2Resolution.xx; + _seed = fGlobalTime+texture(texNoise, uv).x; + + vec3 col = rdr(uv); + //col = vec3(1.)*sat((length(uv)-.5)*400.); + col = pow(col, vec3(5.)*sat(length(uv))); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_blackle.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_blackle.glsl new file mode 100644 index 000000000..4aed6a22d --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_blackle.glsl @@ -0,0 +1,122 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define ro(r) mat2(cos(r),sin(r),-sin(r),cos(r)) + +float box(vec3 p, vec3 d) { + p = abs(p)-d; + return length(max(p,0))+min(0,max(p.x,max(p.y,p.z))); +} + +float beam(vec3 p) { + p.xy -= max(0,dot(normalize(vec2(1)),p.xy))*2*normalize(vec2(1)); + p.xy -= max(0,dot(normalize(vec2(1,-1)),p.xy))*2*normalize(vec2(1,-1)); + p.x += .2; + vec3 p2 = p; + p2.y = abs(p2.y)-.2; + p.z = asin(sin(p.z*10))/10; + p.yz *= ro(radians(45)); + return min(length(p2.xy),length(p.xy))-.02; +} + +float zip(float k) { + k += fGlobalTime; + float id = floor(k)+.5; + k -= id; + k = smoothstep(-.1,.1,k)+smoothstep(-.2,.2,k)-smoothstep(-.3,.3,k); + k+=id; + return k; +} + +float o1, o2, o3; +vec3 oop; +float scene(vec3 p) { + p.xy *= ro(asin(sin(zip(.4)/2))*.7); + o1 = beam(p); + o2 = beam(p.xzy); + o3 = box(p,vec3(.2))-.1; + o3 = min(o3,box(p-vec3(0,1,0),vec3(.2,.2,.4))-.1); + o3 = min(o3,box(p-vec3(0,-5,0),vec3(.2,.05,.2))-.1); + o3 = min(o3,box(p-vec3(0,0,.6),vec3(.2,.2,.05))-.1); + o2 = max(o2,p.y-.79); + o2 = max(o2,-p.y-5); + o1 = max(o1,p.z-.48); + p.z+=.4; + float op = p.z; + p.y += 2.5 + asin(sin(zip(0))); + o3 = min(o3, box(p,vec3(.2,.3,.1))-0.05); + + vec3 p2 = p; + p2.y=abs(p.y)-.1; + p.z+=.4 + max(0,asin(sin(fGlobalTime)))*8; + o3 = min(o3, box(p,vec3(.2,.3,.1))-0.05); + o3 = min(o3,max(max(op,-p.z),length(p2.xy)-.02)); + p.z+=.4; + p.xy*=ro(fGlobalTime/3); + oop = p; + p.z*=.8; + float e = length(p)-.25+smoothstep(-.5,.5,p.z)*.4-.2; + if (asin(sin(fGlobalTime/2 - 3.14159/4)) < 0) e = 1e5; + return min(min(o3,e),min(o1,o2)); +} + +vec3 norm(vec3 p) { + mat3 k = mat3(p,p,p)-mat3(0.001); + return normalize(scene(p)-vec3( scene(k[0]),scene(k[1]),scene(k[2]) )); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 cam = normalize(vec3(1+sin(zip(.3)/2)*.5,uv)); + float v = sin(zip(.7))*.3; + vec3 init = vec3(-6,-2+v,-1+cos(zip(2.)*2)*.25); + + cam.xz*=ro(.3); + init.xz*=ro(.3); + + vec3 p = init; + bool hit = false; + float dist; + bool trig = false; + for(int i = 0; i<50&&!hit;i++){ + dist = scene(p); + p+=cam*dist; + hit = dist*dist<1e-6; + if(!trig)trig=dist<0.03; + if(dist>1e4)break; + } + vec3 lp = oop; + bool io1 = dist==o1; + bool io2 = dist==o2; + bool io3 = dist==o3; + vec3 n = norm(p); + vec3 r = reflect(cam,n); + float fact = length(sin(r*3)*.5+.5)/sqrt(3); + vec3 matcol = texture(texRevision,clamp(lp.yz*1.8+vec2(0,.3)+.5,0,1)).xyz; + if(io1)matcol=vec3(.7,.2,.1); + if(io3)matcol=vec3(.05); + if(io2)matcol=vec3(.7,.6,.05); + vec3 col = matcol+pow(fact,7)*2; + out_color.xyz=hit?sqrt(col):vec3(trig?0:uv.y*.5+.5); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_evvvvil.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_evvvvil.glsl new file mode 100644 index 000000000..ee6c65265 --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_evvvvil.glsl @@ -0,0 +1,120 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,v,e=vec2(-.00035,.00035);float t,tt,b,bb,g,gg,r,a,s,tnoi;vec3 pp,rp,op,po,no,al,ld; +vec4 c=vec4(0,-5,12,0); +float smin(float a,float b,float k){float h=max(0.,k-abs(a-b));return min(a,b)-h*h*.25/k;} +float smax(float a,float b,float k){float h=max(0.,k-abs(-a-b));return max(-a,b)+h*h*.25/k;} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +float cy(vec3 p,float r){ + vec3 pp=abs(p)-vec3(.1,10.,.1); + + return mix( + length(p.xz)-r,max(max(pp.x,pp.y),pp.z),bb); + } +const float PI=acos(-1); +vec2 mp( vec3 p) +{ + op=p; + bb=clamp(sin(op.y*.1-tt*.75),-.25,.25)*2.+.5; + p.xz*=r2(sin(op.y*.1+bb*2.)+tt*.1); + pp=p+sin(op.y*.5)-cos(op.y*.2+tt)+sin(op.z*op.y*0.01); + rp=vec3(atan(pp.x,pp.z)*10/PI,pp.y,length(pp.xz)-2.5); + rp.x=mod(rp.x,4)-2; + rp.y=mod(rp.y,8)-4; + + v=vec2(atan(pp.z,pp.x)/(2*PI),pp.y*.1); + tnoi=texture(texNoise,v).r; + vec2 h,t=vec2(cy(pp,3-tnoi),0); + t.x=smin(t.x,cy(rp,.5+cos(rp.y*15)*.03),.5); + float bu=cos(p.y*.15)*3., + ta=abs(p.y)*.05, + ex=max(0,abs(p.y)-5), + wav=sin(p.y*2.+tt*5.)*ex*.075; + + t.x=smin(t.x,cy(abs(pp)-4+bu,1-ta),1.); + t.x=smin(t.x,cy(abs(abs(pp)-3.8+bu)-.4-ta-wav-ex*.1,0.5-ta),.5); + t.x=smax(length(rp)-1+tnoi,t.x,1.4); + rp.y+=sin(rp.z*.5+tt*2.)*min(rp.z-.2,1.)*.5; + t.x=smin(t.x,cy(rp.xzy,.17-rp.z*.02),0.5); + pp=rp; + pp.z=abs(pp.z)-8; + t.x=smin(t.x,max(length(pp)-.1,-(length(pp)-.8)),1.0); + + h=vec2(length(rp)-1.1+tnoi,1); + h.x=smax(length(rp.xy)-0.6+tnoi,h.x,0.5); + h.x=min(length(abs(rp.xy)-.2-rp.z*.1)-0.05,h.x); + h.x=max(h.x,abs(rp.z)-8); + pp.xy=abs(pp.xy)-.2-rp.z*.1; + bu=length(pp)-.02; + g+=0.1/(0.1*bu*bu*50); + h.x=min(h.x,bu); + t=t.x60) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>60) t.y=-1; + return t; +} +#define a(d) clamp(mp(po+no*d).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d).x/d) + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +tt=mod(fGlobalTime,83.7); + //float f = texture( texFFT, d ).r * 100; + + vec3 ro=vec3(cos(tt*c.w)*c.z,cos(tt*.2)*11,sin(tt*c.w)*c.z), + cw=normalize(vec3(0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + co=fo=vec3(.1,.2,.3)-length(uv)*.2-sin(uv.x*40)*rd.y*.01; + ld=normalize(vec3(.2,-.2,.3)); + z=tr(ro,rd);t=z.x; + if(z.y>-1){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x); + al=mix(vec3(1,.3,.2),vec3(.1,.1,1.),sin(tnoi*5-1.5)*.5+.5); + al=mix(al,vec3(1,.3-sin(op.y)*.2,.2),bb); + if(z.y>0) al=vec3(0); +float dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),40); +co=mix(sp+al*(a(.05)*a(.15)+.2)*(dif+s(2)),fo,min(fr,.5)); + co=mix(fo,co,exp(-.00002*t*t*t)); + co=mix(co,fo,abs(uv.y*1.7)); + } + + out_color = vec4(pow(co+g*.2*vec3(1,.5,.2),vec3(.45)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_exca.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_exca.glsl new file mode 100644 index 000000000..38c6038ce --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_exca.glsl @@ -0,0 +1,193 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; + +float ffti =0.0; +float ffts = 0.0; +float beat =0.0; +float beatstep = 0.0; +float bar = 0.0; + +float glow = 0.0; + +vec3 getcam( vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize( target -cam); + vec3 right = normalize( cross(vec3(0,1,0), forward)); + vec3 up = normalize( cross(forward, right)); + return normalize( forward*fov + right*uv.x + up*uv.y); +} + +float smin( float a, float b, float k) +{ + float h = clamp(0.5 +0.5*(b-a)/k, 0.0, 1.0); + return mix(b,a,h) + k*h*(h-1.0); +} + +vec2 shift( vec3 p) +{ + return vec2( + sin(p.z*0.33 + time), + cos(p.z*0.43 + time) + ); +} + +float sphere( vec3 p, float r) +{ + return length( p) -r; +} +vec3 map( vec3 p) +{ + float s1 = sphere( p + vec3( sin(time*0.9), cos(time*0.35), sin(time*.12))*0.25, 0.25); + float s2 = sphere( p + vec3( sin(time*0.59), cos(time*0.335), sin(time*.512))*0.25, 0.25); + float s3 = sphere( p + vec3( sin(time*0.19), cos(time*0.635), sin(time*.212))*0.25, 0.25); + + float s = smin( s1, smin(s2, s3, 0.15),0.15); + float w = (1.5+4.0 * smoothstep(50.0, 5.0, p.z)) - length(p.xy + shift(p)); + + float mat = s < w ? 2.0 : 1.0; + + w = min(s,w); + + return vec3(w, mat, 1.0); +} +vec3 march( vec3 cam, vec3 rd, out vec3 p, out float t) +{ + for(int i = 0; i < 100; i++) + { + p = cam+rd*t; + vec3 r = map(p); + t+=r.x; + if(r.x < 2.0) glow += r.x; + if(r.x < 0.001) + { + return r; + } + if(t > 50.0) + { + t = 50.0; + return vec3(-1.0); + } + } + return vec3(-1.0); +} + +vec3 normal( vec3 p) +{ + vec3 c = map(p); + vec2 e = vec2(0.01, 0.0); + return normalize( vec3( + map(p +e.xyy).x, + map(p +e.yxy).x, + map(p +e.yyx).x + )-c.x); +} + +float light( vec3 p, vec3 l, vec3 n) +{ + return max(0.0, dot( n, normalize( l-p))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 vuv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + ffts = texture(texFFTSmoothed,0.1).r; + ffti = texture(texFFTIntegrated,0.1).r*2.0; + + beat = floor( fGlobalTime * 165.0/60.0); + beatstep= fract( fGlobalTime * 165.0/60.0); + bar = floor( beat / 4.0); + + time = fGlobalTime*0.1 + ffti*10.0; + + vec3 col = vec3(0.0); + vec3 light1 = vec3( sin(time)*10.0, 10.0, 0.0); + + vec3 cam = vec3(0,0,-3); + vec3 target = vec3(0,0,0); + float fov = 2.0 + sin(bar)*1.9; + + vec3 col1 = vec3(0.5, 0.3, 0.6); + vec3 col2 = vec3(0.1, 0.5, 0.9); + vec3 col3 = vec3(0.9, 0.0, 0.0); + + + vec3 rd = getcam( cam, target, uv, fov); + vec3 p = cam; float t = 0.0; + vec3 res = march( cam, rd, p, t); + + if(res.y > 1.5){ + vec3 n = normal(p); + col = col1*light(p,light1,n)+0.2*col3; + + vec3 refrd = reflect( rd, n); + vec3 refp = p; + vec3 refc = vec3(0.0); + float reft = 0.0; + vec3 refres = march( refp+ refrd*0.01, refrd, refp, reft); + if(refres.y > 1.5){ + } + else if(refres.y>-0.5){ + vec3 rn = normal(refp); + refc = col2*light(refp,light1,rn)+0.2*col3; + + float td = smoothstep(1.0, 0.9, sin(reft*2.0)); + refc +=vec3(1.0, 0.1,0.0)* 0.1/td; + } + col = mix(col, refc, 0.5); + + } + else if(res.y > -0.5){ + vec3 n = normal(p); + col = col2*light(p,light1,n)+0.2*col3; + + float td = smoothstep(1.0, 0.9, sin(t*2.0+time*5.0)); + col += vec3(1.0, 0.1,0.0)* 0.1/td; + } + + vuv -= 0.5; + vuv *= 0.99; + vuv += 0.5; + vec3 previous = texture( texPreviousFrame, vuv).rgb; + + col += previous * 0.9 * smoothstep( 0.0, 0.1, ffts*10.0); + + col += glow * vec3(1.0, 0.5, 0.0) *0.1; + + if(mod(bar, 4.0) < 0.5) col.rgb = col.bgr; + else if(mod(bar, 4.0) < 1.5) col.rgb = col.gbr; + else if(mod(bar, 4.0) < 2.5) col.rgb = col.grb; + + out_color = vec4( col, 1.0);; +} + + + + + + + + + diff --git a/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_goose.glsl b/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_goose.glsl new file mode 100644 index 000000000..e5c6358de --- /dev/null +++ b/shader_file_sources/2022_04_15_shader_showdown_revision_online/semi/2022_04_revision_semi_goose.glsl @@ -0,0 +1,107 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + + +mat2 Rot(float r) { + float c = cos(r), s = sin(r); + return mat2(c,s,-s,c); +} +float cir(vec2 p, float radius) { + return length(p)-radius; +} +float ls(in vec2 p, in float ra, in float rb, in float h){ + p.x = abs(p.x); + float b = (ra-rb)/h; + vec2 c = vec2(sqrt(1.-b*b),b); + float k = c.x*p.y - c.y*p.x, m = dot(c,p), n = dot(p,p); + if(k < 0.){ + return sqrt(n)-ra; + } else if (k > c.x*h) { + return sqrt(n+h*h-2.*h*p.y) -rb; + } + return m - ra; +} + +void draw (float dist, vec4 mc, inout vec4 fc) { + float dtc = fwidth(dist) *.5; + fc = mix(fc, vec4(0,0,0,1), smoothstep(dtc, -dtc, dist-0.01)); + fc = mix(fc, mc, smoothstep(dtc,-dtc, dist)); +} + +void sd (vec2 p, inout vec4 fc) { + p.x += .5; + p *= Rot(.1*sin(fGlobalTime*3.)); + vec2 po = p; + float face = cir(p-vec2(0,0.01), 0.3); + draw(face, vec4(.5, .5, .5,1.), fc); + p = po; + vec2 np = p; + np.x = abs(np.x); + //float c1 = cir(np-vec2(.15,0.05), 0.075); + draw(cir(np-vec2(.15,0.05), 0.075), vec4(1), fc); + draw(cir(np-vec2(.15, 0.05), 0.03), vec4(0.),fc); + draw(cir(np-vec2(.13, 0.05), 0.01), vec4(1.), fc); + } + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + float r = length(uv); + vec3 bg = mix(vec3(0.93,0.91,0.62), vec3(0.9, 0.44, 0.44), r); + vec2 pos = 10.*uv*Rot(1.55); + pos -= vec2(-4.75,0.); + vec2 rep = fract(pos); + float dist = 2.0*min(min(rep.x, 1.-rep.x), min(rep.y, 1.-rep.y)); + float sqd = length((floor(pos)+vec2(0.5))-vec2(5.0)); + float edge = sin(fGlobalTime-sqd*.5)*.5+.5; + edge = (fGlobalTime-sqd*.5)*.5; + edge = 2.0*fract(edge*.5); + float value; + value = fract(dist*2.); + value = mix(value, 1.0-value, step(1.,edge)); + edge = pow(abs(1.-edge),2.); + value = smoothstep(edge-0.05, edge, .95*value); + value += sqd*.21; + out_color = mix(vec4(1.,1.,1.,1.), vec4(bg,1.), value); + //out_color = vec4(bg, 1); + sd(uv, out_color); + + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + //out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_gasman.lua b/shader_file_sources/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_gasman.lua new file mode 100644 index 000000000..b029d5eb5 --- /dev/null +++ b/shader_file_sources/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_gasman.lua @@ -0,0 +1,40 @@ +-- hello, gasman here! +-- greets to my fellow bytejammer +-- tobach (with a hat on the o) + +--someone shout out a theme! + +--I think someone said space... + +stars={} +for i=0,100 do +stars[i]={math.random()*256,math.random()*163} +end + +function SCN(y) +poke(16323,y*20) +poke(16324,y*20+time()) +end + +function TIC()t=time() +cls() +for i=0,100 do +circ((stars[i][1]-(t*i/5)/50)%256,stars[i][2],i/40,14-i/50) +end +y=math.sin(t/300)*20 +circ(40,40+y,30,12) +circ(50,30+y,10,13) + +tx=math.sin(t/350)*40 +ty=math.sin(t/240)*40 + +if ((time()/10)%50)<25 then +tri(50,25+y,50,35+y,150+tx,100+ty,1) +end + +circ(150+tx,100+ty,10,12) +tri(138+tx,90+ty,138+tx,110+ty,120+tx,100+ty,12) +tri(162+tx,90+ty,162+tx,110+ty,180+tx,100+ty,12) + + +end diff --git a/shader_file_sources/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_tobach.lua b/shader_file_sources/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_tobach.lua new file mode 100644 index 000000000..d4987077b --- /dev/null +++ b/shader_file_sources/2022_05_02_byte_jam_fieldfx/bytejam_fieldfx_tobach.lua @@ -0,0 +1,21 @@ +function TIC() + cls() + for px=1,240 do + for py=1,136 do + line(px,py,px,py,4+px/16+math.sin(time()/200)*4) + end + end + for ly=1,8 do + for lx=1,8 do + line(0,68+lx+math.sin(time()/200+ly/4)*50,240,68+lx+math.sin(time()/200+ly/4)*50,lx+8) + end + end + for i=1,68 do + for j=1,16 do + line(120+j+math.sin(time()/300+i/8)*math.sin(time()/400+i/16)*60,0+i*2,120+j+math.sin(time()/300+i/8)*math.sin(time()/400+i/16)*60,136,j/2) + end + end + for tc=1,4 do + print("COME TO FIELD-FX!!!",240-time()/3%1200+tc*2,50+tc*2+math.sin(time()/100)*10,8+tc,true,8) + end +end \ No newline at end of file diff --git a/shader_file_sources/2022_05_02_shader_jam_fieldfx/shader_MonsieurSoleil.glsl b/shader_file_sources/2022_05_02_shader_jam_fieldfx/shader_MonsieurSoleil.glsl new file mode 100644 index 000000000..1caf60f24 --- /dev/null +++ b/shader_file_sources/2022_05_02_shader_jam_fieldfx/shader_MonsieurSoleil.glsl @@ -0,0 +1,337 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float midi01; +uniform float midi02; +uniform float midi03; +uniform float midi04; +uniform float midi05; +uniform float midi06; +uniform float midi07; +uniform float midi08; +uniform float midi09; +uniform float midi10; +uniform float midi11; +uniform float midi12; +uniform float midi13; +uniform float midi14; +uniform float midi15; +uniform float midi16; +uniform float midi17; +uniform float midi18; +uniform float midi19; +uniform float midi20; +uniform float midi21; +uniform float midi22; +uniform float midi23; +uniform float midi24; +uniform float midi25; +uniform float midi26; +uniform float midi27; +uniform float midi28; +uniform float midi29; +uniform float midi30; +uniform float midi31; +uniform float midi32; +uniform float midi33; +uniform float midi34; +uniform float midi35; +uniform float midi36; +uniform float midi37; +uniform float midi38; +uniform float midi39; +uniform float midi40; +uniform float midi41; +uniform float midi42; +uniform float midi43; +uniform float midi44; +uniform float midi45; +uniform float midi46; +uniform float midi47; +uniform float midi48; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float fft; + +struct Matter +{ + float m; + int type; + bool reflected; + float glow; + bool hit; + vec3 posHit; + float voroval; +}; + +struct Ray +{ + vec3 o; + vec3 t; + vec3 p; + vec3 dir; + float dist; + vec3 hitloc; +}; + +struct Light +{ + vec3 liPos; + vec3 liDir; + float shad; + float liGlow; +}; + +struct Res +{ + vec3 skyColor; + vec3 fogGlow; + vec3 glowCol; + vec3 color; +}; + +Matter mat; +Ray ray; +Light li; +Res res; + +#define BPM fGlobalTime/60.0 * 120.0 + +#define mod01 mod(floor(BPM*2.0), 4.0) +#define mod02 mod(floor(BPM*0.5), 4.0) +#define mod03 mod(floor(BPM*0.25), 4.0) + +#define hash22(p) fract( 18.5453 * sin( p * mat2(127.1,311.7,269.5,183.3)) ) +//https://www.shadertoy.com/view/lsVyRy +float CRACK_zebra_scale = 10.0 * 0.15, // fractal shape of the fault zebra + CRACK_zebra_amp = 5.0 * 0.6, + CRACK_profile = .2, // fault vertical shape 1. .2 + CRACK_slope = 1.4, // 10. 1.4 + CRACK_width = .0; + +float animation() +{ + return 1.0 - pow(abs(sin(fGlobalTime*0.1)), 16.2) * 2.0; +} + +vec3 opRepLim( in vec3 p, in float c, in vec3 l) +{ + return p-c*clamp(round(p/c),-l,l); +} + +vec2 opRepLim( in vec2 p, in float c, in vec2 l) +{ + return p-c*clamp(round(p/c),-l,l); +} + +float smin( float d1, float d2, float k ) { + float h = clamp( 0.5 + 0.5*(d2-d1)/k, 0.0, 1.0 ); + return mix( d2, d1, h ) - k*h*(1.0-h); } + +mat2 rot(float a) +{ + float ca = cos(a); + float sa = sin(a); + + return mat2(ca, sa, -sa, ca); +} + +float sphere(vec3 p, float s) +{ + return length(p) - s; +} + +float box(vec3 p, vec3 s) +{ + p = abs(p) - s; + return max(p.x, max(p.y, p.z)); +} + +vec3 hash3( uvec3 x ) +{ +# define scramble x = ( (x>>8U) ^ x.yzx ) * 1103515245U // GLIB-C const + scramble; scramble; scramble; + return vec3(x) / float(0xffffffffU) +1e-30; // <- eps to fix a windows/angle bug +} +int MOD = 1; // type of Perlin noise +#define noise22(p) vec2(noise2(p),noise2(p+17.7)) +#define hash21(p) fract(sin(dot(p,vec2(127.1,311.7)))*43758.5453123) +float noise2(vec2 p) { + vec2 i = floor(p); + vec2 f = fract(p); f = f*f*(3.-2.*f); // smoothstep + + float v= mix( mix(hash21(i+vec2(0,0)),hash21(i+vec2(1,0)),f.x), + mix(hash21(i+vec2(0,1)),hash21(i+vec2(1,1)),f.x), f.y); + return MOD==0 ? v + : MOD==1 ? 2.*v-1. + : MOD==2 ? abs(2.*v-1.) + : 1.-abs(2.*v-1.); +} + +vec3 random3f( vec3 p ) +{ + + return fract(sin(vec3( dot(p,vec3(1.0,57.0,113.0)), + dot(p,vec3(57.0,113.0,1.0)), + dot(p,vec3(113.0,1.0,57.0))))*43758.5453); +} + +vec2 fbm22(vec2 p) { + vec2 v = vec2(0); + float a = .5; + mat2 R = rot(.37); + + for (int i = 0; i < 9; i++, p*=2.,a/=2.) + p *= R, + v += a * noise22(p); + + return v; +} + +vec3 voronoi( in vec3 x ) +{ + vec3 p = floor( x ); + vec3 f = fract( x ); + + float id = 0.0; + vec2 res = vec2( 100.0 ); + for( int k=-1; k<=1; k++ ) + for( int j=-1; j<=1; j++ ) + for( int i=-1; i<=1; i++ ) + { + vec3 b = vec3( float(i), float(j), float(k) ); + vec3 r = vec3( b ) - f + random3f( p + b ); + float d = dot( r, r ); + + if( d < res.x ) + { + id = dot( p+b, vec3(1.0,57.0,113.0 ) ); + res = vec2( d, res.x ); + } + else if( d < res.y ) + { + res.y = d; + } + } + + return vec3( sqrt( res ), abs(id) ); +} + +vec3 palette( in float t, in vec3 a, in vec3 b, in vec3 c, in vec3 d ) +{ + return a + b*cos( 6.28318*(c*t+d) ); +} + + +void map(inout Matter ma, vec3 p) +{ + float mat01 = 10.0, mat02 = 10.0; + p.xz *= rot(length(p) * 0.75 - sin(mod03) + fGlobalTime * 0.15); + vec3 p01 = p, p02 = p; + //p.xz *= rot(length(p) * 0.05); + // p.xy*= rot(p.y*0.25); + p01.xy = opRepLim(p01.xy, 3.05 - sin(fGlobalTime), vec2(5.0)); + + //https://www.shadertoy.com/view/lsVyRy + p02.xy = fbm22(p02.xy * CRACK_zebra_scale) / CRACK_zebra_scale / CRACK_zebra_amp; + + + /*float mult = 1.5; + float rng = 2.5 - abs(sin(fGlobalTime * 0.2)) * 2.0; + for(int i = 0; i < 25 - abs(sin(fGlobalTime * 0.1)) * 20; ++i) + { + p01.x = abs(p01.x) - rng * mult; + p01.xy *= rot(0.01 * mod03 + fGlobalTime * 0.05 + mod02); + p01.xz *= rot(0.05 * mod03 + fGlobalTime * 0.05 + mod03); + + mult *= 0.99; + }*/ + + p.x += sin(p.z*5.9)*0.05 + mod02; + //mat01 = box(p + vec3(0.0), vec3(6.0, 6.0, 6.0)); + mat01 = sphere(p + vec3(0.0), 5.0); + + //mat01 = box(p01 - vec3(0.0), vec3(0.050,0.05, 0.05) + fft); + //mat01 = smin(mat01, box(p01 - vec3(0.0), vec3(0.01,0.05, 0.01)), 0.5); + + p.y += 0.01 + fGlobalTime * 0.1; + vec3 v = voronoi((0.75)*p + p02 + fGlobalTime * 0.25 + mod02); + vec3 v02 = voronoi((0.25)*p + p02 + fGlobalTime * 0.1); + + //vec3 v = voronoi((0.5)* p + p02 + fGlobalTime); + //vec3 v02 = voronoi((0.05)*p); + + float f = clamp( 5.5*(v.y-v.x), 0.0, 1.0 ); + float f02 = clamp( 5.5*(v02.y-v02.x), 0.0, 1.0 ); + mat01 += f * (0.05 + abs(cos(fGlobalTime * 0.2)) * 1.0)+ (f02 * 3.55 - abs(sin(fGlobalTime * 0.1))*3.0); + //mat01+= f * 0.25; + + ma.voroval = v.y * 1.0 + v02.y * 5.0; + + + ma.glow += pow(0.1/(0.05+abs(clamp(mat01, 0.00001, 100.0))), 20.0 * 0.3); + //ma.voroval = mat01; + ma.m = mat01; + +} + + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + fft = texture(texFFTSmoothed, 0.1).x; + +res.glowCol = vec3(0.0); + mat.hit = false; + + ray.o = vec3(1.0 * cos(fGlobalTime * 0.1), 10.0 * 0.9, 2.0 * 0.75 * sin(fGlobalTime * 0.2)), ray.t = vec3(0.0); + vec3 fr = normalize(ray.t-ray.o); + vec3 ri = normalize(cross( fr, vec3(0.0, 1.0, 0.0))); + vec3 up = normalize(cross(ri ,fr)); + ray.dir = normalize(fr + uv.x * ri + uv.y * up); + ray.p = ray.o + ray.dir * 0.25; + + for(int i = 0; i < 50; i++) + { + map(mat, ray.p); + + + + res.glowCol += 0.005 * mat.glow * palette(mat.voroval, vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0 * 1.0,1.0 * 0.05,1.0 * 0.35),vec3(1.0 * 0.75,1.0 * 0.15,1.0 * 0.0)) * 0.025; + + if(mat.m < 0.001) + { + + if(!mat.hit) + { + mat.hit = true; + mat.posHit = ray.p; + //break; + } + mat.m =10.0 * 0.1; + // + } + + ray.p += ray.dir * mat.m * 1.0 * 0.05; + } + + out_color = vec4(res.glowCol,1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2022_05_02_shader_jam_fieldfx/shader_totetmatt.glsl b/shader_file_sources/2022_05_02_shader_jam_fieldfx/shader_totetmatt.glsl new file mode 100644 index 000000000..ac61e3bc5 --- /dev/null +++ b/shader_file_sources/2022_05_02_shader_jam_fieldfx/shader_totetmatt.glsl @@ -0,0 +1,171 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +/* + +*/ +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec3 erot(vec3 p,vec3 ax,float t){ + return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t); +} + +float box2(vec2 p, vec2 b){ + vec2 q = abs(p)-b; + return length(max(vec2(0.),q))+min(0.,max(q.x,q.y)); +} + +float box3(vec3 p,vec3 b){ + vec3 q = abs(p)-b; + return length(max(vec3(0.),q))+min(0.,max(q.x,max(q.y,q.z))); +} +float sdOrientedBox( in vec2 p, in vec2 a, in vec2 b, float th ) +{ + float l = length(b-a); + vec2 d = (b-a)/l; + vec2 q = (p-(a+b)*0.5); + q = mat2(d.x,-d.y,d.y,d.x)*q; + q = abs(q)-vec2(l,th)*0.5; + return length(max(q,0.0)) + min(max(q.x,q.y),0.0); +} +float diam(vec3 p,float s){ + p = abs(p); + return (p.x+p.y+p.z-s)*inversesqrt(3.); +} +float si(vec3 p){ + float h = abs(box2(p.xy,vec2(1.)))-.1; + h = min( + min(sdOrientedBox(p.xy,vec2(0.2,0.),vec2(1.,0),.2), + sdOrientedBox(p.xy,vec2(0.2,0.),vec2(0.2,1),.2)) + ,h); + h = min( + + sdOrientedBox(p.xy,vec2(-0.2,1.),vec2(-0.2+min(p.y,0),-.4),.2) + ,h); + h= max(abs(p.z)-.1,h); + return h; +} +float liu(vec3 p){ + float h = sdOrientedBox(p.xy,vec2(-1.,0.),vec2(1.,0),.2); + h= min( sdOrientedBox(p.xy,vec2(-0.2,0.5),vec2(.1,.3),.2),h); + h= min( sdOrientedBox(p.xy,vec2(-0.8,-1.0),vec2(-.2,-.2),.2),h); + h= min( sdOrientedBox(p.xy,vec2(0.8,-1.0),vec2(.2,-.2),.2),h); + h= max(abs(p.z)-.1,h); + return h; +} +vec2 sdf(vec3 p){ + + vec3 tp=p,hp=p; + hp.y -=abs(asin(sin(fGlobalTime))); + float gy = dot(sin(p),cos(p.zxy*7)); + +hp = erot(hp,normalize(vec3(1.,2.,3)),fGlobalTime); + vec2 h; + h.x = length(hp)-1.; + h.x = .7*mix(diam(hp,1.),box3(hp,vec3(1.)),sin(fGlobalTime+gy*.2)*.5-0.2)*.9; + + + + + h.y = 1.; + + vec2 t; + tp.y +=1.; + tp.x +=fGlobalTime; + tp.xz = asin(sin(tp.xz)); + + float sc=1.; + for(float i=0;i<4.;i++){ + tp.x = .5-abs(tp.x); + tp*=2.5; + sc*=2.5; + + tp = erot(tp,vec3(0,1,0),.785); + } + float dd,c=10/3.141592; + + tp.xz = vec2(log(dd=length(tp.xz)),atan(tp.x,tp.z))*c; + tp.y /=dd/=c; + + tp.x +=fGlobalTime; + tp.xz = asin(sin(tp.xz)); + + tp.y = abs(tp.y)-0.5-abs(gy)*.1; + + gy = dot(sin(tp),cos(tp.zxy*7)); + t.x= dd*.8*min(box2(tp.yz,vec2(.01)), box2(tp.xy,vec2(.01)))/sc; + t.y = 2.; + h = t.x < h.x ? t:h; + + + + return h; +} +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(.0,.3,.7)));} +#define q(s) s*sdf(p+s).x +vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col = vec3(.1,.2,.7)*max(0,1.+uv.y*7.); + vec3 ro = vec3(0.,1.+sin(fGlobalTime),-5.); + + if(mod(fGlobalTime,20) > 10 ) ro = erot(ro,normalize(vec3(0.,1.,0.)),fGlobalTime*.5); + + vec3 rt = vec3(0.); + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z,vec3(0.,-1.,0.))); + vec3 y = normalize(cross(z,x)); + vec3 rd = mat3(x,y,z)*normalize(vec3(uv,1.-sin(floor(fGlobalTime*.5)*55)*.8*sqrt(length(uv)))); + vec3 rp = ro; + vec3 light = vec3(1.,2.,-3); + float dd = 0.; + vec3 acc = vec3(0.); + + + for(float i=0.;i<128.;i++){ + vec2 d = sdf(rp); + if(d.y == 2.){ + acc += vec3(1.,1.,0.)*.25*exp(i*-abs(d.x))/(60+sin(fGlobalTime*10+rp.y*10)*50); + d.x = max(.001,abs(d.x)); + } + rp+=rd*d.x; + + dd+=d.x; + if(dd>50) break; + if(d.x < .0001){ + vec3 n = norm(rp,.001); + vec3 n2 = norm(rp,.02+cos(rp.z*10)*.01); + float dif = max(0.5,dot(normalize(light-rp),n)); + float spc = pow(max(0.,dot(rd,reflect(normalize(light),n))),32.); + float fres = pow(1. - dot(-rd, n), 5.); + float ol = step(.1,.3*length(n-n2)); + if(ol ==0){ + rd = reflect(rd,n); + rp+=rd*.1; + continue; + } + col = pal(fres*2-fGlobalTime*.5+dif)*ol+spc+fres; + break; + } + + } + + out_color = vec4(col+acc,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_06_10_shader_jam_shadowparty/z0rg.glsl b/shader_file_sources/2022_06_10_shader_jam_shadowparty/z0rg.glsl new file mode 100644 index 000000000..b4786f319 --- /dev/null +++ b/shader_file_sources/2022_06_10_shader_jam_shadowparty/z0rg.glsl @@ -0,0 +1,265 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define FFT(a) (texture(texFFT, a).x) +#define FFTS(a) (texture(texFFTSmoothed, a).x) + +#define sat(a) clamp(a, 0., 1.) + +float hash11(float p) +{ + return fract(sin(p*123.456)*123.456); +} +float _seed; +float rand() +{ + return hash11(_seed++); +} +mat2 r2d(float a) { float c = cos(a), s = sin(a); return mat2(c, -s, s, c); } +float _cucube(vec3 p, vec3 s, vec3 th) +{ + vec3 l = abs(p)-s; + float cube = max(max(l.x, l.y), l.z); + l = abs(l)-th; + float x = max(l.y, l.z); + float y = max(l.x, l.z); + float z = max(l.x, l.y); + + return max(min(min(x, y), z), cube); +} + +vec3 getCam(vec3 rd, vec2 uv) +{ + float fov = 2.; + vec3 r = normalize(cross(rd, vec3(0.,1.,0.))); + vec3 u = normalize(cross(rd, r)); + return normalize(rd+(r*uv.x+u*uv.y)*fov); +} + +vec2 _min(vec2 a, vec2 b) +{ + if (a.x < b.x) + return a; + return b; +} + +float ztunnel; +vec2 map(vec3 p) +{ + p.xz *= r2d((p.y)*.1); + vec2 acc = vec2(100000., -1.); + vec3 pcubes = p; + //acc = _min(acc, vec2(length(p)-1., 0.)); + p.x += sin(p.z+fGlobalTime*5.)*.5; + acc = _min(acc, vec2(-p.y, 1.)); + + // ceiling + //acc = _min(acc, vec2(p.y+3., 2.)); + + float repcut = 10.; + vec3 pcut = p+vec3(0.,0.,ztunnel); + pcut = mod(pcut+repcut*.5,repcut)-repcut*.5; + float cut = abs(pcut.z)-2.; + + vec2 repwall = vec2(.5); + vec2 idwall = floor((p.zy+vec2(ztunnel, 0.)+repwall*.5)/repwall); + float off = sign(p.x)*texture(texNoise, idwall*.05).x*2. + -FFT(idwall.x*.1+idwall.y*.05)*5.; + float walls = abs(p.x)-4.-off; + acc = _min(acc, vec2(max(max(-walls, cut), (abs(p.x)-4.5)), 3.)); + + + vec3 repcubes = vec3(5.); + vec3 idcubes = floor((pcubes+repcubes*.5)/repcubes); + pcubes = mod(pcubes+repcubes*.5,repcubes)-repcubes*.5; + pcubes.xy *= r2d(idcubes.x+fGlobalTime*sin(idcubes.y)); + pcubes.xz *= r2d(idcubes.y+fGlobalTime*sin(idcubes.z)); + float cubes = _cucube(pcubes, vec3(.3)+8.*FFTS(idcubes.z*.1), vec3(.05)); + cubes = max(cubes, abs(p.z)-10.); + acc = _min(acc, vec2(cubes, 4.)); + + return acc; +} +vec3 getMat(vec3 p, vec3 n, vec3 rd, vec3 res) +{ + if (res.z == 2.) + return vec3(0.); + if (res.z == 1.) + return vec3(.1); + if (res.z == 3. && abs(dot(n, vec3(0.,1.,0.))) < 0.5 && abs(dot(n, vec3(0.,0.,1.))) < 0.5) // walls + { + vec2 repwall = vec2(.7); + float stpwall = 0.05; + vec2 uvwall = floor((p.zy*vec2(.5,1.)+vec2(ztunnel, 0.))/stpwall)*stpwall; + vec3 colA = vec3(.1,.3,.7); + vec3 colB = vec3(.9,.3,.8); + float thstrip = 0.1; + uvwall = mod(uvwall+repwall*.5,repwall)-repwall*.5; + float strips = min(abs(uvwall.x)-thstrip, abs(uvwall.y)-thstrip); + return pow(texture(texNoise, uvwall).x, 3.)*25.*mix(colA, colB, texture(texChecker, uvwall).x)*sat(strips*100.); + } + else + return vec3(.1,.4,.9); + return n*.5+.5; +} + +vec3 accCol; +vec3 trace(vec3 ro, vec3 rd, int steps) +{ + accCol = vec3(0.); + vec3 p = ro; + for (int i = 0; i < steps && distance(p, ro) < 80.; ++i) + { + vec2 res = map(p); + if(res.x < 0.01) + return vec3(res.x, distance(p, ro), res.y); + accCol += getMat(p, normalize(vec3(1.)), rd, vec3(0.,distance(p, ro), res.y)) + *(1.-sat(res.x/.5))*.1; + p+=rd*res.x; + } + return vec3(-1.); +} + +vec3 getNorm(vec3 p, float d) +{ + vec2 e = vec2(0.01,0.); + return normalize(vec3(d)-vec3(map(p-e.xyy).x, map(p-e.yxy).x, map(p-e.yyx).x)); +} + + + +vec3 getEnv(vec3 rd) +{ + return vec3(.2,.7,.7)*4.*(sin(rd.x*25.+fGlobalTime)*.2+.8)*sat(pow(abs(dot(rd, vec3(0.,0.,1.))), 55.)); +} + +vec3 rdr(vec2 uv) +{ + vec3 col = vec3(0.); + uv *= r2d(fGlobalTime*.1); + vec3 ro = vec3(sin(fGlobalTime*.25)*7.5,-2.,-5.); + vec3 ta = vec3(0.,-1.5-(sin(fGlobalTime*.3)*.5+.5)*2.,0.); + vec3 rd = normalize(ta-ro); + + rd = getCam(rd, uv); + + vec3 res = trace(ro, rd, 256); + vec3 accLightA = accCol; + if (res.y > 0.) + { + vec3 p = ro+rd*res.y; + vec3 n = getNorm(p, res.x); + col = getMat(p, n, rd, res); + float rough = 0.005; + vec3 refl = normalize(reflect(rd, n)+rough * normalize(vec3(rand(), rand(), rand())-.5)); + + vec3 rorefl = p+n*0.01; + vec3 resrefl = trace(rorefl, refl, 256); + if (resrefl.y > 0.) + { + vec3 prefl = rorefl+refl*resrefl.y; + vec3 nrefl = getNorm(prefl, resrefl.x); + + col += getMat(prefl, nrefl, refl, resrefl); + } + else if (abs(dot(n, vec3(0.,1.,0.))) > 0.5) + col += getEnv(rd); + } + else + col += getEnv(rd); + + col += accLightA; + + col = mix(col.zyx, col, sat(abs(uv.y*2.))); + + col *= .5; + col = mix(col.xxx, col.xxx*vec3(1.,.2,.1), 1.-sat((abs(uv.x)-.25)*100.)); + + return col; +} +float lenny(vec2 v) +{ + return abs(v.x)+abs(v.y); +} +float _sqr(vec2 uv, vec2 s) +{ + vec2 l = abs(uv)-s; + return max(l.x, l.y); +} + +void main(void) +{ + ztunnel = fGlobalTime*2.; + vec2 uv = (gl_FragCoord.xy-0.5*v2Resolution.xy)/v2Resolution.xx; + vec2 ouv = uv; + uv *= 1.+length(uv); + + _seed = texture(texNoise, uv*100.).x+fGlobalTime; + + vec3 col = rdr(uv); + + vec2 glowuv = uv+(vec2(rand(), rand())-.5)*.02; + col += pow(sat(rdr(glowuv)), vec3(1.5))*(1.+FFTS(0.05)); + + col = sat(col); + + vec2 grid = sin(uv*100.)+.999; + col += vec3(.1)*(1.-sat(min(grid.x, grid.y)*20.)); + + col += vec3(.4,.5,.7)*pow(1.-sat(lenny(uv*2.-vec2(0.,.15))),2.)*2.; + col *= (1.-sat(lenny(uv)))*(1.+5.*FFTS(.1)); + col = pow(col, vec3(2.)); + + float sharp = 400.; + col = mix(col, (vec3(240, 95, 34)/255.), (1.-sat(_sqr(ouv-vec2(.4,0.), vec2(.2,.07))*sharp))); + + float th = 0.007; + float z = _sqr(ouv-vec2(.25,0.05), vec2(.03,th)); + z = min(z, _sqr(ouv-vec2(.25,-0.05), vec2(.03,th))); + z = min(z, _sqr((ouv-vec2(.25,0.))*r2d(2.), vec2(.049,th))); + col = mix(col, vec3(0.), (1.-sat(z*sharp))); + + ouv -= vec2(.07,0.); + float o = _sqr(ouv-vec2(.25,0.05), vec2(.03,th)); + o = min(o, _sqr(ouv-vec2(.25,-0.05), vec2(.03,th))); + o = min(o, _sqr(ouv-vec2(.225,-0.0), vec2(.03,th).yx)); + o = min(o, _sqr(ouv-vec2(.275,-0.0), vec2(.03,th).yx)); +col = mix(col, vec3(0.), (1.-sat(o*sharp))); + +ouv -= vec2(.07,0.); + float r = _sqr(ouv-vec2(.25,0.05), vec2(.03,th)); + r = min(r, _sqr(ouv-vec2(.25,0.0), vec2(.01,th))); + r = min(r, _sqr(ouv-vec2(.225,-0.01), vec2(.045,th).yx)); + + r = min(r, _sqr(ouv-vec2(.275,0.02), vec2(.015,th).yx)); + r = min(r, _sqr((ouv-vec2(.26,-0.035))*r2d(-.7), vec2(.025,th).yx)); +col = mix(col, vec3(0.), (1.-sat(r*sharp))); + +ouv -= vec2(.07,0.); + float g = _sqr(ouv-vec2(.25,0.05), vec2(.03,th)); + g = min(g, _sqr(ouv-vec2(.25,0.0), vec2(.01,th))); + g = min(g, _sqr(ouv-vec2(.25,-0.05), vec2(.03,th))); + g = min(g, _sqr(ouv-vec2(.225,0.02), vec2(.015,th).yx)); + g = min(g, _sqr(ouv-vec2(.275,-0.0), vec2(.03,th).yx)); +col = mix(col, vec3(0.), (1.-sat(g*sharp))); + + + col = mix(col, texture(texPreviousFrame, gl_FragCoord.xy/v2Resolution.xy).xyz, .95); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_blinry.lua b/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_blinry.lua new file mode 100644 index 000000000..392e0f1fb --- /dev/null +++ b/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_blinry.lua @@ -0,0 +1,78 @@ +sin=math.sin +cos=math.cos +pi=math.pi +sqrt=math.sqrt +m=0 +function TIC()t=time()//100 +cls(8) +for i=1,50 do + x=(i*i*i*7+t)%240 + y=(i*i*13)%136 + if i%2==0 then + circ(x,y,1,12) + else + pix(x,y,12) + end +end + +x=t%240 +y=40 +circ(x,y,33,12) + +for i=1,7 do +a=i/10+sin(t/10) +line(175,32,300*cos(a),300*sin(a),math.random()*6+2) +end +rect(170,30,10,200,14) + +ellib(120,50,30,5,13) +ellib(120,54,30,5,13) +for i=1,11 do + a=2*pi/11*i + x=120+cos(a)*30 + y=50+sin(a)*5 + rect(x,y-5,2,5,14) + circ(x+1,y-5-t%5,sin(t)*3+1,4) +end + +for i=1,15 do + x=(i*i*i*15)%240 + y=50+(i*20)%15+sin(t+x)*5 + w=15+i*i*17%20 + h=30+i*i*30%20 + tri(x,y,x-w,y+h,x+w,y+h,2+i%5) + tri(x,y+h-10,x-6,y+h,x+6,y+h,0) +end + + +-- how to lua? +-- oh +darker={} +darker[15]=0 +darker[14]=15 +darker[13]=14 +darker[12]=13 +darker[8]=0 +darker[5]=4 +darker[4]=3 +darker[0]=0 +darker[2]=1 +darker[3]=2 +darker[1]=0 +darker[6]=7 +darker[7]=15 +h=90 +for x=0,239 do +for y=h,135 do +c=pix(x+sin(y+t)*3,h-(y-h)) +pix(x,y,darker[c]) +end +end + +print("MCH2022",40+3*cos(t),100+3*sin(t),0,false,4) +print("MCH2022",40,100,1+t%15,false,4) + +m=mouse() -- piep! +m=m/240*150 +print(m) +end diff --git a/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_gasman.lua b/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_gasman.lua new file mode 100644 index 000000000..fa343eff2 --- /dev/null +++ b/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_gasman.lua @@ -0,0 +1,73 @@ +-- hello from gasman! + +--someone shout out a theme please!!! +--llamas and unicorns I guess + +m=math +s=m.sin +c=m.cos + +function SCN(y) + t=time() + poke(16320+27,(y*10+t)%128) + poke(16320+28,(y*12+t)%128) + poke(16320+29,(y*14+t)%128) + poke(16320+15,0) + poke(16320+16,y*1.5) + poke(16320+17,0) +end + +function star(x,y,clr) +r=t/1000 +for j=0,10 do +k=10+s(t/234)*j +for i=0,10 do + circ(x+k*s(r+i*m.pi/5),y+k*c(r+i*m.pi/5),3,clr) +end +end +end + +function TIC()t=time() +cls(9) +rect(0,63,240,136,5) +-- this might be a very cubist llama + +sx=t/23 +star((30+sx-30)%300,40+40*s(t/345+30),3) +star((190+sx-30)%300,40+40*s(t/345+40),4) +star((100+sx-30)%300,40+40*s(t/345+20),10) + + +-- ok, I guess I need a neck_length +-- variable... + +n=10*m.abs(s(t/120)) +j=10*m.abs(s(t/180)) + +x=(t/10)%480-240 + +-- feet +rect(50+x,100-j,20,5,4) +rect(100+x,100-j,20,5,4) +-- legs +rect(50+x,70-j,15,30,4) +rect(100+x,70-j,15,30,4) +-- body +rect(50+x,50-j,100,30,4) +-- neck +rect(120+x,10+n-j,30,50-n,4) +circ(128+x,18+n-j,2,0) +circ(138+x,18+n-j,2,0) + +for i=0,30,5 do +-- that was meant to be a necklace, +-- but ok +circ(120+x+i,10+n-j,3,0) +end + +for i=0,30,5 do +circ(120+x+i,45+n-j+5*c(i/20),3,i/8) +end + +tri(132+x,24+n-j,136+x,24+n-j,134+x,26+n-j,0) +end diff --git a/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_lynn.lua b/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_lynn.lua new file mode 100644 index 000000000..1fdda3c5e --- /dev/null +++ b/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_lynn.lua @@ -0,0 +1,71 @@ +--lynn here!! ^-^ +--idk i'm just a cat + +-- thank fuck there's no size limit (: +function SCN(l) + poke(0x03ff9,math.sin(t/2+(l/8))*8) +end + +xoff=240 +q=0 +function TIC()cls()t=time()/64 + + if q<10 then blobs() + elseif q<20 then moire() + elseif q<30 then kefrens() + else q=0 end + q=q+.1 + dycp() +end + +function blobs() + for i=8,0,-1 do + for j=1,16 do + x=(math.sin(j*2+(t/16))*96)+120 + y=(math.cos(j*7+(t/17))*64)+68 + s=(math.cos(t/16)*7)+16 + + circ(x,y,i*s,i) + end + end +end + +function dycp() + xoff=xoff-1 + x=xoff + str="meow? meow! meow meow meow meow!!!" + len=string.len(str) + s=4 + for i=1,len do + y=(math.sin((t/8)+(i/5))*32)+68 + for j=0,1 do + print(string.sub(str,i,i),(x+(i*(s*6)))-(j*3),y-(j*3),j*12,true,s) + end + end +end + +function moire() +s1=(math.sin(t/8.1)*32)+120 +c1=(math.cos(t/7.3)*32)+68 +s2=(math.sin(t/5.4)*32)+120 +c2=(math.cos(t/4.9)*32)+68 + +s=8 +for i=0,64 do + for j=1,s/2 do + circb(s1,c1,j+(i*s),8) + circb(s2,c2,j+(i*s),9) + end +end +end + +function kefrens() +--they're KEFRENS bars :P +--(photon don't @ me) +for y=42,120 do + for j=0,5 do + x=(math.sin(t/12+(y/12))*(y/16)*8)+120 + line(x+j,y,x+j,136,1+j) + end +end +end \ No newline at end of file diff --git a/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_superogue.lua b/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_superogue.lua new file mode 100644 index 000000000..47c8d717c --- /dev/null +++ b/shader_file_sources/2022_07_22_byte_jam_mch/bytejam_mch_superogue.lua @@ -0,0 +1,39 @@ +-- Superogue @ MCH2022 Bytejam! +-- Theme: Unicorns and/or Lamas +t=0m=math +T={ +"May Contain Hackers", +" May Contain LUA", +" May Contain Demos!", +" May Contain Gasman", +"May Contain Unicorns" +} +function TIC() +for y=0,136 do +for x=0,240 do +sx=x-120sy=y-68 +a=m.atan(sx,sy)*8/m.pi +r=199/m.sqrt(sx*sx+sy*sy)+.1 +c=a+r+t +pix(x,y,(c+t)%8+8) +end end +-- unicorn, narwall? +ux=120+m.sin(t/5)*16 +uy=64+m.sin(t/7)*16 +s=32 +elli(ux,uy,s,s*.8,0) +b=m.abs(m.sin(t))*4 +for i=0,13 do + elli(ux-16-i,uy+18+i,(s+i)/3,s/3,0) + elli(ux+16+i,uy+18+i,(s+i)/3,s/3,0) + elli(ux,uy-20-i*2,9-i,3,i-t) + circ(ux-16,uy-b,8-i,12) + circ(ux-16,uy-b,4,0) + circ(ux+16,uy-b,8-i,12) + circ(ux+16,uy-b,4,0) +end +p=(t//8)%5 +print(T[1+p],5,121,0,2,2) +print(T[1+p],4,120,t,2,2) +t=t+.2 +end \ No newline at end of file diff --git a/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_exca_semifinal1.glsl b/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_exca_semifinal1.glsl new file mode 100644 index 000000000..86a470461 --- /dev/null +++ b/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_exca_semifinal1.glsl @@ -0,0 +1,209 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float time = fGlobalTime; +float ffts = 0.0; +float beat = 0.0; +float bar = 0.0; + +vec3 repeat( vec3 p, vec3 q) +{ + return mod( p +0.5*q,q)-0.5*q; +} + +vec3 getcam( vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward =normalize( target -cam); + vec3 right = normalize( cross( vec3(0,1,0), forward)); + vec3 up = normalize( cross( forward, right)); + return normalize( forward*fov + uv.x * right + uv.y* up); +} +float sphere(vec3 p, float r) +{ + return length(p) -r; +} +float oct( vec3 p, float s) +{ + p = abs(p); + return (p.x + p.y + p.z -s)*0.577; +} + +vec3 map(vec3 p, float glow) +{ + + float h = mod( bar, 4.0) * 2.0 + 0.5; + vec3 ro = repeat( p, vec3( 0.15, sin(h)*0.5, 0.15)); + vec3 so = repeat( p, vec3( 0.45, 1.0, 0.74)*glow); + + + float s = sphere( so, sin(h)*0.3+0.4); + float o = oct( ro, 0.15); + + s = max( o, s); + + return vec3( s, 1.0, 0.0); +} + +vec3 march( vec3 cam, vec3 rd, out vec3 p, out float t, float glow) +{ + for(int i = 0; i < 256; i++) + { + p = cam + rd*t; + vec3 r = map(p, glow); + t+=r.x; + if(r.x < 0.001) + { + return r; + } + if(t>=50.0) + { + t = 50.0; + return vec3(-1.0); + } + } + return vec3(-1.0); + +} + +vec3 normal( vec3 p) +{ + vec2 e = vec2(0.001, 0.0); + vec3 c = map(p,0.0); + return normalize( vec3( + map( p +e.xyy,0.0).x, + map( p +e.yxy,0.0).x, + map( p +e.yyx,0.0).x + )-c.x); +} + +float diffuse( vec3 p , vec3 l, vec3 n) +{ + return max( 0.0, dot( normalize(l-p), n)); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col1 = vec3(1.0, 0.6, 0.0); + vec3 col2 = vec3(0.0, 0.6, 1.0); + + ffts = texture( texFFTSmoothed, 0.2).r; + + beat = mod( time, 60./130.0); + bar = floor( time *60/ 130.0); + + vec3 c = vec3(0.); + vec3 cam = vec3( + sin( time*0.5) * 1.5, + cos( time*0.5) * 1.5, + sin( time*1.1) * 1.7 + ); + vec3 target = vec3(0,0,0); + vec3 light1 = vec3( + sin(time*0.3)*5.0, + sin(time*2.2)*5.0, + sin(time*1.2)*5.0 + ); + vec3 light2 = vec3( + sin(time*0.5)*5.0, + sin(time*1.2)*5.0, + sin(time*1.5)*5.0 + ); + + float fov = 2.2; + vec3 rd = getcam( cam, target, uv, fov); + + vec3 p; float t; + vec3 res = march(cam, rd, p, t, 0.0); + + if(res.y < -0.5) + { + //sky + } + else if(res.y < 0.5){ + // + } + else if( res.y < 1.5){ + vec3 n = normal(p); + c = col1 * diffuse(p, light1, n) + col2 * diffuse(p, light2, n); + + vec3 rrd = reflect( p, n); + vec3 rp; float rt; + vec3 rres = march( p+ n*0.1, rrd, rp, t,1.0); + vec3 rc = vec3(0.0); + if(rres.y < -0.5) + { + //sky + } + else if(rres.y < 0.5){ + //r + } + else if( rres.y < 1.5){ + vec3 rn = normal(rp); + rc = col1 * diffuse(rp, light1, rn) + col2 * diffuse(rp, light2, rn); + + vec3 rrrd = reflect( rp, rn); + vec3 rrp; float rrt; + vec3 rrres = march( rp+ rn*0.1, rrrd, rrp, rt,1.0); + vec3 rrc= vec3(0.0); + if(rrres.y < -0.5) + { + //sky + } + else if(rrres.y < 0.5){ + //r + } + else if( rrres.y < 1.5){ + vec3 rrn = normal(rrp); + rrc = col1 * diffuse(rrp, light1, rrn) + col2 * diffuse(rrp, light2, rrn); + + } + rc = mix( rc, rrc, 0.5); + + } + + c = mix( c, rc,0.5); + + } + + uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -=0.5; + uv*=0.99; + uv+=0.5; + vec3 previous = texture( texPreviousFrame, uv).rgb; + + c = previous * (1.0-length(c))*(0.8 + smoothstep(0.0, 0.016, ffts)*0.2) + c; + + + float col = mod( bar, 4.0); +if( col < 1.0) c.rgb = c.rgb; +else if( col < 2.0) c.rgb = c.grb; +else if( col < 3.0) c.rgb = c.bgr; +else if( col < 4.0) c.rgb = c.brg; + + + + out_color = vec4(c, 1.0); +} + + + + diff --git a/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_provod_final.glsl b/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_provod_final.glsl new file mode 100644 index 000000000..5b5596586 --- /dev/null +++ b/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_provod_final.glsl @@ -0,0 +1,113 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float t=fGlobalTime; +#define T(t,s) texture(t,(s+.5)/textureSize(t,0)) +#define no(f) T(texNoise,f).r +vec3 e=vec3(0.,1.,.01); +float hash(float f){return fract(sin(f)*48539.5437);} +float hash(vec2 f){return hash(dot(f, vec2(19.5435,59.4382)));} +#define rep(p,s) (mod(p,s)-(s)*.5) +float no2(vec2 f){vec2 F=floor(f);f-=F; + return mix( + mix(hash(F+e.xx),hash(F+e.yx),f.x), + mix(hash(F+e.xy),hash(F+e.yy),f.x),f.y); +} + +float he(vec2 p) { + return -no(p) * .13 * p.y; +} + +float w(vec3 p) { + float d=p.y; + d -= he(p.xz); + + d -= no(p.xz*100.)*.1; + //d = min(d, length(p)-1.); + + if (p.z < -30. && no(p.xz) > .31) + { + d -= no2(p.xz*3.) * 1.4; + d*=.5; + } + + //d -= + + p.x = rep(p.x, 25.); + p.z += 0.; + d = min(d, length(p.xz)-.1); + + return d; +} + +vec3 wn(vec3 p){ + return normalize(vec3( + w(p+e.zxx),w(p+e.xzx),w(p+e.xxz)) - w(p)); +} + +float tr(vec3 O,vec3 D,float l,float L){ + for(float i=0.;i<400.;++i){ + float d=w(O+D*l);l+=d; + if(d<.001*l||l>L)break; + } + return l; +} + +vec3 sd=normalize(vec3(-.4,.2,-1.)); +vec3 sc=vec3(1.,.7,.5); +vec3 skc(vec3 d) { + return mix( + vec3(1.), + vec3(0.,.34,.72), + .4+.6*smoothstep(0.,.2,d.y)); +} + +vec3 sce(vec2 uv){ + vec3 O=vec3(30.*t,1.,5.),D=normalize(vec3(uv,-2.)); + float L=500.,l=tr(O,D,0.,L); + vec3 c=skc(D); + if (l .9) { + a *= .9; + vec2 pn = pix * .8 + 1000.*hash(floor(bt)); + a += step(.3, no(pn)); + } + return a; +} + +float h(vec2 p) { + return prev(p).a; +} + +float w(vec3 p) { + float d = p.z; + d -= h(p.xy) * 7.; + return d; +} + +vec3 wn(vec3 p){ + return normalize(vec3( + w(p+e.zxx), + w(p+e.xzx), + w(p+e.xxz)) - w(p) + ); +} + +vec3 sc(vec2 uv) { + vec3 O=vec3(500., 500., 200.), D=normalize(vec3(uv, -2.)); + float pt = bt / 4.; + float frt = fract(pt); + float flt = floor(pt); + + flt *= flt; + + //O.z += 100. * ( + O.z += (100. + 50. * hash(flt*.4)) * frt; + O.x += (100. + 50. * hash(flt*.12)) * frt; + O.y += (100. + 50. * hash(flt*.3)) * frt; + + D.yz *= rm(-1. + .2*hash(flt*.1)); + D.xy *= rm(sin(pt)*.3 + 17.*hash(flt)); + + float L=1000.,l=0.; + for (float i=0.;i<200.;i++) { + float d= w(O+D*l)*.5;l+=d; + if(d<.01*l||l>L)break; + } + vec3 p =O+D*l,n=wn(p); + float ph = h(p.xy); + vec3 ld=normalize(vec3(1.)); + vec3 mc = mix( + vec3(.1,.8,.1), + vec3(.7,.1,.2), + ph) + ; + vec3 c = mc * mix( + max(0., dot(ld, n)), + pow(max(0., dot(n, normalize(ld-D))), 80.), + .9); + return c; +} + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 pix=gl_FragCoord.xy - .5; + + float a=aa(pix); + vec3 c=sc(uv); + + out_color = vec4(sqrt(c), a); +} \ No newline at end of file diff --git a/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_rimina_final.glsl b/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_rimina_final.glsl new file mode 100644 index 000000000..cd28fcdfd --- /dev/null +++ b/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_rimina_final.glsl @@ -0,0 +1,106 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.5).r; + +float E = 0.001; +float FAR = 100.; + +vec3 glow = vec3(0.); + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d, 0.)) + min(max(d.x, max(d.y, d.z)), 0.); +} + +float scene(vec3 p){ + vec3 pp = p; + + float safe = length(p)-2.0; + + for(int i = 0; i < 7; ++i){ + pp = abs(pp)-vec3(4.0, 2., 2.); + rot(pp.xy, time*0.1 + fft); + rot(pp.xz, time*0.5); + } + + float cs = length(pp)-2.0; + float bb = box(pp, vec3(0.1, FAR, 0.1)); + + vec3 g = vec3(0.5, 0.2, 0.5) * 0.02 / (abs(cs)+0.1); + g += vec3(0.2, 0.3, 0.2) * 0.05 / (abs(cs)+0.01); + + g *= 0.5; + glow += g; + + cs = max(abs(cs), 0.5); + + return max(min(cs, bb), -safe); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = uv-0.5; + q /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(sin(time*0.5), sin(time), cos(time*0.5)); + vec3 rt = vec3(0., 0., -1.); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0., 1., 0.))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z)*vec3(q, 1./radians(60.))); + + float t = E; + vec3 p = ro; + for(int i = 0; i < 100; ++i){ + float d = scene(p); + t += d; + p = ro + rd * t; + + if(d < E || t > FAR){ + break; + } + } + + vec3 col = vec3(0.); + if(t < FAR){ + col = vec3(0.1, 0.2, 0.2); + } + + col += glow; + col = vec3(1.0, 0.75, 0.5)-col; + + vec3 prev = texture(texPreviousFrame, uv*0.75).rgb; + prev = mix(prev, texture(texPreviousFrame, uv*0.25).rgb, 0.5); + + col = mix(col, prev, 0.9); + + col = smoothstep(-0.2, 1.2, col); + + + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_rimina_semifinal1.glsl b/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_rimina_semifinal1.glsl new file mode 100644 index 000000000..11a9d2c27 --- /dev/null +++ b/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_rimina_semifinal1.glsl @@ -0,0 +1,124 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.5).r; + +float E = 0.001; +float FAR = 100.; + +vec3 glow = vec3(0.); + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d, 0.)) + min(max(d.x, max(d.y, d.z)), 0.); +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +float scene(vec3 p){ + + vec3 pp = p; + + float bb = box(pp-vec3(0., -5., 0.), vec3(10.0, 0.5, 10.)); + + for(int i = 0; i < 5; ++i){ + pp = abs(pp)-vec3(0.3, 0.75, 0.5); + rot(pp.xy, time*0.5); + rot(pp.zy, time*0.25 + fft*2.); + } + + float bc = box(pp, vec3(0.1, 0.75, 0.3)); + glow += vec3(0., 0.4, 0.3) * 0.01 / (abs(bc) + 0.2); + + float cc = length(pp)-2.0; + glow += vec3(0.6, 0.2, 0.1)*0.03 / (abs(cc) + 0.1); + + float xc = box(pp, vec3(0.1, 0.1, FAR)); + glow += vec3(0.6, 0.2, 0.5)*0.01 / (abs(xc) + 0.01); + + xc = max(abs(xc), 0.9); + + float xx = length(p)-2.; + bc = max(bc, -xx); + + + return min(min(bc, xc), bb); +} + +vec3 shade(vec3 p, vec3 rd, vec3 ld){ + vec3 e = vec3(E, 0., 0.); + vec3 n = normalize(vec3( + scene(p+e.xyy) - scene(p-e.xyy), + scene(p+e.yxy) - scene(p-e.yxy), + scene(p+e.yyx) - scene(p-e.yyx) + )); + + float l = max(dot(ld, n), 0.); + float a = max(dot(reflect(rd, ld), n), 0.); + float s = pow(a, 40.); + + return vec3(0.5)*l + vec3(0.8)*s; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = uv-0.5; + q /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(20.0*cos(time*0.5), 4., 24.0*sin(time*0.5)); + vec3 rt = vec3(0., -1., -1.); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0., 1., 0.))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z)*vec3(q, 1./radians(60.))); + + float t = E; + vec3 p = ro; + + for(int i = 0; i < 100.; ++i){ + float d = scene(p); + t += d; + p = ro + rd * t; + + if(d < E || t > FAR){ + break; + } + } + + vec3 col = vec3(0.1, 0.1, 0.2); + if(t < FAR){ + col = shade(p, rd, -rd); + } + col += glow*0.9; + + vec3 prev = texture(texPreviousFrame, uv).rgb; + + col = mix(col, prev, 0.9); + + col = smoothstep(-0.2, 1.2, col); + + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_visy_semifinal2.glsl b/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_visy_semifinal2.glsl new file mode 100644 index 000000000..eb31ae703 --- /dev/null +++ b/shader_file_sources/2022_08_05_shader_showdown_assembly/shader_asm_visy_semifinal2.glsl @@ -0,0 +1,66 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +vec2 sprite; + + +float t; +void main(void) +{ + t = fGlobalTime; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + if (uv.x < 0.5) uv.x = 1.0-uv.x; + if (uv.y < 0.5) uv.y = 1.0-uv.y; + uv.y*=mod(t,4.0); + uv.x*=mod(t,1.0); + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec4 cc = vec4(0.0); + for (float i = 0.0; i < 16.0; i+=1.0) { + + float s = (uv.y*20.1+i)*cos(t*0.1+i*0.1)*cos(t*0.01)*20+t*0.01*sin(t+i)*sin(tan(uv.x*i)-t)*cos(t*1.*i*0.01)*1; + sprite = vec2(uv.x*s,uv.y*s); + float w = 512.; + float h = 512.; + + float dx = sprite.x / w; + float dy = sprite.y / h; + + float c = w / sprite.x; + + float index = cos(i+t*2.1); + + float x = mod(index, c); + float y = floor(index / c); + + vec2 uv2 = vec2(dx * uv.x + x * dx, 1.0 - dy - y * dy * uv.y); + + float ca = cos(i*10.1+t*10.); + cc += texture2D(texChecker,uv2); + } + + out_color = cc/8.0+0.1*cos(t*1.)*texture2D(texPreviousFrame,uv)*0.5; + out_color = out_color; + +} \ No newline at end of file diff --git a/shader_file_sources/2022_08_05_shader_showdown_evoke/flopine_final.glsl b/shader_file_sources/2022_08_05_shader_showdown_evoke/flopine_final.glsl new file mode 100644 index 000000000..4630f422f --- /dev/null +++ b/shader_file_sources/2022_08_05_shader_showdown_evoke/flopine_final.glsl @@ -0,0 +1,130 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +// flopine + +#define PI acos(-1.) +#define rot(a) mat2(cos(a),sin(a), -sin(a), cos(a)) +#define dt(sp) fract(fGlobalTime*sp) +#define swia(sp) floor(sin(dt(sp)*2.*PI)+1.) + +struct obj { + float d; + vec3 c; + }; + + void mo (inout vec2 p, vec2 d) + { + p = abs(p)-d; if(p.y>p.x) p=p.yx; + } + + float cube (vec3 p, vec3 c) + { + vec3 q = abs(p)-c; + return length(max(q,0.)); + } + + obj minobj(obj a, obj b) + { + if (a.dp2.y) return vec2((p.x<0.)?-1.:1.,0.); + else return vec2(0.,(p.y<0.)?-1.:1.); + } + + float prims (vec3 p) +{ + vec2 center = floor(p.xz)+.5; + vec2 neigh = center + edge(p.xz-center); + + float sy = mix(0.2,0.6,hash21(center)); + vec3 mep = p-vec3(center.x, 0., center.y); + float me = prim1(mep, sy); + vec3 nep = p-vec3(neigh.x, 0., neigh.y); + float ne = cube(nep, vec3(0.499,1.,0.499)); + return min(me,ne); + } + + vec2 id; float g1=0.; + float cyls (vec3 p) + { + id = floor(p.xz/0.33); + float per = 0.335; + p.xz = mod(p.xz, per)-per*.5; + float sy = .3+sin(length(id)-fGlobalTime*4.)*.3; + float d = max(length(p.xz)-0.08, abs(p.y)-sy); + g1 += 0.001/(0.001+d*d); + return d; + } + +float SDF (vec3 p) +{ + p.yz *= rot (-atan(1./sqrt(2.))); + p.xz *= rot(PI/4.); + + return min(cyls(p),prims(p)); + } + + vec3 gn (vec3 p) + {vec2 eps = vec2(0.01,0.); + return normalize(SDF(p)-vec3(SDF(p-eps.xyy),SDF(p-eps.yxy),SDF(p-eps.yyx))); + + } +float mask (vec2 uv) + { + uv *= 1.5; + float m = texture(texFFT, floor((abs(uv.x)+abs(uv.y))*16.)/16.).x; + return m; + } + +void main(void) +{ + vec2 uv = out_texcoord; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +float dither = hash21(uv); + vec3 ro = vec3(uv*4.,-30.), rd=vec3(0.,0.,1.),p=ro,col=vec3(0.), l=vec3(1.,1.,-1.); + bool hit = false; + + for (float i=.0; i<150.; i++) + { + float d = SDF(p); +if (d<0.001) +{ + hit = true; break; + } + d *= .9+dither*0.1; + p += d*rd; + } + + if (hit) + { + vec3 n = gn(p); + float light = dot(n,l)*.1+.1; + col = vec3(light); + } + col += g1*palette(hash21(id),vec3(0.5),vec3(0.,0.36,0.64))*.3; + + col = (mask(uv)<.02)?col:clamp(1.-col,0.,1.); + //col = vec3(mask(uv)); + out_color = vec4(sqrt(col),1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_08_05_shader_showdown_evoke/nusan_semi1.glsl b/shader_file_sources/2022_08_05_shader_showdown_evoke/nusan_semi1.glsl new file mode 100644 index 000000000..d628d4f94 --- /dev/null +++ b/shader_file_sources/2022_08_05_shader_showdown_evoke/nusan_semi1.glsl @@ -0,0 +1,142 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time=mod(fGlobalTime, 300); + + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float musi(float t) { + return texture(texFFTIntegrated, t*.1).x; +} + +float cyl(vec3 p, float d, float h) { + + return max(length(p.xz)-d,abs(p.y)-h); +} + +float rnd(float t) { + return fract(sin(t*457.814)*943.824); +} + +vec3 rnd3(float t) { + return fract(sin(t*457.814)*vec3(943.824,724.174,528.934)); +} + +float map(vec3 p) { + + vec3 bp=p; + + p.y-=musi(0.02)*5; + + p.xz *= rot(time+p.y*.01); + + p.xz = abs(p.xz) - 15; + p.xz = abs(p.xz) - 3; + + float d=1000; + for(int i=0; i<15; ++i) { + + vec3 p2=p; + float s=10; + p2+=(rnd3(i*.2+.1)-.5)*vec3(2,10,2); + p2.y=(fract(p2.y/s+.5)-.5)*s; + d=min(d, cyl(p2, .3,2)); + vec3 p3=p2; + p3.xz *= rot(time*.3-p.y*.05); + d=min(d, length(p3.xy)-.1 + max(0,sin(p.y*.15))*0.5); + + } + + //d=max(d, 2-length(bp.xz)); + + return d; +} + +void cam(inout vec3 p) { + float t=musi(0.03)*.5; + p.yz *= rot(sin(t*.05)*.5-.9); + p.xz *= rot(t*.1); + +} + +vec3 norm(vec3 p, float off) { + vec2 of=vec2(off,0); + return normalize(vec3(map(p+of.xyy)-map(p-of.xyy), map(p+of.yxy)-map(p-of.yxy), map(p+of.yyx)-map(p-of.yyx))); +} + +float gao(vec3 p, vec3 n, float t) { + return smoothstep(0,1,map(p+n*t)/t)*.5+.5; +} + +void main(void) +{ + vec2 uv = out_texcoord; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 s=vec3(sin(time*.5)*3,0,-10); + vec3 r=normalize(vec3(uv,1)); + cam(s); + cam(r); + + vec3 p=s; + + vec3 col=vec3(0); + + for(int i=0; i<100; ++i) { + float d=map(p); + if(d<0.001) break; + if(d>100) break; + p+=r*d; + } + + float fog=1-clamp(length(p-s)/100,0,1); + //col+=map(p-r*.5) * fog; + + + vec3 n=norm(p, 0.01); + float ao=gao(p,n,0.1)*gao(p,n,0.2)*gao(p,n,0.4); + vec3 l=normalize(vec3(3,2,1)); + vec3 h=normalize(l-r); + float spec=max(0, dot(n,h)); + vec3 diff=vec3(1,0.8,0.3); + float fre=pow(1-abs(dot(n,r)),4); + col += max(0, dot(n,l)) * (diff*(1 + pow(spec, 10)) + pow(spec, 100)); + col += fre*vec3(0.5,0.7,1); + col *= fog*ao; + + col += pow(1-fog,5) * 0.5*vec3(1.7,0.5,.5) * pow(abs(r.y),5); + + col.xz *= rot(time+uv.x); + col=abs(col); + + col *= 2, + + col=smoothstep(0,1,col); + col=pow(col, vec3(0.4545)); + + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_08_05_shader_showdown_evoke/totetmatt_final.glsl b/shader_file_sources/2022_08_05_shader_showdown_evoke/totetmatt_final.glsl new file mode 100644 index 000000000..7cfef6120 --- /dev/null +++ b/shader_file_sources/2022_08_05_shader_showdown_evoke/totetmatt_final.glsl @@ -0,0 +1,115 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +float cr(vec3 p){ + p = abs(p); + float d=0.,m; + for(float i=0;i++<3.;){ + d += step(m=max(p.y,p.z),p.x)*m; + p = p.yzx; + } + return max(max(p.x,max(p.y,p.z))-2.9,1.-d); + + } + +vec2 sdf (vec3 p){ + vec2 h; + vec3 tp=p; + vec3 op = p; + p.x = abs(p.x)-2.5; + p.z +=texture(texFFTIntegrated,.3).r*15; + p.z = asin(sin(p.z)); + //p = erot(p,normalize(vec3(1.,.2,.3)),fGlobalTime); + h.x = cr(p); + + float sc=1.,d=0.; + for(float i=0;i++<(3-0*sin(texture(texFFTIntegrated,.3+floor(tp.z)).r*10));){ + h.x = max(h.x,cr(p)*sc); + sc /=3.; + p = fract((p-1.)*.5)*6.-3; + } + + h.y = 1.; + + vec2 t; +t.x = dot(tp,vec3(0.,1.,0.)); + t.y = 2.; + + h= t.x < h.x ? t:h; + + op.y -=1.; + op = abs(op)-.5; + op.xy +=dot(cos(op+vec3(0.,0.,fGlobalTime*10)),sin(op.zxy))*.1; + t.x = length(op.xy)-.1; + t.x = max(abs(op.z)-3,t.x); + t.y = 3;; + h = t.x < h.x ? t:h; + return h; + + } +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} +#define q(s) s*sdf(p+s).x +vec3 norm(vec3 p, float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(.1,.2,.3)));} +// Technical pause +void main(void) +{ + vec2 uv = out_texcoord; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv *=rot(fGlobalTime); + //uv = vec2(log(length(uv)),atan(uv.x,uv.y)); + vec3 col = vec3(.1*texture(texFFT,floor(uv.y*10)/10).r*50); + vec3 ro = vec3(.5+0*asin(cos(fGlobalTime))*.3,2.+asin(sin(fGlobalTime))*.2,-2.),rt=vec3(0.,1,0); + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z,vec3(0.,-1.,0.))); + vec3 y = normalize(cross(z,x)); + + vec3 rd= mat3(x,y,z)*normalize(vec3(uv,1.-(.9)*sqrt(length(uv)))); + vec3 rp = ro; + vec3 light = vec3(1,2.,-3.); + for(float i=0;i<128;i++){ + + vec2 d= sdf(rp); + + if(d.y == 3){ + + col +=vec3(1.)*exp(-abs(d.x))/(100-texture(texFFT,.3).r*5000);; + d.x = max(.001,abs(d.x)); + } + rp +=rd*d.x; + + if(d.x < .0001 ){ + vec3 n = norm(rp,.001); + if(d.y==2.){ + rd = reflect(rd,n+dot(sin(rp),cos(rp.yzx))*.2); + col+=vec3(.0,.1,.2); + rp+=rd*.1; + continue; + } + vec3 n2 = norm(rp,.01); + float dif = max(0.,dot(normalize(light),n)); + col = dif * pal(.1+fGlobalTime+d.x*.01)+dif*pal(dif)*step(.01,length(n-n2)); + break; + } + } + + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_08_05_shader_showdown_evoke/totetmatt_semi1.glsl b/shader_file_sources/2022_08_05_shader_showdown_evoke/totetmatt_semi1.glsl new file mode 100644 index 000000000..48bee3686 --- /dev/null +++ b/shader_file_sources/2022_08_05_shader_showdown_evoke/totetmatt_semi1.glsl @@ -0,0 +1,89 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +// I WANT THE SOURCE !!!!!! +// come to https://livecode.demozoo.org +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +const vec2 sz = vec2(1.,1.73),hs = sz*.5; +vec2 hexgrid(inout vec2 p){ + vec2 pa= mod(p,sz)-hs,pb=mod(p-hs,sz)-hs,pc=dot(pa,pa) < dot(pb,pb) ? pa : pb; + vec2 n = (p-pc+hs)/sz; + p = pc; + return round(n*2.)*.5; + + } +float box(vec3 p,vec3 b){ + vec3 q = abs(p)-b; + return length(max(vec3(0.),q))+min(0.,max(q.x,max(q.y,q.z))); + } +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(.0,.3,.6)));} +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} +void main(void) +{ + vec2 uv = out_texcoord; + + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 uuv = uv; + vec3 col = vec3(.1+texture(texFFT,abs(uv.x)).r*10); + float tt =texture(texFFTIntegrated,.3).r*.25; + uv += vec2(asin(sin(sz.y*tt)),asin(cos(sz.x*tt))); + uv*=2; + + vec2 n = hexgrid(uv); + if(dot(cos(n),sin(n.yx)) < .0) uv*=2.; + vec2 p1=uv*3.,p2=p1+vec2(1.,inversesqrt(3.)); + + vec2 n1 = hexgrid(p1); + vec2 n2 = hexgrid(p2); + + float l = 1.; + if(n1.x < n2.x+.5) l *= .75; + + if(n1.y < n2.y) l *= .75; + float gy = dot(sin(n1*4),cos(n2*8)); + float zzccmxtp= (gy + fGlobalTime+n2.y*.4+n2.y*.3+n2.x*.2+n1.x*1.1); + float txt = texture(texFFTSmoothed,zzccmxtp).r; + + float d1 = max(dot(p1=abs(p1),sz*.5),p1.x)-.48; + + float d2 = max(dot(p2=abs(p2),sz*.5),p2.x)-.48; + float d = max(d1,d2); + d = smoothstep(0.,fwidth(d),d); + + col = (gy < .0 ? d: 1.)*(txt*10 > .1 ? pal(zzccmxtp*3): vec3(.5))*l*vec3(1.)*txt*100; + + uv = uuv; + vec3 p,dd= normalize(vec3(uv,1.)); + for(float i=0.,g=0.,e=0.;i++<99.;){ + + p = dd*g; + p.z -=5.-texture(texFFTSmoothed,.3).r*500; + p.x += asin(sin(fGlobalTime)); + + p.y += asin(cos(fGlobalTime)); + + p.xy *=rot(fGlobalTime); + + float h = box(p,vec3(1.)); + g+=e=h; + // CUBIGGGAAAAAAAA + vec3 cc = mod(floor(p.x*5+floor(mod(p.y*5,2)))*5 ,2.) < 1. ? vec3(1.,0.,0.) : vec3(1.); + col += cc*.055/exp(e*e*i); + } + out_color = vec4(sqrt(col),1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_08_05_shader_showdown_evoke/z0rg_semi2.glsl b/shader_file_sources/2022_08_05_shader_showdown_evoke/z0rg_semi2.glsl new file mode 100644 index 000000000..64b87d0c0 --- /dev/null +++ b/shader_file_sources/2022_08_05_shader_showdown_evoke/z0rg_semi2.glsl @@ -0,0 +1,116 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define sat(a) clamp(a, 0., 1.) +mat2 r2d(float a) +{float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} + +vec3 getCam(vec3 rd,vec2 uv){ + + float fov = 3.; + vec3 r = normalize(cross(rd,vec3(0.,1.,0.))); + vec3 u = normalize(cross(rd,r)); + return normalize(rd+fov*(r*uv.x+u*uv.y)); +} +vec2 _min(vec2 a,vec2 b){ + if(a.x < b.x) return a; + return b; +} +float _cube(vec3 p,vec3 s){ + vec3 l = abs(p)-s; + return max(l.x,max(l.y,l.z)); +} +vec2 map(vec3 p){ + vec2 acc = vec2(100000.,-1.); + + vec3 p2 = p; + p2.xy += sin(p.z+fGlobalTime)*.2; + acc = _min(acc,vec2(-(length(p2.xy)-4.),1.)); + + p += vec3(sin(fGlobalTime),cos(fGlobalTime*.33),sin(fGlobalTime*.5)-.5); + + for(int i=0;i<8;++i){ + float fi = float(i); + vec3 p3 = p+vec3( sin(fi),cos(fi*5.+fGlobalTime),sin(fi))*(2.+texture(texFFT,fi*.1).x*10.); + + p3.xy *= r2d(fGlobalTime*.5+fi); + p3.xz *= r2d(fGlobalTime*.5+fi); + acc = _min(acc,vec2(_cube(p3,vec3(.5+texture(texFFT,.1).x)),0.)); + } + + return acc; +} + +vec3 getNorm(vec3 p,float d){ + vec2 e = vec2(0.01,0.); + return normalize(vec3(d)-vec3(map(p-e.xyy).x,map(p-e.yxy).x,map(p-e.yyx).x)); + +} +vec3 accCol; +vec3 trace(vec3 ro,vec3 rd, int steps) { + accCol = vec3(0.); + vec3 p = ro; + for(int i= 0; i< steps;++i) + { + vec2 res = map(p); + if(res.x < 0.01) + return vec3(res.x,distance(p,ro),res.y); + accCol +=vec3(.4,.2,sat(sin(p.z*.5)))*(1.-sat(res.x/.5))*.1; + if(res.y == 1.) + accCol *=1.1; + p+=rd*res.x; + } + return vec3(-1.); + } + + vec3 rdr(vec2 uv){ + vec3 col = vec3(.0); + vec3 ro = vec3(sin(fGlobalTime),cos(fGlobalTime*.7),-2.); + vec3 ta = vec3(0.); + vec3 rd = normalize(ta-ro); + rd = getCam(rd,uv); + + vec3 res = trace(ro,rd, 128); + if(res.y > 0.) + { + vec3 p = ro+rd*res.y; + vec3 n = getNorm(p,res.x); + col = vec3(1.)*n; + + if(res.z == 1.) + { + float a = atan(p.y,p.x); + col = .2*texture(texTex4, vec2(a, p.z*.25+texture(texFFTIntegrated, .1).x*2.)).xyz; + n += texture(texTex4, vec2(a, p.z*.25+texture(texFFTIntegrated, .1).x*5.)).xyz; + } + col += pow(sat(dot(n,normalize(vec3(1.,2.,3.)))),7.); + } + col +=accCol; + return col; + } +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col = rdr(uv); + + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_08_06_byte_battle_lovebyte_turbo/blossom.lua b/shader_file_sources/2022_08_06_byte_battle_lovebyte_turbo/blossom.lua new file mode 100644 index 000000000..0fc524d31 --- /dev/null +++ b/shader_file_sources/2022_08_06_byte_battle_lovebyte_turbo/blossom.lua @@ -0,0 +1,9 @@ +t=0 +function TIC()t=t+1 +for y=0,136 do for x=0,240 do +p=x/88-1.3 +q=y/66-1 +c=p/q-t/9 +a=p*p+q*q-1-math.sin(t/9)/2 +pix(x,y,a^3<-p*p*q*q*q and 2 or c%2) +end end end \ No newline at end of file diff --git a/shader_file_sources/2022_08_06_byte_battle_lovebyte_turbo/superogue.lua b/shader_file_sources/2022_08_06_byte_battle_lovebyte_turbo/superogue.lua new file mode 100644 index 000000000..116e67ce3 --- /dev/null +++ b/shader_file_sources/2022_08_06_byte_battle_lovebyte_turbo/superogue.lua @@ -0,0 +1,9 @@ +--good luck blossom! +t=0 +function TIC()t=t+1 +for y=0,136 do for x=0,240 do +X=x-y +Y=x+y +q=t//64+2 +pix(x,y,(t+X|Y)//q%8-3) +end end end \ No newline at end of file diff --git a/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_dart.glsl b/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_dart.glsl new file mode 100644 index 000000000..10b92b468 --- /dev/null +++ b/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_dart.glsl @@ -0,0 +1,127 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 4.2 + cos(time)), c * 4.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +mat2 rot(float a) +{ + return mat2(cos(a),-sin(a),sin(a),cos(a)); +} + +float box(vec3 p, vec3 c) +{ + vec3 a = abs(p)-c; + return max(max(a.x, a.y),a.z); +} + +vec2 min2(vec2 a, float d, float m) +{ + if (a.x < d) + return a; + return vec2(d,m); +} + +float rnd(float t) +{ + return fract(sin(t*3.5552)*9.52376); +} + +float cur(float a, float b) +{ + float g = a / b; + return mix( rnd(floor(g)), rnd(floor(g+1)), fract(g) ); +} + +float t = fGlobalTime; + + +vec3 objcol; +vec2 map(vec3 p0) +{ + vec2 d=vec2(1e5,-1); + vec3 p; + p = p0; + p.yz *= rot(t + p.y*0.3); + p.xz *= rot(t + p.x*0.1); + float f = texture(texFFTSmoothed, (0.04+0.5)/1024).r*10; + d = min2(d, box(p, vec3(1+f)),2); + + { + p = p0; + float h = 0.1; + p.xy *= rot(sin(t)*1.14 + p.z*0.4); + p.z += cur(t, 2.0)+1.; + p.y = abs(p.y); + p.y -=3; + p.xz = mod(p.xz - 1, 2) - 1; + d = min2(d, box(p, vec3(0.9, h, 0.9)),1); + objcol = abs(p0) * 0.01; + } + return d; + + +} + +vec3 norm(vec3 p) +{ + float b= map(p).x; + vec2 o = vec2(0.01, 0); + return normalize(vec3(map(p-o.xyy).x, map(p-o.yxy).x,map(p-o.yyx).x )); +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(0,0,-22 + cur(t*0.6,0.3)*10); + vec3 rd = normalize(vec3(uv, dot(uv,uv)+cur(t,1.0))); + + vec3 col, p = ro; + float sd; + int i; + vec2 d; + for (i = 0; i < 100; ++i) + { + d = map(p); + if (d.x < 0.01) { + if (d.y != 2) + break; + vec3 n = norm(p); + rd = reflect(n, rd); + d.x = 0.1; + } + p += rd * d.x *0.48; + col += objcol * 0.81; + sd += d.x; + } + + float s = 1.0 - float(i)/100.; + //col = vec3(s); + out_color = vec4(col,1); + return; + + +} \ No newline at end of file diff --git a/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_f0x.dx11.hlsl b/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_f0x.dx11.hlsl new file mode 100644 index 000000000..fd20a1667 --- /dev/null +++ b/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_f0x.dx11.hlsl @@ -0,0 +1,73 @@ +Texture2D texChecker; +Texture2D texNoise; +Texture2D texTex1; +Texture2D texTex2; +Texture2D texTex3; +Texture2D texTex4; +Texture1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +Texture1D texFFTSmoothed; // this one has longer falloff and less harsh transients +Texture1D texFFTIntegrated; // this is continually increasing +Texture2D texPreviousFrame; // screenshot of the previous frame +SamplerState smp; + +cbuffer constants +{ + float fGlobalTime; // in seconds + float2 v2Resolution; // viewport resolution (in pixels) + float fFrameTime; // duration of the last frame, in seconds +} + +float4 plas( float2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return float4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +float4 main( float4 position : SV_POSITION, float2 TexCoord : TEXCOORD ) : SV_TARGET +{ + float2 uv = TexCoord; + uv -= 0.5; + uv /= float2(v2Resolution.y / v2Resolution.x, 1); + float2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texFFT.Sample( smp, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + float4 t = plas( m * 3.14, fGlobalTime ) / d; + t = saturate( t ); + t=0; + float3 ff; + float2 r=float2(1.8,1); + + ff=texNoise.Sample(smp,uv*r+float2(0,-fGlobalTime*.7))*(1-uv.y*5)+saturate(uv.y-.5); + ff*=texNoise.Sample(smp,uv*.4*r+float2(0,-fGlobalTime*.2))*(1-uv.y*5)+saturate(uv.y-.5); + ff*=texNoise.Sample(smp,uv*4.4*r+float2(0,-fGlobalTime*.52))*(1-uv.y*5)*.4+saturate(uv.y-.5)*.01+.9; + + ff*=float3(5,2,1); + + ff*=saturate(abs(uv.y-.5)); + + ff=pow(ff,2)+.2*pow(ff,ff); + + + + float3 bb=float3(0,0,0); + +float p= texFFTSmoothed.Sample(smp,.5); + + float2 uv3=uv; + uv3*=texNoise.Sample(smp,uv); + bb=saturate(1-5*length(uv3-4*float2(0,p)*4)+texFFTSmoothed.Sample(smp,abs(uv.x))); + bb*=float3(0,.3,.7); + //bb/=saturate(bb)+1; + +// bb=max(bb,texNoise.Sample(smp,uv*5)>.44); + + + + + return float4(ff+bb,1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_ivan_dianov.glsl b/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_ivan_dianov.glsl new file mode 100644 index 000000000..913e39f53 --- /dev/null +++ b/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_ivan_dianov.glsl @@ -0,0 +1,66 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +#define time fGlobalTime +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define F float +#define V vec2 +#define W vec3 +#define N normalize +#define L length +#define rot(x) mat2(cos(x),-sin(x),sin(x),cos(x)) +#define S(x) sin((x)+2*sin((x)+4*sin(x))) +#define SS(X) S(L(P.xy)-P.z*1.4+time*.3+99*X) +//#define + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +void main(void) +{ + out_color-=out_color; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + F i=0,d=0,e=1; + W p,P,rd=N(W(uv,1)); + rd.y*=4.; + rd.xz*=rot(-2*uv.x+time*.1); + for(;i++<99&&e>.0001;){ + p=P=rd*d+.001; + p.z-=5-time*.5; + + p.z+=atan(p.y,p.x)/3.1415; + p.z=mod(p.z,.5)-.25; + + F ss=3,s; + for(F j=0;j++<3;){ + p.xy=mod(p.xy,1)-.5; + ss*=s=2;p*=s; + p.xy = V(L(p.xy)-.7+SS(3)*.1,atan(p.y,p.x)/3.1415*2); + ss*=s=2;p*=s; + //cyl + p.xz=V(atan(p.z,p.x)/3.1415*1,L(p.xz)-.5+.2*SS(0)); + p.x+=time*.1; + out_color.r+=.004/exp(300*e)*(S(L(-P.z+P.x))*.5+.5); + out_color.b+=.004/exp(300*e)*(S(L(P.z+P.y))*.5+.5); + } + p.xy=mod(p.xy,1)-.5; + d+=e=(L(V(L(p.xy)-.5+.3*SS(2),p.z))-.3+.2*SS(1))/ss; + } + + out_color += 1-i/99; +} \ No newline at end of file diff --git a/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_jin_x.glsl b/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_jin_x.glsl new file mode 100644 index 000000000..7cca7532e --- /dev/null +++ b/shader_file_sources/2022_10_21_shader_showdown_CAFe/FINALS/finals_grabber_cafe2022_jin_x.glsl @@ -0,0 +1,76 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define EPS .0001 + +int idx = 0; +float time, glow = 1; + +float sdf(vec3 p) +{ + float s[3]; + s[0] = p.y + texture(texNoise, p.xz * .05).x * 5; + s[1] = 10 - p.y + texture(texNoise, p.xz * .01).x * 5; + s[2] = length(p - vec3(16, 4, time+50)); + idx = 0; + for (int i = 1; i < 3; ++i) + if (s[i] < s[idx]) + idx = i; + if (idx == 2) glow += .02/(.1*s[2]*s[2]); + return s[idx]; +} + +mat2 rot(float a) +{ + return mat2(cos(a), -sin(a), sin(a), cos(a)); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + time = fGlobalTime; + + int i; + vec3 rp = vec3(sin(time/10)*3.3,sin(time)*.5+1,time), rd = normalize(vec3(uv, 1)); + rd.xz *= rot(sin(time/10)/2); + rd.xy *= rot(sin(time/7)/5); + float td = 0; + while (++i < 1000) { + float d = sdf(rp)*.1; + if (d < EPS) break; + td += d; + if (td > 100) { idx = 2; break; } + rp += d*rd; + } + + float br = pow(50/float(i), 1.5); + + float l = 5; + float s1 = texture(texFFTSmoothed, .005).x; + float s2 = texture(texNoise, vec2(time*.5,0)).x; +// if (s1 > .25) l = 25; + if (s2 < 0.1) l = 25; + float sky = pow(texture(texNoise, rp.xz * .001).x, 5) * 3000 * l; + vec3 c[3] = vec3[](vec3(1,.4,0)*sqrt(l)/1.5, vec3(.2,.5,1)*sky, vec3(glow)); + vec3 col = br * glow * c[idx]; + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_dart.glsl b/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_dart.glsl new file mode 100644 index 000000000..a717d9d2e --- /dev/null +++ b/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_dart.glsl @@ -0,0 +1,102 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +mat2 rot(float a){ + return mat2(cos(a),sin(a),-sin(a),cos(a)); +} + +float box(vec3 p, vec3 c) +{ + vec3 a = abs(p) -c; + return max(max(a.x,a.y),a.z); +} +vec2 min2(vec2 a, float d, float m) +{ + if (a.x < d) { + return a; //vec2(d,m); + } + return vec2(d,m); +} + +vec3 objCol; + +vec2 map(vec3 p0) +{ + vec2 d = vec2(1e5,-1); + { + vec3 p=p0; + p.yz *= rot(fGlobalTime) * sin(p.z); + p.zx *= rot(p.z*0.1) ; + p.y = abs(p.y); + p.y -= 2; + + p.xy = mod(p.xy - 1, 2) - 1; + //p.yz = mod(p.zy - 1, 2) - 1; + //p.yz = mod(p.yz - 1, 2) - 1; + + d = min2(d, box(p, vec3(0.9,0.01,0.9)), 1); + //d.x = min2(d, length(p) - 2.0, 2); + } + p0.xy *= rot(fGlobalTime); + p0.yz *= rot(fGlobalTime); + d = min2(d, box(p0, vec3(1)), 1); + + + + objCol = abs(p0)*0.03; + return d; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(0,0,10); + vec3 rd = normalize(vec3(uv,-1)); + + vec3 col; + vec2 d; + float dt; + int i; + + vec3 p = ro; + + for(i =0;i < 100; ++i) { + d = map(p); + if (d.x < 0.01) { + break; + } + p += rd * d.x*0.8; + col += objCol*0.9; + } + + float s = 1.0 - float(i)/100.; + col *= vec3(s); + //col =objCol; + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_f0x.glsl b/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_f0x.glsl new file mode 100644 index 000000000..4c496aa04 --- /dev/null +++ b/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_f0x.glsl @@ -0,0 +1,67 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + vec2 uv2 = uv- 0.5; + uv2 /= vec2(v2Resolution.y / v2Resolution.x,1); + + + uv.x-=pow(fract(fGlobalTime*1.),2.)*.1+.1*abs(uv.y); + + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x,1); + + vec2 m; + m.x = atan(uv.x / uv.y/2.)/ 3.14; + m.y = 1 / length(uv) * .2; + float d = fract(m.x*5.); + + d+=sin(fGlobalTime*10.1)+fract(fGlobalTime); + + m.y-=abs(pow(d,d))*.1; + m.y+=.1*sin(fGlobalTime*10.1)+.3*fract(fGlobalTime); + + + + if (m.y<.5) d=0.; + if (m.y>.6) d=0.; + + float r; + + r=fract(uv2.x+uv2.y*2.+.2); + r=clamp(r,.75,1.-uv2.y*.3); + if (r.001;){ + P=p=rd*d+.001; + + p.z+=time*2; + + p.z+=atan(p.y,p.x)/3.1415; + F ss=4,s; + p.xy+=1; + p.x+=S(time*99)*.01; + for(F j=0;j++<12;){ + p=mod(p+1,2)-1; + ss*=s=(1.6+.2*S(time+P.z))/dot(p,p); + p*=s; + p.z+=.3*S(P.z+time); + } + d+=e=(length(p.xz)-.5)/ss; + } + out_color += 1-i/99; +} \ No newline at end of file diff --git a/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_jin_x.glsl b/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_jin_x.glsl new file mode 100644 index 000000000..a6151a57f --- /dev/null +++ b/shader_file_sources/2022_10_21_shader_showdown_CAFe/SEMIFINALS/semifinals_grabber_cafe2022_jin_x.glsl @@ -0,0 +1,85 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +#define PI 3.14159265358979323846264338327950 +#define EPS .001 + +float time, ray = 0, vol = texture(texFFTSmoothed, .005).x; +int idx; + +float noise(vec2 p) +{ + return texture(texNoise, p).x; +} + +mat2 rot(float a) +{ + return mat2(cos(a), -sin(a), sin(a), cos(a)); +} + +float sdf(vec3 p) +{ + float s[4]; + vec3 q = fract(p + .5) - .5; + float r = 0.65 + noise(q.zy)*.1; + s[0] = r - length(q); // walls + float snd = pow(texture(texFFTSmoothed, length(q.xz)).x, .025) * vol * 10; + s[1] = p.y + .5 - (noise(q.zx) * (.5+snd) + sin(time))*.2; // floor + vec3 qq = mod(p + vec3(noise(q.yz), noise(q.xz)*5+time*10, noise(q.xy))*.1 + .1, .2) - .1; + s[2] = length(qq) - .001; // snow + s[3] = length(q.yx) - .01; // ray + idx = 0; + for (int i = 1; i < 4; ++i) + if (s[i] < s[idx]) + if (i == 3) + if (s[i] < EPS) ray = 1; + else return s[i]; + else idx = i; + return s[idx]; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + time = fGlobalTime; + time /= 2; + + vec3 rp = vec3(sin(time*PI/5)*2.7,-.05,time), rd=normalize(vec3(uv,1)); + rd.xz *= rot(sin(time/2)); + rd.xy *= rot(sin(time*1.7)/4); + int i; + while (++i<100) { + float d = sdf(rp); + if (d < EPS) break; + rp += d*rd; + } + + float br = clamp(pow(6/float(i), 1.5), 0, 1); + float v = sin(time*.7)*vol*5; + vec3 c[3] = vec3[](vec3(0,ray+(1-ray)*.2,1-ray), vec3(1,v,-v), vec3(.5)); + + vec3 col = br * c[idx]; + out_color = vec4(col,1); +} + +// GOOD LUCK, IVAN! ;)))) \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_0b5vr.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_0b5vr.glsl new file mode 100644 index 000000000..45f563a59 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_0b5vr.glsl @@ -0,0 +1,279 @@ +#version 410 core + +#define lofi(i,j) (floor((i)/(j))*(j)) +#define lofir(i,j) (round((i)/(j))*(j)) + +const float PI=acos(-1.); +const float TAU=PI*2.; + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 r2d(float t){ + float c=cos(t),s=sin(t); + return mat2(c,s,-s,c); +} + +mat3 orthbas(vec3 z){ + z=normalize(z); + vec3 up=abs(z.y)>.999?vec3(0,0,1):vec3(0,1,0); + vec3 x=normalize(cross(up,z)); + return mat3(x,cross(z,x),z); +} + +uvec3 pcg3d(uvec3 s){ + s=s*1145141919u+1919810u; + s+=s.yzx*s.zxy; + s^=s>>16; + s+=s.yzx*s.zxy; + return s; +} + +vec3 pcg3df(vec3 s){ + uvec3 r=pcg3d(floatBitsToUint(s)); + return vec3(r)/float(0xffffffffu); +} + +float sdbox(vec3 p,vec3 s){ + vec3 d=abs(p)-s; + return length(max(d,0.))+min(0.,max(max(d.x,d.y),d.z)); +} + +float sdbox(vec2 p,vec2 s){ + vec2 d=abs(p)-s; + return length(max(d,0.))+min(0.,(max(d.x,d.y))); +} + +struct Grid{ + vec3 c; + vec3 h; + vec3 s; + int i; + float d; +}; + +Grid dogrid(vec3 ro,vec3 rd){ + Grid r; + r.s=vec3(2,2,100); + + for(int i=0;i<3;i++){ + r.c=(floor(ro/r.s)+.5)*r.s; + r.h=pcg3df(r.c); + r.i=i; + + if(r.h.x<.4){ + break; + }else if(i==0){ + r.s=vec3(2,1,100); + }else if(i==1){ + r.s=vec3(1,1,100); + } + } + + vec3 src=-(ro-r.c)/rd; + vec3 dst=abs(.501*r.s/rd); + vec3 bv=src+dst; + float b=min(min(bv.x,bv.y),bv.z); + r.d=b; + + return r; +} + +vec4 map(vec3 p,Grid grid){ + p-=grid.c; + + vec3 pt=p; + float rot=floor(fGlobalTime); + rot-=exp(-5.0*fract(fGlobalTime)); + float pcol=1.; + //pt.yz*=r2d(3.*rot); + + vec3 psize=grid.s/2.; + psize.z=1.; + psize-=.02; + float d=sdbox(pt+vec3(0,0,1),psize); + + if(grid.i==0){ + if(false){ + }else if(grid.h.y<1.){//speaker + vec2 c=vec2(0); + pt.xy*=r2d(PI/4.); + c.xy=lofir(pt.xy,.1); + pt.xy-=c.xy; + float r=.02*smoothstep(.9,.7,abs(p.x))*smoothstep(.9,.7,abs(p.y)); + float hole=length(pt.xy)-r; + d=max(d,-hole); + } + }else if(grid.i==1){ + if(false){ + }else if(grid.h.y<1.){//fader + float hole=sdbox(p.xy,vec2(.9,.05)); + d=max(d,-hole); + + float ani=smoothstep(-.2,.2,sin(fGlobalTime+grid.h.z*100.)); + pt.x+=mix(-.8,.8,ani); + + float d2=sdbox(pt,vec3(.07,.25,.4))+pt.z*.05; + + if(d250.){break;} + } + + March r; + + r.isect=isect; + r.rp=rp; + r.rl=rl; + r.grid=grid; + + return r; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 p=uv*2.-1.; + p.x*=v2Resolution.x/v2Resolution.y; + + vec3 col=vec3(0); + + float canim=smoothstep(-.2,.2,sin(fGlobalTime)); + float cr=mix(.33,0.,canim); + vec3 co=mix(vec3(-6,-8,-40),vec3(0,0,-40),canim); + co.xy+=fGlobalTime; + vec3 ct=vec3(0,0,-50); + ct.xy+=fGlobalTime; + mat3 cb=orthbas(co-ct); + vec3 ro=co+cb*vec3(4.*p*r2d(cr),0); + vec3 rd=cb*normalize(vec3(0,0,-2.)); + + March march=domarch(ro,rd,200); + + if(march.isect.x<1E-2){ + vec3 basecol=vec3(.5); + vec3 speccol=vec3(.5); + float specpow=30.; + + float mtl=march.isect.y; + float mtlp=march.isect.z; + if(mtl==0.){ + basecol=mix(vec3(.04),vec3(.9),mtlp); + } + + float ndelta=1E-3; + vec3 n=nmap(march.rp,march.grid,ndelta); + vec3 v=-rd; + + { + vec3 l=normalize(vec3(1,2,5)); + vec3 h=normalize(l+v); + float dotnl=max(0.,dot(l,n)); + float dotnh=max(0.,dot(n,h)); + vec3 diff=basecol/PI; + vec3 spec=speccol*pow(dotnh,specpow); + col+=vec3(.5,.6,.7)*dotnl*(diff+spec); + //col=vec3(.5+.5*n); + } + + { + vec3 l=normalize(vec3(-1,-2,5)); + vec3 h=normalize(l+v); + float dotnl=max(0.,dot(l,n)); + float dotnh=max(0.,dot(n,h)); + vec3 diff=basecol/PI; + vec3 spec=speccol*pow(dotnh,specpow); + col+=dotnl*(diff+spec); + //col=vec3(.5+.5*n); + } + } + + col=pow(col,vec3(.4545)); + col=smoothstep(vec3(.0,-.1,-.2),vec3(1.,1.1,1.2),col); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Blueberry.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Blueberry.glsl new file mode 100644 index 000000000..75258e68a --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Blueberry.glsl @@ -0,0 +1,85 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float t = fGlobalTime; + float m=texture(texFFTSmoothed, 0.02).x; + + float r = length(uv); + float f=fract(r*5+t); + vec2 fn = (fract(f*2)-.5)*normalize(uv); + float fnl=dot(fn,vec2(-1,1))*.5+1; + vec3 color = f<.5?vec3(.2,.3,.5):vec3(.2,.6,.5); + color*=fnl; + + float a=atan(uv.x,uv.y); + float edge=.5+.2*sin(a*4+t*1.313)+.1*sin(a*5+t*2.217); + if (r>edge) { + color*=1.3; + } + + float sum=0; + vec3 colsum = vec3(0); + vec3 nsum=vec3(0); + for(int i=0;i<10;i++) { + vec2 pos = vec2(sin(t*(.23+i*.0345)+0.4),sin(t*(.277+i*.1745)))*.3; + vec2 d=uv-pos; + float v=exp(-dot(d,d)*(20-m*50)); + float e=max(0,sin(i/1.6+t*.5)-0.9)*13; + vec3 col = vec3(.7,.2+i*.07,.3); + float ea=i*2.4; + vec2 ev=vec2(sin(ea),cos(ea)); + if (e>0 && fract(dot(uv,ev)*10+t*2)>0.5) { + col.bg+=e*ev; + } + vec3 n=normalize(vec3(d,v*.2)); + sum+=v; + colsum+=col*v; + nsum+=n*v; + } + if (sum > 2) { + color = (colsum/sum)*pow(sum-2,.2); + vec3 n=normalize(nsum/sum); + float l = dot(n,vec3(-1,1,1)); + color *= l; + int nj=20; + for (int j=0;j 1) { + color*=sqrt(2-sum); + } + + out_color = vec4(color,1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.glsl new file mode 100644 index 000000000..90171c310 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_EmmazingGoose.glsl @@ -0,0 +1,231 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float cir(vec2 p, float radius) { + return length(p) - radius; + +} + +float cro(in vec2 a, in vec2 b) { return a.x*b.y - a.y*b.x;} + +float sUC(in vec2 p, in float ra, in float rb, in float h) { + p.x = abs(p.x); + float b = (ra-rb)/h; + vec2 c = vec2(sqrt(1.-b*b),b); + float k = cro(c,p), m=dot(c,p),n=dot(p,p); + if (k < 0.){ + return sqrt(n)-ra; + + } else if (k>c.x*h) { + return sqrt(n+h*h-2.*h*p.y) - rb; + } + + return m-ra; +} + + +void inter(inout float d1, in float d2) { + if (d1 < d2) d1 = d2; +} + +void draw(float dist, vec4 mc, inout vec4 fc){ + float dtc = fwidth(dist) *.5; + fc = mix(fc, vec4(0,0,0,1), smoothstep(dtc, -dtc, dist-0.01)); + fc = mix(fc, mc, smoothstep(dtc, -dtc, dist)); +} + +mat2 Rot(float r) { + float c = cos(r), s = sin(r); + return mat2(c,s,-s,c); +} + +void sd (vec2 p, inout vec4 fc) { + vec2 po = p; + + float d = 4.; + + po.y += sin(fGlobalTime*.2 * .6)/6.; + + po.x += d * -sin(fGlobalTime*.2)/6.; + + //c3 fpos = Rot(pos, -fGlobalTime); + + + po *= Rot(.1*sin(fGlobalTime*5.)); + + float cirl = cir(po, 0.15); + + vec2 po1 = po; + po1.x *= 2.5; + po1.y *= 1.4; + draw(cir(po1-vec2(-0.,-.2), 0.4), vec4(.5), fc); + + po1.y *= .6; + draw(cir(po1-vec2(0.4,-.1), 0.14), vec4(.5), fc); + draw(cir(po1-vec2(-0.4,-.1), 0.14), vec4(.5), fc); + + + draw(cir(po, 0.15), vec4(.5), fc); + draw(sUC(po-vec2(0.0,0.15), .08, .025, .15), vec4(.2), fc); + float kk = cir(po-vec2(0.1,.1), 0.05); + inter(kk, cirl); + draw(kk, vec4(1), fc); + + kk = cir(po+vec2(0.1,-0.1), 0.05); + inter(kk, cirl); + draw(kk, vec4(1), fc); + + + + kk = cir(po-vec2(0.1,.1), 0.015); + inter(kk, cirl); + draw(kk, vec4(0), fc); + + + kk = cir(po+vec2(0.1,-0.1), 0.015); + inter(kk, cirl); + + draw(kk, vec4(0), fc); + + //float cirl = cir(po, 0.15); + + +} + +#define F length(.5-fract(k.xyw*=mat3(-2,-1,2,3,-2,1,1,2,2)* +void main(void) +{ + float time = fGlobalTime; + vec2 fragCoord = gl_FragCoord.xy; + float iTime = fGlobalTime; + + + + /// + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + ////? + + vec4 k = vec4(.5 + .2*sin(time)) *.2; + k.xy = (fragCoord*(k.w+2.)/2e2).xy; + //k = pow(min(min(F.5)),F.4))),F.3))),7.) * 25.+vec4(0.35,.5,1.); + //vec4 p = fragCoord; + k *= 2.; + //out_color = k; + + + float r = length(uv); + vec3 bg = mix(vec3(0.5,.5,.7),vec3(.9,.4,.4), .25); + out_color = vec4(bg,1); + + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + + float speed = .2; + float scale = 0.003; + vec2 p = fragCoord * scale; + for(int i=1; i<10; i++){ + p.x+=0.3/float(i)*sin(float(i)*3.*p.y+iTime*speed)+600./1000.; + p.y+=0.3/float(i)*cos(float(i)*3.*p.x+iTime*speed)+600./1000.; + } + // scale = 0.03; + // p = fragCoord * scale; + r=cos(sin(p.x)-sin(p.y)+iTime*speed*2.)*.3+.5; + float g=sin(cos(p.x)+cos(p.y)-iTime*speed*2.)*.3+.5; + float b=(sin(cos(p.x)*cos(p.y)+iTime*speed*2.)-cos(sin(p.x)*sin(p.y)+iTime*speed*2.))*.3+.5; + // r = 0.; + // g = 0.; + // b = 0.; + vec3 color = vec3(r,g,b); + + /// + + vec2 p2 = vec2(fragCoord.x / v2Resolution.x, fragCoord.y / v2Resolution.y); + p2 -= 0.5; + p2 /= vec2(v2Resolution.y / v2Resolution.x, 1); + p2 *= Rot(-3.14159*.5); + + k=vec4(.5 + .2*sin(iTime))*.2; + p = fragCoord/5.;// * pow(p2.x, -.3); + + k.xy = p*(k.w+2.)/2e2; + k = pow(min(min(F.5)),F.4))),F.3))), 7.)*25.+vec4(0,.35,.5,1); + k *= 2.; + k = mix(k, vec4(color,1), .5); + + + + + + float waveStrength = 0.02; + float frequency = 30.0; + float waveSpeed = 5.0; + vec4 sunlightColor = vec4(1.0,0.91,0.75, 1.0); + float sunlightStrength = 15.0; + + vec2 po = uv; + + d = 4.; + + po.y += sin(fGlobalTime*.2 * .6)/6.; + + po.x += d * -sin(fGlobalTime*.2)/6.; + vec2 tapPoint = uv;//vec2(600./v2Resolution.x,600/v2Resolution.y); + uv = fragCoord.xy / v2Resolution.xy; + float modifiedTime = iTime * waveSpeed; + float aspectRatio = v2Resolution.x/v2Resolution.y; + vec2 distVec = po; + distVec.x *= aspectRatio; + float distance = length(distVec); + vec2 newTexCoord = uv;// * pow(p2.x, -.3);; + + float multiplier = (distance < 1.0) ? ((distance-1.0)*(distance-1.0)) : 0.0; + float addend = (sin(frequency*distance-modifiedTime)+1.0) * waveStrength * multiplier; + newTexCoord += addend; + + vec4 colorToAdd = sunlightColor * sunlightStrength * addend; + out_color = k + colorToAdd; + + + + uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + sd(uv, out_color); +// out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Exca.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Exca.glsl new file mode 100644 index 000000000..736a94777 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Exca.glsl @@ -0,0 +1,275 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 C1 = vec3( 1.0, 1.0, 1.0); +float time = fGlobalTime; +float ffts = 0.0; +float ffti = 0.0; +float beat = 0.0; +float bar = 0.0; +float beats=0.0; + +float glow = 0.0; + +vec3 getcam( vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize( target - cam); + vec3 right = normalize( cross( vec3(0,1,0), forward)); + vec3 up = normalize( cross( forward, right)); + return normalize( uv.x * right + uv.y* up+ forward * fov); +} + +vec3 repeat( vec3 p, vec3 q) +{ + return mod(p+q*.5, q)-.5*q; +} + +float sphere( vec3 p, float r) +{ + return length(p)-r; +} + +float oct( vec3 p, float s) +{ + p = abs(p); + return (p.x+p.y+p.z-s)*0.57; +} + +float circle( vec2 p, float r){ + return length(p)-r; +} + +float ground( vec3 p, float h ) +{ + return p.y - h; +} + +vec3 U( vec3 a, vec3 b) +{ + return a.x < b.x ? a : b; +} + +vec3 map( vec3 p, float refon) +{ + vec3 sp = p; + + float refonAdd = 0.0; + if( bar < 2.0) refonAdd = 0.7; + + refon += refonAdd; + + if(refon > 0.5) sp = repeat( vec3( 10.0, 0.0, 10.0), sp); + float s1 = sphere(sp + vec3(0.0, -0.5 + 0.25*sin(beats*3.14), 0.0), 1.75); + float o1 = oct( repeat(p, vec3(0.5 + sin(ffti*10.0)*0.356,0.0, 0.2+ sin(ffti*3.0)*0.156)), 0.41 + 0.3*sin(ffti*12.0)); + + //if(refon < 0.5) + s1 = max( s1, o1); + + + float g1 = ground(p, 0.0); + + vec3 S1 = vec3( s1, 1.0, 1.0); + vec3 G1 = vec3( g1, 0.0, 1.0); + + return U(S1, G1); +} + +vec3 march(vec3 cam, vec3 rd, float refOn, out vec3 p, out float t, out float minD) +{ + minD = 9999.0; + for(int i = 0;i < 100; i++) + { + p = cam+ rd*t; + vec3 r = map(p,refOn); + t+=r.x; + glow += r.x * (refOn > 0.5 ? 1.0: 0.0); + minD = min(minD, r.x); + if(r.x < 0.001){ + return r; + } + if(t > 50.0){ + t = 50.0; + return vec3(-1.0); + } + } + return vec3(-1.0); +} + +vec3 normal( vec3 p) +{ + vec2 e = vec2(0.001, 0.0); + vec3 c = map(p, 0.0); + return normalize( vec3( + map(p+e.xyy,0.0).x, + map(p+e.yxy,0.0).x, + map(p+e.yyx,0.0).x + )-c.x); +} + +float diffuse( vec3 p, vec3 l, vec3 n) +{ + return max( 0.0, dot(normalize( l-p), n)); +} + +float interference( vec2 uv) +{ + float mp = 0.5+sin(ffti); + if( bar < 1.0) mp = 0.03; + else if( bar < 2.0) mp = 0.70; + else if( bar < 3.0) mp = 0.1; + + vec2 off1 = vec2( sin(time*0.4+ffti), cos(time*0.325))*30.0; + vec2 off2 = vec2( sin(time*0.34-ffti), cos(time*0.2))*20.0; + vec2 off3 = vec2( sin(time*0.74+ffti), cos(time*0.15))*17.0; + + + float s1 = circle( mp*70.0*uv+off1, 0.15); + float s2 = circle( mp*90.0*uv+off2, 0.95); + float s3 = circle( mp*150.0*uv+off3, 0.05); + + float s = sin(s1) + sin(s2) + sin(s3); + + return s; + +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + ffts = texture( texFFTSmoothed, 0.2).r; + ffti = texture( texFFTIntegrated, 0.2).r; + + beat = floor( time/ 60.0 * 120.0); + beats = fract( time/ 60.0 * 120.0); + bar = mod(floor( beat/ 4.0), 4.0); + + vec3 c = vec3(0.0); + + vec3 cam = vec3( + sin(ffti)*3.0, + sin(ffti*0.2)*1.1+2.0, + sin(ffti*0.7)*10.1 + ); + vec3 target = vec3(0,0,0); + float fov = 1.2 + sin(ffti)*1.1 ; + vec3 light1 = vec3( sin(time)*3.0, 3.0, 0.0); + + float int1 = interference( uv * (2.2+abs(sin(ffti*2.0))*1.5)); + target += int1 * step(0.002 , ffts) * 3.0; + + vec3 rd = getcam( cam, target, uv, fov); + + float travel = 0.0; float minD = 0.0; + vec3 p = cam; + vec3 res = march( cam, rd, 0.0, p, travel, minD); + + if(res.y < -0.5){ + + } + + if(res.y >-0.5 && res.y < 0.5) + { + vec3 n = normal(p); + c = vec3(interference(p.xz))*C1 * diffuse(p, light1, n); + + vec3 rRD = reflect( rd, n ); + vec3 rP =p; + float rTravel = 0.0; float rMinD = .0; + vec3 rRES = march( p + n*0.1, rRD, 0.0, rP, rTravel, rMinD); + + c *= 0.25+0.75* smoothstep( 0.0, 0.1, rMinD); + + } + else if(res.y < 1.5){ + vec3 n = normal(p); + c = C1 * diffuse(p, light1, n); + + vec3 rRD = reflect( rd, n ); + vec3 rP =p; + float rTravel = 0.0; float rMinD = .0; + vec3 rRES = march( p + n*0.1, rRD, 1.0, rP, rTravel, rMinD); + + vec3 rC = vec3(0.0); + if(res.y >-0.5 && res.y < 0.5) + { + vec3 rN = normal(rP); + rC = vec3(interference(rP.xz))*C1 * diffuse(rP, light1, rN); + + c += rC; + + } + else if(res.y < 1.5){ + vec3 rN = normal(rP); + rC = C1 * diffuse(rP, light1, rN); + + c += rC; + } + + + } + + float intf = interference(uv); + intf = smoothstep( 0.5, 1.0, intf)*smoothstep(0.1, 0.4,ffts)*0.3; + + c += smoothstep(0.1, 0.0,glow)*0.2; + + c = mix( c, C1, intf); + + if( bar < 1.0) c = c.bgr; + else if( bar < 2.0) c = c.rbg; + else if( bar < 3.0) c = c.grb; + + + + + uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv *= 0.9+smoothstep(0.0, 0.1, ffts)*0.1; + uv += 0.5; + + vec3 prev = texture( texPreviousFrame, uv).rgb; + + c = mix( c, c+prev, smoothstep( 0.05, 0.34, ffts*70.0)); + + out_color = vec4(c, 1.0); + +} + + + + + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_IvanDianov.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_IvanDianov.glsl new file mode 100644 index 000000000..f67d92d12 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_IvanDianov.glsl @@ -0,0 +1,60 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +#define time fGlobalTime +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform float fMidiKnob; + + +layout(location = 0) out vec4 o; // out_color must be written in order to see anything + +#define F float +#define V vec2 +#define W vec3 +#define N normalize +#define L length +#define rot(x) mat2(cos(x),-sin(x),sin(x),cos(x)) +#define S(x) sin((x)+2*sin((x)+4*sin(x))) +#define col(x) (clamp(x,0,1)-cos((x+W(.3,.4,.5))*6.283)*.5+.5) + +void main(void) +{ + F B=texture(texFFT,.02).r; + o-=o; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + F i=0,d=0,e=1; + W rd=N(W(uv,1)),p,P; + rd.xz*=rot(.6*S(time*.05)); + for(;i++<99&&e>.001;){ + p=P=rd*d; + p.xy*=rot(.2*S(time*.1+P.z)); + p.y+=6.*S(.05*time); + W stp=W(3.6+.6*sin(-P.z+time*.1),2000,4); + p.z+=time*.6+.01*S(time); + p.x-=stp.x/2; + p=mod(p-stp/2,stp)-stp/2; + F ss=1,s; + for(F j=0;j<13;j++){ + p=abs(p); + p-=W(.12,3+.2*S(P.z*.2+time*.02),.2+.01*S(P.z)); + ss*=s=2.7/clamp(dot(p,p),.2,2.1); + p*=s; + p-=W(.1,.5+.2*(sin(B*P.x)*sin(P.x)),.2); + } + d+=e=(L(p)-1.4-.6*S(time*.2-P.z*.3-B))/ss; + o+=.03*B/exp(500*e) * (fract(P.y*90+time+B*90)); + } + + o.rgb+=(18/i); + o.rgb*=col(cos(time*.2+log(P.z*.52))*.5+.5); + //if(uv.x>.5)o.rgb=col(uv.y); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Kamoshika.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Kamoshika.glsl new file mode 100644 index 000000000..a69c1b8c6 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Kamoshika.glsl @@ -0,0 +1,150 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define hash(x) fract(sin(x)*5723.2622) +const float pi = acos(-1); +const float pi2 = acos(-1)*2; + +mat2 rot(float a) { + float s = sin(a), c = cos(a); + return mat2(c, s, -s, c); +} + +float hash12(vec2 p) { + float v = dot(p, vec2(1.8672, 1.3723)); + return hash(v); +} + +float perlin1d(float x) { + float i = floor(x); + float f = fract(x); + float u = f*f*(3-2*f); + + return mix(f*(hash(i)*2-1), (f-1)*(hash(i+1)*2-1), u); +} + +float stepNoise(float x, float n) { + float i = floor(x); + float s = .1; + float u = smoothstep(.5-s, .5+s, fract(x)); + + return mix(floor(hash(i)*n), floor(hash(i+1)*n), u); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1) * .5; + vec3 col = vec3(0); + + float w = .03; + + vec3 ac = vec3(0); + for(float j=0; j<8; j++) { + float time = fGlobalTime; + vec2 seed = gl_FragCoord.xy + fract(time) + j * sqrt(983); + + time += hash12(seed) * .05; + + vec3 ro = vec3(0, 1, -time); + vec3 ta = vec3(0, -.5, -time-.5); + + ro.x += (stepNoise(ro.z, 5) - 2) * .5; + ro.y += stepNoise(ro.z - 500 - 1/3, 5) * .5; + + vec3 dir = normalize(ta - ro); + vec3 side = normalize(cross(dir, vec3(0,1,0))); + vec3 up = normalize(cross(side, dir)); + + float fov = 40; + fov += (stepNoise(ro.z - 1000 - 2/3, 2) * 2 - 1) * 20; + vec3 rd = normalize(uv.x*side + uv.y*up + dir/tan(fov/360*pi)); + float L = length(ta - ro); + vec3 fp = ro + rd * L; + + vec3 ros = ro; + float r = sqrt(hash12(seed*1.1)); + float theta = hash12(seed*1.2) * pi2; + ros.xy += r * vec2(cos(theta), sin(theta)) * L * .05; + + vec3 rds = normalize(fp - ros); + + bool hit = false; + float t; + vec2 id, q; + + for(float i=0; i<50; i++) { + t = -(ros.y + i*.05) / rds.y; + vec2 p = ros.xz + t * rds.xz; + p += vec2(hash(i), hash(i*1.1)) * 500; + p *= rot(i*2); + + id = vec2(i, floor(p.x)); + + p.x = fract(p.x) - .5; + p.y += hash12(id) * 500; + float s = .03; + float curve = smoothstep(.25-s, .25+s, abs(fract(time*.11) - .5)); + p.x += perlin1d(p.y) * (1 - w * 2) * curve; + + q = p; + + if(t > 0 && abs(p.x) < w) { + hit = true; + break; + } + } + + if(hit) { + vec3 add = vec3(1); + + vec3 lightDir = normalize(vec3(-5, 2, -2)); + vec3 normal = normalize(vec3(q.x, sqrt(w*w - q.x*q.x), 0)); + + float e = 1e-4; + float grad = (perlin1d(q.y + e) - perlin1d(q.y - e)) / (e*2); + float a = atan(grad); + + normal.xz *= rot(-id.x*2 - a); + + float diff = max(dot(normal, lightDir), 0); + float spec = pow(max(dot(reflect(lightDir, normal), rds), 0), 20); + float m = .5; + float lp = 3; + add *= diff * (1-m) * lp + spec * m * lp + .2; + + q.y = fract(q.y * .03 - time * .2) - .5; + add += smoothstep(.01, 0., abs(q.y)) * 5.; + + float T = time + hash12(id); + add += step(hash12(id*1.1 + floor(T)), .05) * step(fract(T*3.), .8) * 5; + + add *= exp(-t*t*.1); + add *= exp(-id.x*id.x*.001); + + ac += add; + } + } + + col += ac / 8; + col = pow(col, vec3(1/2.2)); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.glsl new file mode 100644 index 000000000..4582ed3e7 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_LechugaFeliz.glsl @@ -0,0 +1,203 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define rot(a) mat2(cos(a), sin(a), -sin(a), cos(a)) +#define pi acos(-1.) +#define spd p.z += t*130.; +#define spd2 p1.z -= t*270.; +float t = mod(fGlobalTime, 100.); +float h21(vec2 uv){ + return fract(sin(dot(uv.yx, vec2(7.324,43.43)))*26.234); +} +float smin(float a, float b, float k){ + float h = max(0., k-abs(a-b))/k; + return min(a,b)-h*h*k*.25; +} +float d1(vec3 p){ + return length(p)-2.; +} +float d2(vec3 p){ + //for(float i = 0. ; i++ < 10.;) 0_0 + /* + for(float i = 0.; i++ < 3.;){ + p.x = abs(p.x)-1.; + p.xy *= rot(t); + } + */ + p.x += sin(t+p.x*.21); + p.xy *= rot(sin(t*73.)*.015143); + vec3 p0, p1, p2; + p0 = p1 = p2 = p; + p.xy *= rot(.523); + p.z = abs(p.z)-2.65; + p.yz *= rot(-t*50.); + + vec2 s = vec2(1.55, 1.)-texture(texNoise, p.xz*.34).x*.01; + + float d =length(vec2(length(p.yz)-s.x, p.x))-s.y; + float d2 = length(p0-vec3(-2., 3., 0.))-2.; + float d3 = length(p1-vec3(-3., 0., 0.))-1.; + float d4 = length(p2- vec3(-2., -1., 0.))-1.; + d = smin(d, d2, 1.); + d = smin(d, d3, 1.); + d = smin(d, d4, 1.); + return d; +} +float d22(vec3 p){ + //for(float i = 0. ; i++ < 10.;) 0_0 + /* + for(float i = 0.; i++ < 3.;){ + p.x = abs(p.x)-1.; + p.xy *= rot(t); + } + */ + p.x += sin(t+p.x*.31); + p.xy *= rot(sin(t*73.)*.015143); + vec3 p0, p1, p2; + p0 = p1 = p2 = p; + p.xy *= rot(.523); + p.z = abs(p.z)-2.65; + p.yz *= rot(-t*50.); + + vec2 s = vec2(1.55, 1.)-texture(texNoise, p.xz*.34).x*.01; + + float d =length(vec2(length(p.yz)-s.x, p.x))-s.y; + float d2 = length(p0-vec3(-2., 3., 0.))-2.; + float d3 = length(p1-vec3(-3., 0., 0.))-1.; + float d4 = length(p2- vec3(-2., -1., 0.))-1.; + d = smin(d, d2, 1.); + d = smin(d, d3, 1.); + d = smin(d, d4, 1.); + return d; +} + +float d3(vec3 p){ + return p.y+2.35; +} +float ac4 = 0.; +float d4(vec3 p){ + spd; + float ss = 20.; + p.z = (fract(p.z/ss-.5)-.5)*ss; + p.x = abs(p.x)-40.; + float d= length(p-vec3(0., -2., 0.))-2.; + ac4 = 3./(1.+d*d); + return 1.; +} +float bb(vec3 p, vec3 s){ + p = abs(p)-s; + return length(max(vec3(0.), p))-1.; +} +float d5(vec3 p){ + spd; + float ss= 140.; + p.z = (fract(p.z/ss-.5)-.5)*ss; + + p.x = abs(p.x)-20.; + vec3 p1 = p; + + float d = bb(p, vec3(1., min(20., p.y), 0.)); + //p.x += sin(p.x*4.+t); + //p1.xy *= rot(pi/.55134); + d = min(bb(p1-vec3(0.+p1.x, 20., 0.), vec3(1.)), d); + return d; +} +float ac3 = 0., ac5 = 0.; +vec2 m(vec3 p){ + //p.x += cos(p.z+t)*4.525; + // + p.x += sin(p.z*.7434+t); + + float d = 1.; + float id = 0.; + float d1 = d1(p); + float d2 = d2(p); + vec3 p1 = p; + spd2; + float ss = 500.; + float gid = (floor(p1.z/ss-.5)); + p1.z = (fract(p1.z/ss-.5)-0.5)*ss; + p1.xz *= rot(sin(-t-gid*gid)*.2151); + float d22 = d22(p1+vec3(10., 0., 0.)); + float d3 = d3(p); + float d4 = d4(p); + float d5 = d5(p); + ac3 += 1./(1+d3*d3); + //d = d1; + d = min(d, d2); + id = d < d2 ? 0. : 1.; + d = min(d, d3); + id = d < d3 ? id : 2.; + d = min(d, d4); + id = d < d5 ? id : 3.; + d = min(d, d5); + + // final.. + id = d < d22 ? id : 4.; + ac5 += 1./(1.+d22*d22); + d = min(d, d22); + return vec2(d, id); +} + +vec3 nm(vec3 p){ + vec2 e = vec2(0.01, 0.); + return normalize(m(p).x - vec3(m(p-e.xyy).x, m(p-e.yxy).x, m(p-e.yyx).x)); +} + +void main(void){ + vec2 uv = gl_FragCoord.xy / v2Resolution.xy; + uv -= vec2(0.5); + uv.x /= v2Resolution.y / v2Resolution.x; + t += h21(uv*.141)*.001; + vec3 co = vec3(0.31); + vec3 s = vec3(-3.01, 5.01, -18.-texture(texFFTSmoothed, uv.y+t).x*120.); + + vec3 p = s; + p.x += sin(t+p.x)*10.; + vec3 cz = normalize(vec3(0.)-s); + vec3 cx = normalize(cross(cz,vec3(0., -1., 0.))); + vec3 cy = normalize(cross(cz,cx)); + vec3 r= mat3(cx,cy,cz)*normalize(vec3(uv, 1.-length(uv*.334)*3.125)); + for(float i = 0.; i++ < 200.;){ + vec2 e = m(p); + float d = e.x; + float id = e.y; + if(d < 0.1){ + if(id == 1 || id == 3 || id == 4){ + co *= vec3(0.345, 0.123, 1.); + r = reflect(r, nm(p))*.89; + p -= .1; + } + else + break; + } + p+=d*r; + } + vec3 l = normalize(vec3(-1., -2., -3.)); + vec3 n = nm(p); + float dif = clamp(dot(l,n), 0., 1.); + co += vec3(dif)*.84; + //co += ac3*.024 - step(0.175, fract(p.z*.35+t*13.))*vec3(.54,.65,.145)*.51261 + texture(texFFTSmoothed,0.01).x*2.; + co += ac4 * vec3(0.546, 0.24, 0.134) * 3.; + co += ac5 * vec3(1., 0.24, 0.24)*.0111; + co *= 1.-length(p-s)/300.; + co += length(p-s)*.00915*vec3(.7534,.335,.156)/.93344324; + co = pow(co, vec3(2.34)); + out_color = vec4(co, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_NR4.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_NR4.glsl new file mode 100644 index 000000000..5ec89860c --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_NR4.glsl @@ -0,0 +1,124 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float sm(float d) { + return smoothstep(1.5/v2Resolution.y, -1.5/v2Resolution.y, d); +} + +float pi = 3.14159; +vec3 c = vec3(1.,0.,-1.); +// To be honest, I'm really out of ideas :) +// greetings to Team210 <3 + +vec2 add(vec2 a, vec2 b) { + if(a.x100.0) break; + p+=r*d; + + } + vec3 sky=2.5*max(vec3(0), -.4+sin(r.y*3 + coco + time*1 + sin(r.x*4+time*.3))); + sky = mix(sky, vec3(.9), step(style,.5)); + col += alpha * sky; + } + col /= count; + + col=mix(col, vec3(dot(col, vec3(0.333))), vec3(0.6+sin(time + abs(uv.x)*4)*.3)); + col = pow(col,mumu); + col *= 1.2-length(uv); + + col = smoothstep(0,1,col); + col = pow(col, vec3(0.4545)); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Tater.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Tater.glsl new file mode 100644 index 000000000..8c4a0a142 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Tater.glsl @@ -0,0 +1,168 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float md1; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time mod(fGlobalTime,600) +#define pi 3.141592 +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) + +float hcap(vec3 p, float l, float r){ + p.z -= clamp(p.z,0,l); + vec3 d = abs(p)-vec3(r,r,0); + float a = max(d.x,max(d.y,d.z)); + return a; +} +float h11(float a){ + return fract(sin((a+3.2323)*12.3234)*5454.89443); +} +float h21(vec2 a){ + return fract(sin(dot(a+3.2323,vec2(434.545,095.434985))*12.3234)*5454.89443); +} + +float box(vec3 p, vec3 r){ + vec3 d = abs(p)-r; + float a = max(d.x,max(d.y,d.z)); + return a; +} +vec2 map(vec3 p){ + p.z = -p.z; + vec3 po = p; + p.xy*=rot(p.z*0.02); + vec2 a = vec2(0); + float t = time; + p.z -= t*7.5; + + p.y+=tanh(sin(t)*5)*3.9; + + + vec3 m = vec3(0.2,0.2,3.2)*4; + vec3 id = floor(p/m); + //p.z += (t+40)*(h21(id.xy)*0.4+0.6); + + //if(length(id.xy) < (10)) + + p = mod(p,m)-0.5*m; + + + float r = 0.1; + // t = mod(t,pi)-0.3; + t*=h21(id.xy+id.z+0.5)*4; + t+=h21(id.xy+id.z)*7; + + float sharp = 5; + float e = tanh(sin(t-pi/2)*sharp)+sin(t-pi/2)*0.2; + float s = tanh(sin(t-pi/4)*sharp)+sin(t-pi/4)*0.2; + float st = 2.0; + p.z -= s*st; + a.x = hcap(p,e*st-s*st,r); + // a.x = max(1.0,a.x); + p = po; + vec2 b = vec2(1); + float m2 = 3.5; + //p.xz*=rot(t*0.1); + + //p.z = mod(p.z,m2)-0.5*m2; + //p.x = mod(p.x,6.0),-3; + float m3 = 6; + + float id2 = floor(p.z/m3); + p.z = mod(p.z,m3)-m3*0.5; + p.xy*=rot(pi/4.+id2); + + p.xy*=rot(pi/4.); + t = time; + p.x -= tanh(sin(t)*7)*4.; + p.x -= t*3.; + + p.y = mod(p.y,3)-1.5; + p.y = abs(p.y); + p.x = mod(p.x,6.0)-3; + p.xy*=rot(-pi/4.); + + //p.xy*=rot(pi/4.); + //p.y = abs(p.y)-1.; + + b.x = box(p-vec3(1,1,-0),vec3(999,1,1)*0.2); + a = (a.xMDIST) + break; + + } + if(rl0.5){ + col = vec3(0.8,0.6,0.3+rl*0.1)*(1.0-shad); + vec3 r = reflect(rd,n); + vec3 ld = vec3(-1,0,-1); + float spec = pow(max(0,dot(r,ld)),10); + col+=spec*0.02; + } + } + col = mix(col,vec3(0.1),min(rl,MDIST)/MDIST); + + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Xor.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Xor.glsl new file mode 100644 index 000000000..a88a7a96a --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_Xor.glsl @@ -0,0 +1,83 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 path(float z) +{ + return vec3(cos(z/vec2(13,15))*vec2(4,1)-vec2(0,1)*((tanh(mod(z-2e1,4e1)-2e1)*.2)+1.)+texture(texFFT,0.0).r/.01,0); +} + +float dist(vec3 p) +{ + p += path(p.z); + float m = 1e3; + m = min(m,min(p.y+6.+cos(ceil(p.x)*(2.+cos(ceil(p.z/ceil(8.+7.*cos(ceil(p.x)))+ceil(p.x))))),max(10.-abs(p.x),5.-p.y))); + m = min(m,max(abs(length(p.xy)-(10.+texture(texFFT,0.0).r/.1+.4*sign(cos(atan(p.y,p.x)/.1+p.z)))/(2.+cos(ceil(p.z/4e1))))-1.,abs(mod(p.z,4e1)-2e1)-6.-5.*cos(pow(ceil(p.z/4e1),2.)))); + vec3 a = abs(mod(p+vec3(0,0,0),2e1)-10.); + m = min(m,length(min(a,a.yzx))-1.); + vec3 M = mod(p+vec3(cos(pow(ceil(p.y+9.),2.))*texture(texFFT,0.5).r*5e2,20,cos(ceil(p.x/4e1))*fGlobalTime*3e1),4e1)-2e1; + M.z -= clamp(M.z,-4.,4.); + m = min(m,length(max(abs(M)-4.,-.5))-1.); + return m+texture(texFFT,p.z/1e2).r/.1; +} +vec3 nor(vec3 p) +{ + vec2 e = vec2(.1,-.1); + return normalize(dist(p+e.yxx)*e.xyy+dist(p+e.xyx)*e.xxy+dist(p+e.xxy)*e.xxy+dist(p+e.y)*e.y); + +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 puv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv *= mat2(cos(cos(fGlobalTime*.1)*.2+vec4(0,11,33,0))); + + uv.x += cos(pow(floor(uv.y/.1),3.0))*(texture(texFFT,uv.x-.5).r); + uv.y += cos(pow(floor(uv.x/.1),3.0))*texture(texFFT,uv.y-.5).r; + //uv = fract(uv-.5)-.5; + + vec3 d = normalize(vec3(uv,1)); + + d.zx *= mat2(cos(tanh(cos(fGlobalTime*.3)/.1-8.)*.75+.75+vec4(0,11,33,0))); + vec3 p = vec3(0,0,fGlobalTime/.1); + vec3 cam = path(p.z); + p -= cam; + + int i = 0; + for(;i<99;i++) + { + float s = dist(p); + + p += d*s; + if (s<0.01) break; + } + vec3 n = nor(p); + vec3 r = reflect(d,n); + vec3 l = normalize(vec3(1,2,cos(fGlobalTime))); + float d_l = dot(n,l); + float lig = max(d_l,d_l*.1+.1); + //lig *= clamp(dist(p+n*.1)/.1,0.,1.); + vec3 c = max(cos(pow(ceil((p+cam).z),3.)+vec3(0,2,4)),0.)*lig/float(i)*1e1+max(dot(r,l)*9.-8.,0.); + c.yz /= 1.+.02*(p-vec3(0,0,fGlobalTime/.1)).yz; + c[int(fGlobalTime)%3] = texture(texPreviousFrame,puv)[int(fGlobalTime+1.4+.5*cos(fGlobalTime*.3))%3]; + + + out_color = vec4(c,1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_aldroid.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_aldroid.glsl new file mode 100644 index 000000000..7a609d100 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_aldroid.glsl @@ -0,0 +1,179 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +// first shader royale please ignore +// here we goooooo! glhf! + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( 0, c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +vec3 pla2(vec2 uv) { + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = floor(m.y*20)/20; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y = fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + return (t).xyz; +} + +mat2 rot(float a) { + return mat2(cos(a), -sin(a),sin(a), cos(a)); +} + +float wing2(vec2 uv) { + uv.x = abs(uv.x); + return length(uv + sin(uv.y)*2)-1; +} + +float wing(vec3 p) { + p.x = abs(p.x); + p.xz *= rot(sin(fGlobalTime*20)/5); + return max(abs(p.z)-0.01,wing2(p.xy)); +} + +float sdBox(vec3 p, vec3 s) { + vec3 q = abs(p) - s; + return max(q.x,max(q.y,q.z)); +} + +float flh = 3.5; + +float flutter(vec3 p) { + p.y += sin(fGlobalTime); + p.x += sin(fGlobalTime*2)*2; + p.yz *= rot (1.2+sin(fGlobalTime*2)*0.2); + p.xy *= rot(sin(fGlobalTime*2+0.5)); + float bod=length(p/vec3(0.3,1,0.3)+vec3(0.,0,0.3))-1; + bod /= 3; + float hed = length(p-vec3(0,1,0)) -0.2; + float flutter = min(min(wing(p/3),bod),hed); + return flutter; +} + +float twgl = 100; + +float twimst(vec3 p) { + p.yz *= rot(fGlobalTime+p.x/10); + p.y += texture(texFFT,p.x/1000+0.02).r*10; + + float twgls = max(abs(p.y)-0.4,abs(p.z)-0.4); + twgl = min(twgl,twgls); + return twgls; +} + +float flugl = 100; + +float map(vec3 p) { + + float flut = flutter(p/(texture(texFFTSmoothed,0.01).r+1)); + flugl = min(flugl,flut); + float flo = p.y+flh; + + float muun = length(p - vec3(19,12,25))-1; + + float twi=twimst(p-vec3(0,0,20)); + + return min(min(min(flut, flo), muun),twi); +} + +vec3 skydome(vec3 rd) { + return vec3(vec2(-rd.y),rd.y)+texture(texFFT,0.01).r*5; +} + +vec3 gn(vec3 p) { + vec2 e=vec2(0.001,0); + return normalize(map(p) - vec3(map(p-e.xyy), map(p-e.yxy), map(p-e.yyx))); +} + +vec3 wh = vec3(1); + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro=vec3(0,0,-15), rd=normalize(vec3(uv,1)); + + rd.x += max(0,sin(uv.y*4))*0.003; + rd.y += max(0,cos(uv.x*4))*0.003; + + float d,t=0; + + for(int i=0; i < 1000; ++i ) { + d = map(ro+rd*t); + t+=d; + if (d < 0.01) { + vec3 p = ro + rd * t; + + if (p.y > 0.3-flh) + break; + else { + wh = vec3(0.5,0.5,1); + vec3 n = gn(p); + n.x += sin(fGlobalTime*4+30*p.z)/50; + n.y += cos(fGlobalTime*4+30*p.z)/50; + rd = reflect(rd,n); + ro = p; + t = 0.2; + } + } + } + + + vec3 col = skydome(rd); + + vec3 ld = normalize(vec3(3,4,-10)); + + vec3 p = ro + rd * t; + + if (d < 0.01) { + vec3 n = gn(ro+rd*t); + if (p.y > 3) { + col = vec3(1); + } else { + if (p.z > 3) { + col = vec3(0,0.4,0); + } else { + col = vec3(0.3,0,0); + } + col += pow(max(dot(reflect(-ld,n),rd),0),30); + col += dot(n,ld); + } + } else { + + col += vec3(0.3,0.3,0)* 0.1/pow(twgl,2); + col += vec3(0.6,0.,0.4)* 0.1/pow(flugl,2)*texture(texFFT,0.01).r; + } + + col += exp(-0.0001*t*t); + col *= wh; + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_blackle.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_blackle.glsl new file mode 100644 index 000000000..a047b5392 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_blackle.glsl @@ -0,0 +1,147 @@ +#version 410 core + +// hewwo :) + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 erot(vec3 p, vec3 ax, float ro) { + return mix(dot(ax,p)*ax,p,cos(ro))+sin(ro)*cross(ax,p); +} + +float sh1,sh2,sh3; +float time ; + +float fac(vec3 p) { + p = asin(sin(p)); + return dot(normalize(vec3(1)),p); +} + +float noise(vec3 p, float dir) { + float f1 = fac(erot(p, normalize(vec3(1,2,3)),1.4+sh1*dir)); + float f2 = fac(erot(p, normalize(vec3(-1,3,2)),2.4+sh2*dir)); + float f3 = fac(erot(p, normalize(vec3(1,-2,1)),.4+sh3*dir)); + + return (f1 + f2)/sqrt(2); + return (f1 + f2 + f3)/2.; +} + +float ball(vec3 p, float w, float t, float dir) { + vec3 p2 = normalize(p); + float f = noise(p2*7*w, dir)/7/w; + return length(vec2(f,length(p)-w))-t; +} + +float scene(vec3 p) { + float b1 = ball(p,1.,.1,-1); + float b2 = ball(p,1.5,.03,1); + float b3 = ball(p,2.,.02,-1); + float b4 = ball(p/2.,2.,.01,1)*2.; + return mix(min(min(b1,b2),min(b4,b3)), mix(noise(p*50., 1)/50., noise(p*10.,-1)/10., .5), .2); +} + +vec3 norm(vec3 p) { + mat3 k = mat3(p,p,p)-mat3(0.001); + return normalize(scene(p) - vec3(scene(k[0]),scene(k[1]),scene(k[2]))); +} + +#define FK(x) floatBitsToInt(x*x/7.)^floatBitsToInt(x) +float hash(float a, float b) { + int x = FK(a), y = FK(b); + return float((x*x-y)*(y*y+x)-x)/2.14e9; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 uv2 = floor(uv*4)/4.; + float hs = hash(uv2.x,uv2.y); + time = fGlobalTime + (hash(hs,54.)+hash(hs,456.)+hash(hs,234.)+hs)*(.2*(sin(fGlobalTime*.5)*.5+.5)); + + float bar = floor(gl_FragCoord.x / v2Resolution.x*20.)/20.; + bar = abs(bar-.5); + bool inbar = false; + if (texture(texFFT, bar).x*(20.+bar*bar*600.)/3. > 1.-abs(gl_FragCoord.y / v2Resolution.y-.5)*2.) { + inbar = true; + } + + float it = fGlobalTime*.3; + sh1 = sin(it); + sh2 = cos(it*1.34235); + sh3 = sin(it*2.15335); + + float off1,off2,off3,off4,off5; + + float tt = floor(time); + float t2 = asin(sin(fGlobalTime)) * .2; + off1 = sin(tt*45) + t2; + off2 = cos(tt*33) + t2; + off3 = sin(tt*76) + t2; + off4 = sin(tt*17) + t2; + off5 = sin(tt*99); + + vec3 cam = normalize(vec3(.7+off3*.5,uv)); + vec3 init = vec3(-3,off1,off2); + + float zrot = fGlobalTime*.3 + off4; + cam = erot(cam,vec3(0,0,1),zrot); + init = erot(init,vec3(0,0,1),zrot); + + float glow = 0.; + + vec3 p = init; + bool hit = false; + bool trig1 = false; + bool refl=false; + bool trig2 = false; + float atten = 1.; + for (int i = 0; i< 100 && !hit; i++) { + float dist = scene(p); + if(dist*dist<1e-6) { + if (sin(erot(p,normalize(vec3(1,1,1)),.96).z*10.) < -0.85) { + vec3 n = norm(p); + atten*=1.-abs(dot(cam,n))*.9; + p += n*.01; + cam = reflect(cam,n); + refl=true; + }else{ + hit = true; + } + } + float dd = distance(p,init); + if (dist < 0.002*dd)trig1=true; + if (dist > 0.002*dd && trig1)trig2=true; + p += cam*dist; + glow += .08/(length(p)+.01) * sqrt(abs(dist)); + if(distance(p,init)>100)break; + } + vec3 n = norm(p); + vec3 r = reflect(cam,n); + float diff = length(sin(n*2.)*.5+.5)/sqrt(3.); + float ref = length(sin(r*2.)*.5+.5)/sqrt(3.); + diff = mix(max(diff*2.-1.,0.), diff, .03); + vec3 col = vec3(.9,.2,.2)*diff + pow(ref,20.)*(1-abs(dot(cam,n))*.9)*5.; + out_color.xyz = sqrt(hit ? col : vec3(0)); + out_color.xyz += glow*vec3(0.1,.5,.8); + out_color.xyz += glow*glow; + out_color *= atten; + + if (trig2 && !refl) out_color *= 0.; + out_color = smoothstep(.05,1.,out_color); + + if (inbar) off4 += 2.5; + if (inbar) out_color += .5; + out_color.xyz = erot(out_color.xyz*2.-1.,normalize(vec3(off1,off2,off3)), off4)*.5+.5; + if (off5 < 0.0) out_color = 1. - out_color; + out_color *= 1.-dot(uv,uv)*.5; + out_color += noise(uv.xyy*500.,1)*.02; + out_color = floor(out_color*8.)/8.; +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_branch.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_branch.glsl new file mode 100644 index 000000000..64d8aa291 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_branch.glsl @@ -0,0 +1,113 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define PI 3.1415927 +float roundBox(vec2 coord, vec2 pos, vec2 b, float c) { + return min( + max( + 1.0 - floor(length(max(abs(coord - pos) - b, c))),0.0),1.0); +} +float circle(vec2 coord, vec2 pos, float size) { + return -min(floor(distance(coord,pos)-size),0.0); +} +float capsule(vec2 coord, vec2 a, vec2 b, float r) { + vec2 pa = coord - a, ba = b - a; + float h = clamp(dot(pa,ba)/dot(ba,ba),0.0,1.0); + return max(-min(floor(length(pa-ba*h)-r),1.0),0.0); +} +mat2 rotate(float angle){ + mat2 rotate = mat2( + vec2(cos(angle),sin(angle)), + vec2(-sin(angle),cos(angle))); + return rotate; +} + + float hexacon(vec2 coord, vec2 pos, float size, float thickness) { + coord -= pos; + float COLOR = 0.0; + COLOR += 2.0 * capsule(coord, vec2(0.33,-0.53)*size, vec2(-0.33,-0.53)*size, thickness); + COLOR += 2.0 * capsule(coord, vec2(0.33,-0.53)*size, vec2( 0.66, 0.0)*size, thickness); + COLOR += 2.0 * capsule(coord, vec2(0.33, 0.53)*size, vec2( 0.66, 0.0)*size, thickness); + COLOR += 2.0 * capsule(coord, vec2(0.33, 0.53)*size, vec2(-0.33, 0.53)*size, thickness); + COLOR += 2.0 * capsule(coord, vec2(-0.33, 0.53)*size, vec2(-0.66, 0.0)*size, thickness); + COLOR += 2.0 * capsule(coord, vec2(-0.33,-0.53)*size, vec2(-0.66, 0.0)*size, thickness); + return min(max(COLOR,0.0),1.0); + } +#define PALETTE_0 vec3(1.0,0.8,0.5) +#define PALETTE_1 vec3(0.2,0.6,0.6) +#define PALETTE_2 vec3(0.0,0.0,0.0) +#define PALETTE_3 vec3(1.0,1.0,1.0) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float vignette = 1.0 / max(0.25 + 1.5*dot(uv,uv),1.0); + + vec3 col = PALETTE_1; + //if time add grid here + if(mod(uv.y*400.0+uv.x*400,8.0)<1.1) { + col -= vec3(0.05); + }else if(mod(uv.y*400.0-uv.x*400,8.0)<1.1) { + col -= vec3(0.05); + } + vec2 pp = uv; + pp *= 10.0; + pp.x = mod(pp.x,1.0) - 0.5; + pp.y = mod(pp.y,1.0) - 0.5; + float big = 0.0; + big = capsule(pp,vec2(-0.15,-0.15), vec2(0.15,0.15), 0.05); + big += capsule(pp,vec2( 0.15,-0.15), vec2(-0.15,0.15), 0.05); + big = min(max(big,0.0),1.0); + col -= big*0.2; + for(float i=0.0;i<8.0; i++) { + + vec2 coord = uv + vec2(sin(i*3.0),0.5-(0.6+sin(i)*0.2)*abs(sin(i+fGlobalTime))); + coord *= 0.9 + sin(i) * 0.5 + texture(texFFTSmoothed,0.2).x*100.0; + + //rotate here + coord *= rotate(sin(fGlobalTime*9.0)/12.0); + + col = mix( col, PALETTE_2, roundBox( coord * 12.0, vec2(0.0,0.0), vec2(3.40,0.4), 0.13)); + col = mix( col, PALETTE_2, roundBox( coord * 12.0, vec2(2.0,0.9), vec2(0.24,1.2), 0.1)); + col = mix( col, PALETTE_2, roundBox( coord * 12.0, vec2(-2.0,0.9), vec2(0.24,1.2), 0.1)); + + col = mix( col, PALETTE_0, roundBox( coord * 12.0, vec2(0.0,0.0), vec2(3.20,0.2), 0.13)); + col = mix( col, PALETTE_0, roundBox( coord * 12.0, vec2(2.0,0.9), vec2(0.04,1.0), 0.1)); + col = mix( col, PALETTE_0, roundBox( coord * 12.0, vec2(-2.0,0.9), vec2(0.04,1.0), 0.1)); + + + col = mix(col, PALETTE_2, circle(coord,vec2(0.17,0.0),0.02)); + col = mix(col, PALETTE_2, circle(coord,vec2(-0.17,0.0),0.02)); + col = mix(col, PALETTE_2, capsule(coord,vec2(0.0,-0.04),vec2(0.0,-0.08),0.01)); + coord.y += cos(coord.x*12.0)*0.04; + col = mix(col, PALETTE_2, capsule(coord,vec2(-0.04,0.0), vec2(0.04,0.0),0.01)); + + } + float t = fGlobalTime * 0.1; + vec2 s = uv * (1.0 + sin(t+uv.x*1.5+uv.y*0.8)*0.4); + s += vec2(t*4.0,t*2.2); + s.x = mod(s.x+floor(s.y)*0.5,1.)-0.5; + s.y = mod(s.y,1.0)-0.25; + col = mix( col, PALETTE_3, hexacon( s, vec2( 0.0,0.0), 0.3, 0.02)); + col = mix( col, PALETTE_3, hexacon( s, vec2( 0.5,0.333), 0.3, 0.02)); + col = mix( col, PALETTE_3, hexacon( s, vec2(-0.5,0.333), 0.3, 0.02)); + col += capsule(s,vec2(-0.15,-0.15), vec2(0.15,0.15), 0.05) * 100.0; + col += capsule(s,vec2( 0.15,-0.15), vec2(-0.15,0.15), 0.05) * 100.0; + out_color = vec4(col*vignette,1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_byt3m3chanic.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_byt3m3chanic.glsl new file mode 100644 index 000000000..6aaa1a69b --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_byt3m3chanic.glsl @@ -0,0 +1,156 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define R v2Resolution +#define T fGlobalTime + +mat2 rot(float a){return mat2(cos(a),sin(a),-sin(a),cos(a));} +float hash21(vec2 a){return fract(sin(dot(a,vec2(22.5,35.35)))*48823.);} +float smp(float a){return texture(texFFTSmoothed, a).x;} +float smx(float a){return texture(texFFT, a).x;} +float tor(vec3 p, float t, float r){ + vec2 q = vec2(length(p.xy)-r,p.z); + return length(q)-t; +} +float box(vec3 p, vec3 a){ + vec3 q = abs(p)-a; + return length(max(q,0.))+min(max(q.x,max(q.y,q.z)),0.); +} +vec3 dom(inout vec3 p, float s){ + float h = s/2.; + vec3 id = floor((p+h)/s); + p=mod(p+h,s)-h; + return id; +} +float glow = 0.; +vec3 gid,sid; + +vec2 map(vec3 p, float a){ + vec2 res=vec2(1e5,0.); + + p.y+=T*.5; + p.y=mod(p.y+2.,4.)-2.; + + vec3 o=p,q=p,w=p,i=p; + float k = 11./dot(o,o); + o*=k; + float tt = .75+.5*cos(T*.15); + + p=mix(p,o,tt); + + p.z-=T; + w.z-=T; + vec3 id = dom(p,2.); + vec3 xd = dom(w,1.); + gid=id; + float hs = hash21(id.xy+id.z); + + float pp = smx(mod(id.z*.1,1.))*8.; + float pp2 =smp(mod(id.z*.2,1.))*4.; + + bool check = id.x==0.&&id.y==0.; + float pt=.75+.25*cos(T*.234); + + float d = tor(p,.05+pp,.67); + if(d.6) res=vec2(l,2.); + if(a==1.&&!check&&hs>.6) glow+=.002/(.015+l*l); + float sp=length(i-vec3(0,0,pt))-(.5+tt); + if(spyt&&hs>.65){ + ro.xz*=rot(30.+T*.2); + rd.xz*=rot(30.+T*.2); + } + hs=hash21(vec2(15,tt)); + + if(uv.y>xt&&hs>.46){ + ro.yz*=rot(50.+T*.1); + rd.yz*=rot(50.+T*.1); + } + + vec3 p=ro; + float d=0.,m=0.; + for(int i=0;i<164;i++){ + p=ro+d*rd; + vec2 ray = map(p,1.); + m=ray.y; + ray.x=max(abs(ray.x),1e-3); + d+=abs(ray.x*.3); + } + sid=gid; + vec3 cr = hue(hash21(sid.xy+sid.z)*3.1); + if(d<25.){ + vec3 n=normal(p,d); + vec3 l=normalize(vec3(5,5,-5)); + float diff = clamp(dot(n,l),0.,1.); + + float sp = length(dot(n,p))-.5; + + C+=diff*hue((n.x+n.y+n.z)*.5+T*.5); + //C=mix(C,cr,sp); + } + + + C=mix(C,hue((T*.25)+(uv.x+uv.y)*.2),1.-exp(-.009*d*d*d)); + C=mix(C,vec3(glow),clamp(glow,0.,1.)); + + + out_color = vec4(C,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_cosamentale.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_cosamentale.glsl new file mode 100644 index 000000000..f6d310f85 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_cosamentale.glsl @@ -0,0 +1,118 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +mat2 rot(float t){ float c = cos(t); float s = sin(t); return mat2(c,-s,s,c);} +float time = fGlobalTime* mix(1.,2.,step(0.5,fract(fGlobalTime*0.2)))*mix(1.,fract(fGlobalTime),step(0.9,fract(fGlobalTime*0.1))); +float zl; +float se; +float bl(vec2 p ,vec2 b){vec2 q = abs(p)-b; + return length(max(q,vec2(0.)))+min(0.,max(q.x,q.y));} +float rd(){return fract(sin(se+=1.)*7845.236);} +vec3 vr(){ float z = (rd()-0.5)*2.; + float s = rd()*6.28; + float a = sqrt(1.-z*z); + vec3 vn = vec3(a*cos(s),a*sin(s),z); + vn *= sqrt(rd());return vn;} + +float map(vec3 p){ + vec3 pr = p ; + + pr = abs(pr); + pr -= 30.; + if(pr.x>pr.y){pr.xy=pr.yx;} + pr.x-=2.; + if(pr.x>pr.z){pr.xz=pr.zx;} + if(pr.y>pr.z){pr.yz=pr.zy;} + vec3 r = vec3(15.); + pr = mod(pr,r)-0.5*r; + float d4 = bl(pr.xy,vec2(2.)); + float d5 = max(length(pr.xz)-0.2,fract(p.y*0.1+time*2.)-0.5); + float tdd = step(0.75,fract(time*0.25)); + vec3 pb = p; + for(int i = 0 ; i <4 ; i++){ + pb -= 0.5; + pb.ry*= rot(time*1.2); + pb.xz *= rot(time); + pb = abs(pb); + } + float ta = step(0.5,fract(time*0.5)); + if(ta>0.5){ + float d1 = length(pb-vec3(0.,4.5,0.))-2.; + float d2 = length(pb-0.1)-1.25+fract(time*3.)*0.5; + float d3 = p.y+10.; + zl = min(d5,d2); + return min(min(d1,min(d2,mix(d4,d3,tdd))),d5);} + else{ + float d1 = max(length(pb.yz)-0.7,length(p)-8.); + float d2 = max(length(pb.xy-vec2(3.5,0.))-0.25+fract(time*3.)*0.05,length(p)-8.); + float d3 = p.y+10.; + zl = min(d5,d2); + return min(min(d1,min(d2,mix(d4,d3,tdd))),d5);} + } + float rm(vec3 p, vec3 r){ + float dd = 0.; + for(int i = 0 ; i< 40 ; i++){ + float d = map(p); + if(dd>64.){dd= 64.;break;} + if(d<0.001){break;} + p += r*d; + dd +=d; + }return dd; + } + vec3 nor (vec3 p){ vec2 e = vec2(0.01,0.); return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx)));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uc = uv; + uv -= 0.5; + uv *= 2.; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + se = uv.x*v2Resolution.x+uv.y; + // se += time; + vec3 p = vec3(0.,0.,-16.); + vec3 r = normalize(vec3(uv,1.5)); + r.xz *= rot(time); + p.xz *= rot(time); + float r1 = 0.; + for(int i = 0 ; i< 3 ; i++){ + float d = rm(p,r); + if(step(0.2,zl)>0.5){ + vec3 pp = p +r*d; + vec3 n = nor(p); + r = n+vr(); + p = pp+r*0.1; + } else{r1=1.;break;} + } + float b =sqrt(24.); + float c = 0.; + float d1 = 0.001; + float d2 = 0.00066; + float d3 = 0.00033; + float vv = 1.8+pow(length(uv.y),2.)*8.; + for(float i = -0.5*b ; i<0.5*b ; i+= 1.) + for(float j = -0.5*b ; j<0.5*b ; j+= 1.){ + c += texture(texPreviousFrame,uc+vec2(i,j)*d1*vv).a; + c += texture(texPreviousFrame,uc+vec2(i,j)*d2*vv).a; + c += texture(texPreviousFrame,uc+vec2(i,j)*d3*vv).a; + } + c /= 24.; + c = pow(c,0.8); + float ta = step(0.5,fract(time*0.5)); + vec3 c2 = mix(vec3(1.),3.*abs(1.-2.*fract(c*0.3-mix(0.1,0.6,ta)+vec3(0.,-1./3.,1./3.)))-1.,mix(0.5,0.3,ta))*c; + out_color = vec4(vec3(c2),r1); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_flopine.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_flopine.glsl new file mode 100644 index 000000000..884710743 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_flopine.glsl @@ -0,0 +1,179 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define hr vec2(1.,sqrt(3.)) +#define circle(u,s) (length(u)-s) +#define sm(t,v) smoothstep(t,t*1.05, v) +#define noise(u) textureLod(texTex2, u, 0.).x +#define hash21(u) fract(sin(dot(u,vec2(164.7, 241.8)))*1675.1) + +#define PI acos(-1.) +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) + +#define crep(p,c,l) p-= c*clamp(round(p/c), -l, l) +#define rep(p,c) p=mod(p, c)-c*.5 +#define time fGlobalTime +#define dt(sp,off) fract((time+off)*sp) +#define swi(sp,off) floor(sin(dt(sp,off))*PI) + + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +struct obj{ +float d; +vec3 sc; +vec3 lc; +}; + +obj objmin (obj a, obj b) +{ + if (a.dp.x) p=p.yx; + } + +float box (vec3 p, vec3 c) +{ + vec3 q = abs(p)-c; + return min(0.,max(q.x,max(q.y,q.z)))+length(max(q, 0.)); + } + +float htr (vec2 uv) +{ + //uv = abs(uv)-.5; + mo(uv,vec2(.25)); + vec2 ga = mod(uv,hr)-hr*.5, gb=mod(uv-hr*.5,hr)-hr*.5, + guv = (dot(ga,ga) -guv.y) ? 1.: -1.; + guv -= vec2(1., 1/sqrt(3.))*.5*s ; + + // d *= sm(0.05, abs(circle(guv, sqrt(3.)/6.)) ); + d = min(d, abs(circle(guv, sqrt(3.)/6.))); + return d; +} + +float st (vec2 uv) +{ + mo(uv, vec2(.35)); + vec2 id = floor(uv); + uv = fract(uv)-.5; + + if (hash21(id)<.5) uv.x = -uv.x; + float s = (uv.x > -uv.y)? 1.:-1.; + + uv -= .5*s; + + return abs(circle(uv, .5)); + + } + +float extrude (vec3 p, float d, float h) +{ + vec2 q = vec2(d, abs(p.z)-h); + return min(0., max(q.x,q.y))+length(max(q,0.)); + } + +obj SDF (vec3 p) +{ + + p.yz *= rot(-atan(1./sqrt(2.))); + if (swi(0.5, 0.)<.5) p.xz*= rot(PI/4.); + + p.x -= time; + + vec3 pp = p; + p.y -= .5; + float pt = extrude(p.xzy, htr(p.xz), 0.05+texture(texFFTSmoothed, 0.01).x)-.03; + obj textru = obj(pt, vec3(0., 0.2,0.3), vec3(.5, .9,.2)); + + p.y += .3; + obj tt = obj(extrude(p.xzy, st(p.xz), .2+texture(texFFTSmoothed, 0.008).x)-.025, vec3(0., 0.1, .5), vec3(0.4, .6, .8)); + + float per = 1.5; + p = pp; + p.y += length(texture(texTex4, p.xz*.02))*.2; + rep(p.xz, per); + + obj ground = obj(box(p, vec3(.71)), vec3(0.1,.0,.0), vec3(.8, .15, .1)); + obj scene = ground; + scene = objmin(scene, textru); + + return scene; + } + + +vec3 gn (vec3 p) +{ + vec2 eps = vec2(0.01, 0.); + return normalize(SDF(p).d-vec3(SDF(p-eps.xyy).d,SDF(p-eps.yxy).d,SDF(p-eps.yyx).d)); + } + + float AO (vec3 p, vec3 n, float e) + {return clamp(SDF(p+e*n).d/e, 0., 1.);} + + float spec (vec3 rd, vec3 l, vec3 n, float e) + {return pow(max(dot(n, normalize(l-rd)),0.), e);} + +void main(void) +{ + vec2 uv = (2.*gl_FragCoord.xy-v2Resolution.xy)/v2Resolution.y; + + if (swi(.125, 0.)<.5) mo(uv, vec2(1.)); + float size = (swi(.25, 0.)<.5) ? 4. : 2.; + + vec3 ro =vec3(uv*size, -30.), rd=vec3(0.,0.,1.), p=ro, + col=vec3(0.), l=vec3(0.5, 1., -2.); + + bool hit = false; obj O; + for(float i=0.; i<64.; i++) + { + O = SDF(p); + if (O.d<0.01) + { + hit=true; break; + } + p += O.d*rd*.5; + } + + //uv *= 5.; + //vec3 col = vec3(htr(uv)); + // + if (hit) + { + vec3 n = gn(p); + float li = max(dot(n,normalize(l)), 0.); + float ao = AO(p,n,0.015)+AO(p,n,0.1)+AO(p,n,0.15); + float sp =spec(rd, l, n, 25.); + col = mix(O.sc, O.lc,li); + col +=sp; + col *= ao/3.; + + } + col = mix(col, col+vec3(0.2, 0.4, .7), texture(texFFT, abs(uv.x*.15)+abs(uv.y*.15)).x*20.); + out_color = vec4(sqrt(col), 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_glowcone.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_glowcone.glsl new file mode 100644 index 000000000..6363cdd9f --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_glowcone.glsl @@ -0,0 +1,54 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float sphere(vec3 pos, float size) { + return length(pos)-size; +} + +vec2 getDist(vec3 pos) { + vec3 pos2 = pos; + float f = texture(texFFT, pos2.x).r; + pos2.x = cos(pos2.x) - cos(fGlobalTime*f*.5); + pos2.y = cos(pos2.y) - cos(fGlobalTime * 5); + return vec2(sphere(pos2, f * 10.)); +} + +void main(void) +{ + vec2 uv = (2.*gl_FragCoord.xy-v2Resolution.xy)/v2Resolution.y; + vec3 cam = vec3(0, fGlobalTime * texture(texFFTSmoothed, fGlobalTime).r * 0.01, -5.); + vec3 dir = normalize(vec3(uv, 1)); + + vec3 color = vec3(0, clamp(uv.y, 0, 1), clamp(uv.y, 0.4, 0.8)); + float traveled = 0.; + for (int i=0; i<100; i++) { + vec3 point = cam + dir * traveled; + vec2 dist = getDist(point); + traveled += dist.x; + if (dist.x < 0.0001) { + break; + } + if (traveled > 100.) { + color = vec3(0,0,0); + break; + } + + } + out_color = vec4(color, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kali.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kali.glsl new file mode 100644 index 000000000..ec654b98d --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kali.glsl @@ -0,0 +1,173 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define time fGlobalTime + +//float so=texture(texFFT,.3).x; +float so=.005; +float det=.001, br=0., tub=0., hit=0.; +vec3 pos, sphpos; +mat3 lookat(vec3 dir, vec3 up) { + dir=normalize(dir); + vec3 rt=normalize(cross(dir,up)); + return mat3(rt,cross(rt,dir),dir); +} +vec3 path(float t) { + return vec3(sin(t+cos(t)*.5)*.5,cos(t*.5),t); +} +mat2 rot(float a) { + float s=sin(a); + float c=cos(a); + return mat2(c,s,-s,c); +} + +vec3 fractal(vec2 p) { + p=fract(p*.1); + float m=1000.; + for (int i=0; i<7; i++) { + p=abs(p)/clamp(abs(p.x*p.y),.25,2.)-1.2; + m=min(m,abs(p.y)+fract(p.x*.3+time*.5+float(i)*.25)); + } + m=exp(-8.*m); + return m*vec3(abs(p.x),m*2.,abs(p.y)); +} + +float coso(vec3 pp) { + pp*=.7; + pp.xy*=rot(pp.z*2.); + pp.xz*=rot(time*2.); + pp.yz*=rot(time); + float sph=length(pp)-.04; + sph-=length(sin(pp*40.))*.05; + sph=max(sph,-length(pp)+.11); + float br2=length(pp)-.03; + br2=min(br2,length(pp.xy)+.005); + br2=min(br2,length(pp.xz)+.005); + br2=min(br2,length(pp.yz)+.005); + br2=max(br2,length(pp)-1.); + br=min(br2,br); + float d=min(br,sph); + return d; +} + + +float de(vec3 p) { + hit=0.; + br=1000.; + vec3 pp=p-sphpos; + + p.xy-=path(p.z).xy; + p.xy*=rot(p.z+time*.5); + float s=sin(p.z*.5+time*.5); + p.xy*=1.3-s*s*.7; + + for(int i=0; i<6; i++) { + p=abs(p)-.37+sin(p.z*.15)*.04; + } + + pos=p; + + + tub=-length(p.xy)+.43+sin(p.z*10.)*.1*smoothstep(.4,.5,abs(.5-fract(p.z*.05))*2.); + + + + + float co=coso(pp); + co=min(co,coso(pp+.7)); + co=min(co,coso(pp-.7)); + + + float d=min(tub,co); + if (d==tub) hit=step(fract(.1*length(sin(p*10.))),.04); + + return d*.3; +} + +vec3 march(vec3 from, vec3 dir) { + vec2 uv=vec2(atan(dir.x,dir.y)+time*.5,length(dir.xy)+sin(time*.2)); + vec3 col=fractal(uv); + + float d=0.,td=0.,g=0., ref=0., ltd=0., li=0.; + vec3 p=from; + for (int i=0; i<200; i++) { + p+=dir*d; + d=de(p); + if (d5.) break; + td+=d; + g+=.1/(.1+br*13.); + li+=.1/(.1+tub*5.); + } + g=max(g,li*.1); + float f=1.-td/3.; + if (ref==1.) f=1.-ltd/3.; + if (d<.1) { + col=vec3(1.); + vec2 e=vec2(0.,det); + vec3 n=normalize(vec3(de(p+e.yxx),de(p+e.xyx),de(p+e.xxy))-de(p)); + col=vec3(n.x)*.5; + col+=fract(pos.z*5.)*vec3(.2,.1,.5); + col+=fractal(pos.xz*4.); + if (tub>.01) col=vec3(0.); + } + + col*=f; + vec3 glo=g*.1*vec3(2.,1.,2.)*(.5+so*100.)*.5; + glo.rb*=rot(dir.y*1.5); + col+=glo; + col*=vec3(.8,.6,.6); + col=mix(col,vec3(1.),ref*.3); + return col; +} + + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float t=time*.7; + + vec3 from= path(t); + if (mod(time,10.)>5.) from=path(floor(t/4.+.5)*4.); + sphpos=path(t+.5); + from.x+=.2; + vec3 fw=normalize(path(t+.5)-from); + vec3 dir=normalize(vec3(uv,.4)); + dir=lookat(fw,vec3(fw.x*2.,1.,0.))*dir; + dir.xz+=sin(time)*.5; + vec3 col=march(from,dir); + out_color =vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kostik1337.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kostik1337.glsl new file mode 100644 index 000000000..6961c78dd --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_kostik1337.glsl @@ -0,0 +1,190 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform float fMidiKnob; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float BPM = 120.; +float beat = time*BPM/60.; + +vec3 ct(vec3 p) { + if(p.x thresh ? 1. : 0.; + break; + } + } + glow *= exp(-d*.2); + c += glow; + + uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + float gg = 1.; + if (fract(beat) < .05) { + uv = quant(uv, .05); + gg = 1.2; + } + vec4 prev = back(uv); + vec2 e = vec2(.01, .0); + e *= 8. * smoothstep(.9, 1., fract(beat/4.)); + e *= mr(floor(beat)); + e *= hash(quant(uv.y, .05))-.5; + prev = vec4( + back(uv-e).r, + back(uv).g, + back(uv+e).b, + prev.a + )*gg; + float mf = mix(.6, .9, prev.a); + + c = mix(c, prev.rgb, mf); + + for(float i=1.;i<4.;++i) { + vec2 disp = vec2( + hash(i+floor(beat)), + hash(i+.13+floor(beat)) + )-.5; + vec3 cc = back((uv+disp)/(1.+i)).rgb; + c += cc* mix(.04, .1, (1.-fract(beat))); + } + c *= 1.-hit; + + out_color = vec4(c, glow); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_leon.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_leon.glsl new file mode 100644 index 000000000..88293ea50 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_leon.glsl @@ -0,0 +1,136 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +float fft, material, rnd; + +mat2 rot(float a) { float c=cos(a),s=sin(a); return mat2(c,s,-s,c); } + +float gyroid (vec3 p) { return dot(sin(p), cos(p.yzx)); } + +float fbm (vec3 p) { + float result = 0., a = .5; + for (float i = 0.; i < 3.; ++i) { + result += abs(gyroid(p/a)*a); + a /= 2.; + } + return result; +} + +float box (vec3 p, vec3 s) +{ + vec3 b = abs(p)-s; + return max(b.x,max(b.y,b.z)); +} + +float random (vec2 p) { return fract(sin(dot(p,vec2(10.1324,5.654)))*46501.654); } + +float map(vec3 p) +{ + float dist = 100.; + vec3 q = p; + + float t = time*1.+p.z*.5; + t = pow(fract(t), 10.) + floor(t); + t += rnd; + float a = 1.; + float tt = time + p.z; + tt = pow(fract(tt), 10.1) + floor(tt); + float r = .0*fft+.2+.1*sin(length(p)*3.-tt+p.z*5.); + const float count = 12.; + for (float i = 0.; i < count; ++i) { + p.xz *= rot(t/a); + p.yz *= rot(sin(t)/a); + p.x = abs(p.x)-r*a; + float shape = length(p)-.1*a; + if (mod(i, 2.) < .5) shape = box(p,vec3(1,1,.01)*.15*a); + material = shape < dist ? i : material; + dist = min(dist, shape); + a /= 1.2; + } + + float noise = fbm(p*60.); + dist -= noise*.002; + return dist*.3; +} +#define ss(a,b,t) smoothstep(a,b,t) +void main(void) +{ + vec2 uv = (2.*gl_FragCoord.xy-v2Resolution)/v2Resolution.y; + float rng = random(uv); + vec2 jitter = vec2(random(uv+.196),random(uv+4.1)); + fft = texture(texFFTSmoothed, 0.).r; + fft = pow(fft, .8); + float aa = abs(atan(uv.y, uv.x))/10.+fft*10.; + float lod = 100.; + aa = floor(aa*lod)/lod; + float fft2 = texture(texFFT, aa).r; + vec3 pos = vec3(0,0,2); + float t = time*2.; + float index = floor(t); + float anim = fract(t); + rnd = mix(random(vec2(index)), random(vec2(index+1.)), anim); + vec3 ray = normalize(vec3(uv, -3)); + float luv = length(uv); + ray.xy += jitter * smoothstep(.5, 2., luv)*.1; + vec2 llod = 10.*vec2(random(vec2(floor(time*4.+.5))), random(vec2(floor(time*2.)))); + float blur = random(floor(uv*llod)+floor(time*4.)); + ray.xy += jitter*step(.95, blur)*.1; + const float count = 100.; + float shade = 0.; + float total = 0.; + for (float index = count; index > 0.; --index) { + float dist = map(pos); + if (dist < .0001 * total || total > 10.) { + shade = index/count; + break; + } + ray.xy += jitter*total*.0005; + dist *= .9+.1*rng; + total += dist; + pos += ray * dist; + } + vec3 color = vec3(0); + color += ss(4.,.5, luv)*.5; + //uv.x = abs(uv.x)-fft*3.; + luv = length(uv); + color += ss(.01,.0,abs(abs(luv-8.5*fft))-fft2*4.); + if (total < 10. && shade > .0) { + color = vec3(0.2); + vec2 unit = vec2(.001,0); + vec3 normal = normalize(vec3(map(pos+unit.xyy)-map(pos-unit.xyy), map(pos+unit.yxy)-map(pos-unit.yxy), map(pos+unit.yyx)-map(pos-unit.yyx))); + //color = normal*.5+.5; + vec3 rf = reflect(ray, normal); + color += .5+.5*cos(vec3(1,2,3)*5.+pos.z+blur); + color *= mod(material, 2.); + color += pow(dot(ray, normal)*.5+.5, 1.) * 2.; + color += pow(dot(rf, vec3(0,1,0))*.5+.5, 10.); + color *= shade; + } + out_color = vec4(color, 1); +} + + + + + + + + + diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_musk.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_musk.glsl new file mode 100644 index 000000000..564d25287 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_musk.glsl @@ -0,0 +1,151 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define T fGlobalTime + +float sid=0; +vec3 c0=vec3(0); + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +mat2 rot(float t){ + float c,s; + c=cos(t); + s=sin(t); + return mat2(c,s,-s,c); +} + +mat2 m0; + +float dfo(vec3 p, float id){ + p.xy*=rot(p.z*sin(T/4+id)*(.01+id*0.1)); + p.z+=T; + float s = 1.0/id/id; + vec3 p2 = mod(p, s+s)-s; + p+=sin(p.yzx+T); + return length(p2)-s*0.5; +} + +float df(vec3 p){ + float d=dfo(p,0); + for (float i=.0; i<4; i+=1.) + { + d=max(d-.2, min(d, dfo(p, i))); + } + return d; +} + +vec3 nf(vec3 pos){ + vec2 e=vec2(0,1e-3); + return normalize(vec3( + df(pos+e.yxx) - df(pos-e.yxx), + df(pos+e.xyx) - df(pos-e.xyx), + df(pos+e.xxy) - df(pos-e.xxy) + )); +} + +vec3 surf(vec3 pos){ + vec3 norm = nf(pos); + vec3 emc = c0; + vec3 shr = vec3(0); + float pat = 0; + float q = 0; + q += smoothstep(0.9,0.98,sin((pos.z*0.5+T*3.14159))); + pat += smoothstep(0.97-q,0.98,sin(94*df(pos*1.0+1.0))); + pat += smoothstep(0.92,0.98,sin(94*df(pos*4.0+1.0)))*0.2; + shr=emc * pat * (1.0+q*2.0); + return shr; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 quv = uv-mod(uv,vec2(0.1)); + float q=fract(dot(quv, vec2(2.412,95.313))*31.3513); + sid = T*0.3+q*0.25; + sid -= fract(sid); + sid = sin(sid*4123); + + c0 = mix(vec3(0.9,9,1.1), vec3(9,0.9,1.1), abs(sin(sid*4.04+uv.y*0.5))); + c0 = mix(c0, vec3(1.5,.9,6), abs(sin(sid*9.53+uv.y*0.5))); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d*d + T ).r * 80; + //m.x += sin( fGlobalTime ) * 0.1; + //m.y += fGlobalTime * 0.25; + + vec3 pos = vec3(sin(sid)*0.35,cos(sid*4)*0.35,-4); + vec3 dir = normalize(vec3(uv.xy, +1)); + float dt=0.01; + float dist; + + dir.xy*=rot(sid); + dir.xz*=rot(sin(sid*53)/4); + dir.yz*=rot(sin(sid*9)/4); + + for (int i=0; i<150; i+=1){ + dist = df(pos+dir*dt); + dt += dist; + } + + vec3 pos2 = pos+dir*dt; + + vec3 col = vec3(0); + if (dist < 1e-3) + { + col = surf(pos2); + } + col=mix(c0*4,col,1.0/(1.0+dt*dt*1e-3)); + + vec3 dir2 = reflect(nf(pos2), dir); + + vec4 t1 = plas( m * 1, T + texture(texFFTIntegrated, 0.05).r*1 ) / d; + vec4 t2 = plas( m * 2, T + texture(texFFTIntegrated, 0.05).r*1 ) / d; + vec4 t3 = plas( m * 3, T + texture(texFFTIntegrated, 0.05).r*1 ) / d; + + vec4 t = t1*vec4(3,0.1,1,0)+t2*vec4(1,0,1,0)+t3*vec4(1,0.1,3,0); + t *= 0.1; + + vec3 outc = (f*.1 + t*.5).xyz*0.1; + outc += col*0.9; + + vec3 prev; + prev = texture(texPreviousFrame, gl_FragCoord.xy/v2Resolution.xy).xyz; + outc = mix(outc, prev, 0.4); + + outc *= smoothstep(0.5, 0.55, abs(mod((uv.xy*rot(T*0.1)).x + T*.1 - texture(texFFTIntegrated, 0.02).r*0.05, 0.025)-0.0125)*80.0)*.2+.8; + + + outc *= 1.0-pow(length(uv),2.0); + + outc = vec3(1.4, 1.4, 1.4)*outc / (1.0 + outc); + + out_color = vec4(outc, 0.5); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_provod.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_provod.glsl new file mode 100644 index 000000000..ace12ca20 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_provod.glsl @@ -0,0 +1,229 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float t=fGlobalTime; +#define T(t,p) texture(t,(p+.5)/textureSize(t,0)) +#define fft(f) T(texFFT, f).r +#define ffti(f) T(texFFTIntegrated, f).r +#define ffts(f) T(texFFTSmoothed, f).r + +const vec3 e=vec3(0.,.01,1.); +float vmax(vec2 p){return max(p.x,p.y);} +float vmax(vec3 p){return max(max(p.x,p.y),p.z);} +#define box(p,s) vmax(abs(p)-(s)) +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define rep(p,s) (mod(p,s)-(s)*.5) +float hash(float f){return fract(sin(f)*34985.54329);} +float hash(vec2 f){return hash(dot(f,vec2(17.1423,54.4573)));} +float noise(vec2 f) {vec2 F=floor(f);f-=F; + //f*=3.*(2.*f-f); + return mix( + mix(hash(F+e.xx),hash(F+e.xz),f.y), + mix(hash(F+e.zx),hash(F+e.zz),f.y),f.x); +} + +float w1(vec3 p) { + float d=p.y; + p.y-=1.; + + vec2 cs = vec2(2.); + vec2 cn = floor(p.xz/cs); + p.xz = rep(p.xz, cs); + vec2 pp = p.xz; + + float ph = fract((.2+.3*hash(cn))*t*.8); + p.y -= ph * 7. - 2.; + p.xz *= rot(t*(.5+.5*hash(cn-4.))); + p.xy *= rot(t*(.5+.5*hash(cn-3.))*1.1); + float od=box(p, vec3(.6)*(1.-ph)); + + od = min(od, -box(pp, cs-.5)); + return min(d,od); +} + +float w2(vec3 p) { + float d=p.y; + d -= sin(noise(p.xz*2.)+t)*.3; + p.y -= 1.; + return min(d,length(p) - 1.); +} + +float s_n = 0.; +float w(vec3 p) { + if (s_n < 1.) return w1(p); + return w2(p); +} + +float tr(vec3 O,vec3 D,float l, float L) { + for(float i=0.;i<100.;++i){ + float d=w(O+D*l);l+=d; + if (d<.0001*l||l>L)break; + } + return l; +} + +vec3 wn(vec3 p){ + return normalize(vec3( + w(p+e.yxx), + w(p+e.xyx), + w(p+e.xxy))-w(p)); +} + +float ao(vec3 p,vec3 n,float l,float N) { + l/=N; + float occ=N; + for (float i=1.;i=L) { + C += kc*tt.bgc; + break; + } + + vec3 p=tt.O+tt.D*l,n=wn(p); + vec3 c = tt.amb * ao(p,n,.7,5.); + if (any(greaterThan(tt.l1c,e.xxx))) { c += tt.l1c * max(0., dot(n, tt.l1d)); } + if (any(greaterThan(tt.l2c,e.xxx))) { c += tt.l2c * max(0., dot(n, tt.l2d)); } + c *= tt.m1d; + + C += kc * mix(c, tt.bgc, l/L); + tt.O = p + n * .1; + tt.D = reflect(tt.D, n); + kc *= tt.m1d; + } + return C; +} + +vec3 sc1(vec2 uv) { + s_n = 0.; + trd tt=trdInit(uv); + tt.m1d = vec3(.5); + mat2 ry=rot(.3); + tt.D.xz*=ry; + tt.O.xz-=e.xz*ry*t*5.; + return sctr(tt); +} + +vec3 sc2(vec2 uv) { + s_n = 1.; + trd tt=trdInit(uv); + tt.amb = vec3(0.); + tt.bgc = vec3(0.); + tt.m1d = vec3(.5); + tt.l1d = normalize(vec3(1.)); + tt.l1c = vec3(.8,.9,.2); + tt.l2d = normalize(vec3(-1.,1.,1.)); + tt.l2c = vec3(.2,.1,.8); + tt.bnc = 2.; + return sctr(tt); +} + +vec3 sc3(vec2 uv) { + vec2 p=vec2(atan(uv.x,uv.y)/3.1415, 1./length(uv) + t * 3.); + + vec3 C = vec3(0.); + vec2 cn = floor(vec2(19., 1.) * p); + + //C = vec3(1.) * fract(p.y+t); + C = vec3(1.) * step(.5, hash(cn)); + + return C; +} + +vec3 sc4(vec2 uv) { + uv.y += .5; + vec2 p = uv * 128.; + p=floor(p); + return vec3(fft(p.y)); +} + +vec3 sc(vec2 uv, float i){ + if (i<1.) return sc2(uv); + if (i<2.) return sc3(uv); + if (i<3.) return sc1(uv); + return sc4(uv); +} + +void main(void) { + float aspect = v2Resolution.x / v2Resolution.y; + vec2 uv = gl_FragCoord.xy / v2Resolution.xy - .5; + uv.x *= aspect; + vec2 uvo=uv; + + vec3 O=vec3(0., 0., 1.),D=normalize(vec3(uv, -2.)); + mat2 ry=rot(.4),rx=rot(.4*sin(t*.2)); + O.xz*=ry;O.yz*=rx; + D.xz*=ry;D.yz*=rx; + float l=-O.z/D.z; + uv =O.xy+D.xy*l; + + float N=4.; + float zph = fract(t/4.); + float scl=1. + 150. * zph; + + float fsc = 50.; + + uv *= scl; + vec2 cs = vec2(aspect, 1.); + vec2 cn = floor(uv/cs); + vec2 cp = rep(uv, cs); + + float mcc = hash(floor(t))*N; + vec3 mc = sc(cn/fsc*cs, mcc); + + t += hash(cn) * 10.; + float sci = N * mc.r; + vec3 C=sc(cp, sci); + //C=mc; + //C=sc(uvo, 3.); + out_color = vec4(sqrt(C), 0.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_rimina.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_rimina.glsl new file mode 100644 index 000000000..bc700ef63 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_rimina.glsl @@ -0,0 +1,120 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.3).r; + +const float E = 0.001; +const float FAR = 100.; +const int STEPS = 60; + +vec3 glow = vec3(0.0); + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0); +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +float cluster(vec3 p){ + vec3 pp = p; + for(int i = 0; i < 5; ++i){ + pp.xy = abs(pp.xy)-0.5; + rot(pp.xy, 0.5); + } + return box(pp, vec3(0.2, 0.5, 0.2)); +} + +float scene(vec3 p){ + vec3 pp = p; + + float safe = sphere(p, 1.0); + + pp.z -= time; + + float off = 6.0; + pp.z = mod(pp.z+off*0.5, off)-off*0.5; + rot(pp.xy, time); + + float c = cluster(pp); + + glow += vec3(0.3, 0.1, 0.0) * 0.015 / (abs(c) + 0.05); + + pp = p; + + for(int i = 0; i < 5; ++i){ + pp = abs(pp)-0.2; + rot(pp.xy, 0.4); + rot(pp.xz, time); + } + + float b = box(pp, vec3(FAR, 0.1, FAR)); + + glow += vec3(0., 0.1, 0.3) * 0.01 / (abs(b) + 0.2); + + return max(-safe,max(c, -b)); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = uv-0.5; + q /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(0.0, 0.0, 0.0); + vec3 rt = vec3(0.0, -.1, -1.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0., 1., 0.))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z)*vec3(q, 1./radians(60.0))); + + float t = E; + vec3 p = ro; + + vec3 col = vec3(0.03, 0., 0.05); + + for(int i = 0; i < STEPS; ++i){ + float d = scene(p); + t += d; + p = ro + rd * t; + + if(d < E || t > FAR){ + break; + } + } + + if(t < FAR){ + col = vec3(0.4, 0.1, 0.0); + } + col += glow; + + vec3 prev = texture(texPreviousFrame, uv).rgb; + col = mix(col, prev, 0.7); + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_totetmatt.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_totetmatt.glsl new file mode 100644 index 000000000..ed1424c19 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_totetmatt.glsl @@ -0,0 +1,190 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +// HELLO INERCIAAAAAAA +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +float rnd = 0.; +float bpm = texture(texFFTIntegrated,.3).r; +float box3(vec3 p,vec3 b){ + p = abs(p)-b; + return length(max(vec3(0.),p))+min(0.,max(p.x,max(p.y,p.z))); +} +float box2(vec2 p,vec2 b){ + p = abs(p)-b; + return length(max(vec2(0.),p))+min(0.,max(p.x,p.y)); +} +vec2 sdf(vec3 p){ + vec3 op = p; + vec2 h; + p.x +=fGlobalTime; + + vec3 hp = p; + hp.y -=2.; + float d = 0.; + for(float i=0.2;i<25;hp=erot(hp,vec3(0.,1.,0.),i+=i)){ + + d += abs(dot(asin(sin(hp*i)),vec3(.4)/i)); + hp=erot(hp,normalize(vec3(.1,.2,.3)),i); + } float txt = texture(texFFT,.05+floor(hp.x*10)/100).r; + h.x = abs(p.y+2)-d*.3-txt; + + h.x = max(abs(p.z-7)-7.5,h.x); + h.y = 1.; + + vec2 t; + vec3 tp=p; + + tp.y +=1.+sin(p.z*.5+bpm+fGlobalTime)*.1; + float q = sign(p.y); + tp.xz = fract(tp.xz)-.5; + tp =erot(tp,vec3(0.,1.,0.),sign(q)*.785); + tp.y = abs(tp.y)-.05; + t.x =max(abs(p.z)-5.5, min(length(tp.zy),length(tp.xy))-.01); + t.y = 2.; + h= t.x < h.x ? t:h; + + tp = p; + + tp.y = abs(tp.y)-1.75; + tp = erot(tp,vec3(1.,0.,0.),bpm+p.x); + tp = abs(tp)-.2; + + t.x = box2(tp.yz,vec2(.05)); + + t.y = 3.; + + h= t.x < h.x ? t:h; + + + + tp = op; + for(float j=0.;j<=8;j++){ + vec3 ttp= tp; + ttp.y +=sin(fGlobalTime+j+rnd*.01); + ttp.x += tan(bpm+fGlobalTime+j+rnd*.01); + ttp=erot(ttp,normalize(vec3(.0,.1,.2)),bpm); + t.x = box3(ttp,vec3(.2)); + t.y = 1+mod(j,3);; + h= t.x < h.x ? t:h; + } + + + tp=p; + tp.y +=1.5; + t.x = abs(tp.y)-.1; + t.y = 4;; + + h= t.x < h.x ? t:h; + + return h; +} + +#define q(s) s*sdf(p+s).x + +vec3 norm(vec3 p, float ee){vec2 e =vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +vec3 sun(vec2 p){ + float up = max(0.,p.y); + float d = length(p)-.5;; + float t = texture(texFFTSmoothed,abs(floor(p.x*100)/100)).r; + float bar = abs(abs(p.y+cos(p.x*5+fGlobalTime)*.1)-.2-t)-.01; + d = max(-bar,d); + + float glow = abs(.05/d); + d = smoothstep(fwidth(d),0.,d); + vec3 col = mix(vec3(.9,.9,.0),vec3(.9,.0,.9),sqrt(up)); + return col *d * up+glow*up*mix(col,1.-col,sin(atan(p.x,p.y)+fGlobalTime)); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +vec3 col = sun(uv); + float beat = sqrt(texture(texFFT,.3).r); + rnd = dot(sin(uv*700),cos(uv.yx*500))*.5; +bpm = floor(bpm)+pow(fract(bpm),2.); + vec3 ro = vec3(0.2+sin(bpm),1.,-2.+sin(fGlobalTime)*2),rt = vec3(0,1.,0); + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z,vec3(0.,-1.,0.))); + vec3 y = cross(z,x); + vec3 rd = mat3(x,y,z)*normalize(vec3(uv,1.-(.3+floor(sin(bpm+rnd*.05)*5)*.1)*sqrt(length(uv+rnd*.01)))); + vec3 rp = ro; + vec3 light = vec3(1.,2.,9.); + float dd =0.; + vec3 acc = vec3(0.); + bool ref= false; + float dir = 1.; + float IOR = 2.4; + float i=0; + for(i=0;i++<108. && dd < 50.;){ + vec2 d = sdf(rp); + d.x *=dir; + if(d.y == 2.){ + + acc += vec3(.9,.0,.9)*exp(-abs(d.x))/(60.-beat*100+rnd*5); + d.x = max(.002,abs(d.x)); + } + + dd+=d.x; + rp+=rd*d.x; + + if(d.x < .001){ + + + vec3 n = norm(rp,.01); + vec3 n2 = norm(rp,.03); + float dif = max(0.,dot(normalize(light-rp),n)); + if(d.y == 3.){ + if(!ref){ + rd = refract(rp,n,1./IOR); + rp+=-n+rd*.1; + acc+=dif*.1; + ref = true; + dir *=-1.; + } else { + + vec3 _rd = refract(rp,n,IOR); + if(dot(_rd,rd) ==0){ + rd = reflect(rp,-n); + rp+=rd*.1; + } else { + rd=_rd; + rp+=n+rd*.1; + dir *=-1.; + } + } + continue; + + } else if(d.y == 4){ + + rd = reflect(rd,n+rnd*.01); + rp+=rd*.1; + col =vec3(.1,.0,.2); + continue; + } + float spc = pow(max(0.,dot(rd,reflect(normalize(light-rp),n))),32.); + col = dif * vec3(.5)+ mix(vec3(.1),vec3(.3,.0,.9),spc*5)*dif*step(.15,length(n-n2))*texture(texFFT,.3).r*100; + break; + } + } + if(ref && dd >=50){ + col = sun(rd.xy); + } + col = mix(vec3(.01),col,1.-exp(-i*i)); + out_color = vec4(col+acc,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_visy.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_visy.glsl new file mode 100644 index 000000000..0e2909e66 --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_visy.glsl @@ -0,0 +1,86 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float noise(vec2 p) +{ + return fract(sin(p.x*12.9898 + p.y*78.233)); +} + +float star(vec2 p, float r, in int n, in float m, in float roundness) { + float an = 3.141593 / float(n); + float en = 3.141593 / m; + vec2 acs = vec2(cos(an), sin(an)); + vec2 ecs = vec2(cos(en), sin(en)); + + float bn = mod(atan(p.x, p.y),2.0 * an) - an; + p = length(p) * vec2(cos(bn), abs(sin(bn))); + p -= r * acs; + p += ecs * clamp(-dot(p, ecs), 0.0, r * acs.y / ecs.y); + return length(p) * sign(p.x) - roundness; +} + +float line(vec2 p, vec2 a, vec2 b, float r) { + p -= a; + b -= a; + float d = length (p - b * clamp (dot (p, b) / dot (b, b), 0.0, 1.0)); + return smoothstep (r + 0.01, r, d); +} + +float n; + +#define ITERS 10.0 + +void main(void) +{ + vec2 p = (2.0 * gl_FragCoord.xy - v2Resolution.xy) / v2Resolution.y; + vec2 uv = (1.0 * gl_FragCoord.xy - v2Resolution.xy) / v2Resolution.y; + float t = fGlobalTime*0.2; + + float ff = 1 / length(p) * .5; + + + float f = texture( texFFT, ff ).r*1; + vec4 pp = texture(texPreviousFrame, p); + + n = noise(p+t+f); + + vec4 outcol = vec4(30.0); + + for (float i = 0.0; i < ITERS; i+=1) + { + float s = star(p*cos(i*t)+tan(t*10)*4.0+cos(t+i),0.8+0.1*cos(i*f)*0.1,2+int(i*0.1+pp.x*10.1)+int(mod(t,4)*1.3),0.5,abs(cos(cos(f-t*0.1)+uv.x*1*cos(t+uv.y))*0.50-i*0.01+n*cos(t*5+pp.z)-tan(t*0.1*f))); + float ss = star(p,cos(t*0.5+i*0.01+ff*10.)+i*t*0.1+ff,8,cos(t*10+ff)*0.01+0.5,cos(t+ff)); + vec3 base = vec3(0.5*i*0.1+p.x-f*0,0.4+0.4*s,0.1+i*0.5); + vec3 color = mix(vec3(4.0), base, 1.0 - smoothstep(0.0, 4.0 / v2Resolution.y, s))/ss; + color-=pp.rgb*cos(t*0.1+f)*0.1; + outcol.rgb-=color*1.5; + } + + outcol.rgb/=ITERS; + + outcol = clamp( outcol, 0.0, 1.0 ); + + out_color = outcol; +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_z0rg.glsl b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_z0rg.glsl new file mode 100644 index 000000000..9fa0c98af --- /dev/null +++ b/shader_file_sources/2022_11_04_shader_royale_inercia/grabber_inerciaroyale_z0rg.glsl @@ -0,0 +1,197 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +float _seed; +float hash11(float seed) +{ + return fract(sin(seed*123.456)*123.456); +} +float rand() +{ + return hash11(_seed++); +} +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define sat(a) clamp(a, 0., 1.) +#define FFT(a) (texture(texFFT, a).x*4.) +vec3 getCam(vec2 uv, vec3 rd) +{ + vec3 r = normalize(cross(rd, vec3(0., 1., 0.))); + vec3 u = normalize(cross(rd, r)); + return normalize(rd+(r*uv.x+u*uv.y)*1.); +} +vec2 _min(vec2 a, vec2 b) +{ + if (a.x < b.x) + return a; + return b; +} +mat2 r2d(float a) +{ + float c=cos(a),s=sin(a); + return mat2(c,-s,s,c); +} +float _cube(vec3 p, vec3 s) +{ + vec3 l = abs(p)-s; + return max(l.x, max(l.y, l.z)); +} +vec2 map(vec3 p) +{ + vec2 acc = vec2(100000., -1.); + + vec3 op = p; + vec3 rep = vec3(15.); + //p = mod(p+rep*.5,rep)-rep*.5; + acc = _min(acc, vec2(length(p)-1., 0.)); + for (int i = 0; i < 8; i++) + { + vec3 p2 = p; + + p2 = abs(p2)-vec3(1.2,0.,0.); + p2.xy *= r2d(-fGlobalTime*.5+i); + p2+= (float(i)-8)*1.5; + p2 = abs(p2); + p2.xy *= r2d(fGlobalTime+i); + p2.yz *= r2d(fGlobalTime*.8+i); + float sz = mix(.2,1., float(i)/8.); + float cube = _cube(p2, vec3(sz, sz, 2.)); + //cube = mix(cube, length(p2)-sz, sin(float(i)+fGlobalTime)); + acc = _min(acc, vec2(cube, 0.)); + } + + float box = -_cube(op, vec3(19.)); + acc = _min(acc, vec2(box, 2.)); + + acc = _min(acc, vec2(-p.y+1., 1.)); + + + return acc; +} + +vec3 getNorm(vec3 p, float d) +{ + vec2 e = vec2(0.01, 0.); + return normalize(vec3(d)-vec3(map(p-e.xyy).x, map(p-e.yxy).x, map(p-e.yyx).x)); +} +vec3 accCol; +vec3 trace(vec3 ro, vec3 rd, int steps) +{ + accCol = vec3(0.); + vec3 p = ro; + for (int i = 0; i < steps && distance(p, ro) < 50.;++i) + { + vec2 res = map(p); + if (res.x < 0.01) + return vec3(res.x, distance(p, ro), res.y); + p+=rd*res.x*.5; + vec3 rgb = vec3(.2,.4,.8); + rgb = mix(rgb, rgb.zxy, sin(length(p)-fGlobalTime)); + if (res.y < 1.) + accCol += rgb*(1.-sat(res.x/.5))*.2*sat(sin(p.y*20.))*.85; + } + return vec3(-1.); +} +vec3 getmat(vec3 p, vec3 n, vec3 rd, vec3 res) +{ + vec3 col = vec3(0.);//n*.5+.5; + if (res.z == 1.) + col = vec3(0.); + if (res.z == 0.) + col = vec3(.0); + + if (res.z == 0.) + { + col += vec3(1.,0.4,0.2)*sat(sin(p.z*10.)*sin(p.y*10.)*100.); + } + if (p.y < -8.) + { + float beat = 1./8.; + float flicker = mod(fGlobalTime, beat)/beat; + float flick = mix(1.,flicker, sat(sin(fGlobalTime*.5))); + col = vec3(1.)*sat((sin(p.z*2.)-.5)*100.)*3.*flick; + } + return col; +} + +vec3 rdr(vec2 uv) +{ + vec3 col = vec3(0.); + float stpt = 1.; + float stptime = floor(fGlobalTime/stpt)*stpt; + uv *= r2d(sin(hash11(stptime))); + float t = fGlobalTime; + float d = 18.; + float zbeat = 1./2.; + float zz = mod(fGlobalTime, zbeat)/zbeat; + vec2 off = (vec2(rand(), rand())-.5)*.1; + vec3 ro = vec3(sin(t*.3)*d+off.x,-3.+off.y,-5.+zz); + vec3 ta = vec3(0.); + vec3 rd = normalize(ta-ro); + rd = getCam(uv, rd); + + vec3 res = trace(ro, rd, 64); + float depth = 100.; + if (res.y > 0.) + { + depth = res.y; + vec3 p = ro+rd*res.y; + vec3 n = getNorm(p, res.x); + col = vec3(.2,.4,.9); + col = getmat(p,n,rd,res); + + vec3 refl = reflect(rd, n); + float spec = texture(texTex1, p.xz).x; + refl = normalize(refl+(vec3(rand(), rand(), rand())-.5)*.1*spec); + vec3 resrefl = trace(p+n*0.01,refl, 32); + if (resrefl.y > 0.) + { + vec3 prefl = p+refl*resrefl.y; + vec3 nrefl = getNorm(prefl, resrefl.x); + col += getmat(prefl, nrefl, refl, resrefl); + } + } + col += accCol; + col = mix(col, vec3(.2,.4,.8)*.5, 1.-exp(-depth*0.02)); + + + vec2 rep = vec2(.5); + uv = mod(uv+rep*.5, rep)-rep*.5; + float shape = length(uv)-.02*FFT(uv.x*.1); + col += vec3(.89,.2,.3)*(1.-sat(shape*400.)); + + + + return col; +} + +void main(void) +{ + vec2 ouv = gl_FragCoord.xy/v2Resolution.xy; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + _seed = fGlobalTime+texture(texNoise, uv*10.).x; + + uv *= r2d(fGlobalTime*.5); + uv = abs(uv); + vec3 col = rdr(uv); + col += rdr(uv+col.xy*.1+(vec2(rand(), rand())-.5)*.05)*.5; + col = mix(col, texture(texPreviousFrame, ouv).xyz,.15); + //col = mix(col, col.yxz, sat(length(uv))); + col = sat(col); + col = pow(col, vec3(1.)); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_1.lua b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_1.lua new file mode 100644 index 000000000..9cee9037f --- /dev/null +++ b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_1.lua @@ -0,0 +1,27 @@ +t=0 +function TIC() +cls() +text="nanogems.demozoo.org" +px,py={},{} +for c=0,10 do +for i=0,360,60 do + x=120+10*c*math.sin(c+t)*math.sin(math.rad(i+c+t)+t/c) + y=68+10*c*math.sin(c+t)*math.cos(math.rad(i+c+t)+t/c) + table.insert(px,x) + table.insert(py,y) +end +end + +for i=1,#px do +for j=1,#px do + if((px[i]-px[j])^2 + (py[i]-py[j])^2) < 150 then + line(px[i],py[i],px[j],py[j],8+(t+j)%8) + end +end +end +print("Ceci n'est pas une nanogem",45,0,10) +for i=1,#text do +print(text:sub(i,i),52+6*i,130,8+(i+t*20)%8,true) +end +t=t+0.01 +end \ No newline at end of file diff --git a/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_2.lua b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_2.lua new file mode 100644 index 000000000..b1896e01d --- /dev/null +++ b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_dave84_2.lua @@ -0,0 +1,23 @@ +s=math.sin +str="SUBMIT" +cls() + +function TIC() +t=time()/999 +cls() +print(str,5,4,1,false,7) +print(str,5,44,1,false,7) +print(str,5,84,1,false,7) +print("TO",119,114,1,false,1) +print("LIVECODE.DEMOZOO.ORG",5,123,1,false,2) +for x=0,240 do +for y=0,136 do + if pix(x,y)== 1 and y % 2 == 0 then + col=s(x/50+t)+s(y/50+t*2) + pix(x,y,col*8*s(t)+(x~y)/50) + else + pix(x,y,0) + end +end +end +end diff --git a/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_gasman.lua b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_gasman.lua new file mode 100644 index 000000000..cdc9becb9 --- /dev/null +++ b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_gasman.lua @@ -0,0 +1,98 @@ +-- ok, so the literate programming +-- thing seemed to work last time, +-- so let's try that again shall we + + +-- ok, 10 minutes for... something? +-- stars I guess + +m=math +s=m.sin + cls() + +-- what if we make them twinkle +starx={} +stary={} +for i=0,32 do + starx[i]=m.random(240) + stary[i]=m.random(68) +end + +function SCN(y) + if y<68 then + -- yeah, let's go with that + poke(16321+15*3,y*3) + poke(16322+15*3,y*3) + else +for i=0,48 do + v=i/48 + if i%3==0 then + poke(16320+i,(v*v)*255) + elseif i%3==1 then + poke(16320+i,(v*v)*255) + else + poke(16320+i,v*192+(y-68)) + end + poke(16321+15*3,68*3) + poke(16322+15*3,68*3) +end + end +end + +function TIC() + t=time() + +-- ok, midnight blue-y gradient palette +for i=0,48 do + -- I guess I want a gradient from + -- black to white, but with the blue + -- increasing on a steeper gradient? + v=i/48 + -- FINALLY + if i%3==0 then + poke(16320+i,(v*v)*255) + elseif i%3==1 then + poke(16320+i,(v*v)*255) + else + poke(16320+i,v*255) + end +end + + +for i=0,32 do + pix(starx[i],stary[i],8+((t*0.01+i)%8)) +end + circ(120,68,30,15) + -- right, I want a sort of water wave + -- effect, so let's try a sine plasma + -- as a first pass + for y=68,136 do + for x=0,240 do + -- let's try and do a perspective + -- projection on this + -- sort of there...? let's move on + pz=(y-68) + py=-y*20/(2+pz*0.1) + px=(x-120)/(pz*0.01) + -- right, I want the water to be + -- a reflection of the moon, and + -- the wave to serve as an offset + -- to which pixel we pick for the + -- reflection + dx=(1.5*s(px*0.09+t*0.0075) + -1.5*s(px*0.095-t*0.007) + ) + dy=(1.5*s(py*0.2-t*0.01) + -1.5*s(py*0.22-t*0.012) + ) + -- let's add a bit of the greyscale + -- as a sort of ambient element + amb=dy+dx + refl=pix(x+dx*2,68-(y-68)*1.5+dy*2) + if refl>14 then + refl=14 + end + pix(x,y,3+amb/12+refl) + end + end +end diff --git a/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_nico.lua b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_nico.lua new file mode 100644 index 000000000..59aa88581 --- /dev/null +++ b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_nico.lua @@ -0,0 +1,37 @@ +s=math.sin +c = math.cos +vx = 1 +vy = 1 +cx = 10 +cy = 10 +cls() +function TIC()t=time()//100 +for i=0,136,10 do + for j=0,240,10 do + rect(j+math.random(0,10),i,j+5,i+4,t+math.random(0,1)) +end end + + +end + +function OVR() +cx = cx + vx +cy = cy + vy +if cx > 240 or cy < 0 then + vx = -vx +end +if cy > 136 or cy < 0 then + vy = -vy +end + +for i=1,8 do + circ(cx,cy,20-(i*2),i+(t%4)) + end +-- ^.^ + +print("quick, hide the glitchy part! It's intentional!",0,4,12) + +end +function SCN(l) + poke(0x3FF9,math.random(0,5)) +end diff --git a/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_superogue.lua b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_superogue.lua new file mode 100644 index 000000000..bba343aec --- /dev/null +++ b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_superogue.lua @@ -0,0 +1,25 @@ +-- hello inercia demoparty! <3 +function TIC()t=time()/32 +cls(15) +s=math.sin(t/79) +c=math.cos(t/69) +scale=(math.sin(t/99)+1)*8+9 +for y=-31,31 do +for x=-31,31 do +X=x*c-y*s +Y=x*s+y*c +z=scale +sx=math.sin(X/4+t/13)*8+4 +sy=math.cos(Y/3+t/9)*8+4 +circb(X*z+120,Y*z+68,sx,-((t/8+z)%8)) +circ(X*z+120,Y*z+68,sy,8+((t/8+z)%8)) +end end +ty=math.abs(math.cos(t/4))*4 +print("Don't forget to:",86,ty+10,0,2,1,1) +print("Don't forget to:",85,ty+8,10,2,1,1) +for i=0,3 do +print(" Human Feedback!",56-i,66-i,i,2,2,1) +end +print("Superogue at Inercia 2022",68,127,0,1,1,1) +print("Superogue at Inercia 2022",68,126,12,1,1,1) +end \ No newline at end of file diff --git a/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_tobach.lua b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_tobach.lua new file mode 100644 index 000000000..8f8b59efc --- /dev/null +++ b/shader_file_sources/2022_11_05_byte_jam_inercia/inerciabytejam_tobach.lua @@ -0,0 +1,103 @@ +--hello inercia!! +--greetz to gasman, superogue, dave84 +--and nico and violet <3 +--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +--this sucks, i have a better idea >:) +sin=math.sin +cos=math.cos + +function TIC()t=time()//32 + + rect(0,0,240,80,0) + for i=0,4 do + rect(0,76+i*2,240,136/4,i) + end + + --nico is now in!!! helloooo :)) + --starfield didn't work /o\ + + rect(0,100,240,80,15) + + --road back is here + building1(240-t*2.1%350,20,120,13) + building1(300-t*2.2%450,30,120,14) + building2(400-t*2.3%500,50,120,15) + building1(450-t*2.4%580,30,120,13) + building1(500-t*2.5%680,60,120,14) + + for i=0,8 do + rect(20+2+i*64-t*4%190,100,20,60,13) + rect(20+i*64-t*4%190,100,20,60,14) + end + + + rect(0,86,240,4,13) + rect(0,90,240,20,15) + + --nice road hey ;) + for i=0,8 do + rect(0+i*64-t*4%190,100,40,2,12) + end + + --god how do you draw a car again??!1 + + + car(0,0+sin(t/7)*2,0,6) + car(40,0+sin(t/12)*2,0.4,7) + car(80,0+sin(t/5)*2,0.2,3) + + car2(-80,0,0,0) + + rect(0,104,240,8,13) --road front + + building2(350-t*6%650,60,120,13) + building2(240-t*6.2%600,80,120,14) + + --i have had an idea but idk if it + --will work out wel, ah well why not! + + --was deffo a "looked better in my head" + --ones lol... + +end + +--lets get some "scenery in here" ;) +function building1(x,y,h,col) + rect(x,y,40,h,col) + for j=0,16 do + for i=0,4 do + rect(x+2+i*8,y+2+j*8,4,4,4) + end + end +end + +function building2(x,y,h,col) + rect(x,y,80,h,col) + for j=0,16 do + for i=0,8 do + rect(x+2+i*9,y+2+j*8,4,4,4) + end + end +end + +function car(x,y,offset,col) + carx=sin(t/16+offset)*sin(t/32+offset)*8 + rect(x+107+carx,88+y,26,8,col) + rect(x+112+carx,84+y,15,6,11) + rect(x+112+carx,84+y,15,2,col) + circ(x+113+carx,95+y,3,14) + circ(x+126+carx,95+y,3,14) +end + +function car2(x,y,offset,col) + carx=sin(t/16+offset)*sin(t/32+offset)*8 + rect(x+107+carx*2,88+y,26,8,col) + rect(x+112+carx*2,84+y,15,6,11) + rect(x+112+carx*2,84+y,15,2,col) + circ(x+113+carx*2,95+y,3,14) + circ(x+126+carx*2,95+y,3,14) + rect(x+116+carx*2,82+y,3,3,lightcols[t/4%3]) + rect(x+119+carx*2,82+y,3,3,lightcols[t/4%3+1]) +end + +lightcols={2,10,2,10} \ No newline at end of file diff --git a/shader_file_sources/2022_11_14_fieldfx_bbc/bytebattle/dave84.lua b/shader_file_sources/2022_11_14_fieldfx_bbc/bytebattle/dave84.lua new file mode 100644 index 000000000..dcf22d74b --- /dev/null +++ b/shader_file_sources/2022_11_14_fieldfx_bbc/bytebattle/dave84.lua @@ -0,0 +1,15 @@ +pal={6,7,12,13} +function TIC() +t=time()/999 +for x=0,240 do + for y=0,136 do + x1=s(t/300)*x-c(t)*y + y1=c(t)*x-s(t)*y + cl=s((x1+t)/10)*s(t/20)+s((y1+t)/10)*c(t/20) + pix(x,y,pal[(cl//1+2)%4+1]+(x1//1~y1//1)%2) + end +end +end +m=math +s=m.sin +c=m.cos diff --git a/shader_file_sources/2022_11_14_fieldfx_bbc/bytebattle/mantratronic.lua b/shader_file_sources/2022_11_14_fieldfx_bbc/bytebattle/mantratronic.lua new file mode 100644 index 000000000..b2e577b5c --- /dev/null +++ b/shader_file_sources/2022_11_14_fieldfx_bbc/bytebattle/mantratronic.lua @@ -0,0 +1,17 @@ +--forgot to save for the +--livecode.demozoo.org +l={} +function TIC()t=time()/99 +cls(12) +for i=0,95 do +l[i]={x=i+s(i/8+t/6)*20,y=25+45*math.cos(i/30)} +end +for i=0,63 do +j=i+1 +for k=0,368 do +m=k/5n=k/(7-3*(s(t/15)))+20 +line(l[i].x+n,l[i].y+m,l[j].x+n,l[j].y+m,(i//8+k//64)%2*2+9) +end +end +end +s=math.sin diff --git a/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/aldroid.lua b/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/aldroid.lua new file mode 100644 index 000000000..94983c776 --- /dev/null +++ b/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/aldroid.lua @@ -0,0 +1,19 @@ +function TIC() + t = time() / 32 + blumpkin = math.pow((math.sin(t / 2) + 1) / 2, 2) * 5 + for i = 0, 9 do + poke(0x3fc0 + i * 3, (i + blumpkin) * 255 / 15) + poke(0x3fc1 + i * 3, (i) * 255 / 15) + poke(0x3fc2 + i * 3, i * 255 / 15) + end + for x = 0, 239 do + for y = 0, 137 do + pix(x, y, pix(x + 1, y) + 1) + end + end + buls = 20 + 10 * math.sin(t / 10) + for i = 1, 5 do + pp = i * math.pi * 2 / 5 + t / 20 + circ(170 + buls * math.cos(pp), 68 + buls * math.sin(pp), buls / 3, 4) + end +end diff --git a/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/dave84.lua b/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/dave84.lua new file mode 100644 index 000000000..c85d85fc7 --- /dev/null +++ b/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/dave84.lua @@ -0,0 +1,27 @@ +l="FIELD-FX MONDAY NIGHT BYTES!" +function TIC() +t=time()/999 +cls() +print(l,6-t*70,45+40*s(t),1,false,10) +for x=0,240 do + for y=0,136 do + cl=(s((x+t*20)/50)+s((y+t)/50))*s(t)*16 + if pix(x,y)~= 0 and y%2==0 then + pix(x,y,(cl+(x~y)/10)//1&11) + else + pix(x,y,0) + end + end +end +end +s=math.sin +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/mantratronic.lua b/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/mantratronic.lua new file mode 100644 index 000000000..58b282a87 --- /dev/null +++ b/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/mantratronic.lua @@ -0,0 +1,47 @@ +-- dark+light blue = dublin +-- dark blue + yellow = wicklow +-- tobach is right, needs rain +l={} +c={{9,2},{8,-4},{2,9}} +poke(0x3fc6,180) +poke(0x3fc7,40) +poke(0x3fc8,180) +function TIC()t=time()/99 +cls(12) +circ((-40+t)%340,350,250,6) +circ((100+t)%340,280,200,7) +circ((200+t)%340,350,250,6) +ct=(t/150+2)%3//1+1 +for i=0,100 do +x=math.random(239) +y=math.random(130) +line(x,y,x-2*s(t/20),y+6,15) +end +for i=0,95 do +l[i]={x=i*s(i/10+t/20)+s(i/8+t/8)*40, +y=25+45*math.cos(i/30)} +end +checker=64/(((t/16)//1%4)^2+1)+1 +for i=0,63 do +j=i+1 +for k=0,511 do +m=k/5 +n=120+25*s(k/320)+30*s(t/20)--k/(7-3*(s(t/15)))+20 +line(l[i].x+n,l[i].y+m,l[j].x+n,l[j].y+m,(i//checker~k//(checker*8))%2*c[ct][2]+c[ct][1]) +end +end +print('FIELD-FX',25,58,0,true,4,false) +print('FIELD-FX',29,58,0,true,4,false) +print('FIELD-FX',25,61,0,true,4,false) +print('FIELD-FX',29,61,0,true,4,false) +print('FIELD-FX',28,60,c[ct][1]+c[ct][2],true,4,false) +print('FIELD-FX',26,59,c[ct][1],true,4,false) +for i=0,100 do +x=math.random(239) +y=math.random(130) +line(x,y,x-2*s(t/20),y+6,14) +end +end +s=math.sin + + diff --git a/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/tobach.lua b/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/tobach.lua new file mode 100644 index 000000000..fab8a86f8 --- /dev/null +++ b/shader_file_sources/2022_11_14_fieldfx_bbc/bytejam/tobach.lua @@ -0,0 +1,83 @@ +-- ^ +--hello stream, tobach here! :)) +--really hoping this becomes a regular +--thing it is awesome +sin=math.sin +cos=math.cos +rnd=math.random +function TIC() + t=time()//32 + + cls(15) + + rndval=rnd(20) + + t2=t%200 + + if (t2>=5 and t2<=10) then + cls(12+t/4%3) + for i=0,2 do + line(20+rndval+i,0,0+rndval*5,60,12-i-t%3) + line(0+rndval*5+i,60,40+rndval,120,12-i-t%3) + end + elseif t2>=150 and t2<=155 then + cls(12+t/4%3) + for i=0,2 do + line(170+rndval+i,0,150+rndval*5,60,12-i-t%3) + line(150+rndval*5+i,60,190+rndval,120,12-i-t%3) + end + end + + for i=0,239 do + sval=sin(i/32+t/20)*sin(i/16+t/10)*4 + line(i,20+sval,i,0,12) + end + + for i=0,239 do + sval=sin(i/32+t/20)*sin(i/24+t/10)*4 + line(i,100-sval,i,136,8) + end + + tri(95,100+cos(t/8)*4+sin(t/16)*4,110,110,130,100-cos(t/8)*4+sin(t/16)*4,13) + trib(95,100+cos(t/8)*4+sin(t/16)*4,110,110,130,100-cos(t/8)*4+sin(t/16)*4,14) + for i=0,2 do + line(110+i-cos(t/8)*4+sin(t/16)*4,80+sin(t/16)*4,110+i,100+sin(t/16)*4,15-i) + end + --bloody sail maths!!!!! >:( + --tri(115-cos(t/8)*4+sin(t/16)*4,85+cos(t/8)*4+sin(t/16)*4,115,95,130,85,12) + + --its really starting to look + --like a mess now isn't it... + --:) + + for i=0,160 do + px=(t+sin(t/5)+i*sin(t/20+i)-t*8)%240 + py=(t*4+i*20)%136 + pix(px,py,10) + end + + for i=0,239 do + sval=sin(i/32+t/16)*sin(i/24+t/8)*6 + line(i,105-sval,i,136,9) + end + + for i=0,239 do + sval=sin(i/32+t/16)*sin(i/12+t/4)*6 + line(i,10+sval,i,0,13) + end + + for i=0,239 do + sval=sin(i/32+t/12)*cos(i/24+t/6)*8 + line(i,115-sval,i,136,10) + end + + --its pissin it down!!! + + for i=0,160 do + px2=(t+sin(t/8)+i*sin(t/30+i)-t*4)%240 + py2=(t*5+i*15)%136 + pix(px2,py2,11) + end + + +end diff --git a/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/.empty b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/.empty new file mode 100644 index 000000000..e69de29bb diff --git a/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/gasman.lua b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/gasman.lua new file mode 100644 index 000000000..d420eb1be --- /dev/null +++ b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/gasman.lua @@ -0,0 +1,20 @@ +m=math +function TIC()t=time() +for sy=0,135 do for sx=0,239 do +a=4*m.sin(t/2000) +sx1=sx-120+30*m.sin(t/634) +sy1=sy-68+30*m.sin(t/876) +scale=16+8*m.sin(t/555) +tx=(sx1*m.cos(a)+sy1*m.sin(a))/scale +ty=(sy1*m.cos(a)-sx1*m.sin(a))/scale +y=ty/(m.sqrt(3)/2) +x=tx-ty +-- screw it, let's jam with this thing +q=(1-x%1>(y%1)) +ix=x//1 +iy=y//1 +pal=t//5000 +if q then + pix(sx,sy,((ix%3)+pal)%16) +end +end end end diff --git a/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/mantratronic.lua b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/mantratronic.lua new file mode 100644 index 000000000..78be0d9d2 --- /dev/null +++ b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/mantratronic.lua @@ -0,0 +1,107 @@ +-- logo is bad tic80 copy +-- of an ne7 amiga ascii (sry!) +logo={" `___// __//_ __//___//_---//___;---//__;--\\\\__.", +" / //--Y \\ _/ _/ Y Y |", +" / | // | _/ _/ / | a | // |", +"/ // | | |/| |/| // // | / | // |", +"\\--//____/-//-_/\\-/ \\-/ |-//_//_mtr-//--|/-//___|"} + +bpm=130 +s=math.sin +c=math.cos +pi=math.pi +tau=2*pi +t=0 + +function println(x,y,kx,ky,col) + for i=1,5 do + l=string.len(logo[i]) + for ch=1,l do + print(string.sub(logo[i],ch,ch),x+(ch-1)*kx,y+(i-1)*ky,col+i,true,1,true) + end + end +end + +function arc(x,y,w,r,ca,wa,col) +for i=ca-wa/2,ca+wa/2,.1/r do +si=s(i) +ci=c(i) +line(x+r*si,y+r*ci,x+(r+w)*si,y+(r+w)*ci,col) +end +end + +function tangent(x,y,w,r,ca,l,col) +cx=r*s(ca) +cy=r*c(ca) +wx=(r+w)*s(ca) +wy=(r+w)*c(ca) +tx=l*s(ca-pi/2) +ty=l*c(ca-pi/2) +for i=-l,l,.5 do + line(x+cx+tx*i/l,y+cy+ty*i/l,x+wx+tx*i/l,y+wy+ty*i/l,col) +end +end + +function clamp(x,e1,e2) + return math.max(e1,math.min(x,e2)) +end + +function ss(x,e1,e2) + y=clamp(x,e1,e2) + st=(y-e1)/(e2-e1) + return st*st*(3-2*st) +end + +function TIC()t=time()/99 + beat=time()/100*60/bpm + if (beat/2%12 < 11) then + cls(1) + end + ta=ss(beat%4/4,0,1) + for j=1,20 do + n=3+j + d=(4*j-beat%64) + if d~=0 then d=99/d end + + if d<120 and d >5 then + w=d/6 + chroma=.01*(1+s(ta)) + cr=ss((beat/4+2*j)%5,2,4)*tau + if j%2 == 0 then + for i=1,n do + if (beat/4%8 < 4) then + arc(120,68,w,d,cr + tau/n*i +j/10,pi/n,12) + else + arc(120,68,1,d*(1-chroma),cr + tau/n*i +j/10,pi/n,2) + arc(120,68,1,d+w,cr + tau/n*i +j/10,pi/n,10) + arc(120,68,w,d,cr + tau/n*i +j/10,pi/n,12) + end + end + else + for i=1,n do + if (beat/4%6 < 3) then + tangent(120,68,1,d-1,cr + tau/n*i +j/10,d,0) + tangent(120,68,w,d,cr + tau/n*i +j/10,d,11+(j/2)%4) + else + tangent(120,68,1,d*(1-chroma),cr + tau/n*i +j/10,d,1) + tangent(120,68,1,d*(1+chroma),cr + tau/n*i +j/10,d,9) + tangent(120,68,w,d,cr + tau/n*i +j/10,d,11+(j/2)%4) + end + end + end + end + end + if (beat/4%4 > 1) then ta = 0 else ta = s(pi*ta) end + println(44-ta*24,58-ta*1.5,3+ta,3+ta,0+beat*2) +end + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/superogue.lua b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/superogue.lua new file mode 100644 index 000000000..7070efede --- /dev/null +++ b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/superogue.lua @@ -0,0 +1,71 @@ +-- superogue bytejammin' here +-- lets join this hypetrain!!!! +function SCN(l) + ll=(l*l)/32-112+(l%5)*8 + poke(16320+12,192-ll) + poke(16320+13,160-ll) + poke(16320+14,128-ll) + end + + t=1m=math + function TIC() + t=t+.5 + for y=0,136 do for x=0,240 do + X=x-120 + z=m.abs(y-64)+.1 + tc=(X*2/z+t/2)//1 % 2 -- 399//z)%3 + rc=((y>80) and (y<96)) and 14 or (399//z)%2 + c=(y>64) and (rc+tc+y%2) or (((y-64)/16)+12+y/2%2) + pix(x,y,c) + end end + + tx=(2*t)%960-72+m.sin(t/30)*64 + ty=50 + tw=64 + lx=tx-(72*3) + elli(tx-72*6+48+232,ty+38,470/2+t%4,4+t%2,0) + for r=8,2,-1 do + wx1=tx+16 + wx2=tx+56 + wy=ty+33+m.sin(t) + wc=14+r%3 + circ(wx1,wy,r,wc) + circ(wx2,wy,r,wc) + circ(wx1-80,wy,r,wc) + circ(wx2-80,wy,r,wc) + circ(wx1-200,wy,r,wc) + circ(wx2-200,wy,r,wc) + circ(wx1-290,wy,r,wc) + circ(wx2-290,wy,r,wc) + circ(wx1-365,wy,r,wc) + circ(wx2-365,wy,r,wc) + end + rect(tx-72*6+52,ty+25,460,6,0) + rect(tx,ty,tw,32,4) + rect(tx+28,ty+6,8,12,15) + rect(tx+44,ty+6,8,12,15) + rect(lx,ty,212,32,4) + + rect(tx-(72*4),ty,tw,32,4) + rect(tx+20-(72*4),ty+6,8,12,15) + rect(tx+36-(72*4),ty+6,8,12,15) + + rect(tx-(72*5),ty,tw,32,4) + rect(tx+8-(72*5),ty+6,8,12,15) + rect(tx+24-(72*5),ty+6,8,12,15) + tri(tx+64,ty,tx+64+16,ty+32,tx+64,ty+32,4) + tri(lx-144,ty,lx-160,ty+32,lx-144,ty+32,4) + rect(tx-72*6+52,ty+28,460,1,15) + + for i=1,5 do + print(logo[i],lx+4,ty-4+i*5,12,1,1,1) + end + + end + + -- thx mantra for the logo :p + logo={" `___// __//_ __//___//_---//___;---//__;--\\\\__.", + " / //--Y \\ _/ _/ Y Y |", + " / | // | _/ _/ / | a | // |", + "/ // | | |/| |/| // // | / | // |", + "\\--//____/-//-_/\\-/ \\-/ |-//_//_mtr-//--|/-//___|"} \ No newline at end of file diff --git a/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/tobach.lua b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/tobach.lua new file mode 100644 index 000000000..a0b12dd84 --- /dev/null +++ b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/tobach.lua @@ -0,0 +1,82 @@ +-- ^ +--tobach heeerreeeee +--lets get a little diarama(?) going ;) +sin=math.sin +cos=math.cos +abs=math.abs +function TIC() + cls() + t=time()/4 + + for y=0,135,2 do + for x=0,239,2 do + sval=sin(x/8+t/16+sin(x/64+t/64)*4)*cos(y/8+sin(t/64)*2+sin(y/16+t/32)*2)+t//64 + pix(x,y,sval%8) + pix(x+1,y,sval+1) + pix(x,y+1,sval+1) + pix(x+1,y+1,sval) + end + end + + sv=sin(t/24)*2 + rect(95,65+sin(t/24+0.4)*2,40,80,15) + + rect(103,48+sv,20,20,4) + + elli(100,55+sv,2,5,13) + elli(125,55+sv,2,5,13) + + for i=0,3 do + elli(104+i*6,48+sin(i+3.1)*3+sv,3,3,15) + end + + rectb(105,55+sv,7,5,0) + rectb(114,55+sv,7,5,0) + line(112,57+sv,114,57+sv,0) + sv2=sin(t/24+0.4)*2 + + --logicomaaaaa <3 + circb(113,85+sv2,9,12) + circb(109,81+sv2,1,12) + circb(117,81+sv2,1,12) + circb(113,91+sv2,1,12) + + rect(40,105,162,70,13) + rect(43,115,75,20,14) + elli(80,120,35,10,15) + elli(80,120,8,1,14) + line(45,110,45,120,0) + line(45,110,60,114+sin(t/32),14) + line(45,111,61,115+sin(t/32),14) + + rect(123,115,75,20,14) + elli(160,120,35,10,15) + elli(160,120,8,1,14) + + line(125,110,125,120,0) + line(125,110,140,114+sin(t/32),14) + line(125,111,141,115+sin(t/32),14) + + for i=0,4 do + line(93+i,65+sin(t/24+0.4)*2,100+i+sin(t/16)*4,118+cos(t/16+1)*4,4) + end + + for i=0,4 do + line(130+i,65+sin(t/24+0.4)*2,115+i,118,4) + end + + wave("H0FFMAN BANGING OUT",-6,8,2) + wave("THEM",80,28,2) + + print("CHOONS",81+sv2*4,121,t/32-1,true,2) + print("CHOONS",80+sv2*4,120,t/32,true,2) + +end + +function wave(text,x,y,amp) + for i=1,#text do + c=text:sub(i,i) + print(c,x+i*12,y+amp*sin((t/8+i*30)/4),13,true,2) + print(c,x+i*12-1,y+amp*sin((t/8+i*30)/4)-1,12,true,2) + end +end \ No newline at end of file diff --git a/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/totetmatt.lua b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/totetmatt.lua new file mode 100644 index 000000000..933cdd010 --- /dev/null +++ b/shader_file_sources/2022_11_21_byte_jam_fieldfx_casual/totetmatt.lua @@ -0,0 +1,48 @@ +-- HEELLLLOOOOOOO + +-- Let's have fun ! +-- #TeamNoCLS +m=math +s=m.sin +c=m.cos +rnd=m.random +function TIC() +t=time()/32 +w=240//2 +h=136//2 +mv=c(t/20+math.sin(t/10))*100+63 +rect(0,90,240,30,15) + +rect(0+mv,90,110,42,15) +for x=0,.99,.01 do + x=x*6.28+t + z=c(x+t*.44) + tt =t/64 + zz =.13*x*c(t*.1) + si = 150 + line( + w+c(x)*si, + h+s(x)*si, + w+c(x+tt+zz)*si, + h+s(x+tt+zz)*si, + 5+x/2+tt + ) + end +for x=0,.99,.5 do +x=x*6.28+t//2 +a={"mantratronic","totetmatt","tobach","gasman","djh0ffman"} +print(a[1+t//50%5],w-75+rnd(),h*rnd()*15,15-t//2%5,false,3) + +end +q={"W","e","l","c","o","m","e"," ","T","o"," ","F","F","X"," ","C","a","s","u","a","l","s"} +for x=22,1,-1 do +xx=23-x +print(q[xx],-15+xx*11,90+c(x+t/30)*5,t/5+5+xx%3,true,3+(t/10+x)%3) + +end + +print("livecode.demozoo.org",0+mv,120,4) +print("nanogems.demozoo.org",0+mv,125,3) +end + +function SCN(l)poke(0x3FF8,l/20+t/100) end \ No newline at end of file diff --git a/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/mantratronic.lua b/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/mantratronic.lua new file mode 100644 index 000000000..da367a895 --- /dev/null +++ b/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/mantratronic.lua @@ -0,0 +1,65 @@ +-- mt here, +-- no idea what i'm doing this tim +-- big ups to hoff, aldroid, visy, +-- truck, tobach +m=math +s=m.sin +c=m.cos +col={1,2,3,4,12,11,10,9,8} + +function clamp(x,e1,e2) +return m.max(e1,m.min(x,e1)) +end +cls() +function TIC()t=time()/32 +for y=-4+t%5,136,4 do for x=-4+t%4,240,4 do +xp=x-120 +yp=y-68 +xc=(xp//16)--+(s(x+t)+1)*4 +yc=(yp//16) +d=m.sqrt(xc^2+yc^2) +xy=(xc+yc+t//60)%2*4 +mc=1+c(c(xp)/12+s((yp)/13)+t/30) +a=t/30 +xr=yp*c(a)-xp*s(a) +120 +yr=xp*c(a)+yp*s(a) +68 +xe=(xr-120)/((s(t/50)*.5)+1.8)+120 +ye=(yr-68)/((c(t/95)+1)*3)+68 +pix(xe,ye,col[((d+mc)*4//1)%9+1]) +end + +end + +for i=1,30 do +pix(m.random(240)-1,m.random(136)-1,0) +end +mx=t%240 +my=3*s(t/10) +cc=(t/10) +elli(230-mx,120+my,10,4,cc) +circ(220-mx,118+my,4,cc) +circ(239-mx,117+my,1,cc) +circ(239-mx,116+my,1,cc) +circ(239-mx,115+my,1,cc) +circ(239-mx,114+my,1,cc) +circ(238-mx,112+my,1,cc) +tri(221-mx,110+my,222-mx,118+my,218-mx,118+my,cc) +line(236-mx,120+my,236-mx+my,126+my,cc) +line(224-mx,120+my,224-mx-my,126+my,cc) +print("meeeeooooow",248-mx,116+my,cc,false,2,false) +end + +-- +-- 001:1234cba91234cba91234cba91234cba91234cba91234cba91234cba91934cba9 +-- + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/tobach.lua b/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/tobach.lua new file mode 100644 index 000000000..47e5726c5 --- /dev/null +++ b/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/tobach.lua @@ -0,0 +1,101 @@ +--TEST!!!!!! +--one minute :)) +--greets to mantra, visy and truck <3 +--hmmm i have an idea +sin=math.sin +cos=math.cos +rnd=math.random + +--todays ur lucky day... +--its a two in one!! +--a bogof even +function TIC() + phr() + --mcr() +end + +--pharmacy sign!! +function phr() + cls() + t=time() + for i=0,31 do + for j=0,31 do + circ(60+i*4,6+j*4,1,sin(t/128+i*sin(j/8+t/256)/16*4)*2+7) + end + end + + rect(58,4,44,44,0) + rect(147,4,44,44,0) + + rect(58,88,44,44,0) + rect(147,88,44,44,0) + + print("FIELD-FX MONDAY NIGHT BYTES",240-t/6%1000,56,12,true,5) + + rect(186,0,58,135,0) + rect(0,0,63,135,0) + + for i=0,31 do + for j=0,31 do + rect(61+i*4,3+j*4,3,3,0) + end + end + + for i=0,35 do + line(0,0+i*4,240,0+i*4,0) + end + + for i=0,96 do + line(2+i*4,0,2+i*4,136,0) + end + +end + +--manchester baby 1948 computer +function mcr() + t=time() + cls() + rect(30,0,30,136,14) + rect(180,0,30,136,14) + + --main front panel + rect(20,5,200,60,13) + rect(20,70,200,20,13) + rect(20,95,200,20,13) + rect(20,120,200,20,13) + + --gubbins + for j=0,4 do + for i=0,9 do + circ(50+i*15,15+j*10,3,rnd(2)) + circb(50+i*15,15+j*10,3,1) + end + end + + for k=0,1 do + for i=0,13 do + circ(35+i*13,75+k*8,3,15) + circb(35+i*13,75+k*8,3,0) + for j=0,2 do + line(35+i*13+j,75+k*8,38+i*13+j,79+sin(t/32+i*16*k)*4-3+k*8,14) + end + end + end + + for i=0,4 do + circ(35+i*8,105,3,2) + circb(35+i*8,105,3,1) + end + + rect(80,100,120,15,15) + + for i=0,9 do + rect(82+i*12,101,2,12,14) + rect(82+i*12,102+sin(t/64+i)*4+4,4,4,12) + end + + for i=0,1 do + print("MANCHESTER BABY",35+1,123+1,14,false,2) + print("MANCHESTER BABY",35,123,12,false,2) + end +end \ No newline at end of file diff --git a/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/truck.fnl b/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/truck.fnl new file mode 100644 index 000000000..3a8d0ba08 --- /dev/null +++ b/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/truck.fnl @@ -0,0 +1,82 @@ +; well this will be an interesting +;; expiriment... do not expect much +;; wait this isn't the blank thing +;; craaaaap +;; I'm just you know trying to... +;; get stuff on the screen (: +;; script: fennel +;; ok what am I doing... +;; yes circle things +(global mf math.floor) +(global ms math.sin) +(global mc math.cos) + +(global x1 3) +(global y1 80) +(global x2 108) +(global y2 55) + +(set-forcibly! TIC (fn [] + (global t (mf (/ (time) 36))) + (global ts (ms (/ (time) 256))) + (global tc (mc (/ (time) 256))) + (cls 0) + (bgthing) + ( for [i 4 0 -1] + (circthing (+ 120 (- (* tc 120)) (* i 10)) + (* i 20) +;; I keep typing X instead of * ... + (* 3 (* (+ ts tc) (* 2 (+ 1 tc)) i) ) i ) + ) + ; um hello linething? + ; oh right it needs values + (linething x1 y1 x2 y2) + (+ x1 (* 15 ts)) + (+ x2 (* 15 tc)) + (+ y1 (* 15 ts)) + (+ y2 (* 15 tc)) + + ; hmm this is not what I want to do... but + ; I don't think I can draw a circle from + ; but I can do a textured triangle hmm + ; you know let's do the line funk thing cuz + ; why not + + +; +) +) +; ok seriously how do I get a +; second function, I need more +; than one +; ok that's how +(set-forcibly! circthing (fn [a b r c] + (circ (+ a (* 20 ts)) + (+ b (* 3 ts (* 20 tc)) ) + r c + ) +) +) + +(set-forcibly! bgthing (fn [] + ( for [x 0 240] + ( for [y 0 136 3] + ( pix x y (+ x y (* ts 8) (* tc x)) ) + ) + ) + ) +) +; try without set-forcibly) +; well that doesn't work I wonder why +; well we are wrapping up so I will +; leave this unfinished (: +; naw let's move it or something + +(set-forcibly! linething (fn [x1 y1 x2 y2] + (line x1 y1 x2 y2 1) + (line (+ 5 x1) (+ 5 y1) (+ 5 x2) (+ 5 y2) 8) + (line (+ 10 x1) (+ 10 y1) (+ 10 x2) (+ 10 y2) 7) + (line (+ 15 x1) (+ 15 y1) (+ 15 x2) (+ 15 y2) 9) + ) +) +;; this needs better paren editing \ No newline at end of file diff --git a/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/visy.lua b/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/visy.lua new file mode 100644 index 000000000..ebc79a03a --- /dev/null +++ b/shader_file_sources/2022_11_28_byte_jam_fieldfx_casual/visy.lua @@ -0,0 +1,157 @@ +t=0 + +particle = {} + +function add(x,y) + local p = {} + p.x = x+0.0 + p.y = y+0.0 + p.ox = x+0.0 + p.oy = y+0.0 + p.ax = 0.0 + p.ay = 0.0 + p.radius = 4.0+math.random(8) + p.t = 0.0 + table.insert(particle,p) +end + +function updatePos(k,p,dt) + local vx = p.x - p.ox + local vy = p.y - p.oy + + p.ox = p.x + p.oy = p.y + p.x = p.x + vx + p.ax * (dt * dt) + p.y = p.y + vy + p.ay * (dt * dt) + + p.radius = p.radius-0.02 + + if p.radius <= 0 then + return true + end + p.ax = 0 + p.ay = 0 + return false +end + +function accel(p,ax,ay) + p.ax = p.ax + ax + p.ay = p.ay + ay +end + +tt = 0 +gravity = 0.5 +frame_dt = 1.0/60.0 +sub_steps = 4 + +function applyGravity() + for k,p in pairs(particle) do + accel(p,0,gravity) + end +end + +function applyConstraint() + local cx = 128 + local cy = 64 + local cr = 64 + + for k,p in pairs(particle) do + local tx = cx - p.x + local ty = cy - p.y + local distance = math.sqrt(tx*tx + ty*ty) + + if (distance > math.abs(cr-p.radius)) then + local nx = tx / distance + local ny = ty / distance + p.x = cx - nx * (cr - p.radius) + p.y = cy - ny * (cr - p.radius) + end + end +end + +function checkCollisions(dt) + local resp_coef = 0.75 + k2 = 0 + for k,p in pairs(particle) do + obj_1 = particle[k] + k2=k+1 + if (k2 > 0 and k2 <= #particle) then + obj_2 = particle[k2] + local vx = obj_1.x - obj_2.x + local vy = obj_1.y - obj_2.y + local dist2 = vx * vx + vy * vy + local min_dist = obj_1.radius + obj_2.radius + + if (dist2 < min_dist * min_dist) then + local dist = math.sqrt(dist2) + local nx = vx / dist + local ny = vy / dist + local mass_ratio_1 = obj_1.radius / (obj_1.radius + obj_2.radius) + local mass_ratio_2 = obj_2.radius / (obj_1.radius + obj_2.radius) + local delt = 0.5 * resp_coef * (dist - min_dist) + + obj_1.x = obj_1.x - (nx * (mass_ratio_2 * delt)) + obj_1.y = obj_1.y - (ny * (mass_ratio_2 * delt)) + + obj_2.x = obj_2.x + (nx * (mass_ratio_1 * delt)) + obj_2.y = obj_2.y + (ny * (mass_ratio_1 * delt)) + + end + end + end +end + +function update(dt) + removed = {} + for k,p in pairs(particle) do + if updatePos(k,p,dt) then + table.insert(removed,k) + end + end + + for k2,i in pairs(removed) do + table.remove(particle,i) + end +end + + +function solve(dt) + tt = tt + dt + applyGravity() + checkCollisions() + applyConstraint() + update(dt) +end + +function particles(dt) + + solve(dt) + + for k,p in pairs(particle) do + local x = math.floor(p.x) + local y = math.floor(p.y) + circ(x,y,p.radius,10+p.radius % 6) + end + +end + +deltat=0 +et=0 +st=0 +accu = 0 + +add(130,40) + +function TIC() +cls() +t=time()//32 +st = t +deltat = st-et +accu = accu + deltat +if accu > 0 then + accu = 0 + add(90+math.random(64),64) +end +particles(deltat) +et = time()//32 +end \ No newline at end of file diff --git a/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/aldroid.lua b/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/aldroid.lua new file mode 100644 index 000000000..53da400ce --- /dev/null +++ b/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/aldroid.lua @@ -0,0 +1,55 @@ +-- pos: 1,55 +--aldroid here! love to all the coders + +-- let's try writing something with +-- ONLY cls :) + +S=math.sin +P=math.pi + +function SCN(l) +-- obviously we need to cheat somehow +c=0 +t=time()/200 +offs = 68 + S(t/2.3) *40 +-- i want better colour hmm... +for i=0,3 do + if S(t + i*P/2) * 20 + offs > l and S(t + (i+1)*P/2) *20 +offs < l then + c = 20+S(t-(i+1.5)*P/2)*150 + end +end +poke(0x3fc3,c) +end + +cova = {} +for i = 0,3*16-1 do +cova[i]=peek(0x3fc0+i) +end + + +function TIC() + t=time()/20 + + if (t//20%20)>10 then + for i=0,15 do + poke(0x3fc1+i*3,cova[1+i*3]) + poke(0x3fc2+i*3,cova[2+i*3]) + end + else + for i=0,15 do + c=peek(0x3fc0+i*3) + poke(0x3fc1+i*3,c) + poke(0x3fc2+i*3,c) + end + end + + if (t//10%20) <1 then cls(1) end + for x = 0,240 do for y = 0,136 do + if S(x+y) > -0.5 then + pix(x,y, pix(x,y+5*S(y+x/4+t/40))) + end + end end + for x = 0,4 do for y = 0,3 do + rect(45+x*30,10+y*30, 20,20,0+(x+y+t//40)%3) + end end +end diff --git a/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/dave84.lua b/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/dave84.lua new file mode 100644 index 000000000..a49e9a5aa --- /dev/null +++ b/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/dave84.lua @@ -0,0 +1,29 @@ +s=math.sin +c=math.cos +d=math.deg + pal={2,12} +function TIC() +cls() +print("It's beginning to look a lot like...",0,0,2) +print("TINY",0,15,2,false,8) +print("CODE",0,67,2,false,6) +print("Christmas!",0,110,2,false,4) +for x=0,240 do +for y=0,136 do + + if pix(x,y) == 2 then + pix(x,y,pal[(1+((s(t*20+x/100)+s(t*20+y/100))*10)%2)//1]) + end +end +end +for i=0,360,10 do + for j=1,150,15 do + x=5*j*s(d(i+t)) + z=5*j*c(d(i+t))-10000 + y=-100-j*10+s(t*j*10)*20 + pix(195+600*(x/z),5+600*(y/z),z/100) + end +end +t=time()/99999 +end +t=0 diff --git a/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/gasman.lua b/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/gasman.lua new file mode 100644 index 000000000..69f53f2eb --- /dev/null +++ b/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/gasman.lua @@ -0,0 +1,166 @@ +-- hello from gasman! +-- shoutouts to the bytejam massive :-D + +-- ok kids, today we're going to try to +-- code some voxels + +-- so first we need to draw an +-- isometric cube I suppose + +size=4 +function cubie(x,y,c) + -- c = colour. we have 5 of them + -- (to fit into 5*3 shades in the + -- 16 colour palette) + + p1=(3+c*3)//1 + if p1==0 then p1=1 end + p2=(1+c*3)//1 + if p2==0 then p2=1 end + p3=(2+c*3)//1 + if p3==0 then p3=1 end + tri(x,y,x+size,y-size/2,x+size,y+size/2,p1) + tri(x,y,x+size,y+size/2,x,y+size,p1) + tri(x,y,x-size,y-size/2,x-size,y+size/2,p2) + tri(x,y,x-size,y+size/2,x,y+size,p2) + tri(x,y,x,y-size,x-size,y-size/2,p3) + tri(x,y,x,y-size,x+size,y-size/2,p3) +end +-- so far so good... + +function shadow(x,y,c) + p=1 + tri(x,y,x,y-size,x-size,y-size/2,p) + tri(x,y,x,y-size,x+size,y-size/2,p) +end + +-- I'd really like to add more colours +-- here, but +-- a) that's going to be hard within +-- the 16-colour palette +-- b) I need a good way to allocate +-- those colours +-- something like: give one metaball +-- a negative colour and another one +-- a positive one + +-- time for a nicer palette +-- a fade from blue to yellow, +-- with three shades of each +for hue=0,4 do + for bri=0,2 do + poke(16323+hue*9+bri*3,32+16*hue*(bri+0.2)) + poke(16324+hue*9+bri*3,32+16*hue*(bri+0.2)) + poke(16325+hue*9+bri*3,32+16*(4-hue)*(bri+0.2)) + end +end + +-- a good old fashioned gradient +-- background +-- that's pretty nice as it is... +function SCN(y) + poke(16320,y) + poke(16321,y) + poke(16322,y) +end + +v1={} +v2={} +for z=-8,8 do + v1[z]={} + v2[z]={} + for y=-8,8 do + v1[z][y]={} + v2[z][y]={} + for x=-8,8 do + v1[z][y][x]=0 + v2[z][y][x]=0 + end + end +end + +function TIC() + -- sorry, we really need a cls now... + cls() + + t=time() + -- calculate some metaballs + -- one more and we're done I think + + -- I think these would look more + -- blobby if I had a central point + -- that they gravitated around + -- at a smaller amplitude + + -- and that central point should + -- probably move slower + + cx=6*math.sin(t/1000) + cy=6*math.sin(t/1020) + cz=6*math.sin(t/1040) + + mx1=cx+6*math.sin(t/200) + my1=cy+6*math.sin(t/220) + mz1=cz+6*math.sin(t/240) + mx2=cx+6*math.sin(1+t/360) + my2=cy+6*math.sin(2+t/380) + mz2=cz+6*math.sin(3+t/300) + mx3=cx+6*math.sin(4+t/400) + my3=cy+6*math.sin(5+t/420) + mz3=cz+6*math.sin(6+t/440) + + -- now we want to draw a load of them. + -- from back to front + for z=8,-8,-1 do + for x=8,-8,-1 do + for y=-8,8 do + -- TODO: make this into a function + -- ...meh, who cares + dx=mx1-x + dy=my1-y + dz=mz1-z + d1=math.sqrt(dx*dx+dy*dy+dz*dz) + + dx=mx2-x + dy=my2-y + dz=mz2-z + d2=math.sqrt(dx*dx+dy*dy+dz*dz) + + dx=mx3-x + dy=my3-y + dz=mz3-z + d3=math.sqrt(dx*dx+dy*dy+dz*dz) + + -- I don't think I should be + -- adding these... hmm + -- yeah, I think I want a sum + -- of inverses, or something + -- like that + d=1/(1/(d1+0.0001)+1/(d2+0.0001)+1/(d3+0.0001)) + v1[z][y][x]=d + if d<3 then + shade=d1-d3 + v2[z][y][x]=shade + shadow( + 120+x*size-z*size, + 68+9*size-x*size/2-z*size/2 + ) + end + end + end + end + + for z=8,-8,-1 do + for x=8,-8,-1 do + for y=-8,8 do + if v1[z][y][x]<3 then + shade=v2[z][y][x] + cubie( + 120+x*size-z*size, + 68-y*size-x*size/2-z*size/2, + shade//8) + end + end + end + end +end diff --git a/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/tobach.lua b/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/tobach.lua new file mode 100644 index 000000000..e7528b87d --- /dev/null +++ b/shader_file_sources/2022_12_05_byte_jam_fieldfx_casual/tobach.lua @@ -0,0 +1,75 @@ +--yeeeeee hawwwwww B-) +--greetz to the bytejam folks <3 +sin=math.sin +cos=math.cos + +function TIC() +--hmmmmm wonder what to do this time... + cls() + t=time() + for i=1,3 do + rect(0,i*16,240,136/4,i) + end + + circ(120,78,50,4) + rect(0,80,240,136/2,2) + +end + +function SCN(scnln) + if scnln<78 then + poke(0x3ff9,sin(t/64+scnln)*2) + else + poke(0x3ff9,0) + end +end + +--trying something hmmmm... +function OVR() + + line(0,85,240,85,13) + + rect(90,56,60,25,15) + rect(137,44,6,12,8) + + circ(140-t/16%90,40-t/32%45,2,13) + + tri(134,40,140,50,145,40,8) + + for i=0,4 do + rectb(95+i,42+i,15,20,15) + end + + circ(102,76,8,14) + circ(120,76,8,14) + + for i=0,2 do + line(100-sin(t/128)*4,75+i+cos(t/128)*4,123-sin(t/128)*4,75+i+cos(t/128)*4,13) + end + + circ(135,80,4,13) + circ(145,80,4,13) + + tri(152,83,150,75,165,83,9) + + elli(240-t/24%490,89,4,2,3) + cactus2(340-t/24%490,72) + cactus1(240-t/16%290,70) + elli(290-t/12%490,110,8,4,3) + + for i=0,2 do + print("CHOO CHOO",64+i,120+i,14-i,true,2) + end +end + +function cactus1(x,y) + elli(4+x,3+y,2,10,5) + elli(8+x,10+y,6,2,5) + elli(14+x,10+y,4,20,5) +end + +function cactus2(x,y) + elli(20+x,5+y,2,6,6) + elli(18+x,10+y,3,1,6) + elli(14+x,10+y,2,10,6) +end \ No newline at end of file diff --git a/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/aldroid.lua b/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/aldroid.lua new file mode 100644 index 000000000..10927c071 --- /dev/null +++ b/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/aldroid.lua @@ -0,0 +1,27 @@ +for i=0,15 do + poke(0x3fc0+i*3,i*255/3) + poke(0x3fc1+i*3,0) + poke(0x3fc2+i*3,0) + end + + function SCN(l) + l=math.abs(l*2-136) + wub=fft(0)+fft(1)+fft(2)+fft(3) + for i=0,15 do + poke(0x3fc0+i*3,peek(0xfc0+i*3)*l/136) + poke(0x3fc2+i*3,fft(l*1.5)*10000) + poke(0x3fc1+i*3,fft(l*1.5)*100*(136-l)) + end + end + + function TIC()t=time()//32 + wub=fft(0)+fft(1)+fft(2)+fft(3) + for y=0,136 do for x=0,240 do + cx=x-120 + cy=y-68 + a=1 + r=math.sqrt(cx*cx+cy*cy)//1 + if math.sin(r+t+x) > 0 then + pix(x,y,(a+r+t+wub*200//4)>>4) + end + end end end \ No newline at end of file diff --git a/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/mantratronic.lua b/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/mantratronic.lua new file mode 100644 index 000000000..5d6876b8b --- /dev/null +++ b/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/mantratronic.lua @@ -0,0 +1,68 @@ +-- mt here +-- gonna just tune it a bit now + +cls(0) + +osize=10 + +bt=0 +function TIC()t=time()/300 +ta=5*math.sin(t/10) +tb=5*math.sin(t/10+math.pi*2/3) +tc=5*math.sin(t/10+math.pi*4/3) +for i=0,15 do +poke(0x3fc0+i*3,i*(10+ta)) +poke(0x3fc0+i*3+1,i*(10+tb)) +poke(0x3fc0+i*3+2,i*(10+tc)) +end + +rect(0,0,240,10,0) + +size=osize+10*(fft(0)+fft(1)+fft(2)+fft(3)+fft(4)) +circ(120,68,size,0) + +bt=bt + .5*(fft(0)+fft(1)+fft(2)+fft(3)+fft(4)) + +for i=0,127 do + ft=fft(i*2+1)+fft(i*2+2) + ft=ft*2000*(i/127 + 0.25) + + a=i/127*math.pi*2+bt + + x=(size)*math.sin(a) + y=(size)*math.cos(a) + + pix(120+x,68+y,math.min(ft,15)) +-- line(120,68,120+i,10,math.min(ft,14)+1) +-- line(120-i,10-ft/2,120-i,10,math.min(ft,14)+1) +end + +for i=0,1000 do +d=size+math.random(100) +a=math.random()*math.pi*2 +x=d*math.sin(a) +y=d*math.cos(a) +pix(120+(d+1)*math.sin(a),68+(d+1)*math.cos(a),pix(120+x,68+y)) +end + +for i=0,1000 do +d=size+math.random(100) +a=math.random()*math.pi*2 +x=120+d*math.sin(a) +y=68+d*math.cos(a) +pix(120+(d+1)*math.sin(a),68+(d+1)*math.cos(a),math.min(15,math.max(0,(pix(x,y)+pix(x+1,y+1)+pix(x+1,y-1)+pix(x-1,y+1)+pix(x-1,y-1))/4.45))) +end + +tp=t%60 +if tp < 5 then +print("monday",84,100,4,true,2,false) +elseif tp <25 then +elseif tp <30 then +print("night",94,110,8,true,2,false) +elseif tp <45 then +elseif tp <50 then +print("casual",84,120,12,true,2,false) +end +--getting confused here, +--trying something that worked +end \ No newline at end of file diff --git a/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/superogue.lua b/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/superogue.lua new file mode 100644 index 000000000..02d4897ef --- /dev/null +++ b/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/superogue.lua @@ -0,0 +1,28 @@ +-- superogue +-- bytejam 12/12/2022 +f={}t=1vol=199T={"beautiful"," we"," are "," all"} +function fft(i)return math.random()*math.sin(i*5)*.1 end +function TIC() +cls(0) +s=math.sin(t/19)c=math.cos(t/17) +for i=1,8*64 do f[i]=f[i+8]or 0 end +for i=1,8 do f[64*8+i]=vol*fft(i)end +for y=-63,63 do for x=-63,63 do + X=x*c-y*s Y=x*s+y*c + ff=f[(y%64)*8+(x//4%8)+1] + zs=math.sin(ff)*4 + if (zs>1) then zs=1 end + if (zs<0) then zs=0 end + h=(x&y)*zs*ff/8 + z=ff*(math.sin(t/39)+1) + r=(z+4)/8 + q=z//8 + circ(X*z+120,Y*z/2-h+80,r,(q%13)+8) +end end +for i=0,240,2 do line(0,i,240,i,0)end +ti=(t+f[3]/2)y=64+fft(0)*99 +print(T[(ti//4)%4+1],86,y+2,0,1,2,1) +print(T[(ti//4)%4+1],84,y,12+(fft(0)*256)%4,1,2,1) +print("Superogue 2022",92,128,13,1,1,1) +t=t+math.sin((fft(1)+fft(0))*9) +end \ No newline at end of file diff --git a/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/tobach.lua b/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/tobach.lua new file mode 100644 index 000000000..e6d769047 --- /dev/null +++ b/shader_file_sources/2022_12_12_byte_jam_fieldfx_casual/tobach.lua @@ -0,0 +1,76 @@ +--hello you lot!!!! +--massive greetz to mantra, superogue and nico <3 +--we have new commands to play with :) + +--shall we do a festive diorama?? :) +--im thinking xmas rave... + +sin=math.sin +cos=math.cos +function TIC() + cls(9) + t=time()/100 + + bassval=fft(0)+fft(1)*50 + + mountains() + + tree() + elli(120,180,240,80,12) + ellib(120,180,240,80,13) + --print(bassval) + + snow() + + for i=0,4 do + snowman(20+i*45,75-math.abs(sin(bassval/8+i/2)*4)) + end + --waiting for bass lol + +end + +function mountains() + for i=-2,8 do + tri(5+i*32-4,110,40+i*32,50-sin(i*9)*16-4,75+i*32,110-4,12) + tri(0+i*32,110,40+i*32,50-sin(i*9)*16,80+i*32,110,14) + trib(0+i*32,110,40+i*32,50-sin(i*9)*16,80+i*32,110,13) + end +end + +function tree() + rect(100,60,40,50,1) + for i=0,9 do + tri(110-i*8,20+i*8,120,5+i*8,130+i*8,20+i*8,6) + end + print("*",116,0,4+sin(bassval)*2,true,2) + for i=0,164 do + circ(120+sin(i/4)*i/2,10+i/2,2,i%4+t+i/2*bassval/128) + end +end + +function snowman(x,y) + for i=0,2 do + circ(x+10,y+10+i*15,8+i,12) + circb(x+10,y+10+i*15,8+i,13) + for i=0,1 do + --circ(x+7+i*6,y+7,1,15) + rect(x+5+i*6,y+6,5,3,15) + line(x+4+i*6,y+6,x+10+i*6,y+6,15) + end + end + + --i have forgotten how to maths + line(x+5,y+20,x-5-sin(bassval)*4,y+20+cos(bassval)*4,1) + line(x+15,y+20,x+25+sin(bassval)*4,y+20+cos(bassval)*4,1) + + line(x+10,y+10,x+13,y+12,3) + +end + +function snow() + for i=0,239 do + sn1=(time()/20+sin(time()/500)+i*sin(time()/2000+i))%240 + sn2=(time()/20+i*20)%136 + pix(sn1,sn2,12) + end +end \ No newline at end of file diff --git a/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/kiikrindar.lua b/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/kiikrindar.lua new file mode 100644 index 000000000..b11f25f21 --- /dev/null +++ b/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/kiikrindar.lua @@ -0,0 +1,117 @@ +-- Happy hollidays and merry wintertime + +s=math.sin +r=math.random + +offsets={} + +for n=0,51 do + offsets[n]=r(-5,5) +end +t=0 + +snow={} +for n=0,51 do + snow[n] = {r(240),r(136)} +end + +moon={ + {30,30,8}, + {30,20,4}, + {33,15,7}, + {20,30,6}, + {24,10,9}, + {15,10,5}, +} + +function TIC() + cls(15) + + -- let's go to the moon + v=t/48 + h=10*s((20+v)/80+10)+20 + circ(20+v,h+20,30,13) + for i=1,6 do + circ(moon[i][1]+v,moon[i][2]+h,moon[i][3],14) + end + + -- snowy snow + for i=0,50 do + print('*',snow[i][1],snow[i][2],12) + if(t%5==0) then + snow[i][2]=snow[i][2]+1 + if (snow[i][2]>=136) then + snow[i]={r(240),0} + end + end + end + + -- snowman maybe? + circ(120,64,12,12) + circ(120,44,10,12) + circ(120,28,8,12) + circ(117,24,1,0) + circ(123,24,1,0) + pix(117,30,0) + pix(124,30,0) + for i=0,5 do + pix(118+i,31,0) + end + line(128,40,135,25,3) + line(112,43,103,35,3) + + -- building bridges + rect(0,75,240,5,7) + + for x=0,240 do + y=10*s(x/90+3.3) + + pix(x,y+48,7) + pix(x,y+49,7) + pix(x,y+50,7) + + if (x%3==0) then + pix(x,y+49,2*s(x+t/10)+4) + end + + if (x%19>=2 and x%19<=5) then + line(x,y+50,x,75,7) + end + + pix(x,2.1*s(x)+77,s(x+t/10)+10) + end + + -- snowman arm + line(103,35,113,40,3) + + -- reflecting + for y=85,136 do + for x=0,240 do + c=pix(x-offsets[y-85],170-y) + if (c==15 or c==0) then c=8 end + pix(x,y,c) + + if (t%20==0) then + if (offsets[y-85]<=-5) then + offsets[y-85]=offsets[y-85]+r(1) + elseif (offsets[y-85]>=5) then + offsets[y-85]=offsets[y-85]-r(1) + else + offsets[y-85]=offsets[y-85]+r(-1,1) + end + end + end + end + + -- redraw snow over reflection + for i=0,50 do + print('*',snow[i][1],snow[i][2],12) + end + + t=t+1 +end + +function SCN(n) + poke(0x3fc0+15*3+2,n+120) + poke(0x3fc0+8*3+2,n+20) +end diff --git a/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/mrsynackster.lua b/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/mrsynackster.lua new file mode 100644 index 000000000..eb14ed00b --- /dev/null +++ b/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/mrsynackster.lua @@ -0,0 +1,24 @@ +t=0 +s=math.sin +atan = math.atan2 +cos = math.cos +pi = math.pi +r = math.random +function TIC() +t=t+.1 + + for y=-68,67 do + for x=-120,119 do + X=(atan(y,x)+pi)*2.546+s(t) + Y=2/(x*x+y*y+1)^0.5+s(t/20) + c=(X//1)/(Y//1)+(y/x/1) + pix(120+x,68+y,c+((s(t/4)*12)//1)) + end + end + for i=1,5 do + print("Greetz",(i*40),(50+t+s(i)*10)%50,6+s(t/2)) + end + for i=0,8 do + circ(120,90+i*5+(t*2%50),(t*2%18)-i,6+i) + end +end \ No newline at end of file diff --git a/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/superogue.lua b/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/superogue.lua new file mode 100644 index 000000000..c9eafb35e --- /dev/null +++ b/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/superogue.lua @@ -0,0 +1,27 @@ +-- Monday Night Bytes Bytejam 19/12/2022 +-- Superogue +t=1m=29 +function SCN(i)poke(16321,0)poke(16322,i*.6+fft(0)*9)end +function TIC() +S=math.sin(t/99+fft(0)*4) +C=math.cos(t/99+fft(1)*4) +cls() +for y=-31,31 do for x=-31,31 do +X=x*C-y*S +Y=x*S+y*C +h=(x//1~y//1) +c=(fft(1)*9+1)*Y/8+y/2%2 +z=(fft(0)*6)+(math.sin(t/231)+1) +circ((X*z*1.3)+120,(Y*z)+68-h*z,z*.7+1,4-(c%8+fft(2)*3)) +end end + +tx=40ty=56tc=12 +T={'"Talent hits a target no one else can hit',' Genius hits a target no one else can see"','- Arthur Schopenhauer'} +print(T[1],tx+1,ty+1,14,1,1,1) +print(T[1],tx,ty,tc,1,1,1) +print(T[2],tx+1,ty+9,14,1,1,1) +print(T[2],tx,ty+8,tc,1,1,1) +print(T[3],tx+1,ty+21,14,1,1,1) +print(T[3],tx,ty+20,tc,1,1,1) +t=t+fft(1)*m+1 +end \ No newline at end of file diff --git a/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/tobach.lua b/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/tobach.lua new file mode 100644 index 000000000..41d2355de --- /dev/null +++ b/shader_file_sources/2022_12_19_byte_jam_fieldfx_casual/tobach.lua @@ -0,0 +1,78 @@ +--hello!!! :) +--greetz to kii, synackster and superogue <3 + +sin=math.sin +cos=math.cos +abs=math.abs +flr=math.floor + +chars={" ",".","o","#",";","&","#","@"} + +scr = {} +for i=0,17 do + scr[i]={} + for j=0,15 do + scr[i][j]=0 + end +end + +function TIC() + cls() + + for i=-20,156 do + line(0,i+sin(time()/400)*16,240,i-sin(time()/400)*16,i/16+sin(time()/1600)*32) + end + + rect(48,10-10,140,120,15) + for i=1,4 do + rectb(48+i,10+i-10,140-i*2,120-i*2,14) + end + + circ(68,30-10,8,7) + circ(168,30-10,8,7) + + circ(68,110-10,8,7) + circ(168,110-10,8,7) + + rect(60,30-10,117,80,7) + + rect(70,22-10,97,97,7) + + for i=1,17 do + for j=1,15 do + rndval=math.random(8) + --error in my maths means 2/8 chars is shown lol... + --my head hurts, 4-5/8 ain't bad right lol + pxval=flr(sin((i/8)+sin(time()/1200+j/16)*8)*cos(j/4+sin(time()/900+j/16)+sin(i/4))*3+4) + scrpix(i,j,pxval%7) + print(scr[i][j],62+i*6,20+j*6-10,7-math.random(2)) + end + end + + line(60,17+time()/10%84,176,17+time()/10%84,7-math.sin(time()/100)*1) + + rect(20,120,200,30,14) + for i=1,18 do + rect(20+i*10,122,8,8,13) + rect(15+i*10,132,8,8,13) + end + yval=abs(sin(time()/60)*32) + yval2=abs(sin(time()/50+1)*32) + xval=math.sin(time()/150)*24+16 + xval2=math.sin(time()/150+1)*24+16 + for i=1,24 do + line(50+i+xval,130-yval,30+i,200,1) + end + + for i=1,24 do + line(160+i-xval2,130-yval2,170+i,200,1) + end + + circ(65+xval,130-yval,14,4) + circ(170-xval2,130-yval2,14,4) + +end + +function scrpix(x,y,val) + scr[x][y]=chars[val] +end \ No newline at end of file diff --git a/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..39ec513f0 --- /dev/null +++ b/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,42 @@ +ft={} +for x=1,256 do + ft[x]=0 +end + +showFFT=false +function TIC() + t=time()/60 + cls() + + for x=1,240 do + ft[x]=ft[x]+(fft(x-1)-.001)*x^0.5 + if showFFT then pix(x-1,ft[x]*100,12) end + end + + bass=ft[1]+ft[2]+ft[3] + zoom=math.sin(t/16) + + sizeX=60+math.sin(bass/32)*24 + sizeY=68+math.sin(bass/32)*24 + + for x=0,(240/(sizeX*1))+1 do + for y=0,(168/(sizeY*1))+1 do + for z=0,32 do + + scaleX=(z/sizeX)*1.8*sizeX + scaleY=(z/sizeY)*1.8*sizeX + posX=x*sizeX+scaleX/2-sizeX+sizeX/2 + posY=y*sizeX+scaleX/2-sizeX+sizeX/2 + offsetX=(math.sin(z/16+t/8+bass/4)*(z/32)*16)--(sizeX/2) + offsetY=(math.sin(z/16+t/8+1+bass/4))*(z/32)*16--(sizeX/2) + + circ( + 240-posX+(offsetX*4+(sizeX/2)*(z/8))/4, + 136-posY+(offsetY*4+(sizeX/2)*(z/8))/4, + (sizeX-scaleX)/2+math.sin(bass/8+z)*4, + z+bass/8+x+y + ) + end + end + end +end diff --git a/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/kiikrindar.lua b/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/kiikrindar.lua new file mode 100644 index 000000000..fcf330585 --- /dev/null +++ b/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/kiikrindar.lua @@ -0,0 +1,101 @@ +-- Hello hello +-- We gonna write some waves today + +t=0 + +function triw(x,a,p,t) + return ((4*a)/p)*math.abs(((x-(p/4)+t)%p)-(p/2))-a +end + +function sin(x,a,p,t) + return a*math.sin((x/p)+t) +end + +function drawFill(x,y,o,c) + for i=0,200 do + pix(x,y+o+i,c) + end +end + +function TIC() + cls(10) + + circ(120,136-t/60,100,3) + + for x=0,240 do + y1=triw(x,40,180,t*0.6) + drawFill(x,y1,60,15) + y2=triw(x,30,210,10+t) + drawFill(x,y2,70,14) + y3=sin(x,32,1330,50+t/18) + drawFill(x,y3,120,6) + y4=sin(x,22,100,90+t/7) + drawFill(x,y4,120,5) + end + + t=t+1 +end + +function OVR() + poke(0x3fc0+3*3+1,0x7d) + + -- can we move them a bit with + -- a triangle wave? + + o=triw(0,1.2,30,t) + + -- wall + rect(0,0,240,10,13) + rect(0,0,40,136,13) + rect(200,0,40,136,13) + rect(0,116,240,20,13) + + -- window + for i=0,4 do + rectb(37+i,7+i+o,166-i*2,112-i*2,15) + end + rect(37,32+o,166,2,15) + + -- seats + elli(0,60+o,10,25,2) + elli(0,125+o,15,45,2) + elli(0,140+o,55,15,2) + + elli(240,60+o,10,25,2) + elli(240,125+o,15,45,2) + elli(240,140+o,55,15,2) + + -- tray + rect(80,123+o,80,6,15) + rect(100,129+o,7,14,15) + rect(130,129+o,7,14,15) + + -- luggage space + rect(0,10+o,30,5,15) + line(25,15+o,0,25+o,15) + + rect(210,10+o,30,5,15) + line(215,15+o,240,25+o,15) + + -- water bottle + rect(105,103+o,9,20,11) + circ(109,103+o,4,11) + rect(108,96+o,3,3,8) + +end + +function SCN(n) + -- sun + poke(0x3fc0+3*3+1,n+80) + + -- sky gradient + poke(0x3fc0+10*3+1,n+120) + -- mountains gradient + for i=0,2 do + poke(0x3fc0+15*3+i,n+10) + poke(0x3fc0+14*3+i,n+40) + end + -- hills gradient + poke(0x3fc0+6*3+2,n+10) + poke(0x3fc0+5*3+2,n+40) +end diff --git a/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..fc782eb74 --- /dev/null +++ b/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,99 @@ +-- hello all! mt here +-- ^ +-- hf+gl to alia, kii, & tobach +r=math.random +s=math.sin +fto={} +for i=0,255 do +fto[i]=0 +end + +p={} +np=48 +for i=0,np do +p[i]={x=r(240.0),y=r(136.0),sx=r(10.0)-5,sy=r(10.0)-5} +end + +tc=0 + +function SCN(l) + for i=0,15 do + poke(0x3fc0+i*3, 255-15*i) + poke(0x3fc0+i*3+1, math.max(0,math.min(255,255-8*i-l))) + poke(0x3fc0+i*3+2, math.max(0,math.min(255,255-26*i))) + end +end + +t=0.0 +function TIC() +t=t+1--fft(1)*5.0 -- nm +n = 255//np +for i=0,255 do + ftoa = 0 + for j=0,n do + ftoa=ftoa+fft(i/n+j)/n + end + fto[i]=(fto[i]+ftoa)/2 +end + +for i=0,np do + v=p[i] + v.x=(v.x+v.sx/5*s(i/10+t/100))%240 + v.y=(v.y+v.sy/8*s(i/11+t/100))%136 + pix(v.x,v.y,fto[i]*500) + + for j=0,np do + w=p[j] + d=(v.x-w.x)^2 + (v.y-w.y)^2 + d=d^.5 + ft = fto[i] + fto[j] + if d < ft * 250 and i ~= j then + line(v.x,v.y,w.x,w.y,ft*100) + for l=0,np do + z=p[l] + d=(v.x-z.x)^2 + (v.y-z.y)^2 + d=d^.5 + ft = fto[i] + fto[j] + fto[l] + if d < ft * 125 and l ~= j and l ~= i then + tri(v.x,v.y,w.x,w.y,z.x,z.y,ft*100) + goto continue + end + end + end + + end + + ::continue:: +end + +if t%4 < 1 then + for i=0,239 do + for j=0,135 do + pix(i,j,math.max(0,pix(i,j)-1)) + end + end + + if t%64<1 then + tc=tc+1 + tc=tc%4 + end +end + + + +end + +function OVR() + if t%64<15 then + if tc<1 then + print("eat",112,64,15) + elseif tc<2 then + print("sleep",108,64,15) + elseif tc<3 then + print("livecode",102,64,15) + elseif tc<4 then + print("repeat",106,64,15) + else + end + end +end diff --git a/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..7a1ae316d --- /dev/null +++ b/shader_file_sources/2023_01_02_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,126 @@ +--yeeeee hawwww ;) +--hello!!! +--greetz to kii, alia and mantra <3 + +sin=math.sin +cos=math.cos + +fdir=0 + +function SCN(scnln) + poke(0x3ff9,sin(t/4+scnln/4)*1.1) +end + +function TIC() + cls(14) + t=time()//32 + + fx=60+sin(t/32)*64 + fy=sin(t/2)*2 + + --need a "diorama"... hmmmmmm + --i have an idea :) + + rect(0,110,240,40,4) + rect(0,20,240,80,10) + + circ(120,95,20,9) + tri(100,90,105,70,120,80,9) + tri(110,90,135,70,140,90,9) + + circ(110,85,5,11) + circ(130,85,5,11) + + circ(85,90,6,9) + + for i=0,10 do + circ(85+i,90+i*2,4,9) + end + + circ(155,90,6,9) + + for i=0,10 do + circ(155-i,90+i*2,4,9) + end + + for i=1,4 do + circ(78+i*2.4,92-i*1.75,1,10) + end + + circ(87,92,2,10) + + for i=1,4 do + circ(150+i*2.5,84+i*1.25,1,10) + end + + circ(153,92,2,10) + + elli(110+fx/32-1,85,1,5,10) + elli(130+fx/32-1,85,1,5,10) + + rectb(-2,20,244,100,12) + rect(-2,20,244,10,15) + rectb(-2,20,244,10,13) + + --print(fx) + --fishrev(0,0,3) +end + +function OVR() + --fish(0+sin(t/128)*64,0+sin(t/2)*2,3) + + for i=-5,5 do + line(200+i*4,80+sin(t/16+i/2)*4,200,110,7) + line(200+i*4+1,80+sin(t/16+i/2)*4,200,110,6) + end + + for i=0,3 do + rect(31+i*7.8,65,5,5,14) + end + + rect(30,70,30,30,14) + + + rect(40,85,10,15,15) + circb(45+sin(t/8)*4,97-t*2%60,1,11) + + if fx>122 then + fdir=1 + end + if fx<-3 then + fdir=0 + end + + if fdir==0 then + fish(fx,fy,3) + circb(60+fx+sin(t/2)*2,85+fy-t%40,1,11) + elseif fdir==1 then + fishrev(fx,fy,3) + circb(50+fx+sin(t/2)*2,85+fy-t%40,1,11) + end + + for i=0,18 do + line(0,100+i,240,100+i,4-i/8) + end + +end + +function fish(x,y,col) + --our tank needs a friend :) + tval=sin(t/4)*3 + tri(x+40-tval,y+80,x+50,y+85,x+40-tval,y+90,col) + trib(x+40-tval,y+80,x+50,y+85,x+40-tval,y+90,col+1) + elli(x+55,y+85,8,6,col) + ellib(x+55,y+85,8,6,col+1) + circ(x+60,y+82,1,15) +end + +function fishrev(x,y,col) + --our tank needs a friend :) + tval=sin(t/4)*3 + tri(30+x+40+tval,y+80,30+x+30,y+85,30+x+40+tval,y+90,col) + trib(30+x+40+tval,y+80,30+x+30,y+85,30+x+40+tval,y+90,col+1) + elli(30+x+25,y+85,8,6,col) + ellib(30+x+25,y+85,8,6,col+1) + circ(30+x+20,y+82,1,15) +end \ No newline at end of file diff --git a/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..4f52fbaa1 --- /dev/null +++ b/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,71 @@ +t=0 +m=math +ft={} + +function BOOT() + for x=1,255 do + poke(16320+x%48,x%48*5*(1-(bass+x%3)/3)) + ft[x]=0 + end + cls() + for i=0,240 * 136 do + pix(i%240,i//240,i>>3) + end +end + +function rot2D(v,a) + return { + x=m.cos(a)*v.x+m.sin(a)*-v.y, + y=m.cos(a)*v.y+m.sin(a)*v.x + } +end + +bass=0 +snare=0 +function TIC() + poke(0x3ffb,255) + for x=0,20 do + if x<10 then + bass=bass+fft(x) + else + snare=snare+fft(x) + end + end + t2=bass/8 + --c + o={x=t%280-20,y=68} + l0={x=o.x+m.sin(t2)*6+12,y=o.y-32+m.cos(t2)*4} + r0={x=o.x+m.sin(t2+1.5)*6+24,y=o.y-32+m.cos(t2+1.5)*4} + tri(o.x,o.y,l0.x,l0.y,r0.x,r0.y,15) + elli((l0.x+r0.x)/2+7,l0.y-10,4,6,15) + --ul + t2=bass/32 + l1={x=o.x-m.sin(t2*2)*16,y=o.y+26+m.cos(t2*2)*4} + r1={x=o.x-m.sin(t2*2+3)*16,y=o.y+26+m.cos(t2*2+3)*4} + tri(o.x+6,o.y,o.x,o.y,l1.x,l1.y,15) + tri(o.x-6,o.y,o.x,o.y,r1.x,r1.y,15) + --ll + l2={x=l1.x-m.sin(t2*2)*8-8,y=l1.y+22+m.cos(t2*2)*4} + r2={x=r1.x-m.sin(t2*2+3)*8-8,y=r1.y+22+m.cos(t2*2+3)*4} + tri(l1.x+5,l1.y,l1.x,l1.y,l2.x,l2.y,15) + tri(r1.x-5,r1.y,r1.x,r1.y,r2.x,r2.y,15) + --ua + t2=snare/8 + l1={x=l0.x+m.sin(t2)*8-14,y=l0.y+22+m.cos(t2*2)*4} + r1={x=r0.x+m.sin(t2+3)*8-14,y=r0.y+22+m.cos(t2*2+3)*4} + tri(l0.x+4,l0.y,l0.x,l0.y-4,l1.x,l1.y,15) + tri(r0.x+4,r0.y,r0.x,r0.y-4,r1.x,r1.y,15) + --la + l2={x=l1.x+m.sin(t2)*6-10,y=l1.y+12+m.cos(t2*2)*4} + r2={x=r1.x+m.sin(t2+3)*6-10,y=r1.y+12+m.cos(t2*2+3)*4} + tri(l1.x+3,l1.y,l1.x,l1.y-3,l2.x,l2.y,15) + tri(r1.x+3,r1.y,r1.x,r1.y-3,r2.x,r2.y,15) + + t=t+.5 +end + +function SCN(y) + for x=0,240 do + pix(x,y,m.max(0,pix((x+2)%239,y)-x%3%2)) + end +end diff --git a/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..b43d12732 --- /dev/null +++ b/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,105 @@ +-- title: hivedrive +-- author: Gasman +-- desc: live-coding with hexagons for the Field-FX Monday Night Bytes stream, 2023-01-09 +-- script: lua + +-- hello from gasman! it's been a while + +-- Greetings to ^ Mantratronic, Alia +-- and ToBach! + +-- are we live? WE'RE LIVE! + +-- OK, so I'm going to try the hexagon +-- thing I totally failed at a month +-- or two back + +-- and hopefully I'll either succeed +-- this time, or fail in a different +-- interesting way from last time + +-- how about some last-minute +-- palette jiggerypokery + +pal={} +for i=0,48 do + pal[i+1]=peek(i+16320) +end + +function BDR(y) + -- subtle. subtle is good. + k=0.4+0.6*y/136 + for i=0,48 do + poke(i+16320,k*pal[i+1]) + end +end + +function TIC() + t=time() + a=t/2000 + cx=120+60*math.sin(t/1234) + cy=68+60*math.sin(t/1345) + + for sy=0,135 do + for sx=0,239 do + -- let's get some rotozoomy action + -- going on + x=((sx-cx)*math.cos(a)+(sy-cy)*math.sin(a))*(1+(146-sy)/80) + y=((sy-cy)*math.cos(a)-(sx-cx)*math.sin(a))*(1+(146-sy)/80) + + sc=32+20*math.sin(t/1634) + + -- now let's push these back over + -- so they're regular hexagons + -- again + tx=x/sc+(y/sc)/2 ty=y/sc + -- I'm not sure the aspect ratio + -- is right, but it looks OK so + -- let's run with it + +-- if you draw a tesselating hexagon +-- pattern, but push it over so that +-- it's aligned to a square grid, +-- you get three different 'modes' +-- of square +-- I'd do an ASCII art diagram, but +-- that would get fiddly. Just trust me + +-- YAY HEXAGONS!!!!!! + + mode=(tx//1+ty//1)%3 + if mode==0 then + v=1-math.min(tx%1,ty%1) + elseif mode==1 then + v=1-math.abs(tx%1-ty%1) + if ty%1>tx%1 then hx=hx+1 end + else + v=math.max(tx%1,ty%1) + end + +-- okay, so now I want to have +-- different phases for different +-- hexagons. The only problem is it's +-- going to be hard to translate x/y +-- to "which hexagon am I", isn't it + + hx=tx//2 + if ty//2%2==0 then + hx=2 + end + core=math.max(0.3+0.35*math.sin(t/1456+hx)) + + -- still can't get things aligned, + -- but at least the colour scheme's + -- nice now... + + if v>0.8 then + pix(sx,sy,hx) + elseif v +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..f60a6c6b7 --- /dev/null +++ b/shader_file_sources/2023_01_09_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,77 @@ +sin=math.sin +cos=math.cos +abs=math.abs + +stars={} +q=5 + +for i=0,100 do +stars[i]={math.random()*256,math.random()*160} +end + +function TIC() + t=time()//32 + + --no clue what i want to make tonight + --haha hmmmmmm.... + --big ups mantra, alia and gasman <3 + + poke(0x3ffb,1) + cls() + + for i=0,100 do + pix((stars[i][1]+sin(t/16+i)*8),(stars[i][2]-(t*2*i/4)/10)%136,15-i/32) + end + + rect(45,120,150,20,3) + + circ(70,108,30,4) + + circ(170,108,30,4) + + rect(70,0,100,136,13) + + rect(80,10,80,60,14) + rect(85,15,70,50,5) + + for j=0,50 do + for i=0,70 do + sval=sin((i/4*sin(t/16))+sin(t/27)*16)*cos((j/4*sin(t/16))+cos(t/20)*8)+t//16 + pix(85+i,15+j,sval%3+5) + end + end + + for i=15,65 do + q=sin(t/8+i/16)/2*8+10 + x1=sin(i/q+(t/50))*20+120 + x2=sin(i/q+90+(t/50))*20+120 + x3=sin(i/q+180+(t/50))*20+120 + if x1 .5 and math.abs(x - r) > 17 then + circ(x, 135, 8, 5) + circ(x + 1, 135, 7, 6) + circ(x + 2, 135, 6, 7) + end + + t = t + .03 + pt = pt + fft(1) / 20 +end + +function SCN(y) + if y < 135 then + for x = 0, 239 do + p = pix(x, y - 1) + q = pix(x, y + 1) + if q > 0 and p ~= q then + p = q + end + pix(x, y, p) + end + else + line(0, 135, 239, 135, 0) + end +end diff --git a/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/evilpaul.lua b/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/evilpaul.lua new file mode 100755 index 000000000..758bae256 --- /dev/null +++ b/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/evilpaul.lua @@ -0,0 +1,142 @@ +pi = math.pi +twoPi = pi * 2 +function frand(min, max) + return min + math.random() * (max - min) +end +function lerp(min, max, alpha) + return min + alpha * (max - min) +end + +objs = {} +maxObjs = 50 +for i = 0, maxObjs do + a = i / maxObjs + new = {} + new.x = math.random(-50, 240 + 50) + new.y = math.random(0, 2048) + new.yv = frand(.5, 4) + new.size = lerp(1, 20, a) + new.r = frand(0, twoPi) + new.rv = frand(-.125, .125) + table.insert(objs, new) +end + +function stars() + for k, p in pairs(objs) do + x = p.x + y = (2048 - p.y) - 100 + r = p.r + s = p.size + drawStar(x, y, s + 10, r, 12) + drawStar(x, y, s + 5, r, 1) + drawStar(x, y, s, r, 3) + p.y = (p.y + p.yv) % 2048 + p.r = p.r + p.rv + end +end + +function drawTri(x, y, size, rotation, color) + x1 = x + math.sin(rotation + 0 / 3 * twoPi) * size + x2 = x + math.sin(rotation + 1 / 3 * twoPi) * size + x3 = x + math.sin(rotation + 2 / 3 * twoPi) * size + y1 = y + math.cos(rotation + 0 / 3 * twoPi) * size + y2 = y + math.cos(rotation + 1 / 3 * twoPi) * size + y3 = y + math.cos(rotation + 2 / 3 * twoPi) * size + -- tri(x1,y1,x2,y2,x3,y3,color) + circ(x1, y1, size / 2, color) + circ(x2, y2, size / 2, color) + circ(x3, y3, size / 2, color) +end +function drawStar(x, y, size, rotation, color) + drawTri(x, y, size, rotation, color) + drawTri(x, y, size, rotation + pi, color) +end + +function bg(t, color) + for x = 0, 240, 2 do + cx = x - 240 / 2 + sx = cx * cx + for y = 0, 136, 2 do + if pix(x, y) == 0 then + cy = y - 136 / 2 + sy = cy * cy + a = math.atan(cx, cy) + d = math.sqrt(sx + sy) * .05 + d = d + math.sin(d * math.sin(t) * 5 + t + math.sin(t) + a * 10) * .5 + d = d - t * 2 + pix(x, y, color * (d % 2)) + end + end + end +end + +function post() + decay = .8 + for x = 0, 240 do + c = 0 + for y = 0, 136 do + cc = pix(x, y) + if cc > c then + c = cc + else + c = c * decay + end + pix(x, y, c) + end + end +end + +function glitch() + math.randomseed(time() * 0.001) + for i = 0, math.random(0, 2) do + x1 = math.random(0, 240) + x2 = math.random(0, 240) + w = math.random(5, 30) + m = math.random(0, 1) + if m == 0 then + for x = 0, w do + for y = 0, 136 do + c = pix(x1 + x, y) + pix(x2 + x, y, c) + end + end + elseif m == 1 then + for y = 0, 136 do + c = pix(x1, y) + for x = 0, w do + pix(x2 + x, y, c) + end + end + elseif m == 2 then + for y = 0, 136 do + for x = 0, w do + pix(x2 + x, y, math.random(0, 1)) + end + end + end + end +end + +function TIC() + cls(0) + + stars() + post() + glitch() + bg(math.sin(2 + time() * 0.001) + time() * 0.001, 1) + bg(math.sin(1 + time() * 0.001) + time() * 0.001, 3) + + math.randomseed(time() * 0.04) + txt = "A rolling stone gathers momentum" + x = 2 -- math.random(10,12) + y = 128 -- math.random(10,12) + print(txt, x - 1, y, 0) + print(txt, x + 1, y, 0) + print(txt, x, y - 1, 0) + print(txt, x, y + 1, 0) + print(txt, x - 1, y - 1, 0) + print(txt, x - 1, y + 1, 0) + print(txt, x + 1, y - 1, 0) + print(txt, x + 1, y + 1, 0) + print(txt, x, y, 12) +end diff --git a/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/mantratronic.lua b/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/mantratronic.lua new file mode 100755 index 000000000..842f1376a --- /dev/null +++ b/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/mantratronic.lua @@ -0,0 +1,157 @@ +--[[ mt here, greets to everyone + +amazing new talent compo! welcome to +you all, please make more intros! + +so size coding is making as big a file as +as possible in an hour, right? --]] m = math +sin = m.sin +cos = m.cos +max = m.max +min = m.min +abs = m.abs +tau = m.pi * 2 +rand = m.random + +fh = {} +ps = {} +cs = {} +np = 100 + +for i = 0, 239 do + fh[i] = 0 +end + +for i = 1, np do + ps[i] = { + x = rand() * 2 - 1, + y = rand() * 2 - 1, + z = rand() * 2 - 1 + } +end + +function BDR(l) + vbank(0) + lm = 68 - abs(68 - l) + for i = 0, 47 do + poke(16320 + i, max(0, min(255, sin(i) ^ 2 * i * lm / 5.5))) + end + vbank(1) + for i = 0, 47 do + poke(16320 + i, max(0, min(255, sin(i) ^ 2 * i * lm / 5.5 + 10))) + end +end + +size = 200 +mid = 0 + +function TIC() + t = time() / 32 + vbank(0) + -- cls() + + vbank(1) + cls() + + for i = 0, 239 do + fh[i] = fft(i) / 4 + fh[i] * 3 / 4 + end + + bass = 0 + for i = 0, 15 do + bass = bass + fh[i] + end + for i = 16, 60 do + mid = mid + fh[i] + end + mid = mid / 1.1 + high = 0 + for i = 61, 239 do + high = high + fh[i] + end + high = high / 4 + + cs = {} + a = mid / 10 + t / 33 + a2 = bass / 2 + for i = 1, np do + y1 = ps[i].y * cos(a) - ps[i].z * sin(a) + z1 = ps[i].z * cos(a) + ps[i].y * sin(a) + + x = ps[i].x * cos(a2) - y1 * sin(a2) + y = y1 * cos(a2) + ps[i].x * sin(a2) + + c = max(4, min(15, mid * (z1 + 1) / 2)) + s = 2 * (z1 + 1) + cs[i] = { + x = x, + y = y, + z = z1, + c = c, + s = s + } + end + + table.sort(cs, function(a, b) + return a.z < b.z + end) + + h2 = .2 + high / 2 + + for i = 1, np do + if cs[i].z < 0 then + vbank(0) + circ(120 + h2 * 120 * cs[i].x, 68 + 68 * cs[i].y, cs[i].s, cs[i].c) + else + vbank(1) + circ(120 + h2 * 120 * cs[i].x, 68 + 68 * cs[i].y, cs[i].s, cs[i].c) + end + end + vbank(0) + + -- lets do the twist again + for i = 0, 239 do + x = (i + t // 1) % 240 + fhx = (fh[(x - 1) % 240] + fh[(x) % 240] + fh[(x + 1) % 240]) / 3 * (.9 + x / 60) + a = sin(t / 10) * x / 80 + + d = size * fhx + 5 + 5 * bass + + cy = 68 + 10 * bass * sin(i / 110 + t / 12) + + y1 = d * sin(a) + y2 = d * sin(a + tau / 4) + y3 = d * sin(a + tau / 2) + y4 = d * sin(a + tau * 3 / 4) + + d = d / 4 + + if y1 < y2 then + line(i, cy + y1, i, cy + y2, max(0, min(15, d))) + end + if y2 < y3 then + line(i, cy + y2, i, cy + y3, max(0, min(15, d + 1))) + end + if y3 < y4 then + line(i, cy + y3, i, cy + y4, max(0, min(15, d + 2))) + end + if y4 < y1 then + line(i, cy + y4, i, cy + y1, max(0, min(15, d + 3))) + end + end + vbank(0) + + for i = 0, 5000 do + x = rand(240) - 1 + y = rand(136) - 1 + pix(x, y, max(0, min(15, pix(x, y) - 1))) + end + + text = {"LOVEBYTE", "10-12th FEB", "Online", "lovebyte.party", "<3 alia", "<3 aldroid", "<3 evilpaul", "<3 tobach"} + vbank(1) + tt = t // 50 + tx = tt % #text + 1 + tl = print(text[tx], 0, -100, 15, false, 3) + print(text[tx], 120 - tl / 2, 136 - 40 * bass, 15, false, 3) + +end diff --git a/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/tobach.lua b/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/tobach.lua new file mode 100755 index 000000000..c0c4cda08 --- /dev/null +++ b/shader_file_sources/2023_01_14_byte_jam_lovebyte_get_ready/tobach.lua @@ -0,0 +1,81 @@ +-- tobach testttiiinnnggggg +-- hello lovebyte!!!!! +-- greetz to evilpaul, mantra, +-- alia, ferris and aldroid <3 +sin = math.sin +cos = math.cos +function TIC() + t = time() // 32 + cls() + for i = 0, 4 do + rect(0, -40 + i * 36, 240, 50, i) + end + + -- clouds innit + elli(290 - t % 340, 20, 40, 5, 13) + elli(340 - t / 1.3 % 480, 60, 40, 5, 13) + + building(250 - t % 400, 60, 14) + building(320 - t * 1.4 % 400, 70, 13) + building(310 - t * 1.7 % 400, 80, 14) + building(300 - t * 1.9 % 400, 85, 15) + + pval = t * 3 % 480 + lines(240 - pval) + lines(-240 - pval) + pole(250 - pval) + + rect(0, 120, 240, 40, 15) + rect(0, 120, 240, 3, 14) + + birb(140 - t * 3 % 480, -2, 0) + birb(210 - t * 3 % 480, 20, 3) + birb(370 - t * 3 % 480 - 80, 20, 5) + + for i = 0, 1 do + print("LOVEBYTE 2023 10-12 FEB", 240 - t * 4 % 560 + i, 124 + i, 3 - i, true, 2) + end + +end + +function lines(x) + for i = 0, 480 do + pix(x + i, 40 + sin(i / 128) * 8, 0) + pix(x + i, 41 + sin(i / 128) * 8, 15) + pix(x + i, 60 + sin(i / 128) * 8, 0) + pix(x + i, 61 + sin(i / 128) * 8, 15) + end +end + +function building(x, y, col) + rect(x + 0, y + 0, 41, 120, col) + for j = 0, 16 do + for i = 0, 4 do + rect(x + i * 8 + 2, y + j * 8 + 2, 5, 5, 4) + end + end +end + +function pole(x) + rect(-12 + x, 35, 30, 6, 14) + rect(-12 + x, 55, 30, 6, 14) + rect(0 + x, 30, 5, 150, 15) +end + +function birb(x, y, offset) + + t2 = sin(t / 2 + offset) / 2 + + for i = 0, 2 do + line(x + 175, y + 44, x + 165 + i * 3, y + 47, 3) + end + + elli(x + 170, y + 35 + sin(t2), 15, 10, 15) + elli(x + 183, y + 35 + sin(t2 + 0.3), 10, 2, 15) + elli(x + 175, y + 33 + sin(t2 + 0.6) * 1.15, 10, 4, 14) + + for i = 0, 3 do + circ(x + 158 - i * sin(t2 + 0.75) * 2, y + 30 - i * 2 * cos(t2 + 0.75), 3, 14) + end + circ(x + 151 + sin(t2 + 3) * 3, y + 26 - sin(t2 + 3) * 4, 1, 3) +end diff --git a/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..c6d5fc046 --- /dev/null +++ b/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,43 @@ +cols = {} +for i = 0, 44 do + cols[i] = peek(0x3fc0 + i) +end + +function SCN(l) + if l < 68 then + for i = 0, 44 do + poke(0x3fc0 + i, cols[i]) + end + else + for i = 0, 14 do + poke(0x3fc0 + i * 3, cols[i * 3]) + poke(0x3fc1 + i * 3, cols[i * 3]) + poke(0x3fc2 + i * 3, cols[i * 3]) + end + end +end + +function TIC() + t = time() // 32 + mucky = {} + for i = 0, 9 do + mucky[i] = 0 + for j = 0, 14 do + mucky[i] = mucky[i] + fft(i * 15 + j) + end + mucky[i] = mucky[i] * 10 + end + + for y = 0, 136 do + for x = t % 2, 240, 2 do + cl = mucky[(math.sin((x) / 12 + (y + x * (y + t * 2.1) / 74 / mucky[0]) / 33) * 11 + math.sin(y / 21) * 10 + + math.sin(mucky[1] * 54 + y / 255 + x / 231) * 23) // 5 % 10] // 1 >> 2 + if cl > 0 then + pix(x, y, cl) + else + pix(x, y, pix(x + 1, y)) + end + end + end + +end diff --git a/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..cbe22c5f7 --- /dev/null +++ b/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,113 @@ +-- g'day folks! gasman here... +-- greetings to Kii, Nico, Synaesthesia +-- and Aldroid!!! + +-- no grand plan tonight, except +-- "use FFT", because I have a TIC-80 +-- build with it, like all the cool +-- kids :-D +-- (thanks Kii for the device select +-- patch!) + +-- oh good, the amplitude on the stream +-- is about the same as locally. +-- that's helpful. + +frm=0 +buckets={} +for z=0,31 do + buckets[z]={} + for i=0,15 do + buckets[z][i]=0 + end +end + +stars={} +for s=0,50 do +-- if i'm really quick nobody will +-- notice that I'm looking up +-- the lua docs for math.random lol +-- ok, range from 0..1 hopefully + stars[s]={ + math.random(),math.random(),math.random()} +end + +function TIC() +cls() +buckets[frm]={} +for i=0,15 do + buckets[frm][i]=0 +end +for i=0,255 do + b=(math.sqrt(i/239)*15)//1 + buckets[frm][b]=buckets[frm][b]+fft(i) +end + +a=8*math.sin(time()/4000) + +-- if in doubt, add a starfield. +-- but do it before the other stuff +for s=0,50 do + star=stars[s] + sz=(star[3]-time()/1000)%1 + zout=1+2*math.cos(a)*(sz-0.5)+math.sin(a)*(star[1]-0.5) + circ( + 120+240*(math.cos(a)*(star[1]-0.5)+math.sin(a)*(sz-0.5)), + 65+60*(math.cos(a)*(sz-0.5)-math.sin(a)*(star[1]-0.5))+120*(star[2]-0.5), + 1, + 12+zout + ) +end + + +-- how about some isometric stuff +-- naah, let's go for proper 3D +-- this really needs to scroll +-- as it goes... +-- let's make this symmetrical +-- since it's all a bit bass-heavy +for z=0,31 do + for x=0,15 do + y=buckets[(z+frm)%32][x]*8 + sx=120+8*x*math.cos(a)+8*(z-16)*math.sin(a) + sy=88+2*(z-16)*math.cos(a)-2*x*math.sin(a)-y*4 + circ(sx,sy,4,y+1) + sx=120+8*-x*math.cos(a)+8*(z-16)*math.sin(a) + sy=88+2*(z-16)*math.cos(a)-2*-x*math.sin(a)-y*4 + circ(sx,sy,4,y+1) + end +end +-- that's probably about it for the +-- ground plane thingy +-- so how about... a flying thing? +-- hmm +z=-4 +x=0 +yb=math.sin(time()/200)*4 +y=yb+5 + buckets[frm][0]*4 +yc=20*math.sin(time()/500) +sx1=120+8*z*math.sin(a) +sy1=48+2*z*math.cos(a)+yc +z=4 +sx2=120+8*z*math.sin(a) +sy2=48+2*z*math.cos(a)+yc +z=-8 +x=6 +sx3=120+8*z*math.sin(a)+8*x*math.cos(a) +sy3=48+2*z*math.cos(a)-2*x*math.sin(a)-y*4+yc +x=-6 +sx4=120+8*z*math.sin(a)+8*x*math.cos(a) +sy4=48+2*z*math.cos(a)-2*x*math.sin(a)-y*4+yc +clr=12-buckets[frm][0]*8 +trib(sx1,sy1,sx2,sy2,sx3,sy3,clr) +trib(sx1,sy1+1,sx2,sy2+1,sx3,sy3+1,clr) +trib(sx1,sy1,sx2,sy2,sx4,sy4,clr) +trib(sx1,sy1+1,sx2,sy2+1,sx4,sy4+1,clr) +trib(sx1,sy1+10,sx2,sy2,sx3,sy3,clr) +trib(sx1,sy1+11,sx2,sy2+1,sx3,sy3+1,clr) +trib(sx1,sy1+10,sx2,sy2,sx4,sy4,clr) +trib(sx1,sy1+11,sx2,sy2+1,sx4,sy4+1,clr) + +frm=(frm+1)%32 + +end diff --git a/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/kiikrinder.lua b/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/kiikrinder.lua new file mode 100644 index 000000000..b34a7b6f3 --- /dev/null +++ b/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/kiikrinder.lua @@ -0,0 +1,93 @@ +-- pos: 0,0 +-- Poking the VRAM to give me +-- colours I need. I wrote this before +-- the jam not to take too much time +-- on tediously copying RGB values. +function BOOT() + poke(0x3FC3,0x50)poke(0x3FC4,0x16)poke(0x3FC5,0x15) + poke(0x3FD8,0x36)poke(0x3FD9,0x68)poke(0x3FDA,0x76) + poke(0x3FDB,0x53)poke(0x3FDC,0x90)poke(0x3FDD,0xA1) + poke(0x3FE1,0x5B)poke(0x3FE2,0xCF)poke(0x3FE3,0xFA) + poke(0x3FE4,0xF5)poke(0x3FE5,0xAB)poke(0x3FE6,0xB9) + poke(0x3FE7,0xF4)poke(0x3FE8,0xF4)poke(0x3FE9,0xF4) + poke(0x3FEA,0xEB)poke(0x3FEB,0xBA)poke(0x3FEC,0xB1) + poke(0x3FED,0x94)poke(0x3FEE,0xB0)poke(0x3FEF,0xC2) +end + +function givesamples(min,max) + samples={} + samplesAvg=0 + samplesMax=0 + for i=min,max do + samples[i]=fft(i)*80 + samplesAvg=samplesAvg+samples[i] + if (samples[i]>samplesMax) then + samplesMax=samples[i] + end + end + return { + samples=samples, + avg=samplesAvg/(max-min), + max=samplesMax + } +end + +t=0 +function TIC() + cls(10) + + -- first time using fft + -- lets see what we get + bass=givesamples(0,15) + mid=givesamples(16,127) + high=givesamples(126,255) + + circ(120,68,110+bass.avg,11) + circ(120,68,80+mid.max,12) + circ(120,68,40+high.max,13) + + -- time for the star of the show + move=-40+mid.avg*3 + + elli(20,136-move,20,60,8) + elli(220,136-move,20,60,8) + + elli(120,136-move,80,120,8) + elli(120,136-move,60,90,13) + elli(120,136-move,50,80,14) + elli(120,136-move,60,50,13) + elli(60,80-move,6,8,1) + elli(60,80-move,5,7,0) + circ(58,82-move,2,13) + elli(180,80-move,6,8,1) + elli(180,80-move,5,7,0) + circ(182,82-move,2,13) + -- do I just put them one by one? + for i=0,3 do + circ(80+i*10,100-i*5-move,5,13) + end + circ(120,83-move,5,13) + for i=0,3 do + circ(130+i*10,84+i*5-move,5,13) + end + -- good enough + -- I could sin/cos this but + -- there's not enough coffee + -- in my bloodstream + for i=0,3 do + circ(80+i*7,83-i*8-move,5,13) + end + circ(113,55-move,5,13) + circ(123,55-move,5,13) + for i=0,3 do + circ(135+i*7,56+i*8-move,5,13) + end + + msg="TRANS RIGHTS GREETINGS TO SCOTLAND FUCKINGS TO TORIES" + for i=0,#msg do + print(msg:sub(i,i),((222+18*i-t+1)%1600)-20,20+12*math.sin(t/8+i)+1,3,1,3) + print(msg:sub(i,i),((222+18*i-t)%1600)-20,20+12*math.sin(t/8+i),4,1,3) + end + + t=time()//32 +end diff --git a/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/nico.lua b/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/nico.lua new file mode 100644 index 000000000..c82e10ea5 --- /dev/null +++ b/shader_file_sources/2023_01_23_byte_jam_monday_night_bytes/nico.lua @@ -0,0 +1,63 @@ +px=150 +py=70 +pw=46 +ph=60 +bump = 0 +r=math.random +sin=math.sin +cos=math.cos +texts={ +"It's ", +"not ", +"patarty\n", +"It's ", "drawn\n", +"from ","memory\n","yeah!" +} +-- hi from nico! (it/its) +-- It's not a party, it's..... +function TIC()t=time()/200 + cls(8) + for x=0,240 do + for y=0,138 do + pix(x,y,(sin(y/16+t)+sin(x/16+t)+t)%3+8) + end +end +end + + -- spud +function OVR() +if t%100<80 then + current="" + for x=1,#texts do + count = t%20/2 + if x>1)%2)) + end + end + end + for y=2,135 do + for x=1,239 do + if pix(x-1,y-2)~=7 and pix(x,y)==7 then + pix(x,y,15)--pix(x-1,y-2)*15.2) + end + end + end +end + +function TIC() + cls(7) + + local t=time()*.5 + + local txElems={} + local dist=math.sin(t*0.0023)*3+12 + local ry=t*0.0013 + local px1=math.sin(2.43+t*0.0032)*6 + local py1=math.sin(5.43-t*0.0019)*6 + local pz1=math.sin(4.92+t*0.0027)*6 + local px2=math.sin(8.34-t*0.0015)*5 + local py2=math.sin(4.89-t*0.0035)*5 + local pz2=math.sin(5.85+t*0.0068)*5 + local px3=math.sin(5.96-t*0.0004)*4 + local py3=math.sin(9.88+t*0.0032)*4 + local pz3=math.sin(6.67+t*0.0042)*4 + for x=-15,15 do + local dx1=(x-px1)^2 + local dx2=(x-px2)^2 + local dx3=(x-px3)^2 + for y=-15,15 do + local dy1=(y-py1)^2 + local dy2=(y-py2)^2 + local dy3=(y-py3)^2 + for z=-15,15 do + local dz1=(z-pz1)^2 + local dz2=(z-pz2)^2 + local dz3=(z-pz3)^2 + local d1=math.sqrt(dx1+dy1+dz1) + local d2=math.sqrt(dx2+dy2+dz2) + local d3=math.sqrt(dx3+dy3+dz3) + local s1=1-(d1/3) + local s2=1-(d2/3) + local s3=1-(d3/3) + local s=math.max(math.max(s1,s2),s3) + s=math.min(0.5,math.max(s,0)) + if s>0 then + prepare(obj,s,x,y,z,ry,dist,txElems) + end + end + end + end + table.sort(txElems,function(a,b)return a[3]>b[3]end) + render(txElems) + + + --fps() + local txt='We are thankful <3' + local tx=(240-#txt*6)/2 + local ty=100 + print(txt,tx,ty,0) + post() + print(txt,tx-1,ty,0) + print(txt,tx+1,ty,0) + print(txt,tx,ty-1,0) + print(txt,tx,ty+1,0) + print(txt,tx-1,ty-1,0) + print(txt,tx-1,ty+1,0) + print(txt,tx+1,ty-1,0) + print(txt,tx+1,ty+1,0) + print(txt,tx,ty,(math.floor(t)>>6)%4+12) +end diff --git a/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/mrsynackster.lua b/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/mrsynackster.lua new file mode 100644 index 000000000..032da7d99 --- /dev/null +++ b/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/mrsynackster.lua @@ -0,0 +1,36 @@ +s=math.sin +t=0 +function TIC() +cls(10) +for cx=0,10 do + circ(10+cx*30,5,20,12) + elli(10+cx*30,100,8,18,6) + for c2=0,3 do + fx=(240-(t%240)- cx*4-c2*50)%240 + fy= 10+cx*20+s(t/5+c2) + elli(fx,fy,12,3,2) + elli(fx-4,fy-1,2,2,12) + elli(fx+10,fy,4,4,2) + elli(fx-4,fy+s(t/5),1,1,0) + end +end +print("SQUID!",t%240,0) +rect(0,100,300,50,6) + +xp=122+s(t/10)*10 +yp=50 +circ(xp,yp,40,4) +--LE +xle = xp+10 +yle = yp - 8 +circ(xle,yle,12,12) +circ(xle+7-(s(t/10)*5),yle,6-(s(t)),0) +--RE +xre = xp - 20 +yre = yp - 8 +circ(xre,yre,12,12) +circ(xre+7-(s(t/10)*5),yre,6-(s(t)*2),0) +--m +elli(xp,yp+16,16,12,0) +t=t+1 +end \ No newline at end of file diff --git a/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..0882137f7 --- /dev/null +++ b/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,54 @@ +--tobach here +--GUESS WHO FELL ASLEEP +--TIME TO MAKE SOMETHING IN 30 MINS!!! +--greetz to synackster, evilpaul and truck <3 +sin=math.sin +cos=math.cos +abs=math.abs +function TIC() +t=time()//32 +cls(13) +rect(0,88,240,68,14) +circ(180,30,10,12) +line(180,30,180-sin(t/8)*8,30+cos(t/8)*8,0) +line(180,30,180-sin(t/60)*4,30+cos(t/64)*4,0) +circb(180,30,10,8) + +rect(15,60,5,50,3) +rect(15,70,90,20,3) +rect(100,80,5,30,3) +print("z",28+sin(t/4)*6,65-t*2%68,15) +rect(20,65,20,10,12) +circ(28,68+sin(t/16)*1.5,7,4) +rect(20,70,80,30,7) + +elli(175,80,40,30,12) +ellib(175,80,40,30,15) + +circ(120,50,8,12) +circ(90,45,6,12) +circ(70,50,4,12) +circ(50,60,3,12) +circb(120,50,8,15) +circb(90,45,6,15) +circb(70,50,4,15) +circb(50,60,3,15) + +rect(150,60,50,40,11) +rect(150,90,50,10,6) +rect(173,85,3,10,3) + +xval=sin(t/4+3/2)*12 +yval=-abs(sin(t/4)*16) +sheepval=math.floor(t/12) +rect(178+xval,93+yval,2,6,15) +rect(170+xval,93+yval,2,6,15) +elli(175+xval,90+yval,8,5,12) +circ(168+xval,90+yval,3,15) +print(sheepval,170,102) + +for i=0,3 do + print("sorry for oversleeping the stream, it won't happen next time i promise <3",240+i-t*5%1400,120+i-abs(sin(t/4)*8),i+8,true,2) +end + +end diff --git a/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/truck.fennel b/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/truck.fennel new file mode 100644 index 000000000..fbe0ea35a --- /dev/null +++ b/shader_file_sources/2023_01_30_byte_jam_monday_night_bytes/truck.fennel @@ -0,0 +1,117 @@ +;; title: THE LET US SEE IF I AM +;; author: CONNECTED GAME +;; desc: I AM! YAY! +;; script: fennel + +;; let's get rid of this cruft +;; does BOOT have to be first? +;; no. wtaf. + +(global T 0) + +(fn _G.BOOT [] + (global tt 0) +) + + +;; right so I'm gonna try to do +;; this thing my mom is doing +;; in a quilt right now in her +;; quilt group + +;; C: triangle, same width as D, +;; and um. gosh I have no idea +;; how to measure that. +;; hmmmm +;; well let's not measure, it's +;; like, a 45 degree angle. + +;; B is ... let's see +;; I notice Evilpaul is not trying +;; to translate a quilt pattern (: +;; B is an odd quad thing. +;; hmm how to do this... +;; right in 15 minutes? that ain't +;; happening (: + +;; ok that is not filled. +;; let's do a tri (: +;; I the confuzed are +;; what's great is that ... yeah +;; these need to rotate. so. yeah. +;; that's gonna be fun to do later. +(fn theC [x y w] + (local x1 x) + (local y1 y) + (local x2 (+ x w)) + (local y2 y) + (local x3 (+ x (/ w 2))) + (local y3 (+ y (* w .5))) + (tri x1 y1 x2 y2 x3 y3 8) + (line x y (+ x w) y 11) + (line x y (+ x (/ w 2)) + (+ y (* w .5)) 11) + (line (+ x (/ w 2)) + (+ y (* w .5)) + (+ x w) y 11) + ) + +;; D: big ol' square +(fn _G.theD [x y w h] + (rect x y w h 3) + (line x y (+ x w) y 2) + (line (+ x w) y (+ x w) (+ y w) 2) + (line (+ x w) (+ y w) x (+ y w) 2) + (line x y x (+ y w) 2) +) +;; + +; ok let's put something interesting +; in so you have more than orange +;; yes I forgot how to plot, cheat +;; sheet lookup gets +;; ok seriously. why is this not setting +;; also this editor's keys are whacked +(fn _G.TIC [] + (global T (+ T 1)) + ;; seriously this has no block copy? + ;; ok time for... yeah + (for [x 10 200 6] + (for [y 10 100 6] + (theD x y 30 30) + ) + ) + ;; you know, let's leave that (: + ;; let's draw more of these. + (for [x 50 150 15] + (for [y 30 100 15] + (theC x y 30) + ) + ) + ;; feedback time! + (for [x 0 240 2] + (for [y 0 136 3] + ;; why is this not working? + ;; local not let + (local p (pix x y )) + (pix (+ x 1) (+ y 2) p) + (local p (- (pix x (+ y 1) ) 3)) + (pix x y p) + ) + ) + ) + (for [x 0 240] +(for [y 0 136] +(local p (pix x y)) +(pix (+ x 1) (+ y 1) p ) +(pix (+ x ) (+ y ) p ) + +;; well this isn't at all correct +;; Imma just leave this here and +;; go do some fennel tic80 tommorrow +;; cuz it's been like... 6 weeks +;; and I forgot a ton (: + +) +) +;;(+ (* .5 x T) (* .3 y))) \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/alia.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/alia.lua new file mode 100644 index 000000000..508231241 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/alia.lua @@ -0,0 +1,14 @@ +p={} +TIC=load[[ +v=0 +for x=0,239 do +h=(p[x+1] or 0)*0.9+(fft(x)*(x+1)^.5) +p[x+1]=h +v=v*0.9+h +h=136-v*1.5 +line(x,136,x,h,(v^.5)*2+3) +if math.random()>v/16 then +circ(x,h,4,x%3+5) +end +end]] +SCN=load'y=... for x=0,239 do pix(x,y,pix(x+1,y+1))end' \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/orby.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/orby.lua new file mode 100644 index 000000000..e50e94e3b --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_orby_512/orby.lua @@ -0,0 +1,24 @@ +m=math +function BDR(y) +a=y-32 +b=240 +l=(a^2+b^2)^.5 +d=0 +for i=0,200 do +v=10*t+d*b/l +u=400*f*f*m.sin(v/1e3)+d*a/l +d=d+1e3-u +end +h=5e5//d +for i=0,15 do +poke(16320+i*3,m.min(255,64+y+h*f)) +end +if(a>0)then +c=(v//1e3)%2 +o=120+30*m.sin(v/6e4) +line(0,y,240,y,2) +line(o-h,y,o+h,y,(1-c)*12) +line(o-h/3,y,o+h/3,y,c*12) +end +end +TIC=load"cls(1+fft(1)*2)t=time(5)f=fft(1)print('INFINITE PICNIC BLANKET',55,10,12,12,1)" \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/alia.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/alia.lua new file mode 100644 index 000000000..ecca5d891 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/alia.lua @@ -0,0 +1 @@ +t=0s="t=t+1 for j=0,#s*9 do i=j//9k=j%9l=fft(1)*4print(s:sub(i,i),30*i-t,58+math.sin(t/9+i)*50-k,t+i+k*l*3,0,7+l)end"TIC=load(s) \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/pestis.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/pestis.lua new file mode 100644 index 000000000..351eee6e3 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/alia_vs_pestis_128/pestis.lua @@ -0,0 +1 @@ +TIC=load't=t+fft(1)cls(8)for i=9,499 do z=i/99x=(i^2.5-t)%499*z-50y=z*(9+i%39)rect(x,y,9*z,i,0)circ(x,y-t*9/y%99,5*z,z-5)end't=0 \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/.DS_Store b/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/.DS_Store new file mode 100644 index 000000000..e0b1a9bab Binary files /dev/null and b/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/.DS_Store differ diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/alia.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/alia.lua new file mode 100644 index 000000000..a61eb8798 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/alia.lua @@ -0,0 +1,6 @@ +t=0m=0q=math.sin +TIC=load[[s=0 +for i=0,8 do s=s+fft(1)end +print("HI SCORE", +q(t/8)*300-250,60-s,t/4,0,16)t=t+.1]] +SCN=load'y=... for x=0,239 do pix(x,y,pix(x,y+1)-(x%2+y%2))end' \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/mantratronic.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/mantratronic.lua new file mode 100644 index 000000000..b8f14bdb3 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/mantratronic.lua @@ -0,0 +1,8 @@ +r=rect +h,i,j,k,l=220,21,0,-1,-1 +function TIC()cls()for m=1,9 do +print("00",115,0,7)r(119,m*14,2,6,7)end +k=(i<20)and 1or(i>h)and -1or k +l=(j<20)and 1or(j>136)and -1or l +i=i+k*9*fft(2)j=j+l*9*fft(4)circ(i,j,5,6)s=(i-9)/h +r(9,j*(1-s),9,30,7)r(h,j*s,9,30,7)end \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/orby.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/orby.lua new file mode 100644 index 000000000..faf7fd09a --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/orby.lua @@ -0,0 +1,19 @@ +m=math +function TIC() +cls(8+fft(1)*2) +for x=0,240 do +a=x +b=240 +l=(a^2+b^2)^.5 +d=0 +for i=0,50 do +u=4e3+d*a/l%8e3-8e3 +v=4e3+(time()+d*b/l)%8e3-8e3 +d=d+m.max(m.abs(u),m.abs(v))-900 +end +h=m.min(138,1e6//d) +for y=0,h do +pix(x,y,(y*d//1e5)%4+9) +end +end +end \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/tobach.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/tobach.lua new file mode 100644 index 000000000..863d19ca5 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/battle_jam/tobach.lua @@ -0,0 +1 @@ +cr=circ r=rect m=math s=m.sin function TIC()t=time()//32 r(0,80,240,99,14)f=fft(7)*32 for i=0,3 do cr(68+i*32,109,8,2)end r(0,0,240,80,15)for i=0,60 do line(55,10+i,180,10+i,i*f+t/9)end for i=0,1 do r(60+i*98,99,15,60,9)cr(70+i*88,99-s(t+i)*6,15,4)end end diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/.DS_Store b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/.DS_Store new file mode 100644 index 000000000..74fbaea4b Binary files /dev/null and b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/.DS_Store differ diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/gasman.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/gasman.lua new file mode 100644 index 000000000..130a6a3b6 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/gasman.lua @@ -0,0 +1,11 @@ +m=math +s=m.sin +c=circ +function TIC()t=time()cls(8)rect(0,70,240,100,5)y=m.min(0,s(t/100))*15 +c(150,50+y,25,4)for i=0,7 do +q=200+i*8 +elli(q,70,10,20,15-i/3)c(190-i*4,90+i*8,15,i-t/100) +x=60+i%2*50 +rect(x,90+y,8,40,0)c(60+i%4*20,60+y+i//4*20,25,12) +end +end diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/pestis.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/pestis.lua new file mode 100644 index 000000000..9f174bdee --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_pestis_256/pestis.lua @@ -0,0 +1 @@ +t=0TIC=load'cls(8)for w=0,99,.01 do r=w+(s(w*9.7)+s(t*2.6)*3)*w*s(w*3)x=s(w+t*6)*r*2+99y=s(w+8+t*4.7)*r-w+140+s(w^2.5+t)*9k=s(w+t*7)*5*w/99 for n=0,2 do circ(x+n*5,y,k,r/19%4+4+n)end end print("fluffy toxic cloud",9,9,12)t=t+fft(1)/99's=math.sin \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/.DS_Store b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/.DS_Store new file mode 100644 index 000000000..788d5c1ec Binary files /dev/null and b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/.DS_Store differ diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/gasman.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/gasman.lua new file mode 100644 index 000000000..4aebf9ad8 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/gasman.lua @@ -0,0 +1,16 @@ +-- enjoy the party! +m=math +s=m.sin +c=m.cos +function TIC()t=time()for y=0,136 do for x=0,240 do +a=8*s(t/5000)S=10+5*s(t/1000)X=(x*c(a)+y*s(a))/S +Y=(y*c(a)-x*s(a))/S +pix(x,y,(X//1~Y//1)+t/100) +end end +b=85-fft(1)*10 +m={"it looks like","you're writing","a rotozoomer.","want some help?"} +rect(100,8,90,42,4)tri(180,50,190,60,190,50,4) +for i=0,3 do +ellib(200+i,90,10,30,14)ellib(200+i,80,10,20,14)elli(190+15*(i//2),b,5,2,12)elli(190+15*(i//2),b,2,2,0)print(m[i+1],102+2*c(i+t/120),12+i*10+2*s(i+t/100),i) +end +end diff --git a/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/tobach.lua b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/tobach.lua new file mode 100644 index 000000000..2b659f908 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_battle_lovebyte/gasman_vs_tobach_512/tobach.lua @@ -0,0 +1,8 @@ +s=math.sin c=math.cos r=rect cr=circ +function TIC() +cls(13)t=time()/32r(30,0,170,130,12)rectb(30,0,170,130,14)f=fft(3) +for i=0,20 do line(40,10+i*6,40+(f*75)+s(t/2+i/2*i)%8*7,10+i*6,15)end r(0,128,240,9,14) +for i=0,14 do r(0+i*16,129,14,5,13)end +for i=0,110 do for j=0,2 do cr(100+s(i/8)*(8+i/5)-j+s(t/8)*4,60+c(i/8)*(32+i/4)-j,4,15-j)end end +for i=0,1 do cr(80+i*32+s(t/8)*4,40,5,12)cr(80+i*32+s(t/8)*4,40,2,15)end +print("your arrays\nstart at 1\nwould you like\nhelp with that?",140,50+s(t/6)*4,15+t/4%5)end \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/blossom.lua b/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/blossom.lua new file mode 100644 index 000000000..1f3a7c258 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/blossom.lua @@ -0,0 +1,81 @@ +function SCN(l) +poke(16320,l) +poke(16320+3,l) +end + +W=240 +H=136 +m=math +pi2=m.pi*2 +F=20 + +txt={" ","E","N","J","O","Y"," ","L","O","V","E","B","Y","T","E"} + +function blossom(x,y,t,s,n,k) + +r=m.sin(t/9)+fft(3)*F/8 +for p=1,n do +d=s*(2+fft(3)*3) +dx=m.sin(r+(p/n)*pi2)*d +dy=m.cos(r+(p/n)*pi2)*d +circ(x+dx,y+dy,s+1,k) +circ(x+dx,y+dy,s,12) +end + +circ(x,y,s*2,k) + +end + +function bg(u,v,t,h) +cx=u-W/2 +cy=v-H/2+h + +z=m.sqrt(cy*cy)+.1 +fx=cx*(fft(1)+4)/z +fy=H/z-(10+fft(2)*2) + +tx=m.atan(fx,fy)*9+t +ty=m.sqrt(fx*fx+fy*fy)*(2+fft(2)) + +k=(tx//1)~(ty//1) +k=17-k%6 +pix(u,v,ty<20 and k or 0) +end + +t=0 +function TIC() +t=t-fft(1)*.1-.2 + +h=fft(2)*F-F/4 + +for u=0,W do for v=0,H do +bg(u,v,t,h) +end end + + +b=15 +for i=1,b do +x=W/2 +y=H/2+h + +x=x+m.sin(i*pi2/b+t/9)*80 +s=m.cos(i*pi2/b+t/9)*2+5 +k=3-(i+fft(3)*10)%5 +y=y+m.sin(i+t)*s*s*.5 + +blossom(x,y,t,s,6+i%4,k) + +j=1+i%15 +print(txt[j],x-s-1,y-s-1,12,1,s/2) +print(txt[j],x-s+1,y-s+1,12,1,s/2) +print(txt[j],x-s,y-s,1,1,s/2) +end + +s2=8+fft(4)*2 +k2=1 +blossom(20,20,t,s2,7,k2) +blossom(W-20,20,t,s2,7,k2) +blossom(20,H-20,t,s2,7,k2) +blossom(W-20,H-20,t,s2,7,k2) + +end diff --git a/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/mantratronic.lua b/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/mantratronic.lua new file mode 100644 index 000000000..58e3cea23 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/mantratronic.lua @@ -0,0 +1,205 @@ +-- mt here +-- ^ +-- gl tobach, visy, blossom + +m=math +s=m.sin +c=m.cos +r=m.random +tau=m.pi*2 + +-- when life doesn t give you lemons +lemons={} +col={} +rd={} +np=20 +nl=20 +nc=5 + +magicy=4 + +ffth={} + +function BOOT() + for h=1,nc do + for i=1,nl do + local points={} + local rands={} + for j=1,np do + points[j]=0 + rands[j]=r()*5 + end + lemons[i]=points + rd[i]=rands + end + col[h]=lemons + end + + + for h=1,nc do + ffth[h]={} + for i=1,nl do + ffth[h][i]=0 + end +-- ffth[i]=fftl + + end +end + +function clamp(x,a,b) + return m.max(a,m.min(b,x)) +end + +lt=0 +function TIC()t=time() + + vbank(1) + cls() + + for i=0,15 do + poke(0x3fc0+i*3,i*15) + poke(0x3fc0+i*3+1,i*15) + poke(0x3fc0+i*3+2,i*8) + end + + + if t-lt>40 then + for h=1,nc do + for i=nl,2,-1 do + ffth[h][i]=ffth[h][i-1] + end + ffth[h][1]=10*fft(h) + end + end + + t=t/1000 + for h=1,nc do + lemons={} + for i=1,nl do + local points={} + for j=1,np do + local a=j/np * tau + d=(rd[i][j]+20+10*ffth[h][i]) + p={x=s(a+t)*d*s(i/nl*math.pi), + y=(i-(nl/2))*magicy, + z=c(a+t)*d*s(i/nl*math.pi)} + a=t/4+h + points[j]={x=p.x*s(a)-p.y*c(a), + y=p.y*s(a)+p.x*c(a), + z=p.z} + end + lemons[i]=points + end + col[h]=lemons + end + + for h=1,nc do +-- lemons=col[h] + for i=1,nl do +-- local points=lemons[i] + for j=1,np-1 do + sp = col[h][i][j] + ep = col[h][i][j+1] + + sz=sp.z-100 + sx=120+sp.x*99/sz -140 +h*50 + sy=68+sp.y*99/sz + + ez=ep.z-100 + ex=120+ep.x*99/ez -140 +h*50 + ey=68+ep.y*99/ez + + if(ez+sz)>-200 then + + line(sx,sy,ex,ey,clamp(sz+90,0,15)) + end + end + sp = col[h][i][np] + ep = col[h][i][1] + + sz=sp.z-100 + sx=120+sp.x*99/sz -140 +h*50 + sy=68+sp.y*99/sz + + ez=ep.z-100 + ex=120+ep.x*99/ez -140 +h*50 + ey=68+ep.y*99/ez + + line(sx,sy,ex,ey,clamp(sz+90,0,15)) + end + end + + vbank(0) + cls() + circ(40,40,40,15) + tt=t%4 + if tt <1 then + len=print("LOVE",-100,60,12,true,3) + print("LOVE",42-len/2,20,12,true,3) + len=print("BYTE",-100,60,12,true,3) + print("BYTE",42-len/2,43,12,true,3) + elseif tt <2 then + len=print("20",-100,60,12,true,4) + print("20",42-len/2,18,12,true,4) + len=print("23",-100,60,12,true,4) + print("23",42-len/2,43,12,true,4) + elseif tt <3 then + len=print("MT",-100,60,12,true,6) + print("MT",44-len/2,25,12,true,6) + else + len=print("LOVE",-100,60,12,true,3) + print("LOVE",42-len/2,20,12,true,3) + len=print("BY TEA",-100,60,12,true,2) + print("BY TEA",42-len/2,43,12,true,2) + end + + memcpy(0x4000,0,40*240) + cls() + + size=80+60*fft(1) + for x=0,size do + for y=0,size do + px=x-size/2 + py=y-size/2 + + a=m.atan2(px,py) + d=(px^2+py^2)^.5 + d=d*(d/(size/2))^fft(1) + + ix=d*s(a)+40 + iy=d*c(a)+40 + pix(px+120,py+68,peek4(0x8000+ix+iy//1*240)) + end + end + +end + +-- +-- 001:eccccccccc888888caaaaaaaca888888cacccccccacc0ccccacc0ccccacc0ccc +-- 002:ccccceee8888cceeaaaa0cee888a0ceeccca0ccc0cca0c0c0cca0c0c0cca0c0c +-- 003:eccccccccc888888caaaaaaaca888888cacccccccacccccccacc0ccccacc0ccc +-- 004:ccccceee8888cceeaaaa0cee888a0ceeccca0cccccca0c0c0cca0c0c0cca0c0c +-- 017:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec +-- 018:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee +-- 019:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec +-- 020:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee +-- + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000 +-- + +-- +-- 000:100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/tobach.lua b/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/tobach.lua new file mode 100644 index 000000000..5d202de12 --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/tobach.lua @@ -0,0 +1,77 @@ +--greetz to ferris, blossom +--mantra and visy <3 + +stars={} +planets={} + +sin=math.sin +cos=math.cos + +for i=0,200 do +stars[i]={math.random()*240,math.random()*136} +end + +for i=0,10 do +planets[i]={math.random()*300,math.random()*136,math.random()*8} +end + +function SCN(scnln) + if scnln>=0 and scnln<=16 then + poke(0x3ff9,sin(t/8+scnln/16)*16) + else + poke(0x3ff9,0) + end +end + +function TIC() + cls() + t=time()//32 + fv=fft(2)+fft(3)+fft(4)*512 + --print(fv) + print("LOVEBYTE 2023",45,0,12,true,2) + for i=0,200 do + pix((stars[i][1]-(t/8*i/5))%240,(stars[i][2]+sin(t/16+i/64)*8)+16,15-i/64-fv/2) + end + for i=1,10 do + planet((planets[i][1]-(t/4*i/32)*16)%300-20,planets[i][2]+sin(t/16+i/32)*2+32,10-planets[i][3]) + end + planet(120,128+sin(t/8)*2,35) + + ufoy=sin(t/8)*8 + + smolshp(0,8-t/2%52) + + for i=0,40,2 do + pix(120+sin(i/8+t/8)*8,48+i+ufoy,12+i+t) + pix(120+sin(i/8+t/8+1.5)*8,48+i+ufoy,12+i+t) + pix(120+sin(i/8+t/8+4)*8,48+i+ufoy,12+i+t) + end + + circ(120,40+ufoy,10,10) + circb(120,40+ufoy,10,9) + elli(120,48+ufoy,32,6,13) + ellib(120,48+ufoy,32,6,14) + + for i=1,3 do + print("FEEL THE LOVE",40+i+sin(t/4)*8,136-16+i,0+i+t/4%8,true,2) + end +end + +function planet(x,y,s) + circ(x,y,s,14) + circ(x,y,s-2,13) + circ(x-17,y,s-21,14) + circ(x+1-17,y-1,s-22,13) + circ(x-17+20,y+12,s-23,14) + circ(x+1-17+20,y-1+12,s-24,13) + circ(x-17+30,y-4,s-23,14) + circ(x+1-17+30,y-1-4,s-24,13) +end + +function smolshp(x,y) + elli(120+x,90+y,4,2,12) + elli(116+x,88+y,1,2,15) + for i=1,2 do + line(114+i*4+x,92+y,114+i*4+x,95+y,15) + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/visy.lua b/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/visy.lua new file mode 100644 index 000000000..ba694ea5a --- /dev/null +++ b/shader_file_sources/2023_02_10_byte_jam_lovebyte/byte_jam/visy.lua @@ -0,0 +1,115 @@ +a=0 +x=120 +y=68 +px = x +py = y +dd = 1 +t = 0 +ini = 0 +steps = 0 +f = 0 + +function forward(d) + x=x+dd*(math.cos(a)*d) + y=y+dd*(math.sin(a)*d) +end + +function rotate(angle,pos) + local sign = pos and 1 or -1 + a = a + sign*angle +end + +function aa() + return math.abs(math.cos(time()*0.01)*time()*0.01) +end + +function rr() + for i=0,steps do + + rotate(aa(),false) + + forward(8) + circ(x,y,math.cos(aa())*fft(i)*20,15) + line(px,py,x,y,math.abs(aa()/4)+1) + + px = x + py = y + if x < 0 then x = 120 px = x dd = -dd end + if x > 240 then x = 120 px = x dd = -dd end + + if y < 0 then y = 68 py = y dd = -dd end + if y > 136 then y = 68 py = y dd = -dd end + + end +end + +ff = 0 + +function TIC() + t=time()*0.01 + t = math.floor(t) + if (ini == 0) then cls(0) ini = 1 end + + steps = 64 + + rr() + f=f+1 + if(f%4 == 0) then + local xo=0 + local yo=0 + + if ff==0 then + xo = 0 + yo = 0 + end + + if ff==1 then + xo = 1 + yo = 1 + end + + if ff==2 then + xo = 1 + yo = 0 + end + + if ff==3 then + xo = 0 + yo = 1 + end + + ff = ff + 1 + ff = ff % 4 + + for y=xo,136,2 do + for x=yo,240,3 do + g = pix(x,y) + if (g > 0) then g=g-1 end + pix((x&y+t),(t/2%4)+t/3) + pix(x,y,g) + end + end + + end + + print("LOVEBYTE",0,0,1) + + zz = math.cos(t*0.1)*16 + for yy=0,4 do + for xx=0,48 do + cc = pix(xx,yy) + circ(xx*8-58+math.sin(t*0.1)*72,math.cos(t*0.1+xx*0.1)*32+zz+48+yy*8-1,3,cc*((xx+8)/8)) + end + end + + print("LOVEBYTE",0,0,0) + + memcpy(0,1,(240*68)-1) + +end + +function scanline(row) +if (row % 3 == 1 and row > 8) then + poke(0x3FF9,math.cos(row/4*t*0.1)*2) +end +end \ No newline at end of file diff --git a/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..8a3f65650 --- /dev/null +++ b/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,194 @@ +-- hello from gasman! Good to be back... +-- greetings to my fellow jammers +-- ^ +-- luchak, jtruk and tobach + +-- alrighty! +-- the big idea for tonight is: +-- gouraud shading. +-- because it's the one thing that +-- tic80 doesn't give you for free, +-- so I have to write my own triangle +-- rasteriser. + +-- "we do these things, not because +-- they are easy, but because they +-- look really cool" - J.F.Kennedy + +for i=0,15 do + poke(16320+i*3,i*15) + poke(16321+i*3,i*15) + poke(16322+i*3,i*15) +end + +vertices = { + {-1, -1, -1}, + {-1, -1, 1}, + {-1, 1, 1}, + {-1, 1, -1}, + {1, 1, -1}, + {1, 1, 1}, + {1, -1, 1}, + {1, -1, -1}, +} +faces={ + {1,2,3}, + {1,3,4}, + {2,7,6}, + {2,6,3}, + {7,8,5}, + {7,5,6}, + {8,1,4}, + {8,4,5}, + {4,3,5}, + {3,6,5}, + {1,8,2}, + {8,7,2}, +} +m=math + +-- ok, time to actually do the thing +-- and write a triangle rasteriser + +function mytri(x1,y1,z1,x2,y2,z2,x3,y3,z3,c) + x1=x1//1;y1=y1//1 + x2=x2//1;y2=y2//1 + x3=x3//1;y3=y3//1 + ymin=m.min(y1,y2,y3) + ymax=m.max(y1,y2,y3) + xmin={} + zmin={} + xmax={} + zmax={} + for y=ymin,ymax do + xmin[y]=999 + zmin[y]=0 + xmax[y]=0 + zmax[y]=0 + end + + if y1<=y2 then + xa=x1;ya=y1;za=z1;xb=x2;yb=y2;zb=z2 + else + xa=x2;ya=y2;za=z2;xb=x1;yb=y1;zb=z1 + end + dy=yb-ya + dx=(xb-xa)/dy + dz=(zb-za)/dy + x=xa + z=za + for y=ya,yb do + if xxmax[y] then + xmax[y]=x + zmax[y]=z + end + x=x+dx + z=z+dz + end + + if y1<=y3 then + xa=x1;ya=y1;za=z1;xb=x3;yb=y3;zb=z3 + else + xa=x3;ya=y3;za=z3;xb=x1;yb=y1;zb=z1 + end + dy=yb-ya + dx=(xb-xa)/dy + dz=(zb-za)/dy + x=xa + z=za + for y=ya,yb do + if xxmax[y] then + xmax[y]=x + zmax[y]=z + end + x=x+dx + z=z+dz + end + + if y2<=y3 then + xa=x2;ya=y2;za=z2;xb=x3;yb=y3;zb=z3 + else + xa=x3;ya=y3;za=z3;xb=x2;yb=y2;zb=z2 + end + dy=yb-ya + dx=(xb-xa)/dy + dz=(zb-za)/dy + x=xa + z=za + for y=ya,yb do + if xxmax[y] then + xmax[y]=x + zmax[y]=z + end + x=x+dx + z=z+dz + end + + for y=ymin,ymax do + z=zmin[y] + dz=(zmax[y]-z)/(xmax[y]-xmin[y]) + for x=xmin[y],xmax[y] do + pix(x,y,z) + z=(z+dz) + end + end + +end + +function TIC() + cls() + t=time() + ra=t/1000 + rb=t/1234 + rc=t/1345 + vt1={} + vt2={} + vt={} + vs={} + for i=1,8 do + v=vertices[i] + vt1={ + v[1]*m.cos(ra)+v[3]*m.sin(ra), + v[2], + v[3]*m.cos(ra)-v[1]*m.sin(ra), + } + vt2={ + vt1[1]*m.cos(rb)+vt1[2]*m.sin(rb), + vt1[2]*m.cos(rb)-vt1[1]*m.sin(rb), + vt1[3] + } + vt[i]={ + vt2[1], + vt2[2]*m.cos(rc)+vt2[3]*m.sin(rc), + vt2[3]*m.cos(rc)-vt2[2]*m.sin(rc), + } + vs[i]={ + 120+vt[i][1]*32, + 68+vt[i][2]*32, + (vt[i][3]+1)*5 + } + end + for i=1,12 do + f=faces[i] + v1=vs[f[1]] + v2=vs[f[2]] + v3=vs[f[3]] + -- z component of cross product + xpz=(v2[1]-v1[1])*(v3[2]-v1[2])-(v2[2]-v1[2])*(v3[1]-v1[1]) + if xpz>0 then + mytri(v1[1],v1[2],v1[3],v2[1],v2[2],v2[3],v3[1],v3[2],v3[3],i+1) + end + end +end diff --git a/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..6d064ff6b --- /dev/null +++ b/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,103 @@ +t=0 +M=math +S=M.sin +C=M.cos +R=M.random + +T=0 +m1=0 +m2=0 +m3=0 +m4=0 +function TIC() + cls() + + for r=3,0,-1 do + for i=0,3 do + x=((r+i)*47)%240 + y=100-M.abs(S(i+m1))*5 + h=(20+i*10)*(r+1) + hH=20+S(T*i)*10 + lH=10+(10*(r+i)%40) + c=4+i*2 + drawRobot(x,y,h,hH,lH,c*2,x*y*.001) + end + end + + xOfs=m1 + yOfs=m2 + for y=0,136 do + for x=0,239 do + p=pix(x,y) + if((x+xOfs)%20<4 and ((y+yOfs)%20<4))then + pix(x,y,p+1) + end + end + end + + for c=0,10 do + print("Discooo",10+C(m2+c)*10,5+S(m1+c)*5,c,1,5) + end + print("I have no idea what this is",50+S(T*.3)*40,120,12) + + T=T+0.1 + + m1=m1+fft(0)*.6 + m2=m2+fft(1)*.6 + m3=m3+fft(1)*.3 + m4=m4+fft(0)*0.2 +end + +function drawRobot(x,y,h,headH,legH,c,ofs) + c1=(c%15)+1 + c2=((c+1)%15)+1 + bodyX=x-legH+S(m1+ofs)*20 + waistY=y + bodyH=h/2 + bodyW=40+S(m1*10)*10 + headY=waistY-bodyH + headX=bodyX + headW=20 + headH=headH + feetY=waistY+legH + -- body + rect(bodyX-bodyW/2,waistY-bodyH,bodyW,bodyH,c1) + + -- head + rect(bodyX-headW/2,headY-headH,headW,headH,c2) + + -- leye + lEyeY=headY-headH/2+S(T*1.2)*3 + elli(headX-10,lEyeY,5,3,12) + circ(headX-10+S(T),lEyeY,3,0) + + -- reye + rEyeY=headY-headH/2+S(T)*3 + elli(headX+10,rEyeY,5,3,12) + circ(headX+10+S(T),rEyeY,3,0) + + lFootX=x-10+S(m2)*5 + rFootX=x+10+S(m3)*5 + tri(bodyX-10,waistY,bodyX-15,waistY,lFootX,feetY,12) + tri(bodyX+10,waistY,bodyX+15,waistY,rFootX,feetY,12) + + lShoulderX=bodyX-bodyW/2 + lShoulderY=headY + lArmX=lShoulderX+C(m4)*20 + lArmY=lShoulderY+S(m4)*20 + tri(lShoulderX,lShoulderY,lShoulderX,lShoulderY+2,lArmX,lArmY,12) + + lHandX=lArmX+C(m3)*10 + lHandY=lArmY+S(m3)*10 + tri(lArmX,lArmY,lArmX,lArmY+4,lHandX,lHandY,12) + + rShoulderX=bodyX+bodyW/2 + rShoulderY=headY + rArmX=rShoulderX-C(m4)*20 + rArmY=rShoulderY-S(m4)*20 + tri(rShoulderX,rShoulderY,rShoulderX,rShoulderY+4,rArmX,rArmY,12) + + rHandX=rArmX+C(m2)*10 + rHandY=rArmY+S(m2)*10 + tri(rArmX,rArmY,rArmX,rArmY+4,rHandX,rHandY,12) +end diff --git a/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/luchak.lua b/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/luchak.lua new file mode 100644 index 000000000..291bb3475 --- /dev/null +++ b/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/luchak.lua @@ -0,0 +1,194 @@ +l=45+2 +m=80+2 + +_u={} +_v={} +_div={} +_p={} +_d={} +_dt=.2 + +function BOOT() + for y=0,l-1 do + for x=0,m-1 do + i=y*m+x + _u[i]=0 + _v[i]=0 + _p[i]=0 + _d[i]=0 + end + end + fixbnd(_u) + fixbnd(_v) + fixbnd(_p) + fixbnd(_d) +end + +function fixbnd(g) + for i=1,m-2 do + g[i]=g[m*(l-2)+i] + g[m*(l-1)+i]=g[m+i] + end + for i=1,l-2 do + g[m*i]=g[m*i+m-2] + g[m*i+m-1]=g[m*i+1] + end + g[0]=g[m*(l-2)+m-2] + g[m-1]=g[m*(l-2)+1] + g[m*(l-1)]=g[m+m-2] + g[m*l-1]=g[m+1] +end + +function advect(g) + local u=_u + local v=_v + local dt=_dt + local n={} + for y=1,l-2 do + for x=1,m-2 do + i=y*m+x + sx=math.min(math.max(x-dt*u[i],0),m-1-.00001) + sy=math.min(math.max(y-dt*v[i],0),l-1-.00001) + fx=sx//1 + fy=sy//1 + si=fy*m+fx + v0=g[si]+(sx-fx)*(g[si+1]-g[si]) + v1=g[si+m]+(sx-fx)*(g[si+m+1]-g[si+m]) + n[i]=v0+(sy-fy)*(v1-v0) + end + end + return n +end + + +frame=0 +pal=0 +smooth=0 +last=0 +phase=0 +text_x=0 +text_y=0 +text_frame=-100 +thresh=0.02 +function TIC() + frame=frame+1 + local u=_u + local v=_v + local div=_div + local p=_p + local d=_d + cls(0) + + x0=30+10*math.sin(frame/30)//1 + smooth=smooth+0.5*(fft(0)-smooth) + if smooth>thresh and last0 and "byte" or "jam", + text_x,text_y,1,false,2) + for y=1,l-2 do + for x=1,m-2 do + if peek4(y*240+x)>0 then + d[y*m+x]=4 + end + end + end + end + last=smooth + + for y=40,41 do + for x=x0,x0+5 do + i=y*m+x + v[i]=-5 + --d[i]=d[i]+1 + end + end + fixbnd(u) + fixbnd(v) + fixbnd(d) + + for y=1,l-2 do + for x=1,m-2 do + i=y*m+x + div[i]=u[i+1]-u[i-1]+v[i+m]-v[i-m] + end + end + fixbnd(div) + + for k=1,4 do + for y=1,l-2 do + for x=1,m-2 do + i=y*m+x + p[i]=(p[i+1]+p[i-1]+p[i-m]+p[i+m]-div[i])*0.25 + end + end + fixbnd(p) + end + + for y=1,l-2 do + for x=1,m-2 do + i=y*m+x + u[i]=u[i]*.998+(p[i-1]-p[i+1])/2 + v[i]=v[i]*.998+(p[i-m]-p[i+m])/2 + d[i]=d[i]*.998 + end + end + fixbnd(u) + fixbnd(v) + + nu=advect(u) + nv=advect(v) + u=nu + v=nv + + fixbnd(u) + fixbnd(v) + + d=advect(d) + fixbnd(d) + + local diff={} + for y=1,l-2 do + for x=1,m-2 do + local i=y*m+x + diff[i]=d[i+1]+d[i-1]+d[i+m]+d[i-m]-4*d[i] + end + end + fixbnd(diff) + + for y=1,l-2 do + for x=1,m-2 do + i=y*m+x + --line(x*3,y*3,x*3+2*u[i],y*3+2*v[i],8) + --rect(x*3,y*3,3,3,div[i]) + rect(x*3,y*3,3,3,pal+math.max(math.min(8*diff[i]+d[i],8),0)) + end + end + + if frame%480<240 then + for y=-68,67 do + for x=-120,119 do + th=math.atan(y,x) + z=math.sqrt(x*x+y*y+1) + Y=(frame+2000/z)%45//1+1 + X=th*80//6.29%80+1 + i=m*Y//1+X//1 + pix( + x+120, + y+68, + pal+math.max(math.min(8*diff[i]+d[i],8),0) + ) + end + end + end + + _u=u + _v=v + _d=d +end diff --git a/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..fafde9904 --- /dev/null +++ b/shader_file_sources/2023_02_20_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,83 @@ +-- ^ +--tobach here!! +--greetz to newcomers luchak and jtruk +--and also gasman ofc :) <3 +sin=math.sin +cos=math.cos +function TIC() + cls(10) + t=time()//32 + fv=fft(0)+fft(1)+fft(2)*12 + print(fv) + + for j=0,136,2 do + for i=0,240,2 do + sv=10+sin(i/16+cos(t/27)*6)*sin(j/16+sin(t/16)*6+sin(i/8+t/4)+sin(j/16)*2) + pix(i,j,sv) + pix(i+1,j,sv+1) + pix(i,j+1,sv+1) + pix(i+1,j+1,sv) + + end + end + + rect(60,10,50,200,4) + rect(50,10,100,10,13) + + rect(50,10,10,100,13) + + rect(140,10,10,100,13) + + for i=0,4 do + rect(63+i*16,25,10,10,15) + end + + rect(8,32,180,80,15) + rect(10,30,180,80,14) + + circ(50,70,25,13) + circ(150,70,25,13) + + circ(50,70,17+fv/2,15) + circ(150,70,17+fv/2,15) + + circb(50,70,5+fv/2,14) + circb(150,70,5+fv/2,14) + + for i=0,3 do + circ(60+i*13,8,7,4) + end + + rect(80,60,40,20,13) + + line(100,79,100+sin(fv-1)*16,62,1) + line(101,79,101+sin(fv-1)*16,62,2) + + circ(105,18,8,4) + rect(160,50,80,100,2) + for i=0,30 do + line(120-i,110+i,190-i,110+i,2) + end + + head(0+fv*2) + +end + +function head(y) + + circ(200,62+y,55,4) + rect(148,42+y,80,3,15) + rect(155,40+y,35,20,0) + rect(205,40+y,35,20,0) + rect(190,90+y,30,4,15) + tri(190,80+y,200,60+y,200,80+y,3) + + + for i=0,10 do + circ(155+i*8,30-sin(i/4+0.2)*20+y,8,15) + end + + rect(165,34+y+sin(t/2)*fv/2,20,3,14) + rect(205,30+y+sin(t/2+1)*fv/2,20,3,14) + +end \ No newline at end of file diff --git a/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..640562ed1 --- /dev/null +++ b/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,102 @@ +particles={} +count=64 +t=0 + +function BOOT() + for i=1,count do + particles[i]={ + x=math.random(0,240), + y=math.random(0,136), + dx=math.random()*2+1,---1.5, + dy=math.random()*3-2.5 + } + end + + vbank(1) + for i=0,3 do + print("=^^=",195-i,i,i+8,0,2) + end + for i=0,3 do + print("=^^=",i,i,i+1,0,2) + end + for i=0,3 do + print("=^^=",i,120-i,7-i,0,2) + end + for i=0,3 do + print("=^^=",195-i,120-i,15-i,0,2) + end + vbank(0) +end + +function length(v) + return (v.x*v.x+v.y*v.y)^0.5 +end + +function TIC() + cls() + + t=math.max(0,t*0.9+fft(1)/3) + + local parts2={} + for i=1,count do + parts2[i]=particles[i] + end + + for i=1,count do + local p=particles[i] + --pix(p.x,p.y,12) + + table.sort(parts2, function(a,b) + local v1={x=a.x-p.x,y=a.y-p.y} + local v2={x=b.x-p.x,y=b.y-p.y} + return length(v1)0.0008) then inblob=true end + + if inblob then + + patwidth = 5+1000*sound + 5*(1+sin(phase*0.8)) + ox = 120*(1+sin(6.28*t/10)) + oy = 68*(1+sin(6.28*t/10 + 2.13)) + px = sx - ox + py = sy - oy + a0 = px * ct + py * st + a1 = px * st - py * ct + n0 = a0 // patwidth + n1 = a1 // patwidth + n = ( (n0~n1) ) %5 + col=5 + if (0==n) then + col=4 + end + end + + pix(sx,sy,col) + + end + end + + shx = 120+ 100*sin(phase*1.3) + shy = 68 + 50*sin(phase*4.3+2.5) + for i,liss in pairs(lissas ) do +-- circ(liss.x,liss.y,5,14) + end + + splay = 8+2*cos(27*phase) + for dx=0,3 do + line(shx-8+dx, shy, shx+dx-splay, shy+24,0) + line(shx+8-dx, shy, shx-dx+splay, shy+24,0) + end + + elli(shx,shy,18,16,12) + elli(shx-12,shy-8,10,14,30) + circ(shx-18,shy-10,4,12) + circ(shx-8,shy-10,4,12) + + e1x = shx-18+3*cos(phase*8) + e1y = shy-8 +3*sin(phase*8) + circ(e1x,e1y,2,0) + + e2x = shx-8+3*cos(phase*8+1.2) + e2y = shy-8 +3*sin(phase*8+1.2) + circ(e2x,e2y,2,0) + + + +end \ No newline at end of file diff --git a/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/mrsynackster.lua b/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/mrsynackster.lua new file mode 100644 index 000000000..37871b85f --- /dev/null +++ b/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/mrsynackster.lua @@ -0,0 +1,25 @@ +t=0 +s=math.sin +function TIC() +cls() +t=t+.05 +for y=0,135 do + for x=0,239 do + if(y%4==0) then + pix(x+s(t)*8,y+s(t)*2,s(x*y/((t*.5)+100+s(t)*3))*8+t) + end + if(y%13==0 and x%17==0) then + pix(x+s(t)*4,y+s(t)*2,s(x*y/((t*.5)+100+s(t)*4))*8+t+1) + end + if(y%11==0 and x%13==0) then + pix(x,y,x^y+8/t) + end + + if(x%22==0 and y%11==0) then + circ(x+s(y+(t*2)),y+(t*2%68),s(t)*4,x/y) + end + + end +end + +end diff --git a/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..37406a6d3 --- /dev/null +++ b/shader_file_sources/2023_02_27_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,96 @@ +--greetz to alia, +--synackster and doop <3 + +fruits={} +fruits2={} + +text="EAT UR FRUIT!!!" + +for i=1,8 do + fruits[i]={math.random()*256,math.random()*300,math.random()*10} +end + +for i=1,4 do + fruits2[i]={math.random()*256,math.random()*300} +end + +tv=true +tx=0 + +sin=math.sin +cos=math.cos +abs=math.abs +function TIC() + t=time()//32 + cls(10) + + fval=fft(0)+fft(1)+fft(2)*512 + for k=0,1 do + for j=0,8 do + for i=0,6 do + circ(i*64+k*32+2+sin(t/16)*16,2+j*64+k*32+cos(t/16)*16,8+fval/32,9) + circ(i*64+k*32+sin(t/16)*16,0+j*64+k*32+cos(t/16)*16,8+fval/32,11) + end + end + end + + --hmmmm what else to add.... + --i know! >:) + for i=1,#fruits2 do + pinapple(-30+(fruits2[i][1]+sin(t/16+i)*16+t*(2+i/2))%280,-40+(fruits2[i][2]+t*3)%300) + end + + for i=1,#fruits do + banana(fruits[i][1]+sin(t/16+i)*32,-40+(fruits[i][2]+t)%300,fruits[i][3]) + end + + if tx>=100 then tv=false + elseif tx<=-100 then tv=true + end + if tv==false then tx=tx-1 + elseif tv==true then tx=tx+1 end + tomato(120+tx,118-abs(sin(t/8))*32) + + sintext(text,23,6,3) + sintext("ONE OF UR 5 A DAY",5,102,2) + sintext("INNIT",80,120,2) + +end + +function banana(x,y,offset) + t2=sin(t/8)+5 + for i=0,40 do + circ(x+sin(i/16+t2+offset)*32,y+cos(i/16+t2+offset)*32,sin(i/12)*6+3,3) + end + for i=0,40 do + circ(x+sin(i/16+t2+offset)*32,y+cos(i/16+t2+offset)*32,sin(i/12)*6+2,4) + end + circ(x+sin(t2+2.5+offset)*32,y+cos(t2+2.5+offset)*32,4,1) +end + +function tomato(x,y) -- ;) + elli(x,y,21,19,1) + elli(x,y,20,18,2) + tri(x,y-20,x,y+10-20,x+10,y-20,7) +end + +function pinapple(x,y) + + for i=0,4 do + tri(x-20+i,(y-20)-i*5,x,(y-20)+10-i*5,x+20-i,(y-20)-i*5,6) + trib(x-20+i,(y-20)-i*5,x,(y-20)+10-i*5,x+20-i,(y-20)-i*5,7) + end + + elli(x,y,20,30,1) + elli(x,y,18,28,4) + +end + +function sintext(text,x,y,amp) + for i=1,#text do + c=text:sub(i,i) + for j=0,2 do + print(c,x+i*12+j,y+amp*sin((t*32+i*64)/90)+j,14-j+t/4,true,2) + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_03_02_shader_showdown_instanssi/r1_Gemppu.glsl b/shader_file_sources/2023_03_02_shader_showdown_instanssi/r1_Gemppu.glsl new file mode 100644 index 000000000..483ee37cf --- /dev/null +++ b/shader_file_sources/2023_03_02_shader_showdown_instanssi/r1_Gemppu.glsl @@ -0,0 +1,68 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float circleSDF(vec2 uv, vec2 p, float r){ + return length(p-uv)-r; +} + +vec2 rot(vec2 p1, vec2 p2, float r){ + vec2 p = p1-p2; + float x = sin(r)*p.x+cos(r)*p.y; + float y = sin(r)*p.x-cos(r)*p.y; + return vec2(x,y); +} + +void main(void) +{ + vec2 uv = out_texcoord; + vec2 tv = uv; tv.y = -tv.y; + + uv -= 0.5 + uv /= vec2(v2Resolution.y / v2Resolution.x,1); + + //vec2 m; + //m.x = atan(uv.x, uv.y) / 3.14; + //m.y = 1 / length(uv) * .2; + //float d = m.y; + + //float f = texture( texFFT, d ).r * 100; + //m.x += sin( fGlobalTime ) * 0.1; + //m.y += fGlobalTime * 0.25; + + //vec4 t = plas( m * 3.14, fGlobalTime ) / d; + //t = clamp( t, 0.0, 1.0 ); + vec4 pallot = vec4(1.); + vec4 col = vec4(vec3(1.),1.){ + vec2 p = vec2(mod(fGlobalTime,2)+f-5.,0.); + float s = float(.5 0.9){ + return vec4(1.0); + } + vec3 col = vec3(1.0,0.0,1.0)*exp(-3.0*(1.0-x)); + + return vec4(col,1.0); + +} + +void main(void) +{ + vec2 uv = out_texcoord; + uv -= 0.5 + uv /= vec2(v2Resolution.y / v2Resolution.x,1); + + vec4 col = vec4(0.0,0.0,0.0,1.0); + + if(uv.y <0.0){ + col += map(pow(cos(20.0*sqrt(sqrt(abs(uv.y))) - 8.0*fGlobalTime),8.0)); + col += map(pow(cos(15*atan(uv.y,uv.x)),8.0)); + + } + + + + float f = texture( texFFT, 0.1 ).r * 100, + + vec2 xy = 2.0*((1.0+0.25*f)*vec2(uv.x, -uv.y); + + vec4 tex = texture(texTex1,xy); + + float f2 = texture(texFFT, abs(0.5*uv.x)).r *100; + + if(uv.y> 0.0){ + vol += vec4(f2,0.0,f2,1.0); + + col += vec4(0.0,0.0,1.0,1.0)*exp(-10.0*pow(uv.x,2.0)); + + col += tex;} + + /* + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture ( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) *0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + */ + + out_color = col; + +} diff --git a/shader_file_sources/2023_03_02_shader_showdown_instanssi/r3_NordicGoat.glsl b/shader_file_sources/2023_03_02_shader_showdown_instanssi/r3_NordicGoat.glsl new file mode 100644 index 000000000..c2ed70274 --- /dev/null +++ b/shader_file_sources/2023_03_02_shader_showdown_instanssi/r3_NordicGoat.glsl @@ -0,0 +1,106 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float l1norm(vec2 xy){ + return abs(xy.x) +abs(xy.y); +} + +vec3 map(float x){ + if(x < 0.9){ + return vec3(0.8,0.0,0.0); + } + return vec3(0.8,0.8,0.8)*exp(-2.0*pow(1.0-x,2.0)); +} + + +vec4 addImg(vec2 uv, float scale){ + + vec2 coord = (uv - vec2(0.5))/scale + vec2(0.5); + + if( abs(coord.x - 0.5) < 0.5 && abs(coord.y - 0.5) < 0.5){ + + return texture(texTex1,uv); + } + + return vec4(0.0); +} + +void main(void) +{ + vec2 uv = out_texcoord; + vec2 xy = out_texcoord; + + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x,1); + + uv.x += 0.01*sin(float(int(10.0*uv.y) % 4))*sin(fGlobalTime); + uv.y += 0.01*sin(2.0*float(int(10.0*uv.x) % 4))*sin(fGlobalTime); + /* + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture ( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) *0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + + */ + + vec3 col = vec3(0.0); + + + float scale = 1.0 + 2.0*texture(texFFTSmoothed,0.1).r *100; + + + col += map(pow(cos(10.0*pow(l1norm(uv),2.0) -2.5*fGlobalTime ),2.0))*exp(-2.0*length(uv)); + + + float angle = 0.1*atan(uv.y, uv.x)/3.14; + float fft = sqrt(sqrt(1.0*texture(texFFT,abs(angle)).r)); + + + if(length(uv) < .25+ .5*fft ){ + col += vec3(0.0,0.0,0.0)*exp(-2.5*length(uv)); + } + + if(l1norm(uv) < 0.24*scale ){ + + col = vec3(1.0,0.2,0.0); + + } + + + if (l1norm(uv) <0.2*scale ){ + + col = vec3(.0,1.0,0.0); + + } + + //HEI MAAILMA!!! + + + out_color = vec4(col,1.0) + addImg(vec2(xy.x,1.0-xy.y),1.0)*exp(-scale);; + + //KIITOS INSTANSSI!! +} diff --git a/shader_file_sources/2023_03_02_shader_showdown_instanssi/r3_papu.glsl b/shader_file_sources/2023_03_02_shader_showdown_instanssi/r3_papu.glsl new file mode 100644 index 000000000..187b0c12d --- /dev/null +++ b/shader_file_sources/2023_03_02_shader_showdown_instanssi/r3_papu.glsl @@ -0,0 +1,79 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float E = 0.001; + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float sdbox(in vec2 p, in vec2 b) { + vec2 d = abs(p)-b; + return length(max(d,0))+min(max(d.x,d.y),0); +} + +void main(void) +{ + vec2 uv = out_texcoord; + uv.y += texture(texFFTSmoothed,floor(uv.x*10.)*.1).x*200; + vec2 tv = uv; + tv.y = -tv.y; + uv -= 0.5 + uv /= vec2(v2Resolution.y / v2Resolution.x,1); + uv.y *=-1; + uv.x *= sin(texture(texFFTSmoothed, uv.y*0.001).x); + + vec2 m; + m.x = atan(uv.x, uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y*0.01; + + float f = texture( texFFTSmoothed, d ).r * 10; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + + vec4 dragon_c = texture(texTex1, tv+vec2(fGlobalTime)*vec4(1.,.3,1.,1.); + vec2 qv = uv*6. + vec2(-.9,.5); + float a = sdbox(qv, vec2(1.,1.)); + + if (a < E) { + vec2 qqv = qv; + qqv.x += sin(qv.x + fGlobalTime) - cos(qv.y + fGlobalTime); + qqv.y += -sin(qv.y + fGlobalTime) + cos(qv.x + fGlobalTime); + dragon_c = texture(texTex3, qqv/2+vec2(.5))* dot(texture(texTex4, qqv/2+vec2(.5)).rgb, normalize(vec3(1.,1.,0.))); + dragon_c *= 1. + texture(texFFTSmoothed, 0.02).x*300*vec4(4,1,2,1); + } + + vec2 qv1 = uv*6*vec2(sin(fGlobalTime), -cos(fGlobalTime)) + vec2(1.4+sin(fGlobalTi me), -1.6+cos(fGlobalTime)); + float b = sdbox(qv2, vec2(1.,1.)); + if (b < E) { + dragon_c = texture(texTex3, qv2/2+vec2(.5)); + dragon_c *= 1. + texture(texFFTSmoothed,0.02).x*300,vec4(2,4,2,1); + } + + vec4 moiNormal = texture(texTex2, tv); + + out_color = (f + t)*.1 + dragon_c * dot(moiNormal.rgb, normalize(vec3(1.,1.,0.))); +} diff --git a/shader_file_sources/2023_03_02_shader_showdown_instanssi/textures.zip b/shader_file_sources/2023_03_02_shader_showdown_instanssi/textures.zip new file mode 100644 index 000000000..841b83b0c Binary files /dev/null and b/shader_file_sources/2023_03_02_shader_showdown_instanssi/textures.zip differ diff --git a/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..4e70fdcb6 --- /dev/null +++ b/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,124 @@ +pe={} +ps={} +fe={} +gen={"boy","girl","enby","cat",0} + +k=math.random + +function rot2d(v,a) + return { + x=(math.cos(a)*v.x)-(math.sin(a)*v.y), + y=(math.cos(a)*v.y)+(math.sin(a)*v.x) + } +end + +function BOOT() + for i=1,16 do + pe[i]={ + x=k()*239, + y=k()*135, + dx=k()*2-1, + dy=k()*2-1, + f=false, + g=math.random(1,#gen), + fs=0, + c=0, + t=false + } + + ps[i]={ + x=k()*239, + y=k()*135, + dx=k()*2-1, + dy=k()*2-1, + hist={}, + f=false + } + h={} + for j=1,15 do + ps[i].hist[j]={x=ps[i].x,y=ps[i].y} + end + end +end + +t=0 + +function length(v) + return (v.x*v.x+v.y*v.y)^.5 +end + +function TIC() + cls() + t=t+0.1 + + for i=1,#pe do + local e=pe[i] + for j=0,2 do + local f=e.f and 11 or 2 + circ(e.x,e.y,5-j,f+j) + end + e.x=(e.x+e.dx)%240 + e.y=(e.y+e.dy)%136 + e.dx=e.dx*.95 + e.dy=e.dy*.95 + if e.f then + local g=gen[e.g] + g=g==0 and "trans rights!" or g + print(g,e.x+7,e.y-7,12) + e.c=e.c-1 + if e.c==0 then + e.f=false + e.dx=math.random()*10-5 + e.dy=math.random()*10-5 + ps[e.fs].f=false + ps[e.fs].x=math.random()*239 + ps[e.fs].y=math.random()*136 + end + end + + local s=ps[i] + if s.f~=true then + for h=#s.hist,1,-1 do + if h==1 then + s.hist[h].x=s.x + s.hist[h].y=s.y + end + if h<#s.hist then + s.hist[h+1].x=s.hist[h].x + s.hist[h+1].y=s.hist[h].y + end + + for j=0,1 do + circ( + s.hist[h].x,s.hist[h].y, + ((h==1 and 3 or 2-j)+(#s.hist-h)/4)/2, + 12+j) + end + end + s.x=(s.x+s.dx)%240 + s.y=(s.y+s.dy)%136 + + --local v={x=s.dx,y=s.dy} + --local u=rot2d(v,t) + --s.dx=u.x + --s.dy=u.y + s.dx=s.dx+math.sin(t*.26*4*8)*.05 + s.dy=s.dy+math.sin(t*.26*4)*.05 + + for t=1,#pe do + local v={x=s.x-pe[t].x,y=s.y-pe[t].y} + if length(v)<5 and pe[t].f ~= true then + --fe[#fe+1]={x=s.x,y=s.y} + s.f=true + pe[t].f=true + pe[t].c=60*4 + pe[t].fs=i + end + end + end + + end + + + print("Game of Life",80,130,12) +end diff --git a/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..06f1544d4 --- /dev/null +++ b/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,88 @@ +-- gasman is here! +-- greetings to my fellow jammers +-- (unnecessary accent) -> ^ +-- visy, kii and alia +-- synesthesia for the mix +-- and aldroid for putting it all +-- together! + +for i=0,15 do + poke(16320+i*3,i*15) + poke(16320+i*3+1,i*15/4) + poke(16320+i*3+2,i*15) +end + +function brick(x,y,z,s,w,h) + if z<1000 then + c1=10+5*math.sin(time()/300) + c2=10+5*math.cos(time()/300) + for a=x,w+x-1 do + for b=y,y+h-1 do + bricklet( + 120+2*(a-b)*s, + 60+(a+b)*s-z,s, + c1, + c2 + ) + end + end + end +end +function bricklet(x,y,s,c1, c2) +tri(x,y,x+2*s,y+s,x+2*s,y-s,8) +tri(x+2*s,y+s,x+2*s,y-s,x+4*s,y,8) +tri(x,y,x,y+2*s,x+2*s,y+s,c1) +tri(x,y+2*s,x+2*s,y+s,x+2*s,y+3*s,c1) +tri(x+2*s,y+s,x+4*s,y,x+4*s,y+2*s,c2) +tri(x+2*s,y+s,x+2*s,y+3*s,x+4*s,y+2*s,c2) +elli(x+2*s,y,s,s/2,c1) +rect(x+s,y-s/2,2*s+1,s/2,c1) +elli(x+2*s,y-s/2,s,s/2,12) +end + +oldbricks={} +obc=0 +endz=30 +cb={0,0,2,2,endz} +z=100 + +function TIC() +t=time()/100 +cls() +for i=1,obc do + b=oldbricks[i] + brick(b[1],b[2],b[5]-t,5,b[3],b[4]) +end + +brick( + cb[1], + cb[2],z-t, + 5,cb[3],cb[4] +) +if z<=endz then + obc=obc+1 + oldbricks[obc]=cb + endz=t+30 + if math.random()<0.5 then + cb={ + math.random(0,10), + math.random(0,10), + 2, + math.random(2,8), + endz + } + else + cb={ + math.random(0,10), + math.random(0,10), + math.random(2,8), + 2, + endz + } + end + z=endz+100 +else + z=z-2 +end + +end diff --git a/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/kii.lua b/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/kii.lua new file mode 100644 index 000000000..f9524297b --- /dev/null +++ b/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/kii.lua @@ -0,0 +1,119 @@ +lastChange=0 +effect=0 + +function TIC() + cls(9) + t=time()//32 + + if (time()-lastChange>5000) then + effect=(effect+1)%3 + lastChange=time() + end + + rect(90,10,120,26,0) + rect(95,10,100,16,15) + print("Classic viz vol. 1",97,17,12) + + rect(10,36,220,100,13) + + max=0 + maxBass=0 + maxMid=0 + maxHigh=0 + for i=0,254 do + if (fft(i)>max) then + max=fft(i) + end + + if (i>=16 and i<128) then + if (fft(i)>maxMid) then + maxMid=fft(i) + end + end + + if (i>=128 and i<255) then + if (fft(i)>maxHigh) then + maxHigh=fft(i) + end + end + + if (i>=0 and i<16) then + if (fft(i)>maxBass) then + maxBass=fft(i) + end + end + end + + if (effect==1) then + for y=41,131 do + for x=15,180 do + pix(x,y,(x+y+t)>>3) + end + end + end + + if (effect==2) then + for y=41,131 do + for x=15,180 do + pix(x,y,10*max+math.sin(x/8)+math.sin(y/16)+t/8) + end + end + end + + if (effect==1) then + for y=41,131 do + for x=15,180 do + x1=math.atan2(y,x) + y1=(x*x+y*y+1)^0.5 + c=(x1//1)~(y1//1)+t + pix(x,y,c*math.sin(max+t/128)/20) + end + end + end + + if (effect==0) then + rect(15,41,165,90,15) + for x=15,180 do + mag=32*math.sin(2*math.pi*(x/50)) + + y=mag*math.sin(x*maxBass)+82 + if (y>=41 and y<=131) then + pix(x,y,2) + end + + y=mag*math.sin(x*maxMid)+82 + if (y>=41 and y<=131) then + pix(x,y,4) + end + + y=mag*math.sin(x*maxHigh)+82 + if (y>=41 and y<=131) then + pix(x,y,6) + end + end + end + + circ(205,50,7,15) + + tri(205,45,209,49,201,49,2) + + circ(205,110,18,15) + for n=-20,20,9 do + for m=0,3 do + line(187,92+m+n,223,128+m+n,13) + end + end + + for n=0,1 do + for m=0,4 do + c=1 + if (max>0.2 and m==4) then c=6 end + if (max>0.4 and m==3) then c=6 end + if (max>0.6 and m==2) then c=6 end + if (max>0.8 and m==1) then c=2 end + if (max>0.95 and m==0) then c=2 end + + circ(200+10*n,62+6*m,2,c) + end + end +end diff --git a/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/visy.lua b/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/visy.lua new file mode 100644 index 000000000..d52462415 --- /dev/null +++ b/shader_file_sources/2023_03_06_byte_jam_monday_night_bytes/visy.lua @@ -0,0 +1,54 @@ +local lev = { +0,0,1,1,2,2,3,3, +0,0,1,1,2,2,3,3, +0,0,1,1,2,2,3,3, +0,0,1,1,2,2,3,3, +0,0,1,1,2,2,3,3, +0,0,1,1,2,2,3,3, +0,0,1,1,2,2,3,3, +0,0,1,1,2,2,3,3 +} + +local w = 14 +local h = 14 + +local tile_w = 16 +local tile_h = 8 + +xo = 112+tile_w/2 + +function tile(x,y,c,yo) + local xs = xo + (x-y) * tile_w/2 + local ys = yo + (x+y) * tile_h/2 + + + + line(xs,ys,xs-tile_h,ys+4,c) + line(xs,ys,xs+tile_h,ys+4,c) + line(xs-tile_w/2,ys+4,xs,ys+tile_h,c) + line(xs,ys+tile_h,xs+tile_w/2,ys+4,c) + + +-- rectb(xs,ys,tile_w,tile_h,c) + +end + +function TIC() + cls(0) + + t=time() % 4000 + + for z=1,h do + + for y=1,h do + for x=1,w do + local yy = 4-math.cos(x*0.5+y*0.5+t*0.01+z)*8 + + for yo = 0, yy do + yo = math.cos(time()*0.0003)*100+yo + math.cos(2.5+y*(t*0.0004 % 16)+x*10.5+t*0.005)*2-z*8 + tile(x,y,((t*0.001+x+y)%4+time()*0.004+z)%16 ,yo) + end + end + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/evilpaul.lua b/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/evilpaul.lua new file mode 100644 index 000000000..7aa5bc06c --- /dev/null +++ b/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/evilpaul.lua @@ -0,0 +1,134 @@ +mAbs=math.abs +mSqrt=math.sqrt +mClamp=function(a,min,max) + if amax then + return max + else + return a + end +end +mRandom=math.random +mFRandom=function(min,max) + return min+mRandom()*(max-min) +end +mLerp=function(a,min,max) + return min+a*(max-min) +end +mSin=math.sin +mCos=math.cos +mPi=math.pi +mTwoPi=mPi*2 + +startTime=tstamp() +function TIC() + local bpm=180 + local t=time()/1000*bpm/60 + local ta=t%1 + local tm=t//1 + math.randomseed(startTime+tm) + math.randomseed(mRandom()*12345) + + local numHubs=mRandom(3,10) + local numSpokes=mRandom(8,15) + local minD=mFRandom(-40,10) + local maxD=mFRandom(100,180) + local minSize=mRandom(1,10) + local maxSize=mRandom(1,10) + local minTwist=mFRandom(-5,.5) + local maxTwist=mFRandom(-5,.5) + + dots={} + local angleBase=mSin(2.32+0.75*t)+mSin(3.19+0.26*t) + for hub=1,numHubs do + local hubA=(hub-1)/(numHubs-1) + local d=mLerp(hubA,minD,maxD) + local size=mLerp(hubA,minSize,maxSize) + local twist=mLerp(hubA,minTwist,maxTwist) + for spoke=1,numSpokes do + local spokeA=spoke/numSpokes + local angle=angleBase+twist+mTwoPi*spokeA + local x=mSin(angle)*d + local y=mCos(angle)*d + dots[#dots+1]={x,y,size} + end + end + + local maxSizeMod=mFRandom(0,2) + local maxOfs=mFRandom(-2,2) + + cls(0) + local cx=120+mSin(5.32+0.34*t)*10+mSin(8.23+0.61*t)*10 + local cy=68+mSin(5.42+0.52*t)*10+mSin(7.41+0.39*t)*10 + for i=0,15 do + local iA=i/15 + local ofs=iA*maxOfs + local sizeMod=(15-i)*maxSizeMod + for _,dot in ipairs(dots) do + local x=dot[1] + local y=dot[2] + local size=dot[3] + circ(cx+x+x*ofs,cy+y+y*ofs,size+sizeMod,i) + end + end + + local r0=mLerp(mSin(3.21+0.32*t)*.5+.5,-5,5) + local r1=mLerp(mSin(5.42-0.53*t)*.5+.5,12,25) + local g0=mLerp(mSin(3.90+0.65*t)*.5+.5,-5,0) + local g1=mLerp(mSin(5.43-0.71*t)*.5+.5,7,15) + local b0=mLerp(mSin(4.03+0.86*t)*.5+.5,-2,2) + local b1=mLerp(mSin(1.90-0.74*t)*.5+.5,10,16) + for i=0,15 do + local iA=i/15 + poke(0x3fc0+i*3+0,mClamp(mLerp(iA,r0,r1),0,15)*16) + poke(0x3fc0+i*3+1,mClamp(mLerp(iA,g0,g1),0,15)*16) + poke(0x3fc0+i*3+2,mClamp(mLerp(iA,b0,b1),0,15)*16) + end + + local buf={} + for i=0,136*240 do + buf[i]=peek4(i) + end + + + local xReflect=mRandom()>.5 + local yReflect=mRandom()>.5 + local brightMod=(1-ta)^3*10 + local fish=mLerp(ta^.2,5,.1) + for y=0,135 do + local cy=y-68 + --if yReflect and cy>=0 then cy=-cy end + if yReflect then cy=mAbs(cy) end + local dy=cy^2 + for x=0,239 do + --if xReflect and cx>=0 then cx=-cx end + if xReflect then cx=mAbs(cx) end + local cx=x-120 + local dx=cx^2 + local d=mSqrt(dx+dy)+0.00001 + local nx=dx/d + local ny=dy/d + local dist=(d/140)^fish + local sx=120+cx*dist + local sy=68+cy*dist + local dc=(1-d/140)^.5 + local c=buf[sx//1+sy//1*240] + c=c*dc + c=c+mRandom()*1 + c=c+brightMod + pix(x,y,mClamp(c,0,15)) + end + end + + if t<16 then + if ta<.25 then + local txts={'YOU','KNOW','THE','SCORE'} + for i,txt in ipairs(txts) do + local y=-5+i*25 + local w=print(txt,-500,500,0,false,4) + print(txt,120-w/2,y,0,false,4) + end + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..475587d58 --- /dev/null +++ b/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,124 @@ +-- More robots! +S=math.sin +C=math.cos + +function makeRobot(x,y,o) + return { + x=x, + y=y, + ofs=o, + faceT=math.random(1,2), + faceW=math.random(30,60), + faceH=math.random(30,80), + faceC=math.random(1,11), + eyeC=math.random(1,11), + eyeLT=math.random(1,2), + eyeRT=math.random(1,2), + eyeBlOfs=math.random(0,10), + eyeBrOfs=math.random(0,10), + jawC=math.random(1,11), + jawT=math.random(1,2), + teethT=math.random(1,2), + } +end + +T=0 +R=0 +function TIC() + cls() + doFFT() + + for y=0,136 do + for x=0,240 do + c=((S(x//20)+C(y//20)+T/5)-T)%8 + pix(x,y,c) + end + end + + if(R%70==0)then + nrobot=#robots+1 + ofs=nrobot%2 + robots[nrobot]=makeRobot(-30,70,ofs) + end + + for i=1,#robots do + moveRobot(robots[i]) + drawRobot( + robots[i], + robots[i].faceW, + robots[i].faceH + ) + end + T=T+1 + R=R+1 +end + +FFT0=0 + +robots={} +function doFFT() + FFT0=0 + for i=0,6 do + FFT0=FFT0+fft(i)/7 + end +end + +function moveRobot(robot) + robot.x=robot.x+1 +end + +function drawRobot(robot,w,h) + x=robot.x + y=robot.y+math.abs(S(robot.ofs+T/12))*-20 + x0=x-w/2 + y0=y-h/2 + if(robot.faceT==1)then + rect(x0,y0,w,h,robot.faceC) + else + elli(x,y,w/2,h/2,robot.faceC) + end + xEl=x-w/3 + yEl=y-h/3 + xEr=x+w/3 + yEr=y-h/3 + drawE(robot,xEl,yEl,8,2,robot.eyeBlOfs,robot.eyeLT) + drawE(robot,xEr,yEr,8,3,robot.eyeBrOfs,robot.eyeRT) + xM=x + yM=y+h/2 + drawJ(robot,xM,yM+FFT0*80,w,8,6) +end + +function drawE(robot,x,y,w,ofs,type) + eyeBx=x+S(T/10+ofs*10)*w/3 + eyeBy=y+C(T/10+ofs*10)*w/3 + if(type==1)then +-- circ(x+1,y+1,w,0) + rect(x-w/2,y-w/2,w*2,w*2,robot.eyeC) + circ(eyeBx,eyeBy,w/3,0) + else + circ(x+1,y+1,w,0) + circ(x,y,w,robot.eyeC) + circ(eyeBx,eyeBy,w/3,0) + end +end + +function drawJ(robot,x,y,w,h) + x0=x-w/2 + + if(robot.teethT==1)then + for i=0,10 do + circ(x0+i*w/10,y-3,3,12) + end + else + for i=1,9 do + xt=x0+i*w/10 + tri(xt,y-8,xt-5,y,xt+5,y,12) + end + end + + if robot.jawT==1 then + rect(x0,y,w,h,robot.jawC) + else + elli(x,y,w/2,h/2,robot.jawC) + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..c50de5363 --- /dev/null +++ b/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,159 @@ +-- mantratronic here +-- gonna try some rubber ^ +-- greets to evilpaul jtruk and tobach +-- +reality and ash for the HARDCORE + +m=math +pi=m.pi + +w=12 +h=94 +lines={} +drawlines={} +numframes=120 +frames={} +fftt={} + +-- and heres something i prepared earlier +quips={"makes it possible", +"wears clogs", +"likes amiga", +"looks good in stripes", +"put a donk on it", +"pixels naked", +"offlines outlines", +"knocked out the power", +"hates > 160bpm", +"gets locked out of his own party", +"made the battles bangin", +"can combo maali and okkie", +"hates on stnicc animation ports", +"gets 400 copyright strikes in an hour", +"day bacons", +"lives in a windmill", +"drives sceners to airports at 2am", +"should be on livecode.demozoo.org", +"provides official fanta merchandise", +"needs to return to finland", +"made a demo about it", +"has scenecoins", +"can haka to mellow" +} + + +function BOOT() + for y=1,h do + ln={} + bend= 1.5*w*m.exp((y/h)^2)--+w/5 + + local k={cx=-bend,cy=y+(136-h)/2,r=-w/2} + local l={cx=0,cy=y+(136-h)/2,r=-w/2} + local o={cx=bend,cy=y+(136-h)/2,r=-w/2} + table.insert(lines,k) + table.insert(lines,l) + table.insert(lines,o) + end + + for j=1,numframes do + drawlines={} + a=j/numframes *2*pi + for i=1,#lines do + ln=lines[i] + cx=ln.cx + cy=ln.cy + x=ln.r + + a1=m.sin(a) + a2=m.sin(a+pi/2) + a3=m.sin(a+pi) + a4=m.sin(a+pi/2*3) + + ay=cx*m.sin(-a) + + x1=x*a1+ay + x2=x*a2+ay + x3=x*a3+ay + x4=x*a4+ay + + if (x1 +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..a9f203072 --- /dev/null +++ b/shader_file_sources/2023_03_13_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,58 @@ +--lets try this again shall we... +--greetz to mantratronic, evilpaul +--jtruk and reality \o/ <3 +sin=math.sin +cos=math.cos +fv2=0 +text="HARDCORE GREETZ GO OUT TO RIFT, TUHB, SLIPSTREAM, TREPAAN, DESIRE, MARQUEE DESIGN, UR MUM" +function TIC() + untz=fft(0)+fft(1)+fft(2)+fft(3)+fft(4)+fft(5)*512 + high=fft(200)+fft(201)+fft(202)+fft(203)*256 + cls(0) + t=time()//32 + + for j=0,136,2 do + for i=0,240,2 do + fv=i/32+sin(j/(4+untz/16)+sin(i/2+t/4)+t/16) + off=untz/32 + pix(i,j,8+fv%4-off) + pix(i+1,j,8+fv%4+1-off) + pix(i,j+1,8+fv%4+1-off) + pix(i+1,j+1,8+fv%4-off) + end + end + + for j=0,16 do + for i=0,32 do + --circ(i*8,j*32+sin(i+t/4)*untz/8,4,1+untz/32) + end + end + + sheep(-untz/8) + + --print(untz) + --print(fv2,0,6) + + for i=1,#text do + c=text:sub(i,i) + print(c,240+i*12-t*4%1500+1,116+sin(t/4+i*2)*untz/16+1,0,true,2) + print(c,240+i*12-t*4%1500,116+sin(t/4+i*2)*untz/16,untz/16,true,2) + end + +end + +function sheep(y) + + rect(102,90+y,5,20,0) + rect(137,90+y,5,20,0) + elli(122,70+y,35,25,0) + elli(95,57+y,10,13,0) + elli(157,77+y,4,10,0) + + rect(100,88+y,5,20,15) + rect(135,88+y,5,20,15) + elli(120,68+y,35,25,12) + elli(93,55+y,10,13,15) + elli(155,75+y,4,10,12) + +end \ No newline at end of file diff --git a/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..b52d611e9 --- /dev/null +++ b/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,66 @@ +cls() +s=math.sin +k=math.random +max=math.max +t=0 +t2=0 + +function mix(a,b,t) + return a*t+(b*(1-t)) +end + +function TIC() + t=t+1 + for i=1,10 do + t2=t2+fft(i) + end + + vbank(0) + memcpy(1,0,240*136/2-1) + for j=0,20 do + local y=k()*136 + local baseC=7+(j%2)*8 --13/5 + for i=0,2 do + circ(0,y,4-i,baseC-i) + end + end + + vbank(1) + cls() + for j=0,7 do + x=(j*40+t*4)%320-30 + y=68-max(0,s(j+t/10))+s((t/16)+j)*15 + for i=1,3 do + elli(x+i*2,y-i*1.5,30-i*6,20-i*4,i) --1-4 + end + + for g=0,7 do + for i=1,3 do + circ( + x-g-2+s(t2/5+g)*g/2, + y-i*1.5-g*2-15, + 7-(g^0.5)*2, + 7+i) --1-4 + end + end + + local ex=x+s(j+t/10)*20 + local ey=100-(max(0,s(j+t/10-11))*10) + local mx=(x+ex)/2 + local my=(y+ey)/2-20 + for i=0,1,0.1 do + local x=mix(x,mx,i) + local y=mix(y+7,my,i) + for f=0,2 do + circ(x,y,3+i*2-f,2+f) + end + end + for i=0,1,0.1 do + local x=mix(mx,ex,i) + local y=mix(my,ey,i) + for f=0,2 do + circ(x,y,3+i*2-f,2+f) + end + end + end +end diff --git a/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..a4689c3ff --- /dev/null +++ b/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,79 @@ +-- ^ +-- nobach here +-- (mantratronic) + +m=math +rand=m.random + +p={} + +bass=0 +bassh=0 +mid=0 +midh=0 +high=0 +function TIC()t=time()//32 +bass=0 +for i=0,9 do + bass=bass+fft(i) +end +bassh=bassh*9/10 + bass/10 +mid=0 +for i=10,49 do + mid=mid+fft(i) +end +midh=midh*9/10 + mid/10 +p={} +vbank(0) +cls() +l=print("3 WEEKS",-100,-100,12,false,5) +print("3 WEEKS",120-l/2,10,12,false,5) + +l=print("TO",-100,-100,12,false,5) +print("TO",120-l/2,40,12,false,5) + +l=print("REVISION",-100,-100,12,false,5) +print("REVISION",120-l/2,70,12,false,5) + +l=print("HYPE!!!!",-100,-100,12,false,5) +print("HYPE!!!!",120-l/2,100,12,false,5) + +l=print("irish sheep best sheep",200,230,12,false,1) +print("irish sheep best sheep",120-l/2,130,12,false,1) + +for y=0,136 do for x=0,240 do +if pix(x,y) == 12 then + if x < 80 then c = 6 + elseif x < 160 then c = 12 + else c = 3 + end + d=((x-120)^2+(y-68)^2)^.5 + a=m.atan2(x-120,y-68)+(t/200)%1*2*m.pi*m.cos(bassh*d/40+t/200) + w=d+10*m.sin(d/40*midh+t/99)+(t/111)%5 + nx=w*m.sin(a) + ny=w*m.cos(a) + table.insert(p,{nx,ny,c}) +end +end end +cls() + +vbank(1) +for i=1,5000 do + x=rand(240)-1 + y=rand(136)-1 + pix(x,y,m.max(pix(x,y)-1,0)) +end + +if t%4 == 0 then +cls() +end + +for i=1,#p do + pp=p[i] + pix(120+pp[1]+.5,68+pp[2]+.5,pp[3]) + pix(120+pp[1]-.5,68+pp[2]+.5,pp[3]) + pix(120+pp[1]+.5,68+pp[2]-.5,pp[3]) + pix(120+pp[1]-.5,68+pp[2]-.5,pp[3]) +end + +end \ No newline at end of file diff --git a/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/mrsynackster.lua b/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/mrsynackster.lua new file mode 100644 index 000000000..c3183fb00 --- /dev/null +++ b/shader_file_sources/2023_03_20_byte_jam_monday_night_bytes/mrsynackster.lua @@ -0,0 +1,35 @@ +cls(0) +t=0 +r=math.random +s=math.sin +h = 50 +w = 50 +sc = string.char +a = {} +hs = "HELLO FROMTHE MATRIX! : )" +hsl = string.len(hs) +for z=0,1250 do + chr = r(255) + ch = sc(chr) + table.insert(a,ch) +end + +for zy=0,hsl do + for zx=0,25,3 do -- half the rows + so = 51--r(10) + a[so+zy+(zx*50)]= hs:sub(zy,zy) + end +end + +function TIC() + cls(0) + for x=0,25 do + for y=0,50 do + c=a[x+(y*50)] + hd=(((x*10)+t)+(y%10))%200 + yd = y*12 + print(c,0+yd,0+hd,5,0,1) + end + end + t=t+.1 +end \ No newline at end of file diff --git a/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_evvvvil.glsl b/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_evvvvil.glsl new file mode 100644 index 000000000..e1ff83e17 --- /dev/null +++ b/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_evvvvil.glsl @@ -0,0 +1,119 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,e=vec2(.00035,-.00035);float tt,b=1,tn,g,bal,di,tu,pa,f;vec3 op,pp,np; +float smin(float a,float b,float k){float h=max(0.,k-abs(a-b));return min(a,b)-h*h*.25/k;} +float smax(float a,float b,float k){float h=max(0.,k-abs(-a-b));return max(-a,b)+h*h*.25/k;} +vec2 smin2(vec2 a,vec2 b,float k){float h=clamp((a.x-b.x)/k*.5+.5,0.,1.);return mix(a,b,h)-h*(1-h)*k;} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +vec2 mp( vec3 p ) +{ + op=p; + di=cos(p.y*.4); + p.xz=abs(p.xz)-6-2*di; + pp=p; + pp.xz*=r2(sin(p.y*.5+tt)); + np=vec3(atan(pp.x,pp.z)*1.5,pp.y*max(0.1,b),length(pp.xz)-2.5+abs(p.y)*.1); + np.xy=abs(abs(abs(np.xy)-11)-6)-3; + tn=texture(texNoise,np.xy*.1).r; + np+=tn*.9; + + vec2 h,t=vec2(length(np)-1.4,1); + t.x=smax(length(np-vec3(0,0,1))-1.3,t.x,.3); + bal=length(np)-.9; + bal=smin(bal,length(np.xz-vec2(0,.5)),.3); + bal=smin(bal,length(np.xz-vec2(0,1.5)),1.); + g+=0.1/(0.1+bal*bal*(40-39*sin(pp.y+tt*2.))); + t.x=min(t.x,bal); + np.xy=abs(np.xy)-1.6; + h=vec2(length(np.xz)-.5-sin(np.y*30)*.02,0); + + tu=max(length(np.xy)-.2,abs(np.z)-2-di); + t.x=smin(t.x,tu,.5); + op.xz*=r2(-.785); + op.xz=abs(op.xz); + op.xz*=r2(-.785); + t.x=smin(t.x,length(op.xy)-.3-sin(op.z*15)*.02,3.); + h.x=smin(h.x,.8*(length(np.yz-vec2(0,2.5+di))-.3),.5); + h.x=smin(h.x,p.y+tn-sin(length(p.xz)-tt*5-f)*.5,.5); + t=smin2(t,h,.75); + + np.z-=3*di; + np=abs(np)-di; + pa=length(np); + + vec3 rp=op; + rp.z=mod(rp.z,2)-1; + pa=min(pa,max(length(rp.xz),abs(op.y)-2)); + t.x=smin(t.x,pa,.5); + g+=0.1/(0.1+pa*pa*40); + t.x*=0.7; + return t; +} +vec2 tr( vec3 ro,vec3 rd ) +{ + vec2 h,t=vec2(.1); + for(int i=0;i<128;i++){ + h=mp(ro+rd*t.x); + if(h.x<.0001||t.x>80) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>80) t.y=-1; + return t; +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + f = texture( texFFT, 0.1 ).r * 30; + tt=mod(fGlobalTime,62.82); + float bro=ceil(cos(tt*.2)); + b=sin(tt*.5)*.5+.5; + vec3 ro=mix(vec3(sin(tt*.2)*12.,5.,cos(tt*.2)*22.), + vec3(cos(tt*.2)*2.,cos(tt*.2)*5.+20,sin(tt*.2)*25.), + bro), + cw=normalize(vec3(0.,10-bro*10,0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo,po,no,al,ld,re; + co=fo=clamp((vec3(.14,.1,.12)-length(uv)*.1)*(1-texture(texNoise,rd.xy*.5).r*2.5),0.,1.); + z=tr(ro,rd); + if(z.y>-1){ + po=ro+rd*z.x; + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x); + al=clamp(mix(vec3(.1,.2,.8)-tn*.5,vec3(1),z.y),0.,1.); + ld=normalize(vec3(.1,.2,.1)); + re=reflect(rd,no); + float dif=max(0.,dot(no,ld)), + sp=length(sin(re*4)*.5+.5)/sqrt(3), + fr=1-pow(dot(rd,no),2), + ao=clamp(mp(po+no*.1).x/.1,0.,1.), + ss=smoothstep(0.,1.,mp(po+ld*.4).x/.4); + co=pow(sp,10)*fr+al*(ao+.2)*(dif+ss*.5); + co=mix(fo,co,exp(-.00001*z.x*z.x*z.x)); + } + co+=g*.3*mix(vec3(.7,.2,1.),vec3(.1,.2,.7),b); + out_color = mix(vec4(pow(co,vec3(.45)),1),texture(texPreviousFrame,gl_FragCoord.xy / v2Resolution),0.5 ); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_flopine.glsl b/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_flopine.glsl new file mode 100644 index 000000000..254d24b6e --- /dev/null +++ b/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_flopine.glsl @@ -0,0 +1,127 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define circ(u,s) (length(u)-s) +#define PI acos(-1) +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define hash21(x) fract(sin(dot(x,vec2(134.2, 234.1)))*467.1) +#define pal(t,c) (vec3(.6)+vec3(.3)*cos(PI*2*(c*t+vec3(.4,.6,.8)))) + +float tru (vec2 uv) +{ + vec2 id = floor(uv); + uv = fract(uv)-.5; + if(hash21(id*.1)>.6) uv.x *= -1.; + + if(hash21(id*.2)>.5) + { + vec2 uu = uv; + float s = (uv.x>-uv.y) ? 1.:-1.; + uv -= .5*s; + float d = abs(circ(uv, .5)); + + uv = uu; + uv = abs(uv)-.5;; + d = min(d, circ(uv,.0)); + + return d; + + } + else + { + uv = mod(uv,.5)-.25; + float s = (uv.x>-uv.y) ? 1.:-1.; + uv -= .25*s; + return .25-abs(circ(uv, .25)); + } + + + } +void mo (inout vec2 p, vec2 d) + { + p = abs(p)-d; + if(p.y>p.x)p=p.yx;; + } + + float extrude (vec3 p, float d, float h) + { + vec2 q = vec2(d, abs(p.z)-h); + return min(0., max(q.x, q.y))+length(max(q,0.)); + } + + float SDF (vec3 p) + { + p.xy *= rot(p.z*.1); + + p.yz *= rot(PI/5.); + p.z += fGlobalTime*3.+texture(texFFTSmoothed, 0.01).x*10.; + + mo(p.xy,vec2(2.5)); + mo(p.xz,vec2(2.)); + + float d = extrude(p, abs(abs(tru(p.xy)-.25)-.1), 0.01)-.05; + d = min(d,extrude(p, tru(p.xy), 0.01+texture(texFFT, 0.01).x*.5)-.05) ; + return d;; + } + + vec3 gn (vec3 p) + { + vec2 eps = vec2(0.01,0);; + return normalize(SDF(p)-vec3(SDF(p-eps.xyy),SDF(p-eps.yxy),SDF(p-eps.yyx))); + } + + float AO (vec3 p, vec3 n, float e) + {return clamp(SDF(p+e*n)/e,0.,1.);} + +void main(void) +{ + vec2 uv = (2.*gl_FragCoord.xy-v2Resolution.xy) / v2Resolution.y; + vec2 uu = gl_FragCoord.xy/v2Resolution.xy; + vec3 ro = vec3(0.001,-1.,-3.), rd=normalize(vec3(uv,1.)),p=ro, + col=vec3(0.); + + bool hit = false; + float t=0.; + for(float i=0.; i<64.; i++) + { + p = ro+t*rd; + float d = SDF(p); + if (d<0.01) + { + hit=true; + break; + } + t += d*.8; + } + if (hit) + { + vec3 n = gn(p); + float ao = AO(p,n,0.1)+AO(p,n,0.2)+AO(p,n,0.25);; + col = vec3(1.-ao/3.)*pal(p.y, vec3(.1))*texture(texFFTSmoothed, 0.01).x*10.; + } + col = mix(col, vec3(.1), 1.-exp(-0.001*t*t)); + //vec3 col = vec3(tru(uv*5.)); + out_color = vec4(col,1.); + out_color += vec4(texture(texPreviousFrame, uu*.96+length(uv)*0.01).r, + texture(texPreviousFrame, uu*.96+length(uv)*0.015).g, + texture(texPreviousFrame, uu*.96+length(uv)*0.02).b, + 1.)*.5; +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_totetmatt.glsl b/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_totetmatt.glsl new file mode 100644 index 000000000..de60ba426 --- /dev/null +++ b/shader_file_sources/2023_04_07_shader_showdown_revision/final/grabber_BACK2EWERK_totetmatt.glsl @@ -0,0 +1,102 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +// With 5 T >> TOTETMATT << here, I'm still not a robot +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float bpm = texture(texFFTIntegrated,.3).r+fGlobalTime*.5; +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +float rnd(vec2 p){ + return fract(865.5*sin(dot(p,vec2(542.25,752.23)))); + } +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(0.,.3,.5)));} +vec2 sdf(vec3 p){ + vec2 h; + vec3 hp=p; + float tt=texture(texRevision,clamp((hp.xz*(.1-texture(texFFTSmoothed,.3).r*1))+.5,0.,1.)).r; + h.x = dot(hp,vec3(0.,1.,0))-tt*.1+texture(texNoise,hp.xz*.1).x*.1; + h.y = 1.+tt; + + vec2 t; + vec3 tp=p; + t.x = 100; + for(float i=0,im=8;i++et) break; + } + return t; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + g(); + + vec2 m;m.x = atan(uv.x / uv.y) / 3.14;m.y = 1 / length(uv) * .2;float d = m.y; + float f = texture( texFFTSmoothed, uv.x*.5-.5 ).r * 100;m.x += sin( fGlobalTime ) * 0.1;m.y += fGlobalTime * 0.25;vec4 t = plas( m * 3.14, fGlobalTime ) / d; + + vec3 p0=vec3(0,0,-4+T*4+H2*5), d0=normalize(vec3(uv.xy,+1+length(uv)*.5)); + d0.xy*=rot(T/4); + d0.xz*=rot(sin(ST/2)*.25); + d0.yz*=rot(sin(ST/4)*.25); + + vec3 c=vec3(0); + vec3 w=vec3(1); + + for (int i=0; i<1; i+=1){ + float dist=trace(p0,d0,1e-3,1e+4); + vec3 p1=dist*d0+p0; + c=fract(p1); + } + + for (int i=0;i<100;i+=1){ + p0+=d0*df(p0); + } + c=p0; + vec3 n=nf(p0,1e-3); + float fr=1.0+dot(d0,n); + c=(n*.5+.5)*.1+fr; + + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; + out_color.xyz=c+t.xyz/4+f*.1; + + c=out_color.xyz; + c*=1-length(uv); + vec3 C=mix(vec3(4,2,1), vec3(1,2,4), smoothstep(.1,.2,sin(T/3))); + c*=C*1.9; + c+=c.zyx*.1; + c=1.4*c/(1+c); + + out_color.xyz=c; + + +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_dok.glsl b/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_dok.glsl new file mode 100644 index 000000000..9fced39c1 --- /dev/null +++ b/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_dok.glsl @@ -0,0 +1,85 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float p2(vec2 p, vec2 uv, float r) { + + return 1.0-step(r, length(uv -p)); +} +mat2 rot2(float a){return mat2(cos(a), sin(a), -sin(a), cos(a));} +void main(void) +{ + vec2 uv = gl_FragCoord.xy / v2Resolution.y; + vec2 UV = gl_FragCoord.xy - 0.5 * v2Resolution / v2Resolution.y; + vec3 col = vec3(0); + uv *= mix(1.0,2., texture(texFFT,0.01).r); + UV=uv * rot2(fGlobalTime*00.1) + vec2(0.5,0) * sin(fGlobalTime) + vec2(0.0,0.2) * sin(fGlobalTime); + switch(int(fract(fGlobalTime*175.0/120.0)*8)) { + case 4: + case 5: + case 6: + case 7: + case 1: + for (float i = 0.0; i < 4.0; i+=0.1) { + vec2 r = v2Resolution / v2Resolution.y; + vec2 d = vec2(0.4, 0.7); + vec2 p = d * (fGlobalTime - i*mix(0.8,1.2,sin(fGlobalTime))); + vec2 s = (0.5 - fract(p/r))*r; + col.r += p2(2 * sign(s) * s, uv, mix(0.1,0.8, texture(texFFT, mix(0.01, 0.1, i)).r)); + } + case 2: + uv *= rot2(sin(fGlobalTime)); + uv *= 3; + uv = fract(uv); + for (float i = 0.0; i < 1.0; i+=0.1) { + vec2 r = v2Resolution / v2Resolution.y; + vec2 d = vec2(0.8, -0.3); + vec2 p = d * (fGlobalTime - i*mix(0.8,1.2,sin(fGlobalTime))); + vec2 s = (0.5 - fract(p/r))*r; + col.r += p2(2 * sign(s) * s, uv, mix(0.05,0.2, texture(texFFT, mix(0.01, 0.1, i)).r)); + } + case 3: + uv *= rot2(sin(fGlobalTime)); + uv = fract(uv); + for (float i = 0.0; i < 1.0; i+=0.1) { + vec2 r = v2Resolution / v2Resolution.y; + vec2 d = vec2(0.4, 0.2); + vec2 p = d * (fGlobalTime - i*mix(1.8,2.0,sin(fGlobalTime))); + vec2 s = (0.5 - fract(p/r))*r; + col.b += p2(2 * sign(s) * s, uv, mix(0.02,0.2, texture(texFFT, mix(0.01, 0.1, i)).r)); + } +} + if (col.b > 0) + col.r = 1.0 - col.r; + + if (texture(texFFT, 0.02).r > 0.2) + col.r = 1.0 - col.r; + if(texture(texRevision, UV).r > 0.5) + col.r = 1.0 - col.r; + col.rgb = col.rrr; + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_evvvvil.glsl b/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_evvvvil.glsl new file mode 100644 index 000000000..62814ff38 --- /dev/null +++ b/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_evvvvil.glsl @@ -0,0 +1,133 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec2 z,e=vec2(.00035,-.00035);float tt,b,c,r,s,ss,g,glo,di;vec3 pp;vec4 np,d; +float smin(float a,float b,float k){float h=max(0.,k-abs(a-b));return min(a,b)-h*h*.25/k;} +float box(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);} +float cy(vec3 p,vec3 r){return max(abs(length(p.xz-r.z)-r.x)-r.y,abs(p.y)-5);} +mat2 r2(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} +vec2 fb( vec3 p,int i,float s ) +{ + p.y-=5; + r=1; + np=vec4(p,1); + for(int i=0;i<4;i++){ + np.xz=abs(np.xz)-20; + np*=1.566; + r=min(r,clamp(sin(np.x+np.y),-.2,.2)/np.w*s); + } + di=cos(p.y*.5)*.5; + vec2 h,t=vec2(cy(p,vec3(1.5+di,.4,r)),i); + t.x=max(t.x,-.7*box(abs(p+p.y+r)-2.5,vec3(2,5,2))); + p.xz*=r2(.785); + if(i<3) t.x=min(t.x,cy(p,vec3(.4+di+r,.1,0))); + glo=mix(length(abs(p)-vec3(0,5,0))-1,length(p.xz)-.5+p.y*.03,b); + p.xz=abs(p.xz)-1-di; + glo=min(glo,cy(p,vec3(0,.01,0))); + if(i<2) glo=min(glo,(length(np.xyz)+.1-b)/np.w); + t.x=smin(t.x,glo,.5); + g+=0.1/(0.1+glo*glo*40); + d[i]=-r; + return t; +} +vec2 mp( vec3 p ) +{ + pp=p; + pp.yz*=r2(mix(-.6+s*.4,1.4,b)); + pp.xy*=r2(mix(.9,.3,b)); + vec2 h,t=fb(pp,0,1); + pp.y-=10; + pp.xy*=r2(mix(-1.6+ss*.4,-.7,b)); + h=fb(pp,1,1); + t=t.x60) break; + t.x+=h.x;t.y=h.y; + } + if(t.x>60) t.y=-1; + return t; +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + //float f = texture( texFFT, d ).r * 100; + + tt=mod(fGlobalTime,62.82); + s=sin(tt);ss=sin(tt-2); + b=smoothstep(0.,1.,(clamp(s,.8,.9)-.8)*10); + c=smoothstep(0.,1.,(clamp(fract((tt-1.1)/6.28),.0,.1))*10); + vec3 ro=mix(vec3(cos(tt*.4)*10,6-sin(tt*.4)*6,10+b*15), + vec3(sin(tt*.4)*10,8+cos(tt*.4)*6,25+b*5), + ceil(sin(tt*.4+1))); + ro.xy+=sin(c*3.14*5); + vec3 cw=normalize(vec3(0,5,0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo,po,no,al,ld,re; + co=fo=clamp(vec3(.17,.12,.14)-length(uv)*.15-rd.y*.2-b*.2,0.,1.); + z=tr(ro,rd); + if(z.y>-1){ + po=ro+rd*z.x; + no=normalize(e.xyy*mp(po+e.xyy).x+ + e.yyx*mp(po+e.yyx).x+ + e.yxy*mp(po+e.yxy).x+ + e.xxx*mp(po+e.xxx).x); + al=clamp(mix(vec3(0),vec3(.5,-.2,-.5),sin(d[int(z.y)]*90)*.5+.5),0.,1.); + if(z.y==2) al=vec3(0); + ld=normalize(vec3(-.1,.2,.3)); + re=reflect(no,rd); + float dif=max(0,dot(no,ld)), + sp=length(sin(re*4)*.5+.5)/sqrt(3), + fr=1-pow(dot(no,rd),2), + ao=clamp(mp(po+no*.1).x/.1,0.,1.); + ss=smoothstep(0.,1.,mp(po+ld*.4).x/.4); + + co=pow(sp,10)*fr+al*(ao+.2)*(dif+ss*.5); + co=mix(fo,co,exp(-.00001*z.x*z.x*z.x)); + } + co+=g*.3*mix(vec3(0,.1,.7),vec3(.7,.1,.0),b); + out_color = vec4(pow(co,vec3(.45)),1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_z0rg.glsl b/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_z0rg.glsl new file mode 100644 index 000000000..bfb30a674 --- /dev/null +++ b/shader_file_sources/2023_04_07_shader_showdown_revision/q2/grabber_BACK2EWERK_z0rg.glsl @@ -0,0 +1,155 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define FFT(a) (texture(texFFT, a).x*100.) +#define sat(a) clamp(a, 0., 1.) + +vec3 getCam(vec3 rd, vec2 uv) +{ + vec3 r = normalize(cross(rd, vec3(0.,1.,0.))); + vec3 u = normalize(cross(rd, r)); + return normalize(rd+(uv.x*r+uv.y*u)*1.5); +} + +vec2 _min(vec2 a, vec2 b) +{ + if (a.x < b.x) + return a; + return b; +} + +float sqr(vec2 v, vec2 s) +{ + vec2 l = abs(v)-s; + return max(l.x, l.y); +} +mat2 r2d(float a) { float c = cos(a), s = sin(a); return mat2(c, -s, s, c); } +vec2 map(vec3 p) +{ + vec2 acc = vec2(10000., -1.); + p.z += texture(texFFTIntegrated, 0.1).x*10.; + float room = -sqr(p.xy, vec2(3.,1.)); + + acc = _min(acc, vec2(room, 0.)); + //acc = _min(acc, vec2(length(p)-1., 0.)); + + vec2 repCol = vec2(3.); + vec3 pcol = p; + float pix = .1+.05*sin(fGlobalTime); + pcol = floor(pcol/pix)*pix; + vec2 id = floor((pcol.xz+repCol*.5)/repCol); + pcol.xz = mod(pcol.xz+repCol*.5,repCol)-repCol*.5; + pcol.xy *= r2d(id.x+id.y); + float col = sqr(pcol.xz, vec2(.1)); + acc = _min(acc, vec2(col, abs(id.x+id.y+floor(fGlobalTime))+1.)); + + + return acc; +} + +vec3 trace(vec3 ro, vec3 rd, int steps) +{ + vec3 p = ro; + for (int i = 0;i < steps; ++i) + { + vec2 res = map(p); + if (res.x < 0.01) + return vec3(res.x, distance(p, ro), res.y); + p+=rd*res.x; + } + return vec3(-1.); +} + +vec3 getNorm(vec3 p, float d) +{ + vec2 e = vec2(0.01, 0.); + return normalize(vec3(d)-vec3(map(p-e.xyy).x, map(p-e.yxy).x, map(p-e.yyx).x)); +} + +vec3 getMat(vec3 p, vec3 n, vec3 rd, vec3 res) +{ + vec3 col = vec3(0.); + vec3 ldir = normalize(vec3(1.)); + col = vec3(1.)*sat(dot(ldir,n))*.2;; + if (res.z > 1.) + { + col = mix(vec3(1.), vec3(1.,0.,0.), mod(res.z, 2.)); + + } + if (res.z == 0.) + col = vec3(1.)*sat(FFT(abs(p.x)+abs(p.z)))*vec3(.1,.2,.8)*.5; + return col; +} + +float _seed; +float hash(float seed) +{ + return fract(sin(seed*123.456)*123.456); +} + +float rand() +{ + return hash(_seed++); +} + +vec3 rdr(vec2 uv) +{ + uv *= r2d(fGlobalTime*.3); + vec3 col = vec3(0.); + + col = vec3(1.)*sat(FFT(abs(uv.x)+abs(uv.y)))*.5; + vec3 ro = vec3(1., 0., -5.); + vec3 ta = vec3(0.,0.,0.); + vec3 rd = normalize(ta-ro); + + rd = getCam(rd, uv); + vec3 res = trace(ro, rd, 128); + if (res.y > 0.) + { + vec3 p = rd+res.y*rd; + vec3 n = normalize(cross(dFdx(p), dFdy(p))); + col += (n*.5+.5)*.5; + vec3 ldir = normalize(vec3(1.)); + col = getMat(p, n, rd, res); + vec3 refl = normalize(reflect(rd, n)+(vec3(rand(), rand(), rand())-.5)*.1); + vec3 resrefl = trace(p+n*0.01, refl, 128); + if (resrefl.y > 0.) + { + vec3 prefl = p+n*0.01+resrefl.y*refl; + col += getMat(prefl, vec3(1.), refl, resrefl)*.2; + } + } + return col; +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + _seed = fGlobalTime+length(uv); + vec3 col = rdr(uv); + col = pow(col, vec3(1.7)); + col += rdr(uv+(vec2(rand(), rand())-.5)*.1)*.5; + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_cosamentale.glsl b/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_cosamentale.glsl new file mode 100644 index 000000000..a7b195423 --- /dev/null +++ b/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_cosamentale.glsl @@ -0,0 +1,90 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float time= fGlobalTime;; +mat2 rot(float t){ float c = cos(t); float s = sin(t); return mat2(c,-s,s,c);} +float rd(float t){ return fract(sin(dot(floor(t),45.236))*7845.236);} +float no(float t){ return mix(rd(t), rd(t+1.),smoothstep(0.,1.,fract(t)));} +float cap(vec3 p, vec3 a, vec3 b){ vec3 pa = p-a; vec3 ba = b-a; + float h = clamp(dot(pa,ba)/dot(ba,ba),0.,1.); + return length(pa-ba*h);} + float smin(float a, float b){ + float h = clamp(0.5+0.5*(a-b)/0.5,0.,1.); + return mix(a,b,h)-0.5*h*(1.-h);} +float map(vec3 p){ + vec3 r = vec3(12.,0.,12.); + p = mix(p,mod(p+0.5*r,r)-0.5*r,step(0.5,no(texture(texFFTIntegrated,0.34).x*4.))); + float t1 = no(texture(texFFTIntegrated,0.5).x*10.); + p.xz += vec2(cos(p.y*0.5+t1),sin(p.y*0.5+t1)); + float f = 10.; + vec2 b= vec2(-2.,-3.); + p.x = mix(p.x,-p.x,smoothstep(-1.,1.,p.x)); + float d1 = 100.; + for( int i = 0 ;i < 3 ; i++){ + b += 1.; + float t1 = texture(texFFTIntegrated,i*0.1).x; + float t2 = texture(texFFTIntegrated,i*0.1-0.1).x; + vec2 v1 = (vec2(no(t1*f),no(t1*f+6.25))-0.5)*2.; + vec2 v2 = (vec2(no(t2*f),no(t2*f+6.25))-0.5)*2.; + d1 = smin(d1,cap(p+vec3(2.,0.,0.),vec3(v1.x,b.x,v1.y),vec3(v2.x,b.y,v2.y))-pow(length(p.y+3.),0.5)*0.8); + d1 = smin(d1,cap(p+vec3(0.,-3.8,0.),vec3(v1.x*0.5,b.x*0.5,v1.y),vec3(v2.x*0.5,b.y*0.5,v2.y))-2.); + d1 = smin(d1,cap(p+vec3(3.,-5.8,0.),vec3(b.x,v1.x,v1.y),vec3(b.y,v2.x,v2.y))-(1.-pow(length(p.x),2.)*0.05)); + d1 = smin(d1,cap(p+vec3(0.,-7.,0.),vec3(v1.x*0.1,b.x*0.25,v1.y),vec3(v2.x*0.1,b.y*0.25,v2.y))-0.3); + } + float d2 = p.y+3.+no(p.x*10.)*0.05; + return min(d1,d2);} + vec3 n(vec3 p){ vec2 e = vec2(0.01,0.); return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx)));} + float ev(vec3 r){ r = normalize(r*vec3(1.,3.,1.)); return no(r.x*3.);} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uc = uv; + uv -= 0.5; + uv *=2.; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 p = vec3(0.,0.,-6.-no(texture(texFFTIntegrated,0.55).x*20.)*4.); + vec3 r = normalize(vec3(uv+vec2(0., no(texture(texFFTIntegrated,0.45).x*4.)),1.)); + p.xz *= rot(time); +r.xz *=rot(time); + float t1 = sin(time)*mix(0.,1., step(0.5,no(texture(texFFTIntegrated,0.23).x*4.)));; + p.xy *= rot(t1); +r.xy *= rot(t1); + float dd; + for(int i = 0 ; i < 64 ; i++){ + float d = map(p); + if(d<0.01){break;} + p +=r*d; + dd +=d; + } + float d1 = smoothstep(20.,10.,dd); + float d2 = mix(ev(r), clamp(ev(reflect(r,n(p))),0.,1.),d1); + float b = sqrt(32.); + float d = pow(length(uv.y),2.)*0.01+pow(no(texture(texFFTIntegrated,0.7).x*7.),20.)*0.05; + float d3; + for(float i = -0.5*b ; i<0.5*b; i+=1.) + for(float j = -0.5*b ; j<0.5*b; j+=1.){ + d3 += texture(texPreviousFrame,uc+vec2(i,j)*d).a; + }d3 /= 32.; + vec3 d4 = mix(vec3(1.),3.*abs(1.-2.*fract(d3*0.8+0.4+vec3(0.,-1./3.,1./3.)))-1.,0.4)*d3*1.2; + vec3 d5 = mix(vec3(2.,0.,0.),vec3(0.,0.,2.),d3)*d3*1.5; + vec3 d6 = mix(d4,d5,step(0.5,no(texture(texFFTIntegrated,0.45).x*6.))); + out_color = vec4(vec3 (d6),d2); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_nusan.glsl b/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_nusan.glsl new file mode 100644 index 000000000..4fda82880 --- /dev/null +++ b/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_nusan.glsl @@ -0,0 +1,129 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = mod(fGlobalTime, 300); + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float rnd(float t) { + return fract(sin(t*234.453)*654.302); +} + +vec3 rnd(vec3 t) { + return fract(sin(t*485.854 + t.yzx * 847.584 + t.zxy * 476.554) * 834.554); +} + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1), pow(smoothstep(0,1, fract(t)), 10)); + +} + +vec3 repeat(vec3 p, vec3 s) { + return (fract(p/s+0.5)-0.5)*s; + } + +vec3 repeatid(vec3 p, vec3 s) { + return floor(p/s+0.5); + } + + vec3 am; +float map(vec3 p) { + + float t=time*0.1; + for(int i=0; i<3; ++i) { + p.xz *= rot(t + i + curve(t+i, 0.3)*4 + p.y * 0.03); + p.yz *= rot(t*0.7 + i + curve(t+i, 0.13)*2 + p.x*0.01); + p.xz = abs(p.xz) - 2 - sin(time) - curve(time+i, 0.4)*2; + } + + float d=box(p, vec3(1.5,2,1.5)); + d = min(d, length(p.xz)-0.1); + + p.xz *= rot(0.5); + p.xy *= rot(0.7); + + vec3 p2 = repeat(p, vec3(1.3)); + float d2 = abs(box(p2, vec3(0.3))); + + + am = vec3(1,0.5,0.3); + if(d2<0.1) am=repeatid(p, vec3(1.3)); + + d = max(d, -d2); + + d -= d2*0.4; + + d *= 0.7; + + return d; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv.y -=curve(time, 0.3)*0.1; + + uv *= 1+curve(time, 0.4); + + vec3 s=vec3(0,0,-20); + vec3 r=normalize(vec3(uv,1)); + + vec3 col=vec3(0); + vec3 p=s; + for(int i=0; i<100; ++i) { + float d=map(p); + if(d<0.001) break; + if(d>100.0) break; + p+=r*d; + } + float fog=1-clamp(length(p-s)/100,0,1); + + for(int j=0; j<20; ++j) { + vec3 p2=p+r*0.01; + vec3 r2=normalize(r + 0.1*(rnd(vec3(uv,j))-0.5)); + for(int i=0; i<100; ++i) { + float d=-map(p2); + if(d<0.001) break; + if(d>100.0) break; + p2+=r2*d; + } + + + col += rnd(am) * 0.03 / (0.3 + length(p2-p)) * fog; +} + //col += map(p-r) * fog; + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_totetmatt.glsl b/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_totetmatt.glsl new file mode 100644 index 000000000..7955b3b45 --- /dev/null +++ b/shader_file_sources/2023_04_07_shader_showdown_revision/q3/grabber_BACK2EWERK_totetmatt.glsl @@ -0,0 +1,132 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +// THIS IS TOTETMATT, IM NOT A BOT +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + float bpm = texture(texFFTIntegrated,.13).r*2+fGlobalTime; + vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +float txt(vec2 p,float t){ + ivec2 i = ivec2(abs(p)*128.); + return dot(sin(i),cos(i.yx*t))+(i.x&i.y)/128.;; + } + float rand(vec2 p){ + return fract(535.55*sin(dot(p,vec2(85.5,479.5)))); + } + vec3 path(vec3 p){ + + vec3 o = vec3(0.); + o.x +=sin(p.z*.1)*2.; + o.x +=sin(p.z*.55)*.44; + o.y +=sin(p.z*.33)*.44; + o.y +=cos(p.z*.24)*.5; + return o; + } + float terr(vec3 p){ + float d=0.; + for(float i=.5;i<5;i+=i){ + + d+= dot(asin(sin(erot(p*i,vec3(0.,1.,0),i))),vec3(.5))/i/4.; + } + + return d; + + } +vec2 sdf(vec3 p){ + vec2 h; + vec3 hp=p; + + vec3 ph= path(hp); + + float ff = 1-tanh(abs(hp.x-ph.x)-1.); + h.x = dot(hp,vec3(0.,1.,0.))+1.+ff+terr(hp)+texture(texFFTSmoothed,.3+ff*.01).r*50;; + h.y= 1.; + + vec2 t; + vec3 tp=p; + + tp-=ph; + tp.y +=1.; + float gy = dot(sin(tp*1.5),cos(tp.zxy)); + tp+=gy*.1; + tp= erot(tp,vec3(0,0,1),tp.z); + tp.xy= abs(tp.xy)-.2;tp.xy=abs(tp.xy)-.1; + t.x = max(abs(tp.z-bpm)-5,length(tp.xy)-.02); + t.y = 2.; + h=t.x < h.x ? t:h; + return h; + + } + #define q(s) s*sdf(p+s).x + + vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + bpm+=+rand(uv)*.1; + bpm = floor(bpm) + pow(fract(bpm),2.1); +vec3 col = vec3(0.); + col.r= texture(texRevisionBW,clamp(uv+.5+texture(texFFTSmoothed,floor(bpm)*.1+txt(uv,1.)).r,0.,1.)).r; + col.gb= texture(texRevisionBW,clamp(uv+.5+texture(texFFTSmoothed,floor(bpm)*.1+txt(uv,2.)).r,0.,1.)).gb; + + vec3 ro=vec3(1.,1.,bpm+cos(bpm)),rt=vec3(0.,0.,bpm+tanh(sin(bpm*.25))*15); + ro+=path(ro); + rt+=path(rt); + vec3 z=normalize(rt-ro),x=normalize(cross(z,vec3(0.,-1.,0))),y=cross(z,x); + vec3 rd = mat3(x,y,z)*normalize(vec3(uv,1.+sin(bpm)*.1)); + + vec3 rp= ro; + vec3 acc= vec3(0.); + // AZERTY FOR THE WIN + float dd =0.; + vec3 light = normalize(vec3(1.,2.,-3.)); + for(float i=0.;i++<128. && dd < 50.;){ + + vec2 d = sdf(rp); + + if(d.y ==2.){ + acc+=vec3(.0,.3,.7)*exp(-abs(d.x))/(50-min(45,texture(texFFTSmoothed,.3+bpm+rp.z*.01).r*5000)); + d.x = max(.001,abs(d.x)); + } + rp+=rd*d.x; + dd+=d.x; + if(d.x < .001){ + vec3 n = norm(rp,.005); + vec3 n2 = norm(rp,.007); + float dif = max(0.,dot(light,n)); + float fr= pow(1+dot(rd,n),4); + col = +dif * vec3(.1); + if(d.y==1.){ + col += smoothstep(.001,.1,length(n-n2))+fr*vec3(1.,.7,.3)*max(0,1-abs(rp.z-bpm-5)*.2); + rd= reflect(rd,n); + rp+=rd*.1; + continue; + + } + break; + + } + } + col = mix(col,vec3(.1),(.5)-exp(-dd)); + + out_color = vec4(sqrt(col+acc),1.) + ; +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_0b5vr.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_0b5vr.glsl new file mode 100644 index 000000000..19b543606 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_0b5vr.glsl @@ -0,0 +1,307 @@ +#version 410 core + +#define loop(i,n) for(int i=0;i>16; + s.x+=s.y*s.z; + s.y+=s.z*s.x; + s.z+=s.x*s.y; + return s; +} + +vec3 pcg3df(vec3 s){ + uvec3 r=pcg3d(floatBitsToUint(s)); + return vec3(r)/float(0xffffffffu); +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +vec4 fuck(vec2 uv,float time){ + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, time) / d; + t = clamp( t, 0.0, 1.0 ); + return t; +} + +mat2 r2d(float t){ + float c=cos(t),s=sin(t); + return mat2(c,s,-s,c); +} + +mat3 orthbas(vec3 z){ + z=normalize(z); + vec3 up=abs(z.y)>.999?vec3(0,0,1):vec3(0,1,0); + vec3 x=normalize(cross(up,z)); + return mat3(x,cross(z,x),z); +} + +float smin(float a,float b,float k){ + float h=max(k-abs(a-b),0.)/k; + return min(a,b)-h*h*h*k/6.; +} + +float smax(float a,float b,float k){ + return -smin(-a,-b,k); +} + +float sdcapsule(vec3 p,vec3 tail){ + float h=clamp(dot(p,tail)/dot(tail,tail),0.,1.); + return length(p-tail*h); +} + +float sdbox(vec3 p,vec3 s){ + vec3 d=abs(p)-s; + return min(max(max(d.x,d.y),d.z),0.)+length(max(d,0.)); +} + +// let's see how dojoe dance +float sdbend(vec3 p,float w,float b){ + float t=p.x/w; + t*=t; + p.y+=b*(1.-t); + return sdcapsule(p+vec3(w,0,0),vec3(w*2.,0,0)); +} + +vec3 happybump(vec3 p,float phase){ + p.y-=.2*abs(sin(phase)); + p.xy*=r2d(.05*acos(cos(phase))-.05); + return p; +} + +vec4 map(vec3 p){ + vec3 pt=p; + vec4 isect=vec4(1E9); + float d=1E9; + + vec3 origin=vec3(0); + origin.xz=lofir(p.xz,4.); + p-=origin; + + vec3 dice=pcg3df(origin); + p.zx*=r2d(dice.x-.5); + + float phase=PI*140./60.*fGlobalTime; + phase+=PI*step(.5,dice.y)+dice.y; + + // mouth + pt=p; + pt=happybump(pt,phase); + pt.y=-pt.y; + pt.y-=.2; + pt.z-=.1; + d=sdbend(pt,.5,-.05)-.05; + if(d.01; s*=h) + { + float r = s*h*(cos(h*h*1e3)*.1+1.); + v = r-abs(mod(v,s*2.)-s); + m = max(m,cos(ceil(fGlobalTime)/.4)>.2?r-length(r+v): min(v.x,min(v.y,v.z))); + v.xz *= rotate2D(s*tan(h*h*1e3)); + } + if (i>50) m += 5e-5; + p += d*m; + shade += max(16e-3-m*m,0.); + } + + uv /= abs(sin(ceil(fGlobalTime)/.9+cos(fGlobalTime))); + uv *= rotate2D(sin(ceil(fGlobalTime)/.13)); + uv += sin(ceil(fGlobalTime)*vec2(7.4,5.3)); + uv = mod(uv+3.,6.)-3.; + vec2 X = uv+vec2(1,0); + X *= rotate2D(.8); + vec2 R = uv-vec2(1,0); + float rd = (.1-length(clamp(R,-vec2(0,.4),vec2(0,.4))-R)); + R *= rotate2D(-.3); + rd = max(rd,(.1-length(clamp(R,-vec2(-.15,-.2),vec2(.6,-.2))-R))); + + + float s = sign(sin(ceil(fGlobalTime)/.7)); + if (cos(fGlobalTime)>.5) shade = s*min(shade*s,s*max(max((.1-length(clamp(X,-vec2(.6,0),vec2(.6,0))-X)),(.1-length(clamp(X,-vec2(0,.6),vec2(0,.6))-X))),max((.1-abs(length(uv)-.4)),rd))*v2Resolution.y); + vec4 prev = texture2D(texPreviousFrame,gl_FragCoord.xy / v2Resolution); + + + //shade *= 2.; + vec2 M = v2Resolution.yy*.2; + for(int i = 0;i<8;i++) + { + vec2 P = gl_FragCoord.xy*rotate2D(float(i)*.1-7.+cos(texture(texFFTIntegrated,.2).r)*.5)+fGlobalTime*length(M)*2.; + float h = (hash(ceil(P/M/2.)+vec2(i,i*9))*.4-.2); + h *= cos(h*h*1e3+fGlobalTime+texture(texFFT,.2).r*7e1); + shade -= sqrt(1./length(max(abs(mod(P,M*2.)-M)-M*h,0.))); + M*=.9; + } + out_color = vec4(1.-shade,prev)*pow(hash4(ceil(fGlobalTime/vec2(4,5))),vec4(.4,.1,.1,1)); + } diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_aldroid.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_aldroid.glsl new file mode 100644 index 000000000..f0457d190 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_aldroid.glsl @@ -0,0 +1,143 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); + +} + +mat2 rot(float a) { + return mat2(cos(a),-sin(a),sin(a),cos(a)); +} + +float map(vec3 p) { + vec3 q=p; + p.xy += (1-length(p.xy)); + p.z -= mod(fGlobalTime*4,4); + p.z += texture(texFFTSmoothed,0.01).r*10; + p -= 5*clamp(round(p/5),-5,5); + p.z -= 2; + + p.x += sin(fGlobalTime/1.3+sin(q.z)*3)/3; + p.y += sin(fGlobalTime/1.8+texture(texFFT,0.1).r*10); + return length(p)-1; +} // yeah yeah + +vec3 gn(vec3 p) { + vec2 e=vec2(0.001,0); + return normalize(map(p) - vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx))); +} + +vec3 main2(vec2 uv) +{ + + vec3 ro=vec3(0,0,-10),rd=normalize(vec3(uv,1)); + + float t=0,d; + float glz=1e15; + for (int i=0; i<100; ++i) { + d=map(ro+rd*t); + glz=min(glz,d); + if (d<0.01) break; + t += d; + } + + vec3 ld=normalize(vec3(3,4,-13)); + + vec3 col = vec3(1); + + if (d <0.01) { + vec3 p=ro+rd*t; + vec3 n=gn(p); + + col=plas(uv, fGlobalTime+1*t).rgb; + col *= 0.2+0.5*dot(n,ld); + col += pow(max(0,dot(reflect(-ld,n),-rd)),4)*0.5; + } + col +=glz*0.4; + col += exp(-0.001*t*t*t); + + + float ft= mod(fGlobalTime,2)-1; + //if (uv.y>ft) out_color.rgb=vec3(nz(uv)); //out_color.gb=out_color.rr; + vec2 circ=vec2((0.5+0.5*sin(fGlobalTime*0.5))*sin(fGlobalTime),cos(fGlobalTime))*0.6; + if (length(uv-circ)>0.2+texture(texFFTSmoothed,0.1).r*10) col=vec3(col.r)/4; + return col; +} + +float map2(vec3 p) { + vec3 q=p; + p.xz*=rot(fGlobalTime); + p = abs(p)-vec3(2); + float bocks = max(max(p.x,p.y),p.z); + float flor = q.y+4.5; + return min(bocks,flor); +} + +float shad(vec3 p, vec3 ld) { + float t=0.1,d; + float h=1; + for (int i=0; i<100; ++i) { + d=map2(p-ld*t); + h=min(h,8*d/t); + if (d<0.01) break; + t+=d; + } + return h; +} + +void main(void) { + vec2 uv + = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro=vec3(0,0,-10),rd=normalize(vec3(uv,1)); + float t=0,d; + + for (int i=0; i<100; ++i) { + d=map2(ro+rd*t); + if (d<0.01) break; + t += d; + } + + vec3 ld=normalize(vec3(3,4,-13)); + + vec3 col = vec3(0); + + vec2 spot = vec2(sin(fGlobalTime*0.43),cos(fGlobalTime*0.3)); + if (length(uv-spot)<0.2) col=vec3(0.1); + + if (d<0.01) { + vec3 p= ro+rd*t; + if (p.y>-2.5) { + col=main2(uv); + } else { + col=vec3(0.4); + col *= shad(p,-ld); + } + vec3 n = gn(p); + col *= 0.5+0.5*dot(ld,n); + } + out_color = vec4(col,1); + +} diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_alien.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_alien.glsl new file mode 100644 index 000000000..537c231f6 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_alien.glsl @@ -0,0 +1,211 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define _t fGlobalTime +#define bpm 80. +#define one_bpm 60./bpm +#define beat(a) fract(_t/(one_bpm*a)) +#define cumbeat(a) _t+beat(a) +#define FAR 30. +#define PI acos(-1) + +mat2 rot(float a) {return mat2(cos(a), -sin(a), sin(a), cos(a));} +float smin(float a, float b, float k){ + float h = max(k-abs(a-b), 0.0 ) / k; + return min(a,b) - h*h*k*(1.0/4.0); +} + +float box3(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0); +} + +float distort(vec3 p){ + vec3 spp = p; + p.y += 2.5; + p.x = abs(p.x); + + p.x *= atan(p.y, p.z); + float final = 0.0; + float y = p.y; + p.z -= 10.0; + float off = 1.0; + if(beat(2) < 0.5) { + off = 20; + } + p.xz *= vec2(0.1, 0.5); + for(int i = 0; i <4; i++){ + final += box3(p, vec3(5*i)); + p.z -= 10.0 + off; + p.x *= 2.0; + p.xz *= rot(0.2*float(i)*y); + p.x = abs(p.x) + 0.0001*cumbeat(2); + p.z = cos(p.x * 2.0+sin(p.z * 2.0)); + p.z -= 5.0; + p.xz *= rot(0.8 - p.y); + p.x -= 5.0; + } + return final / 12.0; +} + +float scene(vec3 p) { + + if(beat(4) < 0.2) { + p = abs(p); + p -= 1.0; + } + + + + float d = distort(p); + p = abs(p); + + p -= vec3(0, 1, 40 - beat(2)); + float bb = beat(4); + if(bb < 0.2) { + p.xz *= rot(0.3); + } + else if(bb < 0.4) { + p.yz *= rot(0.387); + } + else if(bb < 0.6) { + p.xy *= rot(2.3); + p.y -= 10; + } + else if(bb < 0.8) { + p.xy *= rot(2.3); + p.yz *= rot(2.3); + //p.z += 3; + } + else if(bb < 1.0) { + } + float b = box3(p, vec3(0.2)); + float aa = 3; + if (beat(4) < 0.5) { + aa = 6; + } + else if (beat(4) < 0.8) { + aa = 10; + } + return smin(d, b, aa); +} + +float march(vec3 ro, vec3 rd, out vec3 p) { + float a = 0.01; + int i = 0; + int steps = int(40. ); + for(i = 0; i < steps; i++){ + p = ro + rd*a; + float b = scene(p); + a += b; + if(a>FAR){ + return 1.; + } + else if(abs(b) < 0.00001) { + float f = (float(i)) /float(steps); + return f; + } + } + return FAR; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + if(beat(8) < 0.3) { + uv = abs(uv); + uv = fract(uv*3); + uv -= 0.5; + + } + + vec3 ro = vec3(0, 1, -55); + vec3 rd = vec3(uv, 1.0/tan(70.0 * 0.5 * PI /180)); + rd.yz *= rot(0.2); + + +if(beat(4) < 0.4) { + //rd.xz *= rot(beat(2)); + ro.z += beat(4)*40; +} + + + + + + vec3 p; + + float t = march(ro, rd, p); + + + vec3 color = vec3(t); + vec3 a = vec3(0.1,0.1,0.2); + vec3 b = vec3(0.05, 0.8, 0.3); + + a = vec3(0.99, 0.29, 0.3); + b = vec3(0.23, 0., 0.23); + + float ab = 0; + if(beat(8) < 0.4){ + ab = 0.8; + } + + color = mix(a, b, vec3(t)); + vec4 prev = texture(texPreviousFrame, uv*4); + color = mix(color, prev.xyz, ab); + + if(beat(16) < 0.5) { + color = 1-color; + } + + color = pow(color, vec3(0.88)); + + if(beat(8) < 0.5) { + color *= 0.3+uv.y; + } + + color = mix(color, vec3(0.2, 0.4, 0.3), 2.0+fract(p.z+_t));; + + uv = abs(uv); + uv.x-= p.x; + uv.x -= beat(4); + uv.y += sin(p.x)*0.1; + if(length(uv) < 0.5 && beat(4)< 0.5) { + color *= color; + } + + if(uv.x > 0.4) { + color *= 0.4; + } + + uv.y += 0.2*_t+beat(8); + uv = fract(uv*2); + if(uv.y < 0.5){ + color = 1-color; + } + if(beat(8) < 0.2) { + color *= uv.y; + } + + out_color = vec4(color,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_cosamentale.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_cosamentale.glsl new file mode 100644 index 000000000..a2b16db58 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_cosamentale.glsl @@ -0,0 +1,83 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float time = fGlobalTime; +float rd(float t){return fract(sin(dot(floor(t),45.236))*7845.26);} +float no(float t){return mix(rd(t),rd(+1.),smoothstep(0.,1.,fract(t)));} +float e; +/*vec3 b(vec3 p, vec3 a , vec3 b){vec3 q = abs(p)-b; + return mix(*/ +float rd(){return fract(sin(e++)*7845.236);} +vec3 vr(){float a = (rd()-0.5)*2.; + float b = rd()*6.28; + float c = sqrt(1.-a*a); + return vec3(cos(b)*c,sin(b)*c,a)*sqrt(rd());} + float zl; +float map(vec3 p){ + for(int i = 0 ;i < 2; i++){ + if(p.x>p.y)p.yx = p.xy; + if(p.x>p.z)p.xz = p.zx; + p = abs(p); + } + float d1 = length(p.xz-vec2(0.5,0.5))-2.; +float d2 = length(p.xy+vec2(sin(time),cos(time)))-2.; + zl = d2; +float d3 = p.y+3.; +return min(d3,min(d1,d2)); +} +float rm(vec3 p, vec3 r){ + float dd = 0.; + for(int i = 0 ; i < 64 ; i++){ + float d = map(p); + if(dd >40.){break;} + if(d<0.01){break;} + p += r*d; + dd +=d; + } + return dd; +} +vec3 nor (vec3 p){vec2 e =vec2(0.01,0.); return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx)));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uc = uv; + uv -= 0.5; + uv *= 2.; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 p = vec3(0.,0.,-7.); + vec3 r = normalize(vec3(uv,1.)); + e = uv.x * v2Resolution.y+uv.y; + e += time; + float d1 = rm(p,r); + float r1 = 0.; + for(int i = 0 ; i < 3 ; i++){ + + float d = rm(p,r); + if(d>40.){break;} + if(zl>0.1){ + vec3 pp = p+r*d; + vec3 n = nor(pp); + r = n+vr(); + p = pp+0.1*r; + }else{r1 = 1.;} + } + float t1 = mix(texture(texPreviousFrame,uc).x,r1,0.5); + float t2 = pow(t1,0.2); + out_color = vec4(vec3(t1),t1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_dok.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_dok.glsl new file mode 100644 index 000000000..458721d40 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_dok.glsl @@ -0,0 +1,96 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform float fMidiKnob; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float ff(vec2 a, int x){ + vec2 v = clamp(fract(a),0,1); + int i = int(fract(1.0-v.x) * 4) + 4*int(fract(v.y)*6); + return (x & (1<0.5) + X=0.5*UV.x+fGlobalTime; + if (fract(fGlobalTime/8)>0.5) + X=0.25*UV.y+fGlobalTime; + + switch (int(fract(X+fGlobalTime/3)*6)) { + case 0: + ch = 0x7131; break; + case 1: + ch = 0x1113; break; + case 2: + ch = 0x71317; break; + case 3: + ch=0x1311; break; + case 4: + ch=0x7122; break; + case 5: + ch = 0x22202; break; + } + if (texture(texFFTSmoothed, 0.04).r > 0.7) + ch += int(fGlobalTime); + col.r = ff(uv, ch); + + +// col.r = ff(uv, int(0xf45f * rd(fGlobalTime/10, uv.x))); + + col = 1.0-col.rrr; + float x = 0.0; + UV/= 5; + UV = clamp(UV,0,1)+0.001; + x = ff(UV, int(0x7131)); + + uv = (gl_FragCoord.xy - 0 * v2Resolution)/ v2Resolution.y; + + float a=1; + for (float i =0; i<1.0; i+=0.05) { + vec2 d = vec2(0.35, 0.69); + vec2 p = d * (fGlobalTime-i*mix(0.5,1.5,sin(fGlobalTime))); + vec2 r = v2Resolution / v2Resolution.y; + vec2 v = (0.5 - fract(p/r))*r; + a *= step(0.1,length((2*sign(v) * v)- uv)); + } + a=1-a; + col.r = 1.-x; + if (texture(texFFTSmoothed, 0.01).r > 0.7) + col = 1.0-col; + if (a > 0) + col.g = 1.0-col.g; + col = col.g * vec3(0,1,0.2); + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_eimink.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_eimink.glsl new file mode 100644 index 000000000..6919caa04 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_eimink.glsl @@ -0,0 +1,158 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +// Hello Revision 2023! + +const float E = 0.001; +const float FAR = 100.0; +const int STEPS = 64; + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, .5).r; +float ffts = texture(texFFTSmoothed,60.).r; + +vec3 glow = vec3(0.0); + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +float box(vec3 p, float b){ + vec3 d = abs(p)-b; + return length(max(d,.0)) + min(max(d.x,max(d.y,d.z)),0.0); +} + +float scene(vec3 p){ + vec3 pp = p; + + for(int i = 0; i < 4; ++i){ + pp = abs(pp) - vec3(0.75, 2.0, 1.5); + rot(pp.xz, time*0.3+sin(4.*fft)); + rot(pp.zy, fft*2.5); + rot(pp.xy, fft*0.5+time*0.1+cos(8.*ffts)); + } + + float spheres = sphere(pp,1.0+ffts*50.); + float spheres2 = sphere(pp,3.+ffts*5.); + float spheres3 = sphere(pp,3.25+ffts*5.); + float spheres4 = sphere(pp,3.5+ffts*5.); + float spheres5 = sphere(pp,3.75+ffts*5.); + float spheres6 = sphere(pp,4.+ffts*5.); + + pp = p; + for (int i = 0; i < 3; ++i){ + pp = abs(pp) - vec3(2.5,2.5,3.5); + rot(pp.xz, time*.5+cos(10.*ffts)); + rot(pp.xy, fft*5.2); + } + float boxes = box(pp,1.0); + + pp = p; + + for (int i = 0; i < 5; ++i) + { + pp = abs(pp) - vec3(.5,3.0,5.5); + rot(pp.xy, time*.2+sin(6.*fft)); + rot(pp.yz, time*.6+cos(12.*ffts)); + } + + float boxes2 = box(pp,1.0*ffts*5.); + glow += vec3(0.9,0.04,0.5) * 0.05 / abs(boxes2)+0.01; + glow += vec3(0.5,0.04,0.9) * 0.01 / abs(boxes)+0.001; + glow += vec3(0.08,0.45,0.85) * 0.02 / abs(spheres) +0.01; + glow += vec3(0.85,0.08,0.45) * 0.012 / abs(spheres3)+0.001; + glow += vec3(0.85,0.8,0.85) * 0.012 / abs(spheres4)+0.001; + glow += vec3(0.08,0.45,0.85) * 0.02 / abs(spheres2) +0.01; + glow += vec3(0.85,0.08,0.45) * 0.012 / abs(spheres5)+0.001; + glow += vec3(0.08,0.45,0.85) * 0.02 / abs(spheres6) +0.01; + return sphere(p,1.+ffts*12.); +} + +float march (vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + for(int i = 0; i < STEPS; ++i) + { + float d = scene(p); + t += d; + p = ro+rd * t; + if (d < E || t > FAR) { + break; + } + } + return t; +} + +vec3 normals(vec3 p){ + vec3 e = vec3(E, 0.0, 0.0); + return normalize(vec3( + scene(p + e.xyy) - scene(p - e.xyy), + scene(p + e.yxy) - scene(p - e.yxy), + scene(p + e.yyx) - scene(p - e.yyx) + )); +} + +vec3 shade(vec3 rd, vec3 p, vec3 ld){ + vec3 n = normals(p); + + float l = max(dot(n, ld), 0.0); + float a = max(dot(reflect(rd, ld), n), 0.0); + float s = pow(a, .1); + + return vec3(1.)*l + vec3(.9)*s; +} + +void main(void) +{ + vec3 col = vec3(0.0); + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = -1.0 + 2.0*uv; + q.x *= v2Resolution.x/v2Resolution.y; + + vec3 ro = vec3(4.0-sin(2*time)+sin(4*time)*3., -4.0+sin(time+ffts)*3., 15.0+cos(time)*5.); + vec3 rt = vec3(0.0, 0.0, -1.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0,1.0,0.0))); + vec3 y = normalize(cross(x,z)); + vec3 rd = normalize(mat3(x,y,z)*vec3(q,1.0/radians(94.0))); + + float t = march(ro, rd); + vec3 p = ro + rd * t; + vec3 ld = normalize(vec3(0.0,0.0,-10.0)-p); + + rot(q, time*.5); + + if (t < FAR){ + col = shade(rd, p, ld)*.05; + } + + col += glow; + + col = mix(col, texture2D(texPreviousFrame, uv).rgb,.5); + + col = smoothstep(-.1,1.,col); + + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_exca.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_exca.glsl new file mode 100644 index 000000000..820ab88c2 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_exca.glsl @@ -0,0 +1,43 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_flopin.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_flopin.glsl new file mode 100644 index 000000000..94ded78fa --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_flopin.glsl @@ -0,0 +1,56 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float o = abs(uv.x); + float off = 5.*o*mod(fGlobalTime, 1.0); + uv.x = mod(uv.x + o*(off-2.5) + fGlobalTime, 1.0); + + float c = 0.; + float t = mod(floor(fGlobalTime / 0.5), 2.); + float c1 = step(uv.x, 0.5-t); + + float t2 = mod(floor(fGlobalTime / 0.5), 2.); + float c2 = step(uv.y, 0.2-t*0.5); + + t = floor(mod(fGlobalTime*23., 10.)); + c = step(1-mod(abs(uv.x), 1.0), t/10.); + + float m = abs(floor(uv.x*10.))/10.; + float clr = abs(floor(uv.x*10.))/10.; + float mr = abs(sin(fGlobalTime*23.)); + + float beat = 2.; + float strobe = max(mod(fGlobalTime*6., 2.)-1., 0.); + + + vec4 color = vec4(c*m*mr,c*m*(1.-mr),c*m,1.0); + + out_color = mix(color, vec4(1.0, 1.0, 1.0, 1.0), floor(strobe+0.2)); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_ivan_dianov.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_ivan_dianov.glsl new file mode 100644 index 000000000..af7b847d9 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_ivan_dianov.glsl @@ -0,0 +1,59 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +#define time fGlobalTime +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform float fMidiKnob; + +#define F float +#define W vec3 +#define V vec2 +#define N normalize +#define L length +#define S(x) sin(x+2*sin(x+4*sin(x))) +#define rot(x) mat2(cos(x),-sin(x),sin(x),cos(x)) +#define col(x) (cos(x+vec3(0.,.7,.9))*.5+.5) +#define sfloor(x) (floor(x)+smoothstep(.0,.9,fract(x))) +layout(location = 0) out vec4 o; // out_color must be written in order to see anything + +void main(void) +{ + o-=o; + vec4 B = (texture(texFFT,.05)*10); + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + F i=0,d=0,e=1; + W p, pi, rd=N(W(uv,1.2)); + + for(;i++<99&&e>.001;){ + pi=p=rd*d; + p.xz*=rot(S(time*.1)+.05); + p.xy*=rot(S(time*.13+S(pi.z*.1+time*.1))*.5); + pi=p; + p.z+=sfloor(time*.5)+atan(p.y,p.x+.001)/3.14; + + p=fract(p)-.5; + + F ss=2.5,s; + for(F j=0;j++<5;){ + p.z+=.1*sin(pi.z+time); + ss*=s=(1.4+.2*S(pi.z*.01-time*.01))/dot(p,p); + p*=s; + F stp = 1.3+.1*B.x+.3*S(pi.z); + p=mod(p+stp,2*stp)-stp; + } + d+=e=(L(p.xz)-.5*B.x-.01*S(pi.x-time))/ss; + //F l = (fract(L(pi)*.1)-.5)/ss; + //o+=.00001/(.01+l); + } + o+=8/i; + o.rgb *= col(d+sfloor(time+L(pi.xy)))*4; +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_kali.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_kali.glsl new file mode 100644 index 000000000..cca3e6f0e --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_kali.glsl @@ -0,0 +1,139 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define time fGlobalTime + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float det=.001, it; +float cyl; +float so=0.; +float id=0.; + +mat2 rot(float a) { + float s=sin(a), c=cos(a); + return mat2(c,s,-s,c); +} + +float hash(vec2 p) +{ + p*=1000.; + vec3 p3 = fract(vec3(p.xyx) * .1031); + p3 += dot(p3, p3.yzx + 33.33); + return fract((p3.x + p3.y) * p3.z); +} + + +vec3 path(float t) { + float s=sin(t*.1+cos(t*.05)*2.); + float c=cos(t*.3); + return vec3(s*s*s,c*c,t); +} + +float de(vec3 p) { + id=0.; + p.xy-=path(p.z).xy; + p.xy*=rot(p.z*1.+time*.7+so*50.); + vec3 p2=p+sin(p.z)*.2; + float m=1000., sc=1.; + float s=sin(p.z*.7)*.7; + float sph=length(p.xy)-1.3-s; + //p2.xy*=rot(time); + cyl=length(p2.xy+.5*s+.1)-.05-fract(-p.z+time*3.)*.05; + cyl*=.7; + for (int i=0; i<8; i++) { + float s=2.; + p.xy=sin(p.xy); + p.xy*=rot(1.); + p.xz*=rot(1.6); + p=p*s; + sc*=s; + float l=length(p.xy)-.2; + m=min(m,l); + if (m==l) it=float(i); + } + float d=m/sc; + d=max(d,-sph); + d=min(d,cyl); + if (d==cyl) id=1.; + return d; +} + +vec3 normal(vec3 p) { + vec2 e=vec2(0.,det); + return normalize(vec3(de(p+e.yxx),de(p+e.xyx),de(p+e.xxy))-de(p)); +} + +vec3 march(vec3 from, vec3 dir) { + vec3 p, col=vec3(0.); + float d, td=0., maxdist=8.; + float g=0.; + float r=hash(dir.xy); + for (int i=0; i<200; i++) { + p=from+dir*td; + d=de(p)*(1.-r*.2); + if (dmaxdist) break; + td+=d; + g+=.1/(.1+cyl*5.); + } + if (d 0) d1 = (1.-p.z)/D1.z; + else d1 = (-2.-p.z)/D1.z; + vec3 p1 = p+D1*d1; + + c += bg(p.xy) * exp(-d*1.1) * exp(-i/8.)*.6; + c += bg(p1.xy) * dot(D1, n) * exp(-d1*2.)*3.; + } else { + float d1 = (1.-O.z)/D.z; + vec3 p = O+D*d1; + float shad = raymarch(p, vec3(0.,0.,-1.), i, hit); + shad = step(20., shad); + c += bg(p.xy)*shad * exp(-d1/8.); + } + + uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + if (hit) { + vec4 pr = prev(uv + .03*n.xy); + c += pr.rgb * pow(abs(n.z), 2.) * .9; + } + out_color = vec4(c, (hit?1.:0.) * d); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_nusan.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_nusan.glsl new file mode 100644 index 000000000..e1eac2101 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_nusan.glsl @@ -0,0 +1,161 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +// hello Revision! +float time=mod(fGlobalTime * 0.2, 300); + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float rnd(float t) { + return fract(sin(t*362.984)*574.773); +} + +vec3 rnd(vec3 t) { + return fract(sin(t*847.627+t.yzx*463.994+t.zxy*690.238)*492.094); +} + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1), pow(smoothstep(0,1,fract(t)),10)); +} + +float curvei(float t, float d) { + t/=d; + return mix(floor(t)+rnd(floor(t)), floor(t)+1+rnd(floor(t)+1), pow(smoothstep(0,1,fract(t)),10))*d; +} + +float smin(float a, float b, float h) { + float k=clamp((a-b)/h*0.5+0.5, 0, 1); + return mix(a,b,k) - k * (1-k) * h; +} + +vec3 am=vec3(0); +float map(vec3 p) { + + //p.xy *= rot(time*0.4 + sin(p.z*0.134)); + //p.xy = abs(p.xy) - sin(time - p.z * 0.02)*5-10; + + + vec3 bp=p; + float t=time*0.3 + curvei(time, 0.7) + curvei(time, 0.2); + + + for(int i=0; i<3; ++i) { + p.xz *= rot(t + sin(p.y*0.1)); + p.xy *= rot(t*0.7 + sin(p.z*0.14)); + p.xz =abs(p.xz)-1.9-curve(time, 0.2)*10; + } + + float d = box(p, vec3(1)); + d = smin(d, length(p.xy)-0.3, 0.2); + + d = smin(d, abs(length(bp)-5-curve(time, 0.3)*6), 3.9); + + p=abs(p)-2; + float d3 = length(p)-0.2; + d3 = min(d3, length(p.xz)-0.15); + d3=smin(d3, length(bp)-15, -4); + d=min(d, d3); + + am += vec3(0.6,0.4,0.2) * 0.004/(0.01 + abs(d3)); + + d *= 0.7; + + return d; +} + +vec3 norm(vec3 p, float t) { + vec2 off=vec2(0.01,0); + return normalize(map(p)-vec3(map(p-off.xyy), map(p-off.yxy), map(p-off.yyx))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv.y -= curve(time, 0.1)*0.1; + + float t5=time*10; + uv.x += max(curve(t5+rnd(floor(uv.y*448)),0.2)-0.5-curve(t5*5+uv.y*0.2, 0.3),0) * 0.2; + + uv *= 1 + length(uv); + + vec3 s=vec3(0,0,-22); + float fov = 0.4 + curve(time, 0.5); + vec3 r2=normalize(vec3(uv,fov)); + + vec3 col=vec3(0); + float ste=10; + for(int j=0; j100.0) break; + p+=r*d; + dd+=d; + } + + col += am / ste; + col += pow(abs((r.x*sin(vec3(1,2,3)*0.2+time*4))), vec3(4)) / ste; + } + + col *= 1.5; + float t3=time*0.2; + col.xz *= rot(t3*0.7); + col.xz *= rot(t3); + col=abs(col); + + col = smoothstep(0,1,col); + col = pow(col, vec3(0.4545)); + + vec2 uv2 = gl_FragCoord.xy / v2Resolution.xy; + uv2-=0.5; + uv2 *= 1.02; + uv2+=0.5; + vec3 prev = texture(texPreviousFrame, uv2).rgb; + float fr=0.4+0.6*pow(fract(time*0.2),5) * smoothstep(0.5,0.6,length(uv2-0.5)); + //col = mix(col, prev, fr); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_rimina.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_rimina.glsl new file mode 100644 index 000000000..b35856847 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_rimina.glsl @@ -0,0 +1,329 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.25).r; + +const float PI = 3.14159265; + +const float E = 0.001; +const float FAR = 100.0; +const int STEPS = 64; + +float M = 0.0; +vec3 glow = vec3(0.0); + +struct Material{ + vec3 l; + float li; + vec3 s; + float si; +}; + +Material red(){ + + Material m; + m.l = vec3(1.0, 0.0, 0.0); + m.li = 0.5; + m.s = vec3(1.2, 0.2, 0.2); + m.si = 0.5; + + return m; +} + +Material orange(){ + + Material m; + m.l = vec3(1.0, 0.5, 0.0); + m.li = 0.5; + m.s = vec3(1.2, 0.7, 0.2); + m.si = 0.5; + + return m; +} + +Material yellow(){ + + Material m; + m.l = vec3(1.0, 0.8, 0.0); + m.li = 0.5; + m.s = vec3(1.2, 1.0, 0.2); + m.si = 0.5; + + return m; +} + +Material green(){ + + Material m; + m.l = vec3(0.0, 1.0, 0.0); + m.li = 0.5; + m.s = vec3(0.2, 1.2, 0.2); + m.si = 0.5; + + return m; +} + +Material blue(){ + + Material m; + m.l = vec3(0.0, 0.0, 1.0); + m.li = 0.5; + m.s = vec3(0.2, 0.2, 1.2); + m.si = 0.5; + + return m; +} + +Material purple(){ + + Material m; + m.l = vec3(0.8, 0.0, 0.6); + m.li = 0.5; + m.s = vec3(1.0, 0.2, 0.8); + m.si = 0.5; + + return m; +} + +// 3D noise function (IQ) +float noise(vec3 p){ + vec3 ip = floor(p); + p -= ip; + vec3 s = vec3(7.0,157.0,113.0); + vec4 h = vec4(0.0, s.yz, s.y+s.z)+dot(ip, s); + p = p*p*(3.0-2.0*p); + h = mix(fract(sin(h)*43758.5), fract(sin(h+s.x)*43758.5), p.x); + h.xy = mix(h.xz, h.yw, p.y); + return mix(h.x, h.y, p.z); +} + +//https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm +float cappedCylinder(vec3 p, float h, float r){ + vec2 d = abs(vec2(length(p.xz), p.y))-vec2(h, r); + return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)); +} + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0); +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +//USING HG SDF LIBRARY! +// Repeat around the origin by a fixed angle. +// For easier use, num of repetitions is use to specify the angle. +float pModPolar(inout vec2 p, float repetitions) { + float angle = 2.0*PI/repetitions; + float a = atan(p.y, p.x) + angle/2.0; + float r = length(p); + float c = floor(a/angle); + a = mod(a,angle) - angle/2.0; + p = vec2(cos(a), sin(a))*r; + // For an odd number of repetitions, fix cell index of the cell in -x direction + // (cell index would be e.g. -5 and 5 in the two halves of the cell): + if (abs(c) >= (repetitions/2.0)) c = abs(c); + return c; +} + +float heart(vec3 p, float height){ + vec3 pp = p; + pp.x = abs(pp.x)-1.4; + rot(pp.xz, -PI*0.22); + + float kaari = cappedCylinder(pp, 1.61, height); + pp -= vec3(-2., 0.0, 0.6); + + float kulma = box(pp, vec3(2.0, height, 1.01)); + + return min(kaari, kulma); + +} + +float scene(vec3 p){ + vec3 pp = p; + float offset = 12.0; + + //rot(pp.xz, time); + rot(pp.yz, PI*0.5); + float isoSydan = heart(pp, 0.8)-noise(p+time+fft)*0.5; + isoSydan += sin(time+fft)*0.1; + pp = p; + + float id = floor((pp.z + offset*0.5) / offset); + pp.z = mod(pp.z+offset*0.5, offset)-offset*0.5; + + if(mod(id, 2.0) == 0){ + rot(pp.xy, time+fft); + } + else{ + rot(pp.xy, -time-fft); + } + + M = pModPolar(pp.xy, offset); + pp.x -= offset; + + rot(pp.yz, PI*0.5); + float sydan = heart(pp, 0.6)-noise(p)*0.2; + + //pp = p; + + for(int i = 0; i < 2; ++i){ + pp = abs(pp)-vec3(4.); + rot(pp.xz, time); + rot(pp.xy, fft); + rot(pp.yx, fft + time); + } + + //float b = box(pp, vec3(1.0, 1.0, FAR*2.0)); + float b = heart(pp-vec3(1.0, .0, -1.0), 0.5); + + vec3 g = vec3(0.8, 0.1, 0.1) * 0.01 / (abs(sydan) + 0.03); + g += vec3(0.8, 0.1, 0.1) * 0.01 / (abs(isoSydan) + 0.05); + g += vec3(0.8, 0.1, 0.9) * 0.05 / (abs(b) + 0.01); + g *= 0.33; + glow += g; + + if(isoSydan < sydan){ + M = -1.; + } + + + return min(sydan, isoSydan); +} + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + for(int i = 0; i < STEPS; ++i){ + float d = scene(p); + t += d; + p = ro + rd * t; + + if(d < E || t > FAR){ + break; + } + } + return t; +} + + +vec3 normals(vec3 p, float epsilon){ + vec3 e = vec3(epsilon, 0.0, 0.0); + + return normalize(vec3( + scene(p+e.xyy) - scene(p-e.xyy), + scene(p+e.yxy) - scene(p-e.yxy), + scene(p+e.yyx) - scene(p-e.yyx) + )); +} + + +//From Flopine <3 <3 <3 +//https://www.shadertoy.com/view/sdfyWl +float ao(float e, vec3 p, vec3 n){ + return scene(p+e*n)/e; +} + +vec3 shade(vec3 p, vec3 rd, vec3 ld){ + + vec3 n = normals(p, E); + float lamb = max(dot(n, ld), 0.0); + float a = max(dot(reflect(rd, ld), n), 0.0); + float spec = pow(a, 20.0); + + vec3 coll = vec3(0.8, 0.4, 0.5)*0.25; + vec3 cols = vec3(0.8, 0.0, 0.0); + + float aoc = ao(0.1, p, n) + ao(0.2, p, n) + ao(0.5, p, n); + + Material m = red(); + if(M == -1.0){ + m = orange(); + } + else if(abs(M) > 0.0 && abs(M) <= 1.0){ + m = orange(); + } + else if(abs(M) > 1.0 && abs(M) <= 2.0){ + m = yellow(); + } + else if(abs(M) > 2.0 && abs(M) <= 3.0){ + m = green(); + } + else if(abs(M) > 3.0 && abs(M) <= 4.0){ + m = blue(); + } + else if(abs(M) > 4.0 && abs(M) <= 5.0){ + m = purple(); + } + + return (m.li * m.l * lamb + m.si * m.s * spec);//*aoc; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = uv - 0.5; + q /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(0.0, 0.0, 18.0); + vec3 rt = vec3(0.0, 0.0, -FAR); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x, y, z) * vec3(q, 1.0/radians(60.0))); + + float t = march(ro, rd); + vec3 p = ro + rd * t; + + vec3 ld = -z; + + vec3 col = vec3(0.1, 0.0, 0.1); + + if(t < FAR){ + col = shade(p, rd, ld); + } + col +=glow*0.25; + + col = smoothstep(-0.1, 0.9, col); + + vec4 pcol = vec4(0.0); + vec2 puv = vec2(2.0/v2Resolution.x, 2.0/v2Resolution.y); + vec4 kertoimet = vec4(0.1531, 0.12245, 0.0918, 0.051); + pcol = texture2D(texPreviousFrame, uv) * 0.1633; + pcol += texture2D(texPreviousFrame, uv) * 0.1633; + for(int i = 0; i < 4; ++i){ + pcol += texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * kertoimet[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * kertoimet[i] + + texture2D(texPreviousFrame, vec2(uv.x + (float(i)+1.0) * puv.y, uv.y + (float(i)+1.0) * puv.x)) * kertoimet[i] + + texture2D(texPreviousFrame, vec2(uv.x + (float(i)+1.0) * puv.y, uv.y + (float(i)+1.0) * puv.x)) * kertoimet[i]; + } + col += pcol.rgb; + col *= 0.38; + col = mix(col, texture2D(texPreviousFrame, uv).rgb, 0.1); + + col *= smoothstep(0.8, 0.1*0.799, distance(uv, vec2(0.5))*(0.6 + 0.1)); + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_silvester747.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_silvester747.glsl new file mode 100644 index 000000000..4eae23c6b --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_silvester747.glsl @@ -0,0 +1,119 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define MAX_STEPS 100 +#define MAX_DIST 100. +#define SURF_DIST .1 +#define FFT_SENS .32 + +float Sphere(vec4 s, vec3 p, float offset, float speed, float eq, float sens) { + s.y += 1. + sin(fGlobalTime * speed + offset); + s.w *= 1 + (texture(texFFT, eq).r * FFT_SENS * sens) + sin(p.x); + + //s.w += p.y - s.y; + float d = length(p-s.xyz)-s.w; + return d; +} + +float GetDist(vec3 p) { + float sd1 = Sphere(vec4(0, 2, 6. - (cos(fGlobalTime) * 2.5), 1.), p, 0., 1., 0.4, 100.); + float sd2 = Sphere(vec4(-3, 2, 6, 1), p, 1., 1., 0.3, 100.); + float sd3 = Sphere(vec4(4, 2, 6. + (sin(fGlobalTime) * 3.), 1), p, 2., 3., 0.5, 100.); + float sd4 = Sphere(vec4(sin(fGlobalTime/2.) * 5., 2, 6. + cos(fGlobalTime/2.) * 2., 0.2), p, 1., 1., 0.1, 500.); + float sd = min(min(min(sd1, sd2), sd3), sd4); + + float audio = texture(texFFT, 0.1).x; + float planeDist = p.y; + planeDist += sin(p.z + fGlobalTime) / 2.0; + planeDist += sin(p.z + fGlobalTime) * (1 + texture(texFFT, p.z).r * FFT_SENS * 100.); + + float d = min(sd, planeDist); + return d; +} + + +float RayMarch(vec3 ro, vec3 rd) { + float dO=0.; + + for(int i=0; iMAX_DIST || dS 0.005) { + col += vec3(.2) * (bass / 0.005); + } else { + col = vec3(0.1, 0., 0.2); + } + } + + out_color = vec4(col, 1.0); + + +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_superogue.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_superogue.glsl new file mode 100644 index 000000000..084a72eae --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_superogue.glsl @@ -0,0 +1,69 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float t=fGlobalTime; +float f,f2; +float i,s=sin(t); +vec3 p; + +float N(vec3 p){return fract(sin(p.x*17.9+p.y*79.3)*4337);} + + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float S(vec3 p) + +{ + float a=sin(t-p.z); +// p = abs(p); + + p.xy *= mat2(cos(a),-sin(a),sin(a),cos(a)); + p=mod(p,2)-1; + for (i=0;i<4;i++) p=reflect(abs(p)-clamp(sin(t)*8,.1,.9), vec3(.4,.1,.9))*1.1; + return dot(p,sign(p))-(sin(t)*.2+.4)/length(p)-.01; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float rr=sin(t/3)/2+2.5; + float l=cos(length(uv)*rr); + + p=vec3(uv,1); + vec3 r=vec3(p.x+s/3,p.y+sin(t*1.2)/4,1)+N(p)/16.; + float i,d=1; + f = texture( texFFT, .4 ).r ;// * 100; + f2 = texture( texFFT, .2 ).r ;// * 100; + p+=vec3(0,0,t*4+f); + for (;d>.01&&i++<256;) p+=r*(d=S(p)/8); +// p+=vec3(sin(f),0,0); + + vec4 c = vec4(3,s/2+1,2,2); + c = abs( S(p-d)*c - S(p-.9)*c.zyxw); + + + out_color = clamp(l*c * 9./float(i),0,1)+(-uv.y)*0.3; +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_totetmatt.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_totetmatt.glsl new file mode 100644 index 000000000..791782803 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_totetmatt.glsl @@ -0,0 +1,156 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texLcdz; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float rand(vec2 p){ return fract(535.69*sin(dot(p,vec2(252.3,658.6))));} +float sdOrientedBox( in vec2 p, in vec2 a, in vec2 b, float th ) +{ + float l = length(b-a); + vec2 d = (b-a)/l; + vec2 q = (p-(a+b)*0.5); + q = mat2(d.x,-d.y,d.y,d.x)*q; + q = abs(q)-vec2(l,th)*0.5; + return length(max(q,0.0)) + min(max(q.x,q.y),0.0); +} +vec3 erot(vec3 p,vec3 ax,float t){ + return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t); + } +float box(vec3 p,vec3 b){ + p=abs(p)-b; + return length(max(p,vec3(0)))+min(0.,max(p.x,max(p.y,p.z))); + } +float jp_se(vec3 p){ + p.x+=.5; + float h=sdOrientedBox(p.xy,vec2(-0,1.5),vec2(0.,-1.5),.5); + h=min(h,sdOrientedBox(p.xy,vec2(0,-1.5),vec2(1.75,-1.5),.5)); + h=min(h,sdOrientedBox(p.xy,vec2(-.5,0.5),vec2(1.75,.75),.5)); + h=min(h,sdOrientedBox(p.xy,vec2(1.0,0.0),vec2(1.75,.75),.5)); + return max(abs(p.z)-.1,h); +} +float jp_s(vec3 p){ + + float h=sdOrientedBox(p.xy,vec2(-.5,-1.0),vec2(.5,.0),.25); + h=min(h,sdOrientedBox(p.xy,vec2(-.5,-0.2),vec2(-.90,.15),.25)); + h=min(h,sdOrientedBox(p.xy,vec2(-.25,-0.0),vec2(-.60,.35),.25)); + return max(abs(p.z)-.1,h); + } + float jp_si(vec3 p){ + + float h=sdOrientedBox(p.xy,vec2(-1.0,-1.0),vec2(1.0,.0),.5); + h=min(h,sdOrientedBox(p.xy,vec2(-.5,-0.2),vec2(-1.40,.15),.5)); + h=min(h,sdOrientedBox(p.xy,vec2(.25,0.2),vec2(-0.50,.55),.5)); + return max(abs(p.z)-.1,h); + } + float jp_o(vec3 p){ + p.x -=.5; + float h=sdOrientedBox(p.xy,vec2(-0.0,-1.0),vec2(0.0,1.0),.5); + h=min(h,sdOrientedBox(p.xy,vec2(-1.5,1.0),vec2(0.25,1.0),.5)); + h=min(h,sdOrientedBox(p.xy,vec2(-1.5,0.0),vec2(0.25,0.0),.5)); + h=min(h,sdOrientedBox(p.xy,vec2(-1.5,-1.0),vec2(0.25,-1.0),.5)); + return max(abs(p.z)-.1,h); + } + float jp_n(vec3 p){ + + float h=sdOrientedBox(p.xy,vec2(-1.0,-1.0),vec2(1.0,.25),.5); + h=min(h,sdOrientedBox(p.xy,vec2(.2,0.5),vec2(-1.00,.95),.5)); + return max(abs(p.z)-.1,h); + } +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float zz = (1.+sin(floor(texture(texFFTIntegrated,.13).r*10))*texture(texFFTSmoothed,.3).r*50); + float bpm = texture(texFFTIntegrated,.13).r; + bpm =floor(bpm) + pow(fract(bpm),.7); + if(abs(uv.y)>.3+.05*dot(sin(uv*05+bpm),cos(70*uv.yx))){ + uv*=2.; + } + + + vec3 col = vec3(0.); + vec3 p,d=normalize(vec3(uv,1.-(.8-zz+rand(uv)*.1)*sqrt(length(uv)))); + for(float i=0.,e=0.,g=0.;i++<99.;){ + + + p=d*g; + + + float bar = mod(fGlobalTime*2,6.); + p.z-=5.; + + p= erot(p,normalize(vec3(.1,1.,-.2)),bpm*5); + vec3 op=p; + + vec2 h; + vec3 hp=p; + float rr= +rand(uv)*.1; + float gy = abs(dot(sin(p*5),cos(p*7))*.1); + float fade = tanh(pow(fract(bar)+gy,20.2))+rr; + + hp.x +=bpm*5; + float idd=floor(hp.x); + hp.x = fract(hp.x)-.5; + bar+=mod(idd,6); + hp.xy*=2.; + if(bar<=1.){ + h.x = mix(jp_se(hp),jp_s(hp),fade); + } else if(bar<=2.){ + h.x =mix(jp_s(hp),jp_si(hp),fade); + + }else if(bar<=3.){ + h.x = mix(jp_si(hp),jp_o(hp),fade); + + }else if(bar<=4.){ + h.x = mix(jp_o(hp),jp_n(hp),fade); + + }else if(bar<=5.){ + h.x = jp_n(hp); + + } else { + h.x = 100.; + } + h.x = h.x; + h.y = 1.; + p.z+=bpm; + vec2 t; + vec3 tp=p; + tp.y =-(abs(tp.y)-2.+.5*dot(asin(sin(tp)),asin(cos(tp.zxy*5+bpm)))+texture(texRevisionBW,clamp(op.xz*.125+.5,0,1)).r); + t.x = dot(tp,vec3(0.,1.,0.))+1+texture(texRevisionBW,clamp(op.xz*.125+.5,0,1)).r; + t.y = 2.; + h=t.x < h.x ? t:h; + + tp=p; + tp=mod(tp,4.)-2.; + t.x = min(length(tp.zx)+.05,min(length(tp.xy),length(tp.zy)))-.1-texture(texFFTSmoothed,tp.z).r; + t.y=2.; + h=t.x < h.x ? t:h; + g+=e=max(.001,h.x); + vec2 tt= vec2(log(length(tp.xz)),atan(tp.x,tp.z)); + col += erot(vec3(.5+tan(bpm),.5+.5*cos(bpm),.5),normalize(vec3(.5,.7,2)),bpm+rand(tp.xy))*(h.y==1. ? vec3(.9,.9,.9)*(1.75+sin(bpm+hp.y*20)):vec3(.5))*.055/exp((.76+.25*sin(op.z*.5+bpm*5))*i*i*e); + + } + if(fract(bpm*5)>.9){ + col = 1-col; + } + out_color = vec4(sqrt(col),1.);; +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_visy.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_visy.glsl new file mode 100644 index 000000000..73b5ab6ad --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_visy.glsl @@ -0,0 +1,86 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float noise(vec2 p) +{ + return fract(sin(p.x*12.9898 + p.y*78.233)); +} + +float star(vec2 p, float r, in int n, in float m, in float roundness) { + float an = 3.141593 / float(n); + float en = 3.141593 / m; + vec2 acs = vec2(cos(an), sin(an)); + vec2 ecs = vec2(cos(en), sin(en)); + + float bn = mod(atan(p.x, p.y),2.0 * an) - an; + p = length(p) * vec2(cos(bn), abs(sin(bn))); + p -= r * acs; + p += ecs * clamp(-dot(p, ecs), 0.0, r * acs.y / ecs.y); + return length(p) * sign(p.x) - roundness; +} + +float line(vec2 p, vec2 a, vec2 b, float r) { + p -= a; + b -= a; + float d = length (p - b * clamp (dot (p, b) / dot (b, b), 0.0, 1.0)); + return smoothstep (r + 0.01, r, d); +} + +float n; + +#define ITERS 2.0 + +void main(void) +{ + vec2 p = (2.0 * gl_FragCoord.xy - v2Resolution.xy) / v2Resolution.y; + float t = fGlobalTime*0.2; + vec2 uv = (gl_FragCoord.xy - v2Resolution.xy) / v2Resolution.y; + + float ff = abs(cos(t*0.5) / length(p) * cos(t*1.1+uv.y)*1.1); + + + float f = texture( texFFT, ff ).r*10.; + vec4 pp = texture(texPreviousFrame, p*0.1); + + n = noise(p+t+f); + + vec4 outcol = vec4(3.0); + + for (float i = 0.0; i < ITERS; i+=1) + { + float s = star(p*cos(i*t)+tan(t*1)*4.0+cos(t+i),0.8+0.1*cos(i*f)*0.1,2+int(i*0.1+pp.x*10.1)+int(mod(t,16)*1.3),0.5,abs(cos(cos(f-t*0.1)+uv.x*1*cos(t+uv.y))*0.50-i*0.01+n*cos(t*5+pp.z)*20.-tan(t*0.1*f))); + float ss = star(p*cos(t*0.1)*10.,cos(t*0.5+i*0.01+ff*10.)+i*t*0.1+ff,8,cos(t*1+ff)*0.01+0.5,cos(t+ff)); + vec3 base = vec3(0.5*i*0.1+p.x-f*0,0.4+0.4*s,0.1+i*0.5); + vec3 color = mix(vec3(1.0), base/4.0, 0.0 - smoothstep(0.0, 8.0 / v2Resolution.y, s))/ss*cos(t*0.1+i*0.1); + color-=pp.rgb*cos(t*0.1+f)*0.5; + outcol.rgb+=color*250.+100*abs(cos(i*10.1)); + } + + outcol.rgb/=ITERS; + + outcol = clamp( outcol, 0.0, 1.0 ); + + out_color = outcol; +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_vj.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_vj.glsl new file mode 100644 index 000000000..96ce8a8d2 --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_vj.glsl @@ -0,0 +1,286 @@ +#version 410 core + +/**** +Radio bonzo + +Credit: + grabber_inerciaroyale_0b5vr.glsl +****/ + +#define lofi(i,j) (floor((i)/(j))*(j)) +#define lofir(i,j) (round((i)/(j))*(j)) + +const float PI=acos(-1.); +const float TAU=PI*2.; + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 r2d(float t){ + float c=cos(t),s=sin(t); + return mat2(c,s,-s,c); +} + +mat3 orthbas(vec3 z){ + z=normalize(z); + vec3 up=abs(z.y)>.999?vec3(0,0,1):vec3(0,1,0); + vec3 x=normalize(cross(up,z)); + return mat3(x,cross(z,x),z); +} + +uvec3 pcg3d(uvec3 s){ + s=s*1145141919u+1919810u; + s+=s.yzx*s.zxy; + s^=s>>16; + s+=s.yzx*s.zxy; + return s; +} + +vec3 pcg3df(vec3 s){ + uvec3 r=pcg3d(floatBitsToUint(s)); + return vec3(r)/float(0xffffffffu); +} + +float sdbox(vec3 p,vec3 s){ + vec3 d=abs(p)-s; + return length(max(d,0.))+min(0.,max(max(d.x,d.y),d.z)); +} + +float sdbox(vec2 p,vec2 s){ + vec2 d=abs(p)-s; + return length(max(d,0.))+min(0.,(max(d.x,d.y))); +} + +struct Grid{ + vec3 c; + vec3 h; + vec3 s; + int i; + float d; +}; + +Grid dogrid(vec3 ro,vec3 rd){ + Grid r; + r.s=vec3(2,2,100); + + for(int i=0;i<3;i++){ + r.c=(floor(ro/r.s)+.5)*r.s; + r.h=pcg3df(r.c); + r.i=i; + + if(r.h.x<.4){ + break; + }else if(i==0){ + r.s=vec3(2,1,100); + }else if(i==1){ + r.s=vec3(1,1,100); + } + } + + vec3 src=-(ro-r.c)/rd; + vec3 dst=abs(.501*r.s/rd); + vec3 bv=src+dst; + float b=min(min(bv.x,bv.y),bv.z); + r.d=b; + + return r; +} + +vec4 map(vec3 p,Grid grid){ + p-=grid.c; + + vec3 pt=p; + float rot=floor(fGlobalTime); + rot-=exp(-5.0*fract(fGlobalTime)); + float pcol=1.; + //pt.yz*=r2d(3.*rot); + + vec3 psize=grid.s/2.; + psize.z=1.; + psize-=.02; + float d=sdbox(pt+vec3(0,0,1),psize); + + if(grid.i==0){ + if(false){ + }else if(grid.h.y<1.){//speaker + vec2 c=vec2(0); + pt.xy*=r2d(PI/4.); + c.xy=lofir(pt.xy,.1); + pt.xy-=c.xy; + float r=.02*smoothstep(.9,.7,abs(p.x))*smoothstep(.9,.7,abs(p.y)); + float hole=length(pt.xy)-r; + d=max(d,-hole); + } + }else if(grid.i==1){ + if(false){ + }else if(grid.h.y<1.){//fader + float hole=sdbox(p.xy,vec2(.9,.05)); + d=max(d,-hole); + + float ani=smoothstep(-.2,.2,sin(fGlobalTime+grid.h.z*100.)); + pt.x+=mix(-.8,.8,ani); + + float d2=sdbox(pt,vec3(.07,.25,.4))+pt.z*.05; + + if(d250.){break;} + } + + March r; + + r.isect=isect; + r.rp=rp; + r.rl=rl; + r.grid=grid; + + return r; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 p=uv*2.-1.; + p.x*=v2Resolution.x/v2Resolution.y; + + vec3 col=vec3(0); + + float canim=smoothstep(-.2,.2,sin(fGlobalTime)); + float cr=mix(.33,0.,canim); + vec3 co=mix(vec3(-6,-8,-40),vec3(0,0,-40),canim); + co.xy+=fGlobalTime; + vec3 ct=vec3(0,0,-50); + ct.xy+=fGlobalTime; + mat3 cb=orthbas(co-ct); + vec3 ro=co+cb*vec3(4.*p*r2d(cr),0); + vec3 rd=cb*normalize(vec3(0,0,-2.)); + + March march=domarch(ro,rd,200); + + if(march.isect.x<1E-2){ + vec3 basecol=vec3(.5); + vec3 speccol=vec3(.5); + float specpow=30.; + + float mtl=march.isect.y; + float mtlp=march.isect.z; + if(mtl==0.){ + basecol=mix(vec3(.04),vec3(.9),mtlp); + } + + float ndelta=1E-3; + vec3 n=nmap(march.rp,march.grid,ndelta); + vec3 v=-rd; + + { + vec3 l=normalize(vec3(1,2,5)); + vec3 h=normalize(l+v); + float dotnl=max(0.,dot(l,n)); + float dotnh=max(0.,dot(n,h)); + vec3 diff=basecol/PI; + vec3 spec=speccol*pow(dotnh,specpow); + col+=vec3(.5,.6,.7)*dotnl*(diff+spec); + //col=vec3(.5+.5*n); + } + + { + vec3 l=normalize(vec3(-1,-2,5)); + vec3 h=normalize(l+v); + float dotnl=max(0.,dot(l,n)); + float dotnh=max(0.,dot(n,h)); + vec3 diff=basecol/PI; + vec3 spec=speccol*pow(dotnh,specpow); + col+=dotnl*(diff+spec); + //col=vec3(.5+.5*n); + } + } + + col=pow(col,vec3(.4545)); + col=smoothstep(vec3(.0,-.1,-.2),vec3(1.,1.1,1.2),col); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_wbcbz7.glsl b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_wbcbz7.glsl new file mode 100644 index 000000000..86521310d --- /dev/null +++ b/shader_file_sources/2023_04_08_shader_jam_revision/grabber_revision2023_wbcbz7.glsl @@ -0,0 +1,178 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float hash(vec2 uv) {return fract(sin(dot(vec2(3432.5, 5252.), uv) * 2023.0));} + +float tt = mod(fGlobalTime + 0.001*hash(gl_FragCoord.xy/v2Resolution), 180.0); + +mat2 rot2(float a) {return mat2(cos(a), sin(a), -sin(a), cos(a)); } + +float box(vec3 p) { + return 0; +} + +int bug[] = int[]( + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, + 0,0,0,2,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,2,2,2,0,0,0,0, + 0,0,0,2,2,0,2,0,2,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,2,0,2,0,0,0,0, + 0,0,0,2,2,2,2,0,2,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,2,2,2,0,0,0,0, + 0,0,0,2,0,2,2,0,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,2,0,2,0,0,0,0, + 0,0,0,2,2,2,2,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,2,2,0,0,0,0, + 0,0,0,2,2,2,0,2,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0, + 0,0,0,2,0,0,0,2,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0, + 0,0,0,2,0,2,0,2,0,0,2,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0, + 0,0,0,2,0,2,0,2,0,0,2,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,2,0,2,0,2,0,0,2,0,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0, + 0,0,0,2,2,2,0,0,2,2,0,0,0,1,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0, + 0,0,0,2,0,0,0,2,2,0,2,2,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0, + 0,0,0,2,0,0,0,2,0,2,0,2,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0, + 0,0,0,2,0,0,0,2,0,2,0,2,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,2,2,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +); + +float sphere(vec3 p, float r) { + return length(p) - r; +} + +vec3 mapLogo(vec2 uv) { + uv *= (0.5 + (2. * texture(texFFT, 0.01).r)); + float r = length(uv); + //if (r < 0.5) { + if (r < 0.12) uv *= rot2(tt * 0.7 + 3*sin(tt * 0.3)); else + if (r < 0.18) uv *= rot2(tt * 1.5); else + if (r < 0.25) uv *= rot2(tt * 0.3); else + if (r < 0.4) uv *= rot2(tt * -1.3); else + uv *= rot2(tt * 0.5); + + return textureLod(texRevisionBW, uv - vec2(0.5), 1).rgb; + //} else return vec3(0.0); + +} + +vec3 triplanar(vec3 p, float t) { + return (mapLogo(p.xy) + mapLogo(p.xz) + mapLogo(p.yz)); +} + +float map(vec3 p) { + p.xy = abs(p.xy); + p -= vec3(1.0); + p.xz * rot2(tt*0.4); + p.yz = abs(p.yz); + p -= vec3(1.3); + return sphere(p, 1.0) - 0.2*triplanar(p, tt).x; +} + +vec3 norm(vec3 p) { + vec2 b = vec2(0., 0.01); + float a = map(p); + return normalize(vec3( + -a+map(p+b.yxx), + -a+map(p+b.xyx), + -a+map(p+b.xxy) + )); +} + +float trace(vec3 o, vec3 d) { + float t = 0.; + + for (int i = 0; i < 256; i++) { + vec3 p = o + t*d; + float ct = map(p); + if ((abs(ct) < 0.001) || (t > 128.)) break; + t += ct; + } + + return t; +} + +mat3 la(vec3 o, vec3 t, float r) { + vec3 rr = vec3(sin(r), cos(r), 0.0); + vec3 ww = normalize(t - o); + vec3 uu = normalize(cross(ww, rr)); + vec3 vv = normalize(cross(uu, ww)); + + return mat3(uu, vv, ww); +} + +void main(void) +{ + vec2 uv = (2.* (gl_FragCoord.xy / v2Resolution.xy) - 1.) * vec2(v2Resolution.x/v2Resolution.y, 1); + + uv.x += 1.4*fract(sin(fGlobalTime*4.6)*67.5*(round(uv.y*32)/32)) * texture(texFFT, 0.02).r; + uv.y += 1.7*fract(sin(fGlobalTime*4.6)*47.5*(round(uv.y*32)/32)) * texture(texFFT, 0.01).r; + + + vec3 color = vec3(abs(uv), 0.0); + + vec2 uuv = uv*rot2(tt*0.7); + for (int i = 0; i < 5; i++) { + uuv *= vec2(3); + uuv = abs(uuv)*rot2(float(i+1)*0.3); + color += -(1. / float(i+2))* mapLogo(uuv); + //uuv = abs(uuv)*rot2(float(i+1)*0.3); + } + color += -1.0*texture(texFFT, abs(uuv.x*0.02)).rrr; + color += (1.0*vec3(0.2 * hash(sin(uv.xy))*vec2(1.0, 2.0) + 0.3, 1.0)); + + // time for raymarching! + float fov = 0.2; + float sp = 0.00; + float ap = fov * 3.14159*2; + float f = 1.0/ap; + float r = length(uv); + float phi = atan(uv.y, uv.x); + float theta = atan(r/((1.+sp)*f))*(1+sp); + + vec3 ray = vec3(sin(theta)*cos(phi), sin(theta)*sin(phi), cos(theta)); + + vec3 o = vec3(1.6 * sin(1.5 * tt), 3.4 * cos(tt*0.4), 2.4 * cos(tt*0.4)); + vec3 e = vec3(0.6 * sin(1.3 * tt), 0.4 * cos(tt*3.4), 0.4 * cos(tt*0.3)); + + ray *= la(o, e, 0); + + float t = trace(o, ray); + vec3 p = o+t*ray; + + if (!((t == 0.0) || (t > 128.0))) { + color = 0.3*abs(norm(p)); + } + + ivec2 iuv = ivec2((gl_FragCoord.xy / v2Resolution.xy) * vec2(40,20) * (1.0 + 0.02*hash(uv.yx*texture(texFFT, 0.05).r))) ; + + iuv.x += int(3.62*fract(sin(fGlobalTime*4.6)*67.5*(round(uv.y*32)/32)) * texture(texFFT, 0.02).r); + iuv.y += int(1.57*fract(sin(fGlobalTime*4.6)*47.5*(round(uv.y*32)/32)) * texture(texFFT, 0.01).r); + + if ((bug[(20 - iuv.y) * 40 + iuv.x] == 1) && (texture(texFFT, 0.01).r > 0.085)) color = vec3(1.0) - color; + if ((bug[(20 - iuv.y) * 40 + iuv.x] == 2) && (texture(texFFT, 0.01).r > 0.105)) color += 1.0; + //if (((iuv.x ^ iuv.y) & 1) == 0) color *= 0.3; + + if (texture(texFFT, 0.04).r > 0.005) color *= clamp(1.0 - pow(r*0.3, 0.7), 0, 1); + + + out_color = vec4(pow(color, vec3(1.0 / 2.2)), 1.0); +} diff --git a/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_Tobach.lua b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_Tobach.lua new file mode 100644 index 000000000..e67f92cba --- /dev/null +++ b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_Tobach.lua @@ -0,0 +1,76 @@ +-- pos: 0,0 +-- ^ +--tobach here... +--hello revision!!!! +--not as scary as i thought being on +--the front stage... ;-) +m=math +sin=m.sin +cos=m.cos +p2={} +points={ +{x=0,y=0,z=0}, +{x=4,y=0,z=0}, +{x=5,y=1,z=0}, +{x=5,y=6,z=0}, +{x=0,y=6,z=0}, +} + +function rx(p,ang) + xt=p.x + yt=p.y*cos(ang)-p.z*sin(ang) + zt=p.y*sin(ang)+p.z*cos(ang) + return {x=xt,y=yt,z=zt} +end + + +function ry(p,ang) + xt=p.x*cos(ang)-p.z*sin(ang) + yt=p.y + zt=p.x*sin(ang)+p.z*cos(ang) + return {x=xt,y=yt,z=zt} +end + + +function rz(p,ang) + xt=p.x*cos(ang)-p.y*sin(ang) + yt=p.x*sin(ang)+p.y*cos(ang) + zt=p.z + return {x=xt,y=yt,z=zt} +end + +function TIC() + cls() + t=time()/64 + for y=0,136,2 do + for x=0,240,2 do + sv=sin(x/32+t/4+sin(y/16+t/7)+t/4)*sin(t/8)*8 + pix(x,y,sv) + end + end + logocrap(30,-20) + +end + +function logocrap(x,y) + rect(10,24,220,120,3) + for i=0,4 do + sv2=-sin(i/1.1)*4 + rect(36+i*32,50+sv2,30,80,14) + rectb(36+i*32,50+sv2,30,80,15) + end + + rect(x+50,y+50,50,50,2) + rect(x+50,y+60,65,40,2) + rect(x+54,y+54,40,8,12) + rect(x+54,y+88,40,8,12) + rect(x+54,y+72,20,8,12) + rect(x+54,y+60,8,36,12) + + print("WERK",x+60,y+102,12,true,2) + + tri(0,26,120,-5,240,26,13) + for i=0,3 do + print("WE ARE BACK TO BACK IN THE E-WERK",240-t*16%1200-i,110-i+sin(t)*8,15-i,true,4) + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_mrsyn.lua b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_mrsyn.lua new file mode 100644 index 000000000..5c79ab630 --- /dev/null +++ b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_mrsyn.lua @@ -0,0 +1,36 @@ +-- pos: 0,0 +t=0 +s=math.sin +function citrus(x,y,w,c) + circ(x,y,w,c) + circ(x,y-10,w/3,c) + circ(x,y+10,w/3,c) +end + +function TIC() +cls() +c=2 +_c=12 +zf=10 +for x=0,239 do + if(x%zf==0) then + c,_c=_c,c + end + for y=0,135 do + if(y%zf==0) then + c,_c = _c,c + end + pix(x,y,c) + end +end + jf=s(t)*(s(t/5)*80) + f1 = 5 + f2 = 4 + for xf=0,7 do + f1,f2 = f2,f1 + citrus(10+xf*30,140-jf-s(xf+t)*10,10+s(t/10)*xf,f1) + end + + +t=t+.1 +end diff --git a/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_musk.lua b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_musk.lua new file mode 100644 index 000000000..196f9f0bb --- /dev/null +++ b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_musk.lua @@ -0,0 +1,52 @@ +-- pos: 0,0 + +t=0; +t2=0; +lt=0; +sgt=0; + + + +function TIC()gt=time()//32 + + + t=t+1 + t2=t2+1 + local q=4-t; + q2=16-t2; + if q>=0 then cls(q); end + if q2<0 then q2=0 end + + + sin=math.sin + cos=math.cos + + for i=0,10 do + circ( + 64+cos(i*4+gt/14)*120+66, + 64+sin(i*9+gt/35)*41, + sin(i+gt/44)*32, + i + ) + end + + + for y=0,136,2 do for x=0,240,2 do + pix(x+(y/2&1),y,((x+y+t)>>5)+q2) + + + + if(key(1))then + dt=gt-lt + sgt=dt*.1+sgt + lt=gt + t=0 + end + + if (t>28*4) then t=0 end + + if(t2>28) then t2=0 end + + + +end end end diff --git a/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_nico.lua b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_nico.lua new file mode 100644 index 000000000..b7c387784 --- /dev/null +++ b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_nico.lua @@ -0,0 +1,44 @@ +-- pos: 0,0 +-- qwerty keyboards... :( +m=math +s=m.sin +c=m.cos + +bx=0 +by=0 +dx=1 +dy=1 +-- start off boring (no wait I mean classic) +-- I cant remember how to do affine nonsense :( +-- imagine this is in a cool transform +function TIC()t=time()/200 + for x=0,240 do + for y=0,138 do + X=x + Y=y + if x>120 then t=time()/100 end -- splitscreen? uhhh + pix(X,Y,s(s(X)/16+t)+s(Y/8)+t) + end end + -- sure thatll do + -- uhh draw some stuff in front of it? + -- wait + -- damn qwerty!!!!! +end + +function OVR() +-- nico draws from memory +-- nico gives up drawing from memory + print("DVD", bx,by,12,0,2) + + bx=bx+dx + by=by+dy + -- this is not how to flip a vector + -- apologies for my crimes against coding + -- I know yll in discord are correcting my code live + if bx > 240-(6*6) then dx = -1 end + if by > 138-12 then dy = -1 end + if bx < 0 then dx = 1 end + if by < 0 then dy = 1 end + + +end \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_nusan.lua b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_nusan.lua new file mode 100644 index 000000000..78bd07127 --- /dev/null +++ b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_nusan.lua @@ -0,0 +1,23 @@ +-- pos: 0,0 +s,r,p=math.sin,math.random,math.pow +function TIC()t=time()//32 +for i=0,40+s(t/10)*60 do + rect(0,r(136)-1,240,1,0) +end +for i=0,4 do + --circb(120,64,r(140),r(16)) + c=r(70) + rectb(120-c,64-c,c*2,c*2,r(16)) +end +for i=0,100 do + t2=t*2+i/2+s(t/5)*1 + x,y=s(t2/5)*s(t2/5)*s(t2/5)*80+120, s(t2/8)*s(t2/8)*s(t2/8)*40+64 + c=s(t/12+i/30)*8+8 + circ(x,y,c*0.3,i/60+t/9) + --circb(x,y,c*2,i/60+8+t/9) + rectb(x-c,y-c,c*2,c*2,i/60+8+t/9) +end +for i=0,-10+20*s(t+s(t)) do + rect(r(240),r(136),r(40),r(40),t/6) +end +end diff --git a/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_speedman.lua b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_speedman.lua new file mode 100644 index 000000000..11251d547 --- /dev/null +++ b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_speedman.lua @@ -0,0 +1,32 @@ +-- pos: 0,0 +t=0 +sin=math.sin +cos=math.cos + +x=50 +y=50 + +function TIC() + + +cls(13+2*sin(t*0.5) ) + +t = t+0.1 +sz = 50 + +x1 = 50+sz*sin(t*2.3454) +y1 = 50+sz*cos(t*3.1232) + +for i=0,16 do + line(x1+sz*i*sin(i+t), + y1+sz*cos(i+t) , + x1+sz*i*0.1*sin(i+t+0.4), + y1+sz*i*0.1*cos(i+t+0.4), i) + + circ(x1+30*sin(i*t),y1+30*cos(i*t+t),10,10+t%4) +end + + +print("Hello Revision", (t*10)%300-50, 10+10*sin(t), 12, false, t%4) + +end \ No newline at end of file diff --git a/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_superogue.lua b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_superogue.lua new file mode 100644 index 000000000..5673f7839 --- /dev/null +++ b/shader_file_sources/2023_04_08_tic80_jam_revision/showdown_superogue.lua @@ -0,0 +1,43 @@ +-- pos: 0,0 +-- Superogue here... +-- "Groetjes to everyone at Revision!" +-- - Je Moeder +function SCN(l) +poke(16323,l) +end +function TIC()t=time()/39 +cls() + +f=fft(1)*9--math.random(4)/3 +a=t/19+math.sin(t/5) +s=math.sin(a) +c=math.cos(a) + + +for y=0,136,2 do +for x=0,240 do +X=x-120 +Y=y-68.1 +Z=1-((X*X+Y*Y)/399)--math.abs(Y+.1)/99 +xx=X*9/Z+math.sin(t/15)*32 +yy=Y*9/Z+math.sin(t/17)*32 +k=xx//8 & yy//4--(xx//1)&(yy//1) +pix(x,y,8+k%2) +end end + +for y=-15,15 do for x=-15,15 do +X=x*c-y*s +Y=x*s+y*c +Z=.2 +k=(x~y)/8 +h=(x~y)+math.sin(t/7)*4 +r=Y/99 +pix(X/2+16,Y/3+16-h,h/4) +end end + +print("have a great revision!",64,64,12+t/8%3) +print("- je moeder",64,72,13+t/8%2) + + +print("*REC",210,2,t//8&2,1,1,1) +end diff --git a/shader_file_sources/2023_04_08_tic80_jam_revision/tic80_pong_left.txt b/shader_file_sources/2023_04_08_tic80_jam_revision/tic80_pong_left.txt new file mode 100644 index 000000000..fede55a0d --- /dev/null +++ b/shader_file_sources/2023_04_08_tic80_jam_revision/tic80_pong_left.txt @@ -0,0 +1,46 @@ +t=0 +w=240 +h=135 +bpx = 30 +bpy = h/2 +bvx = 5 +bvy = 2 +px = 10 +py = ball_y +pw = 10 +ph = 30 +right_border_x = w*2 - 10 +left_border_x = 10 + pw + +function update() +bpx = bpx + bvx +bpy = bpy + bvy + +if bpx > right_border_x + or + bpx < left_border_x then + + bvx = -bvx +end + + +if bpy > h or bpy < 0 then + bvy = -bvy +end + +py = bpy +end + +function draw() + rectb(0,0, w+5, h, 5) + circ(bpx, bpy, 5, 5) + + + rect(px, py, pw, ph, 5) +end + +function TIC() + cls() + update() + draw() +end \ No newline at end of file diff --git a/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/Alia.lua b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/Alia.lua new file mode 100644 index 000000000..ca659e629 --- /dev/null +++ b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/Alia.lua @@ -0,0 +1,100 @@ +t=0 +w=30 h=23 +abs=math.abs +sin=math.sin +f=0 +function TIC() + vbank(0) + cls(14) + for y=0,136//h do + for x=0,240//w do + local x=x*w + local y=y*h + --rectb(x,y,w,h,12) + elli(x+15,y+17,13,5,15) + elli(x+15,y+12,13,5,3) + + local hh=abs(sin(t/8))*3 + elli(x+22,y+9-hh,6,4,2) + elli(x+22,y+8-hh,6,4,3) + + elli(x+22,y+7-hh,4,2,12) + rect(x+18,y+6-hh,8,2,3) + --rect(x+18,y+6-hh,8,2,3) + + for i=0,4 do + circ(x+7+i*3,y+16,2,3+i%2) + end + + end + end + + --local f=0 + f=f*.9 + for i=0,10 do + f=f+fft(i) + end + + local yo=abs(sin(t/16))*8*f*.2 + local y2=abs(sin(t/16+1))*4*f*.3 + vbank(1) + cls(0) + for i=0,12 do + circ(147+i*5, + 80+sin(t/4+i)*8*(i/12)*f*.2, + 5,13+i%2) + end + for i=0,4 do + circ(120+i*3, + 40+i*10-yo, + 15,i%2+13) + end + + circ(100,10-y2,8,13) + circ(88,10-y2,10,0) + + elli(105,26-y2,18,15,14) + elli(105,25-y2,18,14,13) + + elli(95,23-y2,3,6,12) + elli(94,23-y2,2,4,14) + + for i=0,4 do + circ(122-yo*(4-i)/4,110-i*5-yo,6,13+i%2) + circ(122-yo*(4-i)/4,115+i*5-yo,6,13+i%2) + + circ(142+yo*(4-i)/4,110-i*5-yo,6,13+i%2) + circ(142+yo*(4-i)/4,115+i*5-yo,6,13+i%2) + + circ(102-yo*(4-i)/4,65-i*5-yo,6,13+i%2) + circ(102-yo*(4-i)/4,65+i*5-yo,6,13+i%2) + + circ(132+yo*(4-i)/4,65-i*5-yo,6,13+i%2) + circ(132+yo*(4-i)/4,65+i*5-yo,6,13+i%2) + end + + circ(100,10-y2,8,13) + circ(88,10-y2,10,0) + + elli(105,26-y2,18,15,14) + elli(105,25-y2,18,14,13) + + elli(95,23-y2,3,6,12) + elli(94,23-y2,2,4,14) + + --print("=^^=",5,30,12,0,10) + t=t+1 +end + +function SCN(y) + local s=(y//h)/3+.5 + s=s*t + local f=fft((y-t)%136) + vbank(0) + poke(0x03FF9,f*100+(s%240)) + poke(0x03FFA,f*200) + vbank(1) + poke(0x03FF9,f*100-(t+sin(y/50+t/16)*30)%240-120) + poke(0x03FFA,f*200) + +end diff --git a/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/Kii.lua b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/Kii.lua new file mode 100644 index 000000000..c4fce8049 --- /dev/null +++ b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/Kii.lua @@ -0,0 +1,105 @@ +-- Big ups to MrSynAckster, Alia, +-- Dave84, jtruk, NuSan, Mantratronic +-- ToBach and Superogue! +-- Thank you Lynn for the choons! + +-- Starting with a palette +-- pre-made before the jam +function BOOT() + poke(0x3FC3,245) + poke(0x3FC4,169) + poke(0x3FC5,184) + poke(0x3FCF,220) + poke(0x3FD0,252) + poke(0x34D1,218) + poke(0x3FD5,90) + poke(0x3FD6,132) + poke(0x34D7,87) + poke(0x3FDE,91) + poke(0x3FDF,206) + poke(0x3FE0,250) + poke(0x3FE7,179) + poke(0x3FE8,179) + poke(0x3FE9,177) +end + +function drawCat(sX,sY) + tri(sX,sY+48,sX+16,sY,sX+48,sY+32,13) + tri(sX+3,sY+48+3,sX+16,sY+3,sX+48-3,sY+32+3,1) + tri(sX+47,sY+32,sX+64,sY+20,sX+80,sY+32,13) + tri(sX,sY+48,sX+48,sY+32,sX+16,sY+80,13) + tri(sX+16,sY+80,sX+48,sY+32,sX+32,sY+96,13) + tri(sX+32,sY+96,sX+48,sY+32,sX+64,sY+104,13) + tri(sX+48,sY+32,sX+64,sY+104,sX+80,sY+32,13) + tri(sX+64,sY+104,sX+80,sY+32,sX+96,sY+96,13) + tri(sX+80,sY+32,sX+96,sY+96,sX+118,sY+80,13) + tri(sX+80,sY+32,sX+118,sY+80,sX+128,sY+48,13) + tri(sX+80,sY+32,sX+112,sY,sX+128,sY+48,13) + tri(sX+80+3,sY+32+3,sX+112,sY+3,sX+128-3,sY+48+3,10) + + trib(sX+20,sY+60,sX+44,sY+60,sX+32,sY+44,0) + trib(sX+84,sY+60,sX+108,sY+60,sX+96,sY+44,0) + trib(116,88,124,88,120,92,0) + + line(120,100,110,108,0) + line(110,108,100,100,0) + line(100,100,103,97,0) + + line(120,100,130,108,0) + line(130,108,140,100,0) + line(140,100,133,97,0) +end + + +t=0 +function TIC() + cls(9) + + for i=0,120 do + s=getSamples(2*i,2*i+1) + c=i%3+5 + line(i,68,i,68-s.avg*20,c) + line(240-i,68,240-i,68-s.avg*20,c) + line(i,69,i,69+s.avg*20,c) + line(240-i,69,240-i,69+s.avg*20,c) + end + + drawCat(56,18) + + s1=getSamples(0,40) + s2=getSamples(41,80) + + poke(0x3FC3,245*math.max(1,(s1.avg*20))) + poke(0x3FC4,169*math.max(1,(s1.avg*20))) + poke(0x3FC5,184*math.max(1,(s1.avg*20))) + + poke(0x3FDE,91*math.max(1,(s2.avg*20))) + poke(0x3FDF,206*math.max(1,(s2.avg*20))) + poke(0x3FE0,250*math.max(1,(s2.avg*20))) + + msg="GREETS TO EVERYONE! PROTECT TRANS KIDS" + for i=0,#msg do + print(msg:sub(i,i),((222+18*i-t*5)%800)+1,50+12*math.sin(t)+1,9,1,3) + print(msg:sub(i,i),((222+18*i-t*5)%800),50+12*math.sin(t),12,1,3) + end + + t=t+0.2 +end + +function getSamples(min,max) + s={} + sAvg=0 + sMax=0 + for i=min,max do + s[i]=fft(i) + sAvg=sAvg+s[i] + if s[i]>sMax then + sMax=s[i] + end + end + return { + samples=s, + avg=sAvg/(max-min), + max=sMax + } +end \ No newline at end of file diff --git a/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/MrSynAckster.lua b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/MrSynAckster.lua new file mode 100644 index 000000000..c2f18c737 --- /dev/null +++ b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/MrSynAckster.lua @@ -0,0 +1,23 @@ +ti=0 +s=math.sin +function TIC() +cls() +t = "better late than never" +for x=0, #t do + print(string.sub(t,x,x), + (10*x+ti)%240,0,5,true,1) +end +sf = 60 +for c=0,3 do +for z=0,3 do + for q=0,5 do + circ((75+ti+5*q+c*sf)%240,75+s(ti)*2*fft(q),10,6) + end + circ((75+ti+26+c*sf)%240,73+s(ti)*4,3,12) + circ((75+ti+26+c*sf)%240,71+s(ti)*4,1,0) + +end + +end +ti=ti+.5 +end diff --git a/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/NuSan.lua b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/NuSan.lua new file mode 100644 index 000000000..c40bdb1ed --- /dev/null +++ b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/NuSan.lua @@ -0,0 +1,38 @@ +p,r,mi,ma,s,t={},math.random,math.min,math.max,math.sin,0 +cls() +for i=1,20 do +p[i]={x=r(240),y=r(136),u=0,v=0} +end +function TIC() + for i=0,47 do + poke(0x3FC0+i,(i//3)*15+(s(t/50+i%3+s(t/30+i%4))*60+60)) + end + --rect(0,(t*5)%136,240,6,t%4+10) + --rect((t*5)%240,0,6,136,t%6+8) + for i=1,299 do + a,b=r(240)+1,r(136)+1 + circ(a,b,2,ma(0,pix(a,b)*0.5)) + end + for i=1,#p do + c=p[i] + g,h=10,3 + if fft(i*4)>0.03 and r(20)<2 then + t=t+2 + c.u,c.v,g,h,b=r(10)-6,r(10)-6,15,10,r(60)+10 + circb(120,65,b,15) + circb(120,65,b+1,15) + circb(120,65,b+2,15) + a,b=r(240),r(126) + for j=1,10 do + line(a,b+j,c.x,c.y,t%6+8) + end + end + circ(c.x,c.y,h,g) + c.u,c.v=c.u*0.95,c.v*0.95 + c.x,c.y=c.x+c.u,c.y+c.v + n,m=ma(10,mi(230,c.x)),ma(10,mi(126,c.y)) + if c.x~=n then c.u=-c.u end + if c.y~=m then c.v=-c.v end + c.x,c.y=n,m + end +end diff --git a/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/ToBach.lua b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/ToBach.lua new file mode 100644 index 000000000..34e4fe51b --- /dev/null +++ b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/ToBach.lua @@ -0,0 +1,89 @@ +-- ^ +--tobach here!!! +--this is going to be an absolute blast +--greetz to synackster, alia, dave, +--nusan, jtruk, mantratronic, +--kii and superogue!! :) <3 + +sin=math.sin +cos=math.cos + +function SCN(scnln) + if scnln>100 then + poke(0x3ff9,sin(t/2+scnln/2)*2) + else + poke(0x3ff9,0) + end +end + +function TIC() + t=time()/100 + cls(10) + + flower(280-t*8%390,88,1,1) + flower(420-t*8%600,68,3,2) + flower(320-t*8%500,58,8,3) + flower(490-t*8%540,48,12,4) + + bee(40+sin(t/4)*8,0+sin(t/3)*8) + bee2(10+sin(t/4+1)*4,0+sin(t/3+1)*4) + bee2(-20+sin(t/4+2)*4,0+sin(t/3+2)*4) + bee2(-50+sin(t/4+3)*4,0+sin(t/3+3)*4) + + grass(0-(t*12)%124+18,10,2) + grass(0-(t*12)%124+9,4,1) + grass(0-(t*12)%124,10,0) + + scroller("Don't worry bee happy :)",240-t*10%540,10,0) +end + +function bee(x,y) + circ(x+110,y+68,10,4) + circ(x+133,y+68,10,4) + for i=0,8 do + rect(x+108+i*3,y+58,3,21,i%2*4) + end + circ(x+140,y+65,3,12) + circ(x+141,y+65,2,0) + elli(x+116,y+58,10,sin(t*6)*6,14) + elli(x+128,y+58,10,sin(t*6)*6,13) +end + +function bee2(x,y) + circ(x+110,y+68,8,4) + circ(x+117,y+68,8,4) + for i=0,3 do + rect(x+108+i*3,y+60,3,17,i%2*4) + end + circ(x+120,y+65,3,12) + circ(x+121,y+65,2,0) + elli(x+110,y+60,4,sin(t*6)*3,14) + elli(x+115,y+60,4,sin(t*6)*3,13) +end + +function flower(x,y,c,o) + for i=0,20 do + circ(x+sin(i/4+sin(t/2+1+o))*4,y+i*4,5,7) + end + for i=0,5 do + circ(x+sin(i+sin(t/2+o)/4)*16,y+cos(i+sin(t/2+o)/4)*16,10,c) + circb(x+sin(i+sin(t/2+o)/4)*16,y+cos(i+sin(t/2+o)/4)*16,10,c+1) + end + circ(x,y,10,4) + circb(x,y,10,3) +end + +function grass(x,y,c) + for i=0,200 do + tri(x+0+i*5+sin(i/4)*8,y+136,x+5+i*5+sin(i/4)*8+sin(t/3)/3,y+90,x+8+i*5+sin(i/4)*8,y+136,5+c) + end +end + +function scroller(text,x,y) + for i=1,#text do + c=text:sub(i,i) + for j=0,2 do + print(c,x+i*12+j,y+j+sin(i+t)*4,14-j,true,2) + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/dave84.lua b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/dave84.lua new file mode 100644 index 000000000..9607ab61a --- /dev/null +++ b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/dave84.lua @@ -0,0 +1,28 @@ +--dave84 +--Greetings everyone! +b={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} +angle=0 +cls(0) +s=math.sin +c=math.cos +for j=0,47 do + poke(16320+j,j%3*5*j) +end +function TIC() + +for j=0,47 do + poke(16320+j,j%3*(fft(2))*100*j) +end +for x=1,20 do + b[x]=b[x]+fft(x-1) + circ(120+s(x+angle)*b[x]*10,68+c(x+angle)*b[x]*10,s(t)*10*fft(3),t) + if(b[x] > 10) then b[x] = 0 end + for x=0,20 do + pix(math.random(0,239),math.random(0,136),0) + end +end + +t=t+0.5 +angle=angle+0.1 +end +t=0 \ No newline at end of file diff --git a/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..48f0ac26b --- /dev/null +++ b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,165 @@ +S=math.sin +C=math.cos +A=math.atan2 +PI=math.pi +PI2=PI*2 +T=0 + +DOTS={} +function addDot(xc,yc) + getIFreeDot=function() + for i=1,#DOTS do + local dot=DOTS[i] + if dot.life<0 then + return i + end + end + return #DOTS+1 + end + + nextFree=getIFreeDot() + DOTS[nextFree]={ + x=xc, + y=yc, + life=100, + } +end + +function doDot(dot) + if dot.life>=0 then + local size=1+(dot.life/100)*5 + circ(dot.x,dot.y,size,15) + dot.life=dot.life-1 + dot.y=dot.y+1 + end +end + + +-- COLOURS!!! +function BDR(y) + vbank(0) + for c=0,14 do + local addr=0x3FC0+(1+c)*3 + local i=c/14 +-- local r=0.5+S(i)*.25+S(T*.05+y*.08)*.25 +-- local g=0.5+S(.3+i)*.25+S(T*.06+y*.1)*.25 +-- local b=0.5+S(.6+i)*.25+S(T*.07+y*.12)*.25 + local r=0.5+S(.3+i)*.25+S(T*.04+y*.05)*.25 + local g=0.5+S(.2+i)*.25+S(T*.06+y*.04)*.25 + local b=0.5+S(.5+i)*.25+S(T*.07+y*.06)*.25 + poke(addr,(r*255)//1) + poke(addr+1,(g*255)//1) + poke(addr+2,(b*255)/1) + end + + vbank(1) + for c=1,15 do + local addr=0x3FC0+c*3 + local i=c/15 + local r=0.5-S(i)*.25+S(T*.05+y*.08)*.25 + local g=0.5-S(.3+i)*.25+S(T*.06+y*.1)*.25 + local b=0.5-S(.6+i)*.25+S(T*.07+y*.12)*.25 + poke(addr,(r*255)//1) + poke(addr+1,(g*255)//1) + poke(addr+2,(b*255)/1) + end + + local ofs= + ((S(T*.09+y*.05)*10) + +(S(T*.04+y*.03+fft(0)*40)*10) + )//1 + poke(0x3ff9,ofs) +end + +function TIC() + vbank(1) + cls() + + for i=1,#DOTS do + doDot(DOTS[i]) + end + + for s=0,30 do + local ox=s*.8+T*.023 + local oy=s*.6+T*.012 + local oz=s*1.1+T*.019 + local xc=S(ox)*800 + local yc=C(oy)*600 + local zc=10+S(oz)*20 + local xst,yst,ast=drawStar(xc,yc,zc,T*.1,s) + + if T%15==s then + addDot(xst,yst,ast) + end + end + + local lastp=0 + for y=0,136 do + for x=0,240 do + p=pix(x,y) + if p>0 then + local dx,dy=x-120,y-68 + local d=(dx^2+dy^2)^0.7 + local a=A(dx,dy) + local p=p*5+ + S(a^2)+S(d*.05+T*.1) + pix(x,y,2+(p%14)) + elseif(lastp>0)then + pix(x,y,1) + end + lastp=p + end + end + + print("jtruk",209,129,1) + print("jtruk",208,128,15) + + vbank(0) + for y=0,136 do + for x=0,240 do + local dx,dy=x-120,y-68 + local d=(dx^2+dy^2)^0.7 + local a=A(dx,dy) + local p= + 8 + +S( + d*.03 + -T*.2 + +d*.005+a + )*7 + pix(x,y,p) + end + end + + T=T+1 +end + +function drawStar(xc,yc,zc,a,c) + local xcp,ycp,zcp=proj(xc,yc,zc) + local size=100/zcp + + for p=0,4 do + local a0=p/5*PI2+a + local xi0=xcp+S(a0)*size + local yi0=ycp+C(a0)*size + local a1=(p+1)/5*PI2+a + local xi1=xcp+S(a1)*size + local yi1=ycp+C(a1)*size + + local a2=(p+.5)/5*PI2+a + local xo=xcp+S(a2)*size*2 + local yo=ycp+C(a2)*size*2 + + tri(xcp,ycp,xi0,yi0,xi1,yi1,1+c%15) + tri(xi0,yi0,xi1,yi1,xo,yo,1+c%15) + end + + return xcp,ycp,a +end + +function proj(x,y,z) + return + 120+(x/z), + 68+(y/z), + z +end \ No newline at end of file diff --git a/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..1cbd93b16 --- /dev/null +++ b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,284 @@ +--[[ + mantra here + gonna try some kaleidoscopes + and even funkier colours + + greets to + +mrsynackster kii alia + +dave84 jtruk nusan + ^ +aldroid tobach superogue + +lynn reality and you +--]] + +m=math +r=m.random +cs={} +nc=50 +ffth={} +p1={x=0,y=0} +p2={x=119,y=0} +p3={x=119,y=67} +p4={x=0,y=67} +bh=0 +bass=0 +mode=0 +reps=0 + +function circs() +for i=1,nc do +cs[i]={x=r(240),y=r(136),s=2+r(20),c=1+r(14)} +end +end + +function BOOT() +circs() +for i=0,255 do +ffth[i]=0 +end +end + +-- some fun colours +function BDR(l) +if l~=0 then return end +vbank(0) +for i=0,15 do +rt=(m.sin((t+i*20)/50)+1)/2 +gt=(m.sin((t+i*20)/60)+1)/2 +bt=(m.sin((t+i*20)/70)+1)/2 +poke(0x3fc0+i*3, rt*255) +poke(0x3fc0+i*3+1, gt*255) +poke(0x3fc0+i*3+2, bt*255) +end +vbank(1) +for i=0,15 do +rt=(m.sin((t+i*20)/50)+1)/2 +gt=(m.sin((t+i*20)/60)+1)/2 +bt=(m.sin((t+i*20)/70)+1)/2 +poke(0x3fc0+i*3, rt*255) +poke(0x3fc0+i*3+1, gt*255) +poke(0x3fc0+i*3+2, bt*255) +end +end + +function happyface(x,y,s,c) + circ(x,y,s,c) + circ(x-s/3,y-s/3,s/8,0) + circ(x+s/3,y-s/3,s/8,0) + for i=0,16 do + circ(x+s/2*m.sin(i/8-1),y+s/2*m.cos(i/8-1),s/16,0) + end +end + +function TIC()t=time()//32 + +for i=0,255 do + ffth[i]=ffth[i]+fft(i) +end + +bh = bh * 0.995 +bass=0 +for i=0,7 do +bass = bass+fft(i) +end + +-- beat detect, kinda +if bh*2 < bass then + bh = bass + mode = mode+1 + mode = mode%5+1 + + if mode == 0 then + reps = reps+1 + end +end + +-- get something on screen time +vbank(0) +cls(1) + +if reps%3 == 0 then + for i=1,nc do + happyface((cs[i].x+ffth[i]*i/nc*100)%240,cs[i].y,cs[i].s,cs[i].c) + end + + --wtf + print("FIELDFX",t%40,t%59,0,true,2) + print(" 2024 ",t%40,t%59+10,0,true,2) + print("+Every",t%40,t%59+20,0,true,2) + print("Monday",t%40,t%59+30,0,true,2) +elseif reps%3 == 1 then + for i=1,nc do + happyface(cs[i].x,(cs[i].y+ffth[i]*i/nc*100)%136,cs[i].s,cs[i].c) + end +else + for i=1,nc do + happyface(cs[i].x,(cs[i].y+ffth[i]*i/nc*100)%136,cs[i].s,cs[i].c) + end +end +if mode == 0 then +vbank(1) +cls() +elseif mode == 1 then +-- ok now the hard bit +vbank(1) +cls(1) +ttri(p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1.x,p1.y,p4.x,p4.y,p3.x,p3.y, + p1.x,p1.y,p4.x,p4.y,p3.x,p3.y, + 2,-1) +ttri(p1.x,135-p1.y,p2.x,135-p2.y,p3.x,135-p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1.x,135-p1.y,p4.x,135-p4.y,p3.x,135-p3.y, + p1.x,p1.y,p4.x,p4.y,p3.x,p3.y, + 2,-1) +ttri(239-p1.x,p1.y,239-p2.x,p2.y,239-p3.x,p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(239-p1.x,p1.y,239-p4.x,p4.y,239-p3.x,p3.y, + p1.x,p1.y,p4.x,p4.y,p3.x,p3.y, + 2,-1) +ttri(239-p1.x,135-p1.y,239-p2.x,135-p2.y,239-p3.x,135-p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(239-p1.x,135-p1.y,239-p4.x,135-p4.y,239-p3.x,135-p3.y, + p1.x,p1.y,p4.x,p4.y,p3.x,p3.y, + 2,-1) +vbank(0) +cls(0) +elseif mode == 2 then +vbank(1) +cls(1) +ttri(p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1.x,p1.y,p4.x,p4.y,p3.x,p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1.x,135-p1.y,p2.x,135-p2.y,p3.x,135-p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1.x,135-p1.y,p4.x,135-p4.y,p3.x,135-p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1.x,p1.y,240-p2.x,p2.y,240-p3.x,p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1.x,p1.y,240-p4.x,p4.y,240-p3.x,p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1.x,135-p1.y,240-p2.x,135-p2.y,240-p3.x,135-p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1.x,135-p1.y,240-p4.x,135-p4.y,240-p3.x,135-p3.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +vbank(0) +cls(0) +elseif mode == 3 then +vbank(1) +cls(1) +p1a={x=((p1.x-119)/(bass+.1))+119,y=((p1.y-67)/bass+.1)+67} +p2a={x=((p2.x-119)/(bass+.1))+119,y=((p2.y-67)/bass+.1)+67} +p3a={x=((p3.x-119)/(bass+.1))+119,y=((p3.y-67)/bass+.1)+67} +p4a={x=((p4.x-119)/(bass+.1))+119,y=((p4.y-67)/bass+.1)+67} +ttri(p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + p1a.x,p1a.y,p2a.x,p2a.y,p3a.x,p3a.y, + 2,-1) +ttri(p1.x,p1.y,p4.x,p4.y,p3.x,p3.y, + p1a.x,p1a.y,p2a.x,p2a.y,p3a.x,p3a.y, + 2,-1) +ttri(p1.x,135-p1.y,p2.x,135-p2.y,p3.x,135-p3.y, + p1a.x,p1a.y,p2a.x,p2a.y,p3a.x,p3a.y, + 2,-1) +ttri(p1.x,135-p1.y,p4.x,135-p4.y,p3.x,135-p3.y, + p1a.x,p1a.y,p2a.x,p2a.y,p3a.x,p3a.y, + 2,-1) +ttri(240-p1.x,p1.y,240-p2.x,p2.y,240-p3.x,p3.y, + p1a.x,p1a.y,p2a.x,p2a.y,p3a.x,p3a.y, + 2,-1) +ttri(240-p1.x,p1.y,240-p4.x,p4.y,240-p3.x,p3.y, + p1a.x,p1a.y,p2a.x,p2a.y,p3a.x,p3a.y, + 2,-1) +ttri(240-p1.x,135-p1.y,240-p2.x,135-p2.y,240-p3.x,135-p3.y, + p1a.x,p1a.y,p2a.x,p2a.y,p3a.x,p3a.y, + 2,-1) +ttri(240-p1.x,135-p1.y,240-p4.x,135-p4.y,240-p3.x,135-p3.y, + p1a.x,p1a.y,p2a.x,p2a.y,p3a.x,p3a.y, + 2,-1) +vbank(0) +cls(0) +elseif mode == 4 then +vbank(1) +cls(1) +p1a={x=((p1.x-119)/(bass+.1))+119,y=((p1.y-67)/bass+.1)+67} +p2a={x=((p2.x-119)/(bass+.1))+119,y=((p2.y-67)/bass+.1)+67} +p3a={x=((p3.x-119)/(bass+.1))+119,y=((p3.y-67)/bass+.1)+67} +p4a={x=((p4.x-119)/(bass+.1))+119,y=((p4.y-67)/bass+.1)+67} +ttri(p1a.x,p1a.y,p2a.x,p2a.y,p3a.x,p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1a.x,p1a.y,p4a.x,p4a.y,p3a.x,p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1a.x,135-p1a.y,p2a.x,135-p2a.y,p3a.x,135-p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1a.x,135-p1a.y,p4a.x,135-p4a.y,p3a.x,135-p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1a.x,p1a.y,240-p2a.x,p2a.y,240-p3a.x,p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1a.x,p1a.y,240-p4a.x,p4a.y,240-p3a.x,p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1a.x,135-p1a.y,240-p2a.x,135-p2a.y,240-p3a.x,135-p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1a.x,135-p1a.y,240-p4a.x,135-p4a.y,240-p3.x,135-p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +vbank(0) +cls(0) +elseif mode == 5 then +vbank(1) +cls(1) +p1a={x=((p1.x-119)/(bass+.1))+119,y=((p1.y-67)/bass+.1)+67} +p2a={x=((p2.x-119)/(bass+.1))+119,y=((p2.y-67)/bass+.1)+67} +p3a={x=((p3.x-119)/(bass+.1))+119,y=((p3.y-67)/bass+.1)+67} +p4a={x=((p4.x-119)/(bass+.1))+119,y=((p4.y-67)/bass+.1)+67} +ttri(p1a.x,p1a.y,p2a.x,p2a.y,p3a.x,p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1a.x,p1a.y,p4.x,p4.y,p3a.x,p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1a.x,135-p1a.y,p2a.x,135-p2a.y,p3a.x,135-p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(p1a.x,135-p1a.y,p4.x,135-p4.y,p3a.x,135-p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1a.x,p1a.y,240-p2a.x,p2a.y,240-p3a.x,p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1a.x,p1a.y,240-p4.x,p4.y,240-p3a.x,p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1a.x,135-p1a.y,240-p2a.x,135-p2a.y,240-p3a.x,135-p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +ttri(240-p1a.x,135-p1a.y,240-p4.x,135-p4.y,240-p3.x,135-p3a.y, + p1.x,p1.y,p2.x,p2.y,p3.x,p3.y, + 2,-1) +vbank(0) +cls(0) +end +end diff --git a/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/superogue.lua b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/superogue.lua new file mode 100644 index 000000000..6383f0059 --- /dev/null +++ b/shader_file_sources/2023_04_17_byte_jam_monday_night_bytes/superogue.lua @@ -0,0 +1,44 @@ +-- Machen wir party? +-- Fixing your post-party depressions +-- since 2021... +-- superogue 17/4/2023 +t=1 +for i=0,47,3 do poke(16320+i,i)end +function SCN(l) +poke(16323,l/2) +end +function TIC() +cls(1) +f=(fft(0)+fft(1))*7+.5 +f2=fft(2)*9 +f0=fft(0)*9 +t=t+f +P=t//64 +for z=99,1,-.5 do +for x=0,240 do +h=math.abs(x*2*z)//99~(z+t)//1 +if (P&8>0) then +h=math.abs(x*2*z)//99&(z+t)//1 +end +if (P&16>0) then +h=math.abs(x*2*z)//99|(z+t)//1 +end +if (P&2>0) then +h=h~z//4 +end +X=math.cos(x/99+f0)*8+31 +k=7+z/11 +ch=93-math.abs(math.sin(t/64)*8)+math.sin((t+x)/96)*8 +circ(x,64*(ch-h%128)/z+X,1,k) +end end +for l=-136,480,2 do +line(0,l,240,l,t/32%3-1) +--line(l,0,l,136,1) +--line(l,0,l+240,240,1) +end + +--if (P&1>0) then +print("<3",3,5,0,1,1,1) +print("<3",2,4,(t/9)%8+8,1,1,1) +--end +end diff --git a/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Alia.lua b/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Alia.lua new file mode 100644 index 000000000..41f0c18a8 --- /dev/null +++ b/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Alia.lua @@ -0,0 +1,130 @@ +sin=math.sin +random=math.random +abs=math.abs +max=math.max +min=math.min + +-- Greets to gasman, gigabates, nico, +-- h0ffman and ofc aldroidia! +t=0 + +for i=0,16320*2 do + pix(i%240,i//240,random()*15) +end +for i=0,15 do + poke(0x03FC0+i*3+0,127+i*8) + poke(0x03FC0+i*3+1,127+i*8) + poke(0x03FC0+i*3+2,255) +end + +f=0 + +function TIC() + f=f*0.8 + for i=1,10 do + f=f+fft(i) + end + + vbank(1) + --cls() + local sx=sin(t/14.57)*2 + local sy=sin(t/17.57)*2 + local z=sin(t/12)*2+3 + ttri( + 0,0, + 239,0, + 0,135, + sx-z/1.76,sy-z, + 239+sx+z/1.76,sy-z, + sx-z/1.76,135+sy+z, + 2 + ) + ttri( + 239,0, + 0,135, + 239,135, + 239+sx+z/1.76,sy-z, + sx-z/1.76,135+sy+z, + 239+sx+z/1.76,135+sy+z, + 2 + ) + + memcpy(0x4000,0,16320) + cls() + --print("=^^=",2,33,15,0,10) + --print("=^^=",5,30,12,0,10) + local hpos=f/3 + local vpos=70+sin(t/8)*10 + + --legs + for x=-15,15,30 do + for y=0,4 do + circ(120+x+sin(t/4)*4*y/6,vpos+17+y*4,5,2+y%2) + end + end + for x=-25,25,50 do + for y=0,6 do + circ(120+x+sin(t/4)*4*y/6,vpos+17+y*4,5,3+y%2) + end + end + + for x=0,40 do + circ( + 120+sin(t+x/8)*x, + vpos-20-((x/40)^.5)*40, + 4,3+x%2) + end + + elli(120,vpos,40,20,3) --body + --ears + elli(108,vpos-34-hpos,7,7,3) + elli(108,vpos-34-hpos,6,6,4) + elli(132,vpos-34-hpos,7,7,3) + elli(132,vpos-34-hpos,6,6,4) + --head + elli(120,vpos-18-hpos,25,15,15) + elli(120,vpos-20-hpos,25,15,3) + elli(120,vpos-15-hpos,10,6,12) + rect(120-11,vpos-25-hpos,22,10,3) + + rect(120-25,vpos-20-hpos-4,51,4,14) + circ(120-10,vpos-18-hpos-4,5,15) + circ(120+10,vpos-18-hpos-4,5,15) + circ(120-10,vpos-18-hpos-4,4,6) + circ(120+10,vpos-18-hpos-4,4,6) + + print("HELICAPTPER CAT",35+sin(t/4)*24,122,15,0,2) + print("HELICAPTPER CAT",35+sin(t/4)*20,120,12,0,2) + + vbank(0) + memcpy(0,0x4000,16320) + + --for i=0,19 do + --circb((sin(i+t*20)*120+t)%240,(sin(i*4+t*20)*68+t)%136,8,i) + --end + + t=t+.3 +end + +function SCN(y) + vbank(0) + for x=0,239 do + local r=random()*sin(x/50+t/4)*sin(y/50+t/5) + r=r-.5 + pix(x,y,min( + ( + pix(x,y)+pix(x+1,y)+pix(x,y+1) + )/3+r+1 + ),15) + end + + vbank(1) + poke(0x03FC0+6*3+0,y*40-t*40) + poke(0x03FC0+6*3+1,y*40-t*40) + poke(0x03FC0+6*3+2,y*40-t*40) + --vbank(0) + --poke(0x03FF9,(sin(y/20+t/30+sin(y/17+t/8))*10)//1) + --poke(0x03FFa,(y%16)*fft(1)*1-y%8+y%4-y%2) + --vbank(1) + --poke(0x03FF9,(sin(y/10+t/20)*10)//1) +end \ No newline at end of file diff --git a/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Gasman.lua b/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Gasman.lua new file mode 100644 index 000000000..a7f0e2ccf --- /dev/null +++ b/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Gasman.lua @@ -0,0 +1,136 @@ +-- gasman here!!!!! +-- good to be back... +-- greetinxes to alia, gigabates + nico +-- and aldroid and synaesthesia of coz + +-- so tonight I figured I'd play with +-- some lighting and shading +-- it's a bit mathsy, so this could +-- backfire horribly. +-- but yolo and all that + +function dot(u1,u2,u3,v1,v2,v3) + return u1*v1+u2*v2+u3*v3 +end + +for i=0,15 do + if i%2==1 then + poke(16320+i*3,255) + else + poke(16320+i*3,0) + end + + if i%4>=2 then + poke(16321+i*3,255) + else + poke(16321+i*3,0) + end + + if i%8>=4 then + poke(16322+i*3,255) + else + poke(16322+i*3,0) + end +end + +function light(rx,ry,rz,lx,ly,lz) + ca=dot(rx,ry,rz,lx,ly,lz)/5 + if ca<0 then + ca=0 + elseif ca>1 then + ca=1 + end + return ca +end + +function TIC() + t=time() + rtr=time()/8000 + srtr=math.sin(rtr) + crtr=math.cos(rtr) + rtg=time()/9000 + srtg=math.sin(rtg) + crtg=math.cos(rtg) + rtb=time()/7000 + srtb=math.sin(rtb) + crtb=math.cos(rtb) + + lxr=2*math.sin(t/200) + lyr=-5 + lzr=2*math.sin(t/220) + + lxg=5 + lyg=2*math.sin(t/300) + lzg=2*math.sin(t/320) + + lxb=2*math.sin(t/420) + lyb=2*math.sin(t/400) + lzb=5 + + rad=0.7+0.6*fft(1) + bgr=math.sin(t/1567)/2 + + for sy=0,135 do + y=(sy-68)/60 + for sx=0,239 do + x=(sx-120)/60 + a=rad*rad-x*x-y*y + if a<0 then + vr=0.1 + vg=y*math.cos(bgr)+x*math.sin(bgr) + vb=0.5+math.sin(math.sqrt(x*x+y*y)*8-t/200)/2 + else + z=-math.sqrt(a) + -- x,y,z is the point where we + -- hit the sphere + -- and also the normal vector + -- because it's a unit circle + -- on the origin + -- incoming ray = 0,0,1 + + -- if I'm making the radius + -- variable, I need to normalise + -- the normal. + nm=math.sqrt(x*x+y*y+z*z) + nx=x/nm + ny=y/nm + nz=z/nm + + -- reflect around normal + b=2*dot(0,0,1,nx,ny,nz) + rx=0-b*nx + ry=0-b*ny + rz=1-b*nz + -- ok, now dot product between + -- the reflection vector and + -- the light source I think + vr=light(rx,ry,rz,lxr,lyr,lzr) + -- not sure if that's exactly + -- the lighting equation I wanted, + -- but it'l do + + vg=light(rx,ry,rz,lxg,lyg,lzg) + vb=light(rx,ry,rz,lxb,lyb,lzb) + + end + k=0 + + hx=sx*crtr+sy*srtr + hy=sy*crtr-sx*srtr + h=(math.sin(hx)+math.sin(hy)+2)/4 + if h=steps then + pos=pos-steps + local removed=row_data[1] + table.remove(row_data,1) + row_data[rows]=removed + end + + + if pos<0 then + pos=pos+steps + local removed=row_data[rows] + table.remove(row_data,rows) + table.insert(row_data,1,removed) + end + + prev_row={} + + for i=rows,1,-1 do + curr_row={} + for j=1,items do + local a=row_data[i][j]+t/j/20 + local x=m.sin(a)*120 + local y=m.cos(a)*120 + local z=(i-(pos/steps))/3 + + local oa=(i+t*2)/200 + local ox=m.sin(oa)*z*10 + local oy=m.cos(oa/2)*z*6 + + local X=x/z+120+ox + local Y=y/z+68+oy + + curr_row[j]={X,Y,0} + + closest={0} + for k=1,#prev_row do + local dx=X-prev_row[k][1] + local dy=Y-prev_row[k][2] + local d=m.sqrt(dx^2+dy^2) + if closest[1]==0 or closest[2]>d then + closest={k,d} + end + end + + if closest[1]>0 then + local p=prev_row[closest[1]] + line(X,Y,p[1],p[2],12+z/4) + end + + circ(X,Y,(fft(10)*35+j+1)/z,j%4+(t//100)%6) + if z<5 then + circ(X-1,Y-1,1,12) + end + + end + prev_row=curr_row + end + + t=t+1 +end diff --git a/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Nico.lua b/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Nico.lua new file mode 100644 index 000000000..64498f08d --- /dev/null +++ b/shader_file_sources/2023_04_24_byte_jam_monday_night_bytes/Nico.lua @@ -0,0 +1,114 @@ +-- hi it's nico +-- vibe time +-- got some specific things in mind for tonight +-- might not get anywhere with them +-- but I'm here anyway +-- greets to Aldroid and the rest of the fieldfx crew, +-- Synesthesia, Alia, Gasman, and Gigabates! + +-- this looked a lot cooler in my head... + +s = math.sin +c = math.cos + +rand = math.random + +dc=06 + +names = {"Aldroid", +"Gasman","Synesthesia", +"fieldfx","Alia","Gigabates", +"hoffman","demoscene","crypt","FTG","tic80", +"nesbox","starchaser","tobach"} +-- sorry the text render can't deal with the diacritics :( +-- here's an ^ for you + +displaytext = "" +char = 1 +px = 10 +py = 20 + +t=0 + +function BOOT() +cls() +end +function TIC() +-- greets thing + rectb(5,5,80,125,dc) + clip(5,5,80,125) + + print("GREETZ",10,10,dc) + if #displaytext <= char then + displaytext = displaytext .. names[rand(#names)] .. " " + end + + + if (t%4) > 2 then + rect(px,py,6,6,dc) + end + + if (t%4)==0 then + rect(px,py,6,6,0) + print(displaytext:sub(char,char),px,py,dc) + + + char = char + 1 + px = px + 6 + if (char % 12) == 11 then + px = 10 + py = py + 6 + end + if py > 120 then + px = 10 + py = 20 + cls() + end + end + clip() +-- screw it! + rectb(90,5,150,50,dc) + clip(90,5,150,50) + rect(91,6,140,50,0) + + for x=0,20 do + rect((x*8)+90,-fft(x)*80+55,8,8,dc) + end + clip() + -- time for the uhh 3rd window!!!!!! + -- yes I did only just discover clip() making this + rectb(90,60,150,70,dc) + clip(90,60,150,70) + + if (t%150)==0 then + rect(91,61,149,69,0) + end + + for i=0,20,2 do + pix((t%150)+90,s(t/8+i)*10+80+i,dc) + -- lol as if I'd break monochrome + pix((t%150)+90,s(t/8)*10+80+i,dc) + end + + print("SCANNING...",120,120,dc) + clip() + + t = t + 1 -- ooh, the bad way of doing time!!! + -- yes I don't care +end + + +-- an attempt at noise +-- can't get it looking right +function OVR() + for i=0,100 do + pix(rand(240),rand(138),12) + pix(rand(240),rand(138),14) + pix(rand(240),rand(138),15) + end +end + +function SCN(l) + bop = fft(1)+fft(2)+fft(3)+fft(4)+fft(5) -- make this easier pls + poke(0x3FF9,s(l)*(bop*1)+(l%(s(t/8)*5))) +end \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_Kamoshika.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_Kamoshika.glsl new file mode 100644 index 000000000..a5e74fbee --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_Kamoshika.glsl @@ -0,0 +1,310 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define hash(x) fract(sin(x) * 43758.5453) +const float PI = acos(-1.); +const float PI2 = acos(-1.) * 2.; + +const float BPM = 130.; +const float EPS = 0.001; +const float rSph = 0.3; +const float rCyl = 0.1; +const float cFFT = 10.; +const float maxHeight = cFFT + rSph * 2.; +const float lightSize = 0.5; +vec3 lightPos; + +mat2 rotate2D(float a) { + float s = sin(a), c = cos(a); + return mat2(c, s, -s, c); +} + +float sphIntersect(vec3 ro, vec3 rd, vec3 ce, float ra) { + vec3 oc = ro - ce; + float b = dot(oc, rd); + float c = dot(oc, oc) - ra * ra; + float h = b * b - c; + if(h < 0.) return -1.; + return -b - sqrt(h); +} + +float cylIntersect(vec3 ro, vec3 rd, vec3 ca, float cr) { + float rcaca = 1. / dot(ca, ca); + float card = dot(ca, rd); + float caro = dot(ca, ro); + float a = 1. - card * card * rcaca; + float b = dot(ro, rd) - caro * card * rcaca; + float c = dot(ro, ro) - caro * caro * rcaca - cr * cr; + float h = b * b - a * c; + if(h < 0.) return -1.; + float t = (-b - sqrt(h)) / a; + if(caro + t * card < 0.) return -1.; + return t; +} + +float height(vec2 p) { + p += 0.5; + float L = length(p); + float theta = (atan(p.y, p.x) + PI) / PI2; + float fft = texture(texPreviousFrame, vec2(L * 0.002, theta)).a; + return fft * cFFT + rSph; +} + +float objIntersect(vec3 ro, vec3 rd, vec2 ID, float tCell) { + float tObj = 1e5; + + float h = height(ID); + float h1 = height(ID + vec2(1, 0)); + float h2 = height(ID + vec2(-1, 0)); + float h3 = height(ID + vec2(0, 1)); + float h4 = height(ID + vec2(0, -1)); + float maxH = max(max(max(max(h, h1), h2), h3), h4) + rSph; + + if(rd.y > 0. && ro.y > maxH) { + return tObj; + } + if(rd.y < 0. && ro.y + rd.y * tCell > maxH) { + return tObj; + } + + ro.y -= h; + float tSph = sphIntersect(ro, rd, vec3(0), rSph); + tObj = tSph > 0. ? tSph : tObj; + + float res = cylIntersect(ro, rd, vec3(1, h1 - h, 0), rCyl); + tObj = res > 0. && res < tObj ? res : tObj; + res = cylIntersect(ro, rd, vec3(-1, h2 - h, 0), rCyl); + tObj = res > 0. && res < tObj ? res : tObj; + res = cylIntersect(ro, rd, vec3(0, h3 - h, 1), rCyl); + tObj = res > 0. && res < tObj ? res : tObj; + res = cylIntersect(ro, rd, vec3(0, h4 - h, -1), rCyl); + tObj = res > 0. && res < tObj ? res : tObj; + + return tObj; +} + +float castRay(vec3 ro, vec3 rd, const int itr) { + float t = 0.; + vec2 ri = 1. / rd.xz; + vec2 rs = sign(rd.xz); + float tLimit = 1e5; + + if(ro.y > maxHeight && rd.y > 0.) { + return tLimit; + } + + float temp = (maxHeight - ro.y) / rd.y; + tLimit = temp > 0. && rd.y > 0. ? temp : tLimit; + + float tFloor = -ro.y / rd.y; + tLimit = tFloor > 0. ? tFloor : tLimit; + + float tLight = sphIntersect(ro, rd, lightPos, lightSize); + tLimit = tLight > 0. && tLight < tLimit ? tLight : tLimit; + + vec2 ID = floor(ro.xz); + for(int i = 0; i < itr; i++) { + if(t >= tLimit) { + break; + } + vec3 rp = ro + t * rd; + + vec2 frp = rp.xz - ID - 0.5; + vec2 v = (0.5 * rs - frp) * ri; + vec2 vCell = vec2(step(v.x, v.y), step(v.y, v.x)); + float tCell = dot(v, vCell); + float tObj = objIntersect(vec3(frp.x, rp.y, frp.y), rd, ID, tCell); + + if(tObj < tCell) { + return min(t + tObj, tLimit); + } + + t += tCell; + ID += vCell * rs; + } + + return tLimit; +} + +vec3 cylNormal(vec3 p, vec3 ca, float cr) { + return (p - ca * dot(p, ca) / dot(ca, ca)) / cr; +} + +vec3 objNormal(vec3 p) { + vec3 normal = vec3(0, 1, 0); + + if(p.y < EPS) { + return normal; + } + + vec3 pos = p - lightPos; + if(dot(pos, pos) < (lightSize + EPS) * (lightSize + EPS)) { + return pos / lightSize; + } + + vec2 ID = floor(p.xz); + float h = height(ID); + p.xz = fract(p.xz) - 0.5; + p.y -= h; + + if(dot(p, p) < (rSph + EPS) * (rSph + EPS)) { + return p / rSph; + } + + float minDis = 1e5; + vec3 ca = vec3(1, height(ID + vec2(1, 0)) - h, 0); + vec3 temp = cylNormal(p, ca, rCyl); + float dis = abs(dot(temp, temp) - 1.); + if(dis < minDis) { + minDis = dis; + normal = temp; + } + ca = vec3(-1, height(ID + vec2(-1, 0)) - h, 0); + temp = cylNormal(p, ca, rCyl); + dis = abs(dot(temp, temp) - 1.); + if(dis < minDis) { + minDis = dis; + normal = temp; + } + ca = vec3(0, height(ID + vec2(0, 1)) - h, 1); + temp = cylNormal(p, ca, rCyl); + dis = abs(dot(temp, temp) - 1.); + if(dis < minDis) { + minDis = dis; + normal = temp; + } + ca = vec3(0, height(ID + vec2(0, -1)) - h, -1); + temp = cylNormal(p, ca, rCyl); + dis = abs(dot(temp, temp) - 1.); + if(dis < minDis) { + minDis = dis; + normal = temp; + } + + return normal; +} + +vec3 render(vec3 ro, vec3 rd) { + vec3 col = vec3(0); + vec3 amb = vec3(0.01); + + float t = (maxHeight - ro.y) / rd.y; + if(rd.y < 0. && t > 0.) { + ro += t * rd; + } + + t = castRay(ro, rd, 100); + vec3 rp = ro + t * rd; + if(rp.y > maxHeight - EPS) { + return amb; + } + + vec3 n = objNormal(rp); + vec3 ld = lightPos - rp; + float L = length(ld); + if(L < lightSize + EPS) { + return vec3(1); + } + ld /= L; + + float amp = pow(sin(fract(time * BPM / 60.) * PI2) * 0.5 + 0.5, 2.); + float lp = (50. + amp * 450.) / (L * L); + + float diff = max(dot(n, ld), 0.); + float spec = pow(max(dot(reflect(ld, n), rd), 0.), 20.); + + float sh = 1.; + t = castRay(rp + n * EPS * 0.5, ld, 100); + if(t < L - lightSize - EPS) { + sh = 0.2; + } + + float m = 0.8; + col = amb + (diff * (1. - m) + spec * m) * lp * sh; + + return col; +} + +float stepNoise(float x, float n) { + n = max(n, 2.); + float i = floor(x); + float s = 0.2; + float u = smoothstep(0.5 - s, 0.5 + s, fract(x)); + float res = mix(floor(hash(i) * n), floor(hash(i + 1.) * n), u); + res = res / (n - 1.) - 0.5; + return res; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1) * 0.5; + vec3 col = vec3(0); + + lightPos.xz = sin(vec2(7, 9) * time * 0.2) * 5.; + lightPos.y = 7. + sin(time * 0.5) * 3.; + + vec3 ro = vec3(0, 15, 15); + + float T = time * BPM / 60. / 2.; + float na = stepNoise(T, 2.); + float a = na + sign(na) * T * 0.2; + + ro.y += stepNoise(T + 500., 5.) * 20.; + ro.z += stepNoise(T + 1000., 5.) * 10.; + ro.xz *= rotate2D(a); + + vec3 ta = vec3(0, 5, 0); + vec3 dir = normalize(ta - ro); + vec3 side = normalize(cross(dir, vec3(0, 1, 0))); + vec3 up = cross(side, dir); + float fov = 50.; + fov += stepNoise(T + 1500., 3.) * 20.; + vec3 rd = normalize(uv.x * side + uv.y * up + dir / tan(fov / 360. * PI)); + + col += render(ro, rd); + col = clamp(col, 0., 1.); + col = pow(col, vec3(1. / 2.2)); + col = mix(col, texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution).rgb, 0.7); + + float fft = texture(texFFTSmoothed, pow(gl_FragCoord.y / v2Resolution.y, 4.) * 0.1).r; + float ave = 0.; + float N = 300.; + for(float i = 0.; i < N; i++) { + ave += texture(texPreviousFrame, vec2(i + 0.5, gl_FragCoord.y) / v2Resolution).a; + } + if(ave > 0.) { + ave /= N; + fft /= ave; + } + + //col += texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution).a * 0.1; + + out_color = vec4(col, 1.); + + if(gl_FragCoord.x < 0.6) { + out_color.a = fft; + } else { + out_color.a = texture(texPreviousFrame, (gl_FragCoord.xy - vec2(1, 0)) / v2Resolution).a; + } +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_Musk.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_Musk.glsl new file mode 100644 index 000000000..4414fe86e --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_Musk.glsl @@ -0,0 +1,101 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +float PI=3.14159; +float T,DT; + +void g() { + T=fGlobalTime; + DT=texture(texFFTIntegrated, 0.01).x/4; +} + +mat2 rot(float a){ float c=cos(a),s=sin(a); return mat2(c,s,-s,c); } + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v ) +{ + float c = 0.5 + sin( v.x * 190.0 ) + cos( sin( DT + v.y ) * 20.0 )*cos(v.y/2); + float f = texture( texFFT, fract(sin(v.x*PI)) ).r; + c=abs(c); vec3 c2=vec3(sin(c * 0.2 + cos(DT*2.0+v.y*0.5)), c * 0.15, cos( c * 0.1 + DT / .4 ) * .25); c2=vec3(length(c2)); + c2+=f; + return vec4(c2 , 1.0 ); + +} + +vec3 pat1(vec2 p, float s) { + float e=0.4;float a=0,h=0;vec2 id; + for(int i=0;i<5;i+=1){ + e=e/2; + vec2 fp=mod(p,e); + id=p-fp; + h=fract(pow(id.x*83.3+id.y*3.42,2.0)+DT/16); float q=texture(texFFTIntegrated,id.x*42.42+id.y*4.42).x; + a=min(min(e-fp.x,e-fp.y),min(fp.x,fp.y))-clamp(s,-cos(q)*e/1,1); + if (h<.2) break; + } + float f=smoothstep(-s,s,a); + float ssbg = texture(texSessions, p*vec2(1,-2)+T/10).x; f+=ssbg; + return f*mix(vec3(0.2,0.4,0.3), vec3(0.9,0.13,0.1),smoothstep(0,1,fract(h*h*4+id.x))*(sin(id.x+id.y*44+DT)*.5+.5))*4.0; +} + +float df(vec3 p){ + return length(p)-1.0; +} + +vec3 scene(vec2 uv) { + vec3 p=vec3(0,0,-4); + vec3 dir=normalize(vec3(uv, +1)); + float t=0.01,dist=0; int it; + for (it=0; it<100;it+=1){ + dist=df(p+dir*t); + t+=dist; if (dist<1e-3||dist>1e+3) break; + } + vec3 c=vec3(it)/64; + return c; +} + +void main(void) +{ + g(); + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y);float pscale=1/v2Resolution.y; + uv -= 0.5; uv /= vec2(v2Resolution.y / v2Resolution.x, 1); uv+=uv*pow(length(uv),4.0)*.2; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + vec3 ssbg; + ssbg += pat1(uv+sin(vec2(DT,T)*4)/420+vec2(0,T/10),pscale); + // typed by cat, I'll keep this here: llllllllllllllllllllllllllllllle324t5rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr5 + + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14 ) / d; + vec3 c=t.xyz*0; + + c+=ssbg+scene(uv); + + c*=sqrt(max(vec3(0),(1.0-abs(uv.xxx*vec3(1.01,1.02,1.03)*1)))*max(vec3(0),(0.5-abs(uv.yyy*vec3(1.03,1.02,1.01)*1)))); + float w=dot(c,vec3(.3,.5,.2)); c=mix(c,vec3(w),-0.5); + c=1.4*c/(c+1.0); + t = clamp( vec4(sqrt(c),1), 0.0, 1.0 ); + out_color = t; +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_NuSan.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_NuSan.glsl new file mode 100644 index 000000000..cefbfa7fa --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_NuSan.glsl @@ -0,0 +1,158 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = 0; + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +vec3 rnd(vec3 p){ + return fract(sin(p*232.454 + p.yzx*545.984 + p.zxy*453.558)*854.834); +} + +float rnd(float t) { + return fract(sin(t*453.945)*457.923); +} + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1), pow(smoothstep(0,1,fract(t)), 10)); +} + +vec3 lp; +float ld; +vec3 amb; +float map(vec3 p) { + + + vec3 p2=p; + + for(int i=0; i<3;++i) { + p.xz*=rot(time*0.2+i+curve(time+i*0.1, 1.4)*3); + p.yz*=rot(time*0.13+i); + p.xz=abs(p.xz)-2-i; + } + + + lp=p; + lp=abs(lp)-1.5; + lp=abs(lp)-1; + ld=box(lp, vec3(0.6,0.1,1)); + + + ld=max(ld, -4-p2.y); + + + //d=min(d, box(p2+vec3(0,2,0), vec3(15,0.2,15))); + float d3=max(length(p2.xz)-15,abs(p2.y+4)-0.2); + d3 = min(d3, length(p2)-5); + + ld+=0.2-d3*0.05; + + float d4 = length(p.xz-vec2(1))-0.01; + amb+=vec3(0.5,0.3,1) * 0.002/(0.001+abs(d4)); + d4=max(d4,0.1); + ld=min(ld, d4); + + + float d=ld; + d=min(d, d3); + + return d; +} +void cam(inout vec3 p) { + + p.yz*=rot(-0.4 + sin(time*0.2)*0.3); + p.xz*=rot(time*0.3); + +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + time = mod(fGlobalTime, 300) + rnd(floor(fGlobalTime/4))*300; + + uv.y -= curve(time, 0.1)*0.05; + + vec3 col=vec3(0); + + for(int j=0; j<10; ++j) { + vec3 s=vec3(0,-2,-30); + s.x += sin(time*0.2)*10; + if(curve(time+floor(uv.y*13), 0.1)100) break; + p+=r*d; + dd+=d; + } + + col += alpha*pow(max(vec3(0), sin(r.y*3 + vec3(1,2,3)*0.2 + time)), vec3(3)); + } + col /= 10; + + col=smoothstep(0,1,col); + col=pow(col, vec3(0.4545)); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_aldroid.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_aldroid.glsl new file mode 100644 index 000000000..c65279282 --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_aldroid.glsl @@ -0,0 +1,118 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rot(float a) { + return mat2(cos(a), -sin(a), sin(a), cos(a)); +} + +// cut and paste from https://iquilezles.org/articles/distfunctions/ +float opSmoothUnion( float d1, float d2, float k ) { + float h = clamp( 0.5 + 0.5*(d2-d1)/k, 0.0, 1.0 ); + return mix( d2, d1, h ) - k*h*(1.0-h); +} + +float gloze = 1e15; + +float squn(vec3 p) { + p.z += fGlobalTime; + p.z = mod(p.z,4)-2; + vec3 q=abs(p)-1; + float sq = max(q.x,max(q.y,q.z)); + gloze=min(gloze,sq); + return sq; + +} + + +float trect(vec3 p) { + float trectsize = 5+5*texture(texFFTSmoothed,0.01).r; + vec3 q = abs(p)-vec3(trectsize,trectsize,.1); + if (p.z<0.6 && texture(texSessions,vec2(1,-1)*p.xy/(2*trectsize)+0.5).r < 0.1) return 0.1; + return max(q.x,max(q.y,q.z)); +} + +vec2 min2(vec2 a, vec2 b) { + return a.x < b.x ? a : b; +} + +vec2 map(vec3 p) { + float squnnel = 1e15; + for (float f=0; f < 3.1415*2; ++f ) { + squnnel = opSmoothUnion(squnnel, squn(p+vec3(vec2(6)*rot(f+sin(fGlobalTime+f)),0)),0.5); + } + + vec2 squns = vec2(squnnel,1); + vec2 trec = vec2(trect(p),2); + return min2(squns,trec); +} + +vec3 gn(vec3 p) { + vec2 e=vec2(0.001,0); + return normalize(map(p).x-vec3(map(p-e.xyy).x,map(p-e.yxy).x,map(p-e.yyx).x)); +} + +void main(void) +{ + vec2 puv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv = puv - 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 ro=vec3(sin(fGlobalTime/4)*4,cos(fGlobalTime/3)*6,-10); + vec3 la = vec3(0); + vec3 f = normalize(la-ro); + vec3 r = cross(vec3(0,1,0), f); + vec3 u = cross(r,f); + vec3 rd = f + uv.x*r - uv.y*u; + + float t=0; + vec2 d; + + for (int i=0; i<100; ++i) { + d=map(ro+rd*t); + if (d.x<0.01) break; + t += d.x; + } + + vec3 ld=normalize(vec3(3,4,-13)); + + vec3 bgc=vec3(1-length(uv))*0.2+0.7*texture(texPreviousFrame,puv).rgb; + vec3 col = bgc; + if (d.x<0.01) { + vec3 p = ro+rd*t; + vec3 n = gn(p); + if (d.y==1) { + col=(0.2+0.7*dot(n,ld)* floor(mod((p.z+p.y+fGlobalTime)*2,2))) *vec3(0.9,0.9,1); + } else if (d.y==2) { + col=(0.2+0.7*dot(n,ld))*vec3(0.5,0.5,1); + } + col += pow(max(0,dot(reflect(-ld,n),-rd)),4)*(0.5+texture(texFFTSmoothed,0.1).r); + + } + + col += exp(-0.001*gloze*gloze*gloze)*vec3(0.5,0.3,0); + + col = mix(bgc,col,exp(-0.0001*t*t*t)); + + //col=pow(col,vec3(0.45)); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_anticore.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_anticore.glsl new file mode 100644 index 000000000..cbe0a06e4 --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_anticore.glsl @@ -0,0 +1,217 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + + float ffti = texture(texFFTIntegrated, 1.).r * 1.; + float ffts = texture(texFFTSmoothed, 0.).r * 3.; + float fftr = texture(texFFTSmoothed, 1.).r * 10.; + + float blendColorBurn(float base, float blend) { + return (blend==0.0)?blend:max((1.0-((1.0-base)/blend)),0.0); +} + +vec3 blendColorBurn(vec3 base, vec3 blend) { + return vec3(blendColorBurn(base.r,blend.r),blendColorBurn(base.g,blend.g),blendColorBurn(base.b,blend.b)); +} + +vec3 blendColorBurn(vec3 base, vec3 blend, float opacity) { + return (blendColorBurn(base, blend) * opacity + base * (1.0 - opacity)); +} + +float sphere(vec3 p, float r) { + return length(p) - r; +} + +float box(vec2 p, vec2 b) { + vec2 vv = abs(p)-b; + return max(vv.x, vv.y); +} + +float cylinder(vec3 p, float r, float h) { + float d = length(p.xz)-r; + d = max(d, abs(p.y) - h); + return d; +} + +float plane(vec3 p, vec3 n, float d) { + return dot(p,n)+d; +} + +void pR(inout vec2 p, float a) { + p = cos(a) * p + sin(a) * vec2(p.y, -p.x); +} + +float modpolar(inout vec2 p, float n) { + float ng = 2. * 3.14159 / n; + float a = atan(p.y, p.x) + ng / 2.; + float r = length(p); + float c = floor(a / ng); + a = mod(a, ng) - ng / 2.; + p = vec2(cos(a), sin(a)) * r; + if (abs(c) >= (n / 2.)) + c = abs(c); + return c; +} + + +vec2 map(vec3 p) { + float dist = 999.; + float id = 0.; + + + vec3 sphP = p + vec3( + sin(fGlobalTime * 1.) * 1., + + sin(fGlobalTime * 2.) * 0.3, + + sin(ffti * 2.) * 1. + ); + float sph = sphere(sphP, .3); + + vec3 cylP = sphP; + pR(cylP.xz, fGlobalTime); + pR(cylP.xy, cos(length(cylP.xy) * 0.5) + fGlobalTime); + pR(cylP.xz, sin(length(cylP.xz) * 0.5) + ffti); + modpolar(cylP.yz, 6.); + modpolar(cylP.yx, 6.); + float cyl = cylinder(cylP, 0.03 * ffts, 10.); + + if (cyl < dist) { + dist = cyl; + id = 0.; + } + + if (sph < dist){ + dist = sph; + id = 1.; + } + + + float walls = -box(p.xy, vec2(3., 1.)); + if (walls < dist){ + dist = walls; + id = 1.; + } + + float wall = plane(p, vec3(0., 0., 1.), 2.); + if (wall < dist) { + dist = wall; + id = 2.; + } + + return vec2(dist, id); +} + + +vec3 norm(vec3 p) { + float E = 0.0001; + vec2 k = vec2(1., -1.); + return normalize( + k.xyy * map(p + k.xyy * E).x + + k.yyx * map(p + k.yyx * E).x + + k.yxy * map(p + k.yxy * E).x + + k.xxx * map(p + k.xxx * E).x + ); +} + +float ao(vec3 p, vec3 n, float d) { + return clamp(map(p + n * d).x / d, 0., 1.); +} + + +vec4 tr(vec3 ro, vec3 rd, vec2 uv) { + float td = .1; + vec2 h; + + vec3 c = vec3(0.); + vec3 g = vec3(0.); + vec3 gcol = vec3(1.); + + int bnc = 0; + float en = 1.; + + for (int i = 0; i < 256; i++) { + vec3 ip = ro + rd * td; + h = map(ip); + td += h.x * 0.5; + + if (h.y == 0.) { + g += gcol * exp(-h.x * 10.) * (0.04); + } + + if (h.x < 0.001) { + vec3 inorm = norm(ip); + + if (h.y == 0.) { + c = gcol; + break; + } else if (h.y == 1.) { + float nz = texture(texNoise, ip.xz).r / 2. + texture(texNoise, ip.zy).r / 2.; + + c += vec3(nz * .3) * en * ao(ip, inorm, .1); + ro = ip; + rd = reflect(rd, inorm + (nz * .2 - .1)); + td = .1; + bnc += 1; + en -= .7; + } else { + vec3 tp = ip; + + pR(tp.xy, ffts * 2. + 0.5); + c += texture(texSessions, tp.xy * vec2(-.5, -1.) + vec2(fGlobalTime*0.2, ffti)).rgb * vec3(1., ffts * 10., 0.) * en; + break; + } + } + + if (h.x > 100. || bnc > 3 || en < 0.) { + break; + } + } + + return vec4(c + g, 1.); +} + + +vec3 cam(vec3 pos, vec3 dir, vec2 uv) { + vec3 f = normalize(dir - pos); + vec3 l = normalize(cross(vec3(0., 1., 0.), f)); + vec3 u = normalize(cross(f, l)); + return normalize(f + l * uv.x + u * uv.y); +} + + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 ro = vec3(smoothstep(0.,1.,sin(fGlobalTime)) * 2., 0., 5.); + vec3 rd = cam(ro, vec3(0.), uv); + + + vec3 rc = tr(ro, rd, uv).rgb; + vec3 fc = blendColorBurn(tr(ro, rd, uv).rgb, texture(texSessionsShort, uv * vec2(1., -1.) * 1. + fGlobalTime * 0.1 + (ffts * 4. * texture(texNoise, uv).r)).rgb * vec3(1.,abs(sin(ffti * 0.2)), 0.)); + + out_color = vec4(mix(rc, fc, ffts * 3.), 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_exca.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_exca.glsl new file mode 100644 index 000000000..5258b1609 --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_exca.glsl @@ -0,0 +1,260 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float ffti = 0.0; +float ffts = 0.0; +float fft = 0.0; +float iTime = fGlobalTime; + +float txt(vec2 p,float t) +{ + ivec2 i = ivec2(abs(p)*128.); + return dot(sin(i),cos(i.yx*t))+(i.x&i.y)/128.;; +} + +vec4 sessions(vec2 uv) +{ + uv = mod(uv, vec2(1.0)); + uv -= 0.5; + + float bpm=fGlobalTime; + #define spl mod(fGlobalTime*140/60*4+.2,8)<4 ? texSessions:texSessionsShort + vec3 col =vec3(0.); + col.r= texture(spl,clamp(uv*vec2(1.,-1)+.5+texture(texFFTSmoothed,floor(bpm*10)*.1+txt(uv,1.)).r,0.,1.)).r; + col.gb= texture(spl,clamp((uv*vec2(1.,-1)+.5)+texture(texFFTSmoothed,floor(bpm*10)*.1+txt(uv,2.)).r,0.,1.)).gb; + return vec4(col, length(col.rgb)); +} + +vec2 rot2d( float a, vec2 p) +{ + return mat2( cos(a), -sin(a), sin(a), cos(a)) * p; +} + +float smin( float a, float b, float k) +{ + float h = clamp( 0.5 + 0.5 * (b - a ) / k, 0.0, 1.0); + float dist = mix(b,a,h) - k*h*(1.0-h); + return dist; +} + +vec3 getcam( vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize( target - cam); + vec3 right = normalize( cross( vec3( 0,1,0), forward)); + vec3 up = normalize( cross(forward, right)); + return normalize( forward*fov + uv.x * right + uv.y*up); +} + +float sphere( vec3 p, float r) +{ + return length(p)-r; +} + +float hexPrism( vec3 p, vec2 h ) +{ + const vec3 k = vec3(-0.8660254, 0.5, 0.57735); + p = abs(p); + p.xy -= 2.0*min(dot(k.xy, p.xy), 0.0)*k.xy; + vec2 d = vec2( + length(p.xy-vec2(clamp(p.x,-k.z*h.x,k.z*h.x), h.x))*sign(p.y-h.x), + p.z-h.y ); + return min(max(d.x,d.y),0.0) + length(max(d,0.0)); +} + +float octahedron( vec3 p, float s) +{ + p = abs(p); + return (p.x+p.y+p.z-s)*0.57735027; +} + +float box(vec3 pos, vec3 size) +{ + vec3 q = abs(pos)-size; + return length(max(q,0.) + min(max(q.x, max(q.y, q.z)), 0.)); +} +float ibox(vec3 pos, vec3 size) +{ + vec3 q = size-abs(pos); + return length(max(q,0.) + min(max(q.x, max(q.y, q.z)), 0.)); +} + + +vec3 union( vec3 a, vec3 b){ + if(a.x < b.x) return a; + return b; +} + +vec3 map( vec3 p) +{ + float spSize = smoothstep(0.0, 0.1,ffts)* length(p*p*0.56 + sin(ffti))*smoothstep(0.0, 0.01,ffts)*50.0 + 0.1*abs( sin(p.x+iTime) * sin(p.y-0.4*iTime)* sin(p.z-0.8*iTime)); + + float s1 = sphere( p, 0.25+spSize*0.3); + float h1 = hexPrism(p, vec2( 0.5, 0.3+spSize)); + float o1 = octahedron(p, 0.3+spSize); + + float bt = mod(ffti*5.0, 3.0)/3.0; + + o1 = mix( smin( + mix( o1, h1, smoothstep(0.0, 0.05,ffts)), + mix( s1, o1, smoothstep(0.0, 0.05,ffts)), + 0.3 + ),smin( + mix( o1, s1, smoothstep(0.0, 0.05,ffts)), + mix( h1, s1, smoothstep(0.0, 0.05,ffts)), + 0.3 + ),bt); + + float b1 = ibox(p, vec3(4.0,4.0,4.0)*3.0 ); + + vec3 S1 = vec3(o1, 1.0, 0.0); + vec3 B1 = vec3(b1, 2.0, 0.0); + vec3 OBJ = union(S1, B1); + return OBJ; +} + +vec3 march(vec3 cam, vec3 rd, out vec3 p, out float t) +{ + for(int i = 0; i < 100; i++) + { + p = cam + rd*t; + vec3 r = map(p); + t+=r.x; + if(r.x < 0.001) + { + return r; + } + if(t > 50.0){ + t = 50.0; + return vec3(-1.0); + } + } + return vec3(-1.0); +} + +vec3 normal( vec3 p) +{ + vec3 c = map(p); + vec2 e = vec2(0.01, 0.0); + return normalize( vec3( + map(p+e.xyy).x, + map(p+e.yxy).x, + map(p+e.yyx).x + ) - c.x ); +} +float light( vec3 p, vec3 l, vec3 n) +{ + return max(0.0, dot(n, normalize(l-p))); +} + +vec3 col1 = vec3(1.0, 0.5, 0.0); +vec3 col2 = vec3(0.0, 0.5, 1.0); +vec3 col3 = vec3(0.25, 1.0, 0.25); + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 ouv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + //FFT + ffti = texture(texFFTIntegrated, 0.2).r; + ffts = texture(texFFTSmoothed, 0.2).r; + fft = texture(texFFT, 0.2).r; + + + // Marching + vec3 c = vec3(0.0); + + // Cam + float spSize = smoothstep(0.0, 0.1,ffts)* smoothstep(0.0, 0.01,ffts)*50.0; + vec3 cam = vec3( + sin(ffti + mod(ffti*5.0,2.0))*3.0, + cos(ffti + mod(ffti*5.0,3.0))*3.0, + sin(ffti*0.3 + mod(ffti*5.0,4.0))*3.0 + )*(1.0+0.5*spSize); + vec3 target = vec3( 0,0,0); + float fov = 1.0; + fov += smoothstep( 0.0, 0.25, sin(ffti))*3.0 - + smoothstep( 0.25, 0.5, sin(ffti))*-2.0 - + smoothstep( 0.75, 1.0, sin(ffti))*-0.4; + + fov = 1.7; + vec3 rd = getcam( cam, target, uv, fov); + + + // Lights + vec3 light1 = vec3( sin( iTime) * 4.0, 4.0, 0.0); + vec3 light2 = vec3( sin( iTime*0.3) * 4.0, 4.0, cos(iTime*0.7) * 4.0); + vec3 light3 = vec3( sin( iTime*0.987) * 4.0, sin(iTime*1.4)* 4.0, cos(iTime*0.23) * 4.0); + + vec3 marchP = cam; + float marchT = 0.0; + vec3 res = march( cam, rd, marchP, marchT); + + if(res.y > 1.5){ + // Cube + vec3 n = normal(marchP); + float l1 = light( marchP, light1, n); + float l2 = light( marchP, light2, n); + float l3 = light( marchP, light3, n); + c = col1 * l1 + col2 * l2 + col3 * l3; + c *= 1.0+ sessions(mod( 0.1*vec2( marchP.x+ marchP.y, marchP.z + marchP.x), vec2(1.0))).rgb; + } + else if(res.y > 0.5) + { + // Sphere + vec3 n = normal(marchP); + float l1 = light( marchP, light1, n); + float l2 = light( marchP, light2, n); + float l3 = light( marchP, light3, n); + c = col1 * l1 + col2 * l2 + col3 * l3; + } + else + { + // Bg + } + + // Feedback loop + ouv -=0.5; + ouv*0.9; + ouv +=0.5; + vec3 previous = texture(texPreviousFrame, ouv).rgb; + + c = mix(c*0.5, previous*0.99+c*0.25, smoothstep(0.0, 0.005,ffts)*0.75); + + out_color = vec4(c,1.0); +} + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_gam0022.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_gam0022.glsl new file mode 100644 index 000000000..c04fa5660 --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_gam0022.glsl @@ -0,0 +1,161 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float fft(float d) { + return texture( texFFT, fract(d) ).r; +} + +#define time fGlobalTime +float beat, bpm, beatTau, beatPhase; + +#define VOL 0 +#define SOL 1 +#define PI acos(-1) +#define TAU (2*PI) +#define saturate(x) clamp(x, 0, 1) + + vec3 pal(float x) { + return 0.5 + 0.5 * cos(TAU * (x + vec3(0, 0.333, 0.666))); +} + +void U(inout vec4 m, float d, float a, float b, float c) { + m = (d < m.x) ? vec4(d, a, b, c) : m; +} + +float sdBox(vec3 p, vec3 b) { + vec3 q = abs(p) - b; + return length(max(q, 0)) + min(0, max(q.x, max(q.y, q.z))); +} + +void rot(inout vec2 p, float x) { + p = mat2(cos(x), sin(x), -sin(x), cos(x)) * p; +} + +float phase(float x) { + return floor(x) + 0.5 + 0.5 * cos(PI * exp(-5 * fract(x))); +} + +vec3 target; + +vec4 map(vec3 p) { + vec4 m = vec4(1, VOL, 0, 0); + vec3 pos = p; + + float a = 15; + p = mod(p, a) - 0.5 * a; + + vec3 of = vec3(1.5); + vec3 ro = vec3(0.34 - 0.02 * sin(TAU * phase(beat) / 4), 0.3, 0.3); + p -= of; + + for(int i = 0; i < 5; i++) { + p = abs(p + of) - of; + rot(p.xz, ro.x * TAU); + rot(p.yx, ro.y * TAU); + rot(p.zy, ro.z * TAU); + } + + float hue = 0.9 + pos.z * 1; + if (mod(beat, 16) < 8) hue = 0.9; + float emi = saturate(cos(beat * 2 + pos.z / 8)); + + U(m, sdBox(p, vec3(1)), SOL, 0, 1); + U(m, sdBox(p, vec3(0.1, 1.1, 1.1)), VOL, hue, emi); + U(m, sdBox(p, vec3(1.1, 1.1, 0.1)), VOL, hue + 0.5, emi); + + vec3 p2 = pos - target; + + of = vec3(0.3); + ro = vec3(0.34 - 0.2 * sin(TAU * phase(beat) / 4), 0.3, 0.3); + + for(int i = 0; i < 2; i++) { + p2 = abs(p2 + of) - of; + rot(p2.xz, ro.x * TAU); + rot(p2.yx, ro.y * TAU); + rot(p2.zy, ro.z * TAU); + } + + float s = 0.4 + fft(0.1) * 30; + hue = beat / 8; + emi = fft(0.1) * 10; + U(m, sdBox(p2, s * vec3(1)), SOL, beat / 8, 1); + U(m, sdBox(p2, s * vec3(0.1, 1.1, 1.1)), VOL, hue + 0.5, emi); + U(m, sdBox(p2, s * vec3(1.1, 1.1, 0.1)), VOL, hue + 0.0, emi); + + return m; + } + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + bpm = 130; + beat = bpm * time / 60; + beatTau = beat * TAU; + + vec3 col = vec3(0); + + vec3 ro, ray; + target = ro + vec3(0, 0, beat * 2); + + if (mod(beat, 16) < 4) { + ro = target + vec3(0, 0, -10); + ray = vec3(uv, 0.3); + } else { + float a = 6; + ro = target + vec3(a * cos(beatTau / 32), sin(beatTau / 16), a * sin(beatTau / 32)); + vec3 up = vec3(0, 1, 0); + vec3 fwd = normalize(target - ro); + vec3 right = normalize(cross(up, fwd)); + up = normalize(cross(fwd, right)); + ray = normalize(uv.x * right + uv.y * up + fwd * 0.3); + } + + float t, d; + for(int i = 0; i < 300; i++) { + vec3 p = ro + ray * t; + vec4 m = map(p); + d = m.x; + + if (m.y == VOL) { + col += clamp(0.01 * m.w *pal(m.z) / abs(d), 0.0, 0.3); + t += 0.25 * abs(d) + 0.01; + } else { + if (d < 0.01) { + col += 0.01 * float(i); + break; + } + + t += d; + } + } + + col = mix(vec3(0), col, exp(-0.1 * t)); + col = saturate(col); + vec2 uv2 = abs(uv); + float hue = beat / 8; + col += pal(hue) * clamp((fft(uv2.y * 0.2) - uv2.x), 0, 1); + col += pal(hue + 0.5) * clamp((fft(uv2.y * 0.3) - uv2.x), 0, 1); + // col += pal(hue + 0.5) * clamp((fft(uv2.y * 0.4) - uv2.x) * 10, 0, 1); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_gaz.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_gaz.glsl new file mode 100644 index 000000000..035e78b4f --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_gaz.glsl @@ -0,0 +1,129 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +#define T fGlobalTime +vec3 hash(float n) +{ + vec3 p=fract(vec3(n)*vec3(.1031,.103,.0973)); + p+=dot(p,p.zxy*33.33); + return fract((p.xxy+p.yzz)*p.yxz); +} + +vec3 Q(float t,float a,float b) +{ + float i=floor(t); + float f=fract(t); + return mix(hash(i),hash(i+1),smoothstep(a,b,f)); +} + +#define H(h)(cos((h)*6.3+vec3(0,21,23))*.5+.5) + +vec3 R(vec3 p,vec3 a,float t) +{ + a=normalize(a); + return mix(a*dot(p,a),p,cos(t))+sin(t)*cross(p,a); + +} + +vec2 M(vec2 p, float n) +{ + float a=asin(sin(atan(p.y,p.x)*n))/n; + return vec2(cos(a),sin(a))*length(p); +} + +vec3 trap; +float map(vec3 p) +{ + p=asin(sin(p/3)*.997)*3; + p=R(p,vec3(1),T); + p+=cross(sin(p*.3),cos(p*.4)); + p.xy=M(p.xy,10); + p.x-=2; + p.zx=M(p.zx,3); + p.z-=.5; + p.z=asin(sin(p.z*3))/3; + trap=p; + vec3 q=p; + p-=clamp(p,-.1,.1); + q-=clamp(q,-.01,.01); + float de=1; + //de=min(de,dot(p,normalize(vec3(1,2,3)))-.003); + de=min(de,length(p)-.01); + de=min(de,length(vec2(length(p.xy)-.3,p.z))-.03); + de=min(de,length(vec2(length(p.zy)-.2,p.x))-.05); + + + + de=min(de,length(q.xy)-.03); + de=min(de,length(cross(p,normalize(H(.1))))-.05); + return abs(de)+.001; +} + +#define E(a)vec3(cos(a.y)*cos(a.x),sin(a.y),cos(a.y)*sin(a.x)) +mat3 lookat() +{ + //return mat3(1); + vec3 w=E(3.*Q(T*.2,.1,.3)); + vec3 u=cross(w,vec3(0,1,0)); + return mat3(u,cross(u,w),w); + +} + +vec3 eye() +{ + //return vec3(0,0,-5); + return Q(T*.2,.7,.9)+vec3(0,0,T*1); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float n=gl_FragCoord.x+gl_FragCoord.y*v2Resolution.y; + + vec3 O=hash(n)*.1; + O+=Q(n*.03,0,1).xxx*.1*dot(uv,uv); + + vec3 rd=lookat()*normalize(vec3(uv,.5)); + float g=0,e; + for(float i=0;i<100; i++) + { + vec3 p=rd*g+eye()-i/1e4; + g+=e=map(p)*.8; + O+=mix(vec3(1),H(trap.y*3),.8)*.03/exp(i*i*e); + } + + O*= + transpose + ( + mat3( + hash(1776), + hash(64223), + hash(132333) + )); + + out_color.xyz = O*O*O; +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_ivan_dianov.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_ivan_dianov.glsl new file mode 100644 index 000000000..e1ea71fc8 --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_ivan_dianov.glsl @@ -0,0 +1,65 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +#define time fGlobalTime +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +#define B (texture(texFFTSmoothed,.001)*5) +#define BB (texture(texFFT,.001)*5) +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform float fMidiKnob; + +layout(location = 0) out vec4 o; // out_color must be written in order to see anything + +#define F float +#define V vec2 +#define W vec3 +#define N normalize +#define L length +#define rot(x) mat2(cos(x),-sin(x),sin(x),cos(x)) +#define S(x) sin(x+2*sin(x)) +#define col(x) (cos((x+W(0,.3,.4))*6.28)*.5+.5) + +void main(void) +{ + o-=o; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + F i=0,d=0,e=1; + W p,pI, rd=N(W(0,0,1)); + rd.zy*=rot(uv.y*2.); + rd.xz*=rot(-uv.x*2.5+S(time*.3)*8+.3*S(time+uv.x*2)); + F c; + for(;i++<99&&e>.0001;){ + pI=p=d*rd; + F sz=.25*BB.x; + sz = max(sz,.1); + p.z+=(time*.5)+B.x*.1; + p.zy=p.yz; + F s,ss=1; + + //p.xz*=rot(S(time*.4)); + c=0; + for(F j=0;j++<4;){ + p.xz*=rot(time+S(time*.4*1.61+pI.z*1+j)); + ss*=s=3.; + p*=s; + p.y+=.5+j/10;//+B.x; + p.y=fract(p.y)-.5; + p=abs(p)-.5-B.x*.1; + if(p.zp.x)p.xy=p.yx; + c+=L(p)*.01; + } + + p-=clamp(p,-sz,sz); + d+=e=(L(p.xz)-.0001)/ss; + } + o.rgb += 12/i*col(log(d)*.8+c*20+time*.1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_kostik.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_kostik.glsl new file mode 100644 index 000000000..82fddbb3c --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_kostik.glsl @@ -0,0 +1,142 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float fMidiKnob; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define INF (1./0.) +#define time fGlobalTime +#define rep(p,s) (mod(p,s)-s/2.) +#define rep2(p,s) (abs(rep(p,2.*s))-s/2.) +#define PI 3.14159265 + +float hash(float x) {return fract(sin(x)*3458.2551);} +float hash(vec3 x) {return hash(dot(x, vec3(34.67546,65.34135,23.4567457)));} + +float ffti(float t) {return texture(texFFTIntegrated, t).x;} +float ffts(float t) {return texture(texFFTSmoothed, t).x;} +vec4 back(vec2 uv) {return texture(texPreviousFrame, uv);} + +vec2 polar(vec2 p, float n) { + p = vec2(length(p), atan(p.y,p.x)); + p.y = rep2(p.y, 2.*PI/n); + return p.x*vec2(cos(p.y),sin(p.y)); +} + +mat2 mr(float t) {float c=cos(t),s=sin(t); return mat2(c,s,-s,c);} + +float box(vec3 p, vec3 s) { + p = abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +vec3 ct(vec3 p) { + if(p.x F){ + break; + } + + p = ro + rd * t; + } + + return t; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = uv - 0.5; + q /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3 (0.0, 0.0, 0.0); + vec3 rt = vec3(0.0, 0.0, -1.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0., 1., 0.))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z) * vec3(q, 1.0/radians(60.0))); + + float t = march(ro, rd); + + vec3 col = vec3(0.0); + if(t < F){ + col = vec3(0.5); + } + col += glow; + + + vec3 sessions = texture(texSessions, vec2(uv.x, -uv.y)).rgb; + //sessions += vec3(0.2, 0.1, 0.2); + //sessions += glow; + + sessions = 1.0-sessions; + + col *= sessions; + + col = smoothstep(-0.1, 1.0, col); + + vec3 prev = texture(texPreviousFrame, uv).rgb; + + col += prev * 0.8; + + col *= 0.5; + + + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_sp4ghet.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_sp4ghet.glsl new file mode 100644 index 000000000..f8a75fdb8 --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_sp4ghet.glsl @@ -0,0 +1,197 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float PI = acos(-1); +#define saturate(x) clamp((x), 0, 1) + +float time, beat, bHalf, whole; +float bpm = 130; + +mat3 ortho(vec3 z){ + z = normalize(z); + vec3 up = vec3(0,1,0); + vec3 cx = normalize(cross(z, up)); + vec3 cy = normalize(cross(cx, z)); + return mat3(cx, cy, z); +} + +float noise(vec3 p){ + vec3 s = vec3(.1, .9, .2); + float n = 0; + float amp = 1, gain = 0.5, lac = 1.4; + float warp = 1.3, warpTrk=.7,warpGa=1.5; + mat3 rot = ortho(s); + + for(int i=0; i < 5; i++){ + p += sin(p.yzx * warpTrk)*warp; + n += amp*sin(dot(cos(p.zxy), sin(p.yzx))); + p *= rot; + p *= lac; + warpTrk *= warpGa; + amp *= gain; + + } + return n; +} + +float random(int n){ + n = (n << 13) ^ n; + return 1.0 - float((n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0; + } + +float fractSin(vec2 p){ + return fract(sin(dot(p, vec2(12.18181, 4.1141414))) * 42069); + } + +vec3 cosgrad(float t){ + return 0.5 + 0.5 * cos(2 * PI * (vec3(t) + vec3(.66666, .33333, 0))); +} + +float aBeat = 0, aHalf; + +float sdBox(vec3 p, vec3 b){ + vec3 q = abs(p) - b; + return length(max(q, 0)) + min(0, max(q.x, max(q.y,q.z))); +} + +#define r2d(t) mat2(cos(t), sin(t), -sin(t), cos(t)) +#define sq(x) ((x)*(x)) + + +float map(vec3 q){ + vec3 p = q; + float d = 1000; + int mi = int(whole) % 6; + //mi = 1; + + if(mi == 0){ + d = length(p) - .1 - aBeat; + } + if(mi == 1){ + p.xz *= r2d(PI * .5 * p.y + PI * aHalf); + d = sdBox(p, vec3(1, 1, 1)); + + p = q; + p = abs(p); + int exclude = int(random(int(beat)) * 3); + int i = exclude == 0 ? 1 : 0; + int j = exclude == 0 ? 2 : exclude == 1 ? 2 : 1; + vec2 pp = vec2(p[i], p[j]); + pp *= r2d(0.5 * PI * aBeat); + p[i] = pp.x; + p[j] = pp.y; + d = min(d, sdBox(p - vec3(2,0,0), vec3(.25))); + } + if(mi == 2){ + p = q; + p.xz *= r2d(PI * .5 * aBeat + time); + d = sdBox(p - vec3(0, 1./2, 0), vec3(1, 1.0/6, 1.)); + p = q; + p.xz *= r2d(time); + d = min(d, sdBox(p, vec3(1, 1.0/6, 1.))); + p.xz *= r2d(-PI * .5*aBeat); + d = min(d, sdBox(p + vec3(0, 1./2, 0), vec3(1, 1.0/6, 1.))); + } + if(mi == 3){ + int cnt = int(fract(whole) * 16) + 1; + for(int i=-cnt/2; i 100){ + break; + } + t += d; + thresh = 1e-3 * t; + } + + + if(abs(d) < thresh){ + vec3 n = normal(p); + vec3 l = normalize(vec3(1)); + c += cosgrad(offset) * sq(0.5 + 0.5 * dot(n,l)); + } + + c = pow(c, vec3(.4545)); + + out_color = vec4(c,0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_superogue.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_superogue.glsl new file mode 100644 index 000000000..0fd810d8a --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_superogue.glsl @@ -0,0 +1,94 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time,f,fl,fm,fh; + +// Superogue back here +mat2 R(float a) {return mat2(cos(a),-sin(a),sin(a),cos(a));} +float N(vec3 p){return fract(sin(p.x*17.9+p.y*79.3)*4337);} + + +vec2 S(vec3 p) + +{ + p.xz*=R(time/2); + p.yz*=R(sin(fh*5)*.3); + vec3 op=p; + float m=0.0; + float os=length(p)-8-(sin(time)*2); + float is=length(p)-1; + float od=dot(p,sign(p))-3.5; + p=abs(p-sin(time)*.2); + p=mod(p,1)-.5; + float d=dot(p,sign(p))-abs(sin(time-op.y)); + float nd=max(od,d); + if (-os99)) break; + td+=d.x*.25; + g+=.001/(d.x+.1); // some glow + } + mat3 e=mat3(p,p,p)-mat3(.01); + vec3 n=normalize(vec3(S(p).x) - vec3(S(e[0]).x,S(e[1]).x,S(e[2]).x) ); + vec3 l=vec3(4,1,-9),ld=normalize(l-p); + float dif=dot(n,ld); + float spec=pow(dif,99); + vec3 color=vec3(.2,.3,.4); + if (d.y==2.0) color=vec3(abs(cos(time))*.5+.1,.3,abs(sin(time))*.4+.2); + if (d.y==1.0) color=vec3(.1,.1,.1); + float lz=8./td; + vec3 ll=color*dif*lz+spec+uv.y*.3+g; + + out_color = ovColor*fm+clamp(vec4(ll*(1.-dot(uv,uv)*.5),1),0,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_totetmatt.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_totetmatt.glsl new file mode 100644 index 000000000..154b28f53 --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_totetmatt.glsl @@ -0,0 +1,101 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texLcdz; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float bpm=fGlobalTime*130/60*.1+sqrt(texture(texFFTIntegrated,.1).r)*16; +float rnd(vec2 uv){return fract(458.14*sin(dot(uv,vec2(953.5,8753.5)))); } + +// Level 1 +float txt(vec2 p,float t){ + ivec2 i = ivec2(abs(p)*128.); + return texture(texFFT,p.x).x*5+(i.x&i.y)/128.;; + } +vec3 lvl1(vec2 uv){ + vec2 ouv=uv; + uv.x += sqrt(texture(texFFTSmoothed,uv.y*.5+tanh(.5*asin(sin(bpm+.25*asin(sin(uv.x)))))*.5).x); + uv*= 1+fract(length(uv+uv.x)-.1-fGlobalTime*.4);; + vec3 col= vec3(0.); + bool type =mod(fGlobalTime*130/60*4,8)<4 ; + #define spl texSessions//type? texSessions:texSessionsShort + + col.r= texture(spl,clamp(1.2*uv*vec2(.5,-1)+.5+texture(texFFTSmoothed,floor(bpm*10)*.1+txt(uv,1.)).r,0.,1.)).r; + col.gb= texture(spl,clamp((1.21*uv*vec2(.5,-1)+.5)+texture(texFFTSmoothed,floor(bpm*10)*.1+txt(uv,2.)).r,0.,1.)).gb; + float from = mix(-.5,.5,fract(.1+bpm*.1)); + float to = mix(-.5,.5,fract(.2+bpm*.1)); + if(fract(fGlobalTime*130/60) >.9+txt(uv,1.)*.1 && ouv.y >from &&ouv.y 1) {acc+=pal(rp.z*.1+bpm+rp.y)*10*exp(10*-abs(d.x))/(100+-smoothstep(.0,1.,pow(fract(fGlobalTime*130/60),4.))*90+sin(rp.z*5+bpm*50)*20); + d.x = max(.01,abs(d.x)); + } + rp+=d.x*rd; + if(d.x < .001){ + vec3 n = norm(rp,.001); + float dif = max(0.,dot(light,n)); + float fre = pow(1+dot(rd,n),4.); + col =mix(vec3(0.1)*dif,pal(rp.z*.1+bpm+rp.y)*10,fre); + break; + } + } + out_color = mix(vec4(sqrt(col1),1.),vec4(sqrt(col+acc*acc),1),sin(fGlobalTime+.1*dot(sin(uv*7),cos(9*uv.yx)))*.3+(sqrt(texture(texFFTSmoothed,.3)).x*10)); + //out_color = vec4(max(vec3(0),col+acc),1.); +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_visy.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_visy.glsl new file mode 100644 index 000000000..3e839f435 --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_visy.glsl @@ -0,0 +1,96 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float t = 0.0; + + +vec2 clog (vec2 z) { + return vec2(log(length(z)), atan(z.y, z.x)); +} + +// thx roywig +vec2 drosteUV (vec2 p) +{ + float speed = 0.5; + float animate = mod(t*speed,2.07); + float rate = sin(t*0.9); + p = clog(p)*mat2(1,.11,rate*0.5,1); + p = exp(p.x-animate) * vec2( cos(p.y), sin(p.y)); + vec2 c = abs(p); + vec2 duv = cos(t)*0.1+0.5+p*exp2(ceil(-log2(max(c.y,c.x))-2.)); + return duv; +} + + +#define C(c) U.x-=1.0; O+= charri(U,64+c) + +vec4 charri(vec2 p, int c) +{ + if (p.x<.0 || p.x>1. || p.y<0. || p.y>1.) return vec4(0,0,0,1e5); + p.y = -p.y; + p.x = p.x+t; + p.y = p.y-t; + return textureGrad(texChecker, p/8. + fract( vec2(c, 8-c/8) / 8.), dFdx(p/8.),dFdy(p/8.)); + +} + +vec4 logo(vec2 uv) +{ + return texture(texSessions,vec2(uv.x/1.88,-uv.y+cos(t*0.4+uv.x*2)*0.2))*abs(cos(t*2+cos(uv.x*1.+uv.y*10.)*1)*4); +} + +float FFT_POWER=50; + +void main(void) +{ + vec4 O = vec4(0.0); + vec2 uv = gl_FragCoord.xy; + uv /= v2Resolution.y; + vec2 uv2 = uv; + vec4 prev = texture(texPreviousFrame,uv2); + vec4 text = texture(texFFTIntegrated,0); + t = fGlobalTime*0.1+prev.x*0.1+text.x; + uv = drosteUV(uv-vec2(1.0+cos(t*0.1),0.5+prev.x*0.001)+prev.xy*0.1*cos(t*1.1)*(0.2+text.x*0.0001)); + + vec2 position = vec2(0.); + float size = 4.0+cos(t)*0.1; + for(int y = -4; y < 16; y++) { + vec2 U = (uv - position)*64.0/size; + U.x+=1; + U.y-=15; + U.y+=y; + + + for(int x = 0; x < 32; x++) { + C(((int(t*8)+x^y+int(t*4))*int(t*1))); + } + } + + O = O.zyxy*0.5; + + O+= O.xyzy*0.0; + + O*=logo(uv)+O; + O+=-logo(uv2)*.5+O; + + + out_color = O+prev.xyzw*0.5; +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_wbcbz7.glsl b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_wbcbz7.glsl new file mode 100644 index 000000000..dc28732a4 --- /dev/null +++ b/shader_file_sources/2023_04_29_shader_jam_sessions/grabber_sessions_wbcbz7.glsl @@ -0,0 +1,138 @@ +#version 410 core + +// i have absolutely no idea what to do lol :D + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float hash(vec2 uv) { return fract(sin(dot(vec2(32.5, 32.), uv) * 2300.0));} + +float time = fGlobalTime; +float tt = mod(fGlobalTime + 0.001*hash(gl_FragCoord.xy/v2Resolution), 180.0); + +// THAT'S NOT ALL LOL + +vec3 mapLogo(vec2 uv) { + return texture(texSessionsShort, uv).rgb; +} + +vec3 triplanar(vec3 p) { + return (mapLogo(p.xy) + mapLogo(p.yz) + mapLogo(p.xz)); +} + +float sphere(vec3 p, float r) { + return length(p) - r; +} + +mat2 rot2(float a) {return mat2(cos(a), -sin(a), sin(a), cos(a)); } + +float map(vec3 p) { + p.x = mod(p.x-5, 10.0)-5; + + p.yz *= rot2(tt*0.3); + p.xz *= rot2(tt*0.2); + p = abs(p); + p -= vec3(1.0); + p.xz = abs(p.xz); + p.xz *= rot2(tt*0.4); + p.xz = abs(p.xz); + + float m = sphere(p, 1.0); + m -= 0.2*texture(texFFT, abs(p.x*2.7)*0.02).r; + m -= 0.2*texture(texFFT, abs(p.y*3.6)*0.01).r; + m -= 0.05*triplanar(p).x; + return m; +} + +vec2 trace(vec3 o, vec3 d) { + float t = 0., min_ct = 100000.; + + for (int i = 0; i < 256; i++) { + vec3 p = o + t*d; + float ct = map(p); + if ((abs(ct) < 0.001) || (t > 128.)) break; + t += ct; + min_ct = min(min_ct, ct); + } + + return vec2(t, min_ct); +} + +vec3 normal(vec3 p) { + vec2 b = vec2(0, 0.01); + float a = map(p); + return normalize(vec3( + -a+map(p+b.yxx), + -a+map(p+b.xyx), + -a+map(p+b.xxy) + )); +} + +mat3 la (vec3 o, vec3 t, float r) { + vec3 rr = vec3(sin(r), cos(r), 0.0); + vec3 ww = normalize(t - o); + vec3 uu = normalize(cross(ww, rr)); + vec3 vv = normalize(cross(uu, ww)); + return mat3(rr, vv, ww); +} + +void main(void) +{ + vec2 uv = (2. * (gl_FragCoord.xy / v2Resolution.xy) - 1.) * vec2(v2Resolution.x/v2Resolution.y, 1); + + uv.x += 0.3*fract(sin(fGlobalTime*2.3)*45.3*(round(uv.y*32)/32)) * texture(texFFT, 0.02).r; + uv.y += 0.2*fract(sin(fGlobalTime*2.3)*45.3*(round(uv.x*32)/32)) * texture(texFFT, 0.01).r; + vec2 fuv = uv; + + vec3 color = vec3(abs(uv), 1.0); + float ttt = tt + texture(texFFT, 0.3).r; + // logo mapper + uv *= 1.0 + 0.4*sin(ttt*0.7); + vec2 uuv = uv * rot2(ttt*0.4); + for (int i = 0; i < 3; i++) { + color = mix(color, 1.0*mapLogo(uuv), 0.5); + uuv = abs(uuv) * rot2(float(i+1)*0.5 + tt*0.2); + uuv *= vec2(6); + } + color *= 0.1+0.9*mapLogo(abs(uv*rot2(tt*0.6)) * rot2(tt*0.4)); + color += texture(texFFT, abs(fuv.x*0.01)).r*texture(texFFT, abs(fuv.y*0.02)).r; + + // raymarch + vec3 o = vec3(0, 0, 6); + vec3 e = vec3(0, 3, 1); + vec3 ray = normalize(vec3(fuv, -1.2)); + + //ray *= la(o, e, 0); + + vec2 t = trace(o, ray); + vec3 p = o+t.x*ray; + + color += 0.04*clamp(15.0/t.y, 0, 1); + if (!((t.x == 0.0) || (t.x > 128.0))) { + vec3 xx = abs(normal(p)); + color = mix(vec3(0.1, 0.1, 0.2), vec3(0.7, 1.0, 0.8), sin(xx.x * xx.y * xx.z* 3.5)); + } + + color += 0.3*textureLod(texPreviousFrame, (gl_FragCoord.xy / v2Resolution.xy), 4).rgb; + + color *= pow(1.0 - 0.3*length(fuv), 1.8); + color *= mix(vec3(0.9, 1.0, 0.9), vec3(0.8, 0.5, 0.4), clamp(uv.x*uv.y, 0, 1)); + out_color = vec4(pow(color, vec3(0.45)), 1.0); + +} \ No newline at end of file diff --git a/shader_file_sources/2023_04_29_shader_seminar_sessions/2023_sessions_0b5vr.pdf b/shader_file_sources/2023_04_29_shader_seminar_sessions/2023_sessions_0b5vr.pdf new file mode 100644 index 000000000..8387f9a04 Binary files /dev/null and b/shader_file_sources/2023_04_29_shader_seminar_sessions/2023_sessions_0b5vr.pdf differ diff --git a/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/Alia.lua b/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/Alia.lua new file mode 100644 index 000000000..fe3c1b1e1 --- /dev/null +++ b/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/Alia.lua @@ -0,0 +1,107 @@ +sin=math.sin +cos=math.cos +abs=math.abs +pi=math.pi +tau=pi*2 + +t=0 t2=0 +cls() + +f={} +fm={} + +function TIC() + for i=1,256 do + f[i]=fft(i-1) + fm[i]=math.max(fm[i] or 0,f[i]) + end + + for i=0,255 do + local a=i/256 + local s=(f[i+1]/fm[i+1]) + local q=s + s=40+s*40 + local x0=sin(a*tau)*s+120 + local y0=cos(a*tau)*s+68 + local x1=sin((i+1)*tau/256)*s+120 + local y1=cos((i+1)*tau/256)*s+68 + local q=(t//4)*2%16*pi + x0=x0+sin(t+i/q)*10 + x1=x1+sin(t+(i+1)/10)*10 + y0=y0+cos(t+i/q)*10 + y1=y1+cos(t+(i+1)/10)*10 + line( + x0,y0,x1,y1, + q*15) + end + + circb(math.random()*240, + math.random()*135, + math.random()*10, + 15) + + vbank(1) + ttri( + 0,0, + 480,0, + 0,272, + + sin(t/3.24)*2,sin(t/2.536)*4, + 480+sin(t/3.563)*2,sin(t/4.567)*4, + sin(t/1.47)*2,272+sin(t/5.53)*4, + 2 + ) + + local str={ + "=^^=", + "greets to", + "aldroid", + "synesthesia", + "jtruk", + "mantratronic", + "tobach", + "and you!", + "trans rights", + "visit nova", + "pet cats", + "xx alia" + } + if t//10%2==1 then + local s=str[t//20%#str+1] + local w=#s*6 + local si=240/w + local h=si*5 + local y=135-h-abs(sin(t2/4))*50 + print(s,5,y,0,0,si) + print(s,6,y-1,12,0,si) + end + + memcpy(0x4000,0,16320) + cls() + vbank(0) + memcpy(0,0x4000,16320) + + + local bt=0 + for i=1,10 do + bt=bt+f[i] + end + t=t+bt + t2=t2+.4 +end + +function SCN(y) + for x=0,239 do + pix(x,y, + (math.max(0,pix(x,y)-(x//2%2+y//2%2+x%2+y%2)%2)+ + pix(x+1,y)+pix(x,y+1))/3 + +math.random()*(x%2+y%2)*.7 + ) + end + --poke(0x3FF9, + --(f[y+1]/fm[y+1])*10 + --) + --poke(0x3FFA, + --(f[y+1]/fm[y+1])*10 + --) +end diff --git a/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/Mantratronic.lua b/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/Mantratronic.lua new file mode 100644 index 000000000..f41fda29c --- /dev/null +++ b/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/Mantratronic.lua @@ -0,0 +1,111 @@ +-- mt +-- greets to all +-- some dots today i think + +s=math.sin +c=math.cos +r=math.random +tau=2*math.pi +p={} + +rt=0 +gt=0 +bt=0 +function BDR(l) +vbank(0) +for i=0,15 do + poke(0x3fc0+i*3,i*(12+rt)) + poke(0x3fc0+i*3+1,i*(12+gt)) + poke(0x3fc0+i*3+2,i*(12+bt)) +end +vbank((t/8)%2) + +--alia inspired screen shifting time :) +am=(l/10+t*3)%255 +poke(0x3ffa,15*s(am)) +am=(l/10+t*4)%255 +poke(0x3ff9,10*s(am)) +end + +p={} +np=2000 + +cls() + +function TIC()t=time()/1000 +--[[ +for y=0,136 do for x=0,240 do +pix(x,y,(x+y+t)>>3) +end end +--]] +--cls() +rt= 4*s(t/17*10) +gt= 4*s(t/15*10) +bt= 4*s(t/19*10) + +vbank(0) +poke(0x3ff9,0) +poke(0x3ffa,0) +for i=1,2000 do + x=240*r() + y=136*r() + pix(x,y, + math.max(0,(pix(x,y) + +pix(x+1,y+1) + +pix(x-1,y+1) + +pix(x+1,y-1) + +pix(x-1,y-1))/6)) +end + +if t%32 < 16 then + div=3+(t//3)%10 +else + div=3+(t/3)%10 +end + + +for i=1,np do + a1=(i/div + t/10%div)%1* tau/2 + a2=i/np * tau + + dist=20 +3*s(a2*3+t)+3*s(a1*4)+fft(i/10)*i/(np/4)*400 + + x=dist*s(a1) + y=dist*c(a1) + + z=45+x*s(a2+t) + x=x*c(a2+t) + + col=z/5 + z=z/99 + + ra=t/3 + x1=x*c(ra)-y*s(ra) + y1=x*s(ra)+y*c(ra) + + x=x1/z+120 + y=y1/z+68 + pix(x,y,math.max(0,math.min(15,4+pix(x,y)))) +end + +vbank(1) +cls() +poke(0x3ff9,0) +poke(0x3ffa,0) +len=print("OUTLINE",240,136,12,false,5)-8 +print("OUTLINE",118-len/2,38,12,false,5) +print("OUTLINE",122-len/2,38,12,false,5) +print("OUTLINE",118-len/2,42,12,false,5) +print("OUTLINE",122-len/2,42,12,false,5) +print("OUTLINE",120-len/2,40,0,false,5) +len=print("18-21 MAY",240,136,12,false,5)-8 +print("18-21 MAY",118-len/2,68,12,false,5) +print("18-21 MAY",122-len/2,68,12,false,5) +print("18-21 MAY",118-len/2,72,12,false,5) +print("18-21 MAY",122-len/2,72,12,false,5) +print("18-21 MAY",120-len/2,70,0,false,5) + +len=print("in a field, kinda, but not fx",240,136,12) +print("in a field, kinda, but not fx",120-len/2,98,12) + +end diff --git a/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/ToBach.lua b/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/ToBach.lua new file mode 100644 index 000000000..f18645347 --- /dev/null +++ b/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/ToBach.lua @@ -0,0 +1,75 @@ +-- ^ +--tobach here!! +--greetz to mantra, jtruk and alia!! <3 +sin=math.sin +cos=math.cos +abs=math.abs +function TIC() + t=time()//32 + cls(8) + + elli(291-t/2%400,21,50,2,13) + elli(291-t/3%400,41,30,2,13) + + elli(290-t/2%400,20,50,2,12) + elli(290-t/3%400,40,30,2,12) + + + for i=0,3 do + rect(2+i*100,98,2,32,13) + end + for i=0,240 do + pix(0+i,98+abs(sin(i/32)*8),15) + pix(0+i,99+abs(sin(i/32)*8),14) + end + for i=0,240 do + circ(0+i*8,100+abs(sin(i/4)*8),1,i+t/8) + end + + rect(0,128,240,8,6) + tri(110,130,120,88,130,130,13) + for i=0,23,3 do + line(120,88,120+sin(i/4+t/32)*32,88+cos(i/4+t/32)*32,1+i/6) + line(120,88,120+sin(i/4+t/32+0.05)*32,88+cos(i/4+t/32+0.05)*32,2+i/6) + end + for i=0,100 do + circ(120+sin(i/16)*32,88+cos(i/16)*32,2,14) + end + for i=0,12,1.8 do + rect(119+sin(i/2+t/32)*32,84+cos(i/2+t/32)*32,2,10,15) + rect(120-5+sin(i/2+t/32)*32,91+cos(i/2+t/32)*32,10,5,2) + rect(120-5+sin(i/2+t/32)*32,84+cos(i/2+t/32)*32,10,2,2) + end + + tri(24,30,38,130,40,30,3) + tri(18,130,24,29,40,130,4) + tri(18,130,40,30,46,130,4) + rect(22,30,20,15,3) + rect(19,44,26,3,2) + rect(20,30,24,3,1) + tri(24,30,32,20,40,30,4) + + for i=0,19 do + circ(20+i/(2-i/16),58+i,2,2) + end + + for i=0,19 do + circ(20+i/(2-i/16),98+i,2,2) + end + + line(190,20,190,125,13) + line(200,20,200,125,13) + + for i=0,12 do + line(190,20+i*8,200,30+i*8,13) + end + line(190,20,200,20,13) + + rect(180,126,30,2,14) + + for i=0,4 do + rect(184+i*5,68+sin(t/24)*sin(t/32)*48,4,7,14) + end + rect(184,68+sin(t/24)*sin(t/32)*48,24,2,1) + +end \ No newline at end of file diff --git a/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..626497de6 --- /dev/null +++ b/shader_file_sources/2023_05_01_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,133 @@ +S,C,A=math.sin,math.cos,math.atan2 + +T=0 +M={ + {v=0,f=0,x=70,w=50,h=20}, + {v=0,f=0,x=140,w=30,h=30}, + {v=0,f=0,x=180,w=20,h=40}, + {v=0,f=0,x=205,w=15,h=48}, +} +MSGS={ + "Hey", + "There", + "Trust", + "Your", + "Fellow", + "Martians", + "To", + "Sing", + "A", + "Groovy", + "Song", + "", + "Greetz", + "To", + "Alia", + "Mantratronic", + "ToBach", + "Synesthesia", + "Aldroid", + "You All! =)", + "", +} +MSG=1 +MINT=70 + +function BDR(y) + vbank(0) + local o=T*.01 + for i=1,15 do + local addr=0x3fc0+i*3 + r=S(o+i*.1)*.5+.5 + g=S(o*.7-i*.13)*.5+.5 + b=S(o*.6+i*.07)*.5+.5 + poke(addr,(r*255)//1) + poke(addr+1,(g*255)//1) + poke(addr+2,(b*255)//1) + end +end + +function TIC() + vbank(1) + cls() + M[1].f=aveFFT(0,4,15) + M[2].f=aveFFT(60,4,150) + M[3].f=aveFFT(100,4,300) + M[4].f=aveFFT(200,4,600) + + for i=1,4 do + openV(M[i]) + end + + elli(120,125,150,20,1) + + for i=4,1,-1 do + m=M[i] + local bounce=M[i].v*10 + local h=m.h+bounce + local y=135-m.h-bounce/2-i*5 + local ym=y+h/3 + local ye=y-h + local es=11-i + elli(m.x+1,y+1,m.w,h,i*2-1) + elli(m.x,y,m.w,h,i*2) + elli(m.x,ym,m.w*.8,M[i].v*15,i*2-1) + elli(m.x,ym,m.w*.8,M[i].v*12,12) + circ(m.x+1,ye+1,es,i*2-1) + circ(m.x,ye,es,12) + circ(m.x,ye,es-5,15) + end + + local msg=MSGS[1+(T//MINT)%(#MSGS)] + local y=60-T%MINT + local x=30+S(T*.1)*10 + print(msg,x+1,y+1,15) + print(msg,x,y,12) + + vbank(0) + cls() + + for x=0,240 do + for y=0,136 do + local p=S(x*.1)+C(y*.1)+T*0.01 + local a=A(x,y) + p=8+math.sin(p*.5+a+S(T*0.005))*7 + pix(x,y,p) + end + end + + for i=0,10 do + for s=10,0,-1 do + a=(math.pi*2*i/10-T*.01+s*.05) + x=120+C(a)*200 + y=150+S(a)*110+S(s-T*.1)*20 + col=1+s%15 + circ(x+1,y+1,15-s,1+(col+5)%15) + circ(x,y,15-s,col) + end + end + + T=T+1 +--[[ + rect(0,0,32,fft1*136,12) + rect(60,0,32,fft2*136,12) + rect(120,0,32,fft3*136,12) + rect(180,0,32,fft4*136,12) +--]] +end + +function aveFFT(st,c,m) + local acc=0 + for i=st,st+c do + acc=acc+fft(i) + end + return math.max(0,math.min(1,(m*acc/c))) +end + +function openV(m) + if m.f>(m.v)*2 then + m.v=m.f + else + m.v=m.v*.95 + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl b/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl new file mode 100644 index 000000000..36a029716 --- /dev/null +++ b/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl @@ -0,0 +1,115 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time=0; +vec3 rnd(vec3 p) { + return fract(sin(p*435.045+p.yzx*856.493+p.zxy*532.364)*574.466); +} + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float ffti(float t) { + return texture(texFFTIntegrated, fract(t)*0.1+0.01).x*0.2; +} + +void cam(inout vec3 p){ + + p.yz *= rot(sin(ffti(0.013)*0.44)*0.6); + p.xz *= rot(ffti(0.026)*0.1); +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float id = floor(ffti(0.01)*0.3 + fGlobalTime*0.02 - length(uv)*0.2); + vec3 idx = rnd(vec3(id,0,1)); + time = mod(fGlobalTime + idx.x*300, 300); + + uv.y -= texture(texFFTSmoothed, 0.01).x; + + vec2 uv3=uv; + + if(mod(id,3)<1) uv.x=abs(uv.x); + if(mod(id,5)<2) uv.y=abs(uv.y); + + float mumu=1; + if(idx.z>0.5) { + float ss=(idx.z-0.4)*130; + vec2 muv=abs(fract(uv*ss)-0.5); + + if(mod(id,9)<4) mumu = smoothstep(0.12,0.11,min(muv.x,muv.y))*1.2; + uv=floor(uv*ss)/ss; + } + + uv.x += (idx.y-0.5); + + vec3 col=vec3(0); + + vec3 s=vec3(0,0,-20); + float fov = sin(time*0.1)*0.5+0.6; + vec3 r=normalize(vec3(uv, fov)); + cam(s); + cam(r); + const int steps = 200; + float st = 50.0f / steps; + + vec3 p=s - r * st * rnd(vec3(uv,fract(time))).x; + for(int i=0; i0.2+4*texture(texFFTSmoothed, fract(floor(uv.y*30+time*10)*0.1)*0.1+0.01).x) col=1-col; + + if(mod(id,7)<3) col=1-col; + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_Superogue.glsl b/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_Superogue.glsl new file mode 100644 index 000000000..2eb2c86b4 --- /dev/null +++ b/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_Superogue.glsl @@ -0,0 +1,91 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time,f,fm; + +mat2 R(float a) {return mat2(cos(a),-sin(a),sin(a),cos(a));} +float N(float h) {return fract(sin(h*13373.24)*35436.73);} +float m=0; +float S(vec3 p) +{ +// p.x=abs(p.x); + p.xy*=R(sin(time/4)*.5); + p.xz*=R(time/3); + vec3 op=p; + m=0; + float disp=sin(p.x*7-time) * sin(p.y*5+time) * sin (p.z * 3 - time*2) ; + float sd=length(p)-6.5; + float od=length(p)-3.5; + p=p-sin(time+p.x); + p=mod(p,1)-.5; + float d=dot(p,sign(p))-sin(-op.y); + op.xz*=R(time); + float id=length(op-vec3(0,sin(time)/2,0))-.5+disp*.5; + float d2=min(max(d,-od),-sd); + if (id99) break; + td+=d; + g+=.001/(d*d+.1); + } + mat3 e=mat3(p,p,p)-mat3(.1); + vec3 n=normalize(vec3(S(p))-vec3(S(e[0]),S(e[1]),S(e[2]))); + + vec3 col=(m==1.0) ? vec3(.9,.5,.2) : vec3(.3,.4,.5); + float dif=max(0,dot(n,normalize(vec3(1,2,-3)))); +float spec=pow(dif,64); + float dz=7./td; + float dao = .1; + float ao = clamp(S(p+n*dao)/dao,0.,1.); + + float pulse=smoothstep(0.49,0.5,length(fract(-p.y+p.z*0.1+time/2)-.5)); + vec3 fcol= vec3(uv.y+dif*col+spec)*ao*dz; + float ca=v*.05; + vec4 chroma=vec4(texture(texPreviousFrame,uvOriginal-ca).r,texture(texPreviousFrame,uvOriginal-ca/2).g,texture(texPreviousFrame,uvOriginal+ca).b,1); + float scan=sin((uv.x+uv.y)*540)*.5+.5; + out_color = vec4(((clamp(fcol+pulse,0.,1.))*scan*(1.2-v*.25)),1)+chroma*.2;//vec4(1/td);//vec4(fract(uv.x*uv.y+time)*.25); +} \ No newline at end of file diff --git a/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.glsl b/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.glsl new file mode 100644 index 000000000..17a5592f1 --- /dev/null +++ b/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.glsl @@ -0,0 +1,32 @@ +#version 410 core + +//hello!! shaders are very scary +//ah well first try for everything!! :) + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq + +float rt=fGlobalTime; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +void main(void) +{ + float f=texture(texFFT, 0.05).x *20; + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float cv=sin(uv.x*32+rt*8+cos(uv.y*16+rt*5)*sin(uv.x*2)+sin(rt*4)/4*uv.x); + + float cy=sin(uv.x*16+cos(rt))*sin(uv.y*16+sin(uv.x*2+rt*4)+sin(rt)*4)+sin(rt+uv.y); + + vec4 t2 = vec4(cy+0.9,cy+1,cv,0); + + vec4 t = vec4(cv+1.9,cv,cv/2,0)*2+(sin(rt*8)/4); + t = clamp( t, 0.0, 1.0 ); + out_color = t / (t2*8); +} \ No newline at end of file diff --git a/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl b/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl new file mode 100644 index 000000000..4137cce8c --- /dev/null +++ b/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl @@ -0,0 +1,94 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +// so distracted making the stream work... + +float hash(vec2 uv) { + vec3 p3 = mod(uv.xyx * vec3(324.34,453.23,345.1),vec3(13,7,5)); + p3 += dot(p3,p3.yzx+34.19); + return fract((p3.x+p3.y)*p3.z); +} + +float n2(vec2 st) { + vec2 i=floor(st); + vec2 f = fract(st); + float tl=hash(i); + float tr=hash(i+vec2(1,0)); + float bl=hash(i+vec2(0,1)); + float br=hash(i+vec2(1,1)); + vec2 u = f*f*(3-2*f); + return mix(tl, tr, u.x) + (bl-tl)*u.y*(1-u.x)+(br-tr)*u.x*u.y; +} + +float wwid=(2+6*texture(texFFT,0.05).x); + +float map(vec3 p) { + return length(p)-wwid; +} + +vec3 gn(vec3 p) { + vec2 e=vec2(0.001,0); + return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro= vec3(0,0,-10),rd=normalize(vec3(uv,1)); + float t=0,d; + + for(int i=0; i<100; ++i) { + d=map(ro+rd*t); + if (d<0.01)break; + t += d; + } + + vec3 col=vec3(0); + + vec3 ld=vec3(-1,0,0); + + if (d<0.01) { + vec3 p=ro+rd*t; + vec2 wuv=vec2(atan(p.x,p.z)+fGlobalTime,atan(p.y,p.z)); + + wuv *=.2; + float val=0; + + float amp=0.75; + + for (int i=1; i < 13; ++i) { + val += pow(1-n2(vec2(0,fGlobalTime)*i/20+ wuv * 20 / i) / 2 * pow(i,0.25),4)*amp; + amp *= 0.5; + wuv *= 4.5; + //wuv.y += 0.15*(fGlobalTime*amp); + } + + col=mix(vec3(0,1,0),vec3(0,0,1),val)*0.5+0.1; + col=mix(col,vec3(0.7),smoothstep(0.6,0.99,abs(p.y)/wwid)); + col *= 0.6 + dot(gn(p),ld); + } else { + col = texture(texPreviousFrame,(uv*vec2(0.4,0.9)*1.2)+0.5).rgb*0.8; + } + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl b/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl new file mode 100644 index 000000000..0674bdf2e --- /dev/null +++ b/shader_file_sources/2023_05_08_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl @@ -0,0 +1,109 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define pi 3.142 +#define eps 0.01 + +#define r2d(p,a) p=cos(a)*p+sin(a)*vec2(-p.y,p.x) + +float boxDist(vec3 p, vec3 o, vec3 s, float r) { + p -= o; + p=abs(p)-s; + return length(max(p, 0.)) + min(max(p.x, max(p.y, p.z)), 0.) - r; +} + +vec3 hash(vec3 p) { + p=fract(p*vec3(424.276, 413.426, 523.24)); + p += dot(p, p.yzx+19.19); + return fract((p.xxy+p.yxx)*p.zyx); +} + +vec2 df(vec3 p) { + vec3 q=p; + q=abs(mod(p, 2.)-1.); + vec3 c=floor(p/2.); + r2d(q.xy,c.x+time);//*texture(texFFTIntegrated, c.x)); + r2d(q.xz,c.x+time); + + float d=boxDist(q, vec3(0), vec3(.5), 0.), + e=length(q)-.3; + //d=e; + d=int(c.x+c.y+c.z)%4 > 0 ? d: e; + //d=min(d,e); + return vec2(d, d==e?1.:0.); +} + +vec3 norm(vec3 p) { + vec2 e=vec2(eps, 0.); + return normalize(vec3( + df(p+e.xyy).x - df(p-e.xyy).x, + df(p+e.yxy).x - df(p-e.yxy).x, + df(p+e.yyx).x - df(p-e.yyx).x + )); +} +void main(void) +{ + vec2 uvb=gl_FragCoord.xy / v2Resolution; + uvb.y=abs(uvb.y*2.-1.); + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv *= 2.; + uv = abs(uv); + vec3 o=vec3(0); + + for(int c=0; c<3; c++) { + bool ins=false; + vec3 d=normalize(vec3(uv,1)); + vec3 p=vec3(0,0,+time); + + for(int i=0;i<100;i++) { + vec2 dist=df(p); + if(abs(dist.x)maxdist) break; + td+=d; + if (ref<1.) g+=.1/(.1+coredist); + } + dir.xy*=rot(iTime*rotationspeed*.5); + if (scanlines) col+=exp(-5.*length(dir.xy+lightoffset))*vec3(2.,1.,.5)*2.*mod(gl_FragCoord.y,3.)+.1; + else col+=exp(-5.*length(dir.xy+lightoffset))*vec3(2.,1.,.5)*2.; + col+=g*.03*vec3(1.,0.5,0.3); + if (ref>0.) { + vec3 n=normal(pref); + vec3 ringcol=vec3(1.,0.,0.); + ringcol.rb*=rot(it); + ringcol.gb*=rot(it*.5); + ringcol=abs(ringcol); + col=mix(col*reflectionintensity,ringcol*colorintensity,.1); + } + dir.xy*=rot(-iTime*rotationspeed*.5*2.); + col.rb*=rot(-abs(dir.x)*.7); + if (ref<1.&&stripes) col-=abs(.5-fract(atan(dir.x,dir.y)*10.))*.1; + col+=(hash(uv*500.+iTime)-.5)*noiselevel; + return col; +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv=fragCoord/iResolution.xy; + vec2 p=(fragCoord-iResolution.xy*.5)/iResolution.y; + vec3 from=vec3(0., 0., -11.); + vec3 dir=normalize(vec3(p,.4)); + vec3 col=march(from, dir, uv); + fragColor = vec4(col,1.0); +} + +void main(void) +{ + for (float i=0.; i<10.; i++) + { + so+=texture(texFFT,i/10.).x*.2; + } + vec4 fragColor; + mainImage(fragColor, gl_FragCoord.xy); + out_color = fragColor; +} \ No newline at end of file diff --git a/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..6b62097eb --- /dev/null +++ b/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,120 @@ +sin=math.sin +cos=math.cos +pi=math.pi +rand=math.random +abs=math.abs +sign=math.sign +min=math.min +max=math.max + +f={} +for i=1,20 do + f[i]={ + x=rand()*240, + y=rand()*136, + dx=rand()*4-2, + dy=rand()*4-2 + } +end + +function bub(x,y,r) + circb(x,y,r-1,13) + circb(x,y,r,12) + circ(x-r*.4,y-r*.4,r/6,12) +end + +cls() +ft=0 +function TIC() + for i=0,10 do + ft=ft+fft(i) + end + t=time()//100 + vbank(1) + local x0=sin(t/2.57)*3 + local y0=sin(t/7.57)*3 + local x1=sin(t/8.24)*3 + local y1=sin(t/9.234)*3 + local x2=sin(t/5.438)*3 + local y2=sin(t/3.357)*3 + ttri( + 0,0, + 480,0, + 0,272, + x0,y0, + 480+x1,y1, + x2,272+y2, + 2) + memcpy(0x4000,0,16320) + --cls() + vbank(0) + memcpy(0,0x4000,16320) + --cls() + for j=0,3 do + for i=0,20 do + circ( + j*80+sin(i/3+t/5+j)*10, + i*6.8, + 10+sin(i/3+ft/15)*5, + 5+(i/2+j+t/4)%3)--5-7 + end + end + vbank(1) + --cls() + local ax=sin(t/8.138)*120+120 + local ay=sin(t/7.346)*68+68 + --circ(ax,ay,5,12) + for i=1,#f do + local fi=f[i] + local dx=fi.x-ax + local dy=fi.y-ay + local l=((dx*dx)+(dy*dy))^.5 + + --for i=0,4 do + --circ( + --fi.x+fi.dx*i*2, + --fi.y+fi.dy*i*2, + --i==0 and 5 or 3+i/2, + --sin(fi.x/4)+sin(fi.y/4)+3)--2-4 + --end + tri( + fi.x+fi.dx*4,fi.y+fi.dy*4, + fi.x+fi.dy*2,fi.y+fi.dx*4, + fi.x-fi.dy*2,fi.y-fi.dx*4, + sin(fi.x/24)+sin(fi.y/24)+3) + tri( + fi.x-fi.dx*8,fi.y-fi.dy*8, + fi.x+fi.dy*2,fi.y+fi.dx*4, + fi.x-fi.dy*2,fi.y-fi.dx*4, + sin(fi.x/20)+sin(fi.y/20)+3) + fi.x=(fi.x+fi.dx)%240 + fi.y=(fi.y+fi.dy)%136 + --fi.dx=fi.dx+fi.dy*sin(fi.x/19+sin(fi.y/17))/20 + --fi.dx=min(abs(fi.dx),3)*(fi.dx>0 and 1 or -1) + --fi.dy=min(abs(fi.dy),3)*(fi.dy>0 and 1 or -1) + --fi.dy=fi.dy+fi.dx*sin(fi.x/23+sin(fi.y/20))/20 + fi.dx=fi.dx-dx*(1/(l+1))/40 + fi.dy=fi.dy-dy*(1/(l+1))/40 + f[i]=fi + end + + for i=0,20 do + bub( + (i*12+sin(t/16)*20)%260-10, + (-t*(sin(i)+2)+sin(i*23143.35)*248)%156-10, + 10) + end +end + +function SCN(y) + vbank(0) + for x=0,239 do + local p=pix(x,y)+(rand()*1.1) + p=p>10 and 0 or p + p=p<5 and 0 or p + pix(x,y,p) + end + --vbank(1) + --poke(0x3FF9,sin(y/20+t/4)*8//1) + --poke(0x3FFa ,sin(y/20+t/4)*8//1) +end \ No newline at end of file diff --git a/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..5fb5ccf78 --- /dev/null +++ b/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,99 @@ +S,C,PI=math.sin,math.cos,math.pi +SECY0=20 +SECY1=40 + +function BDR(y) + vbank(0) + doRGBLine(y,SECY0,0) + + local r=S(y*.03+T*.031)*.2+.2 + local g=S(y*.03-T*.023)*.2+.2 + local b=S(y*.03+T*.027)*.2+.2 + setRGB(0,r,g,b) + + vbank(1) + doRGBLine(y,SECY1,1) + setRGB(15,1,1,1) +end + +T=0 +function TIC() + vbank(0) + cls() + draw(SECY0,SECY0/2,T//10,7,28) + + vbank(1) + cls() + draw(SECY1,SECY1/2,T//4,4,14) + + lines={ + "Gentle", + "Cubey", + "Greetz", + "To", + "Aldroid", + "Alia", + "Nusan", + "Mantratronic", + "Synesthesia", + } + for i=1,#lines do + local x=i*12+S(T*.1+i)*4 + local y=i*13+S(T*.04+i)*2 + print(lines[i],x+1,y+1,1,false,2) + print(lines[i],x,y,15,false,2) + end + + T=T+1 +end + +function draw(space,sz,ofs,ys,xs) + for y=0,ys-1 do + local yp=(space*y)%140 + for x=0,xs-1 do + local dir=(y%2==0)and 1 or -1 + local xp=(x*sz+ofs*dir)%280-sz*2 + local a=x-T*.01 + local c=(x%14)+1 + drawShape(xp+space/2,yp+space/2,sz,c,a) + drawShape(xp+space/2,yp+space/2,sz,(c+6)%14+1,a+.1) + drawShape(xp+space/2,yp+space/2,sz,(c+12)%14+1,a+.2) + end + end +end + +function drawShape(x,y,sp,c,a) + local sz=sp/2 + y=y-math.abs(S(T*.1+a))*sz + x0,y0=ang(x,y,a,sz) + x1,y1=ang(x,y,a+PI/2,sz) + x2,y2=ang(x,y,a+PI,sz) + x3,y3=ang(x,y,a+PI*1.5,sz) + + tri(x0,y0,x1,y1,x,y,c) + tri(x1,y1,x2,y2,x,y,c) + tri(x2,y2,x3,y3,x,y,c) + tri(x3,y3,x0,y0,x,y,c) +end + +function ang(x,y,a,d) + return x+S(a)*d,y+C(a)*d +end + +function doRGBLine(y,space,shift) + local s=(y-4)//space + for i=1,15 do + local o=s*2+i*.03+shift+y*.02+T*.004 + local r=math.sin(o)*.5+.5 + local g=math.sin(o*2)*.5+.5 + local b=math.sin(o*3)*.5+.5 + setRGB(i,r,g,b) + end +end + +function setRGB(i,r,g,b) + local addr=0x3fc0+i*3 + poke(addr,(r*255)//1) + poke(addr+1,(g*255)//1) + poke(addr+2,(b*255)//1) +end diff --git a/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..3dfa4a965 --- /dev/null +++ b/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,104 @@ +-- mt here +-- greets to alia, nusan, jtruk, +-- synesthesia, aldroid + the wolf + +ffth={} +fn = 7 +clouds={} +nc=50 + +function BOOT() + for i=1,fn do + ffth[i] = {} + for j=0,255 do + ffth[i][j] = 0 + end + end + + for i=1,nc do + clouds[i] = {x=math.random()*260,y=math.random(50),s=math.random(10)} + end +end + +function BDR(l) + if l==0 then + for i=0,13 do + poke(0x3fc0+i*3, i*17) + poke(0x3fc0+i*3+1, 100+i*10) + poke(0x3fc0+i*3+2, i*17) + end + poke(0x3fc0+14*3, 255) + poke(0x3fc0+14*3+1, 255) + poke(0x3fc0+14*3+2, 255) + poke(0x3fc0+15*3, 50) + poke(0x3fc0+15*3+1, 75) + poke(0x3fc0+15*3+2, 255) + end + + + +end + +function TIC()t=time()/200 + cls(15) + + for i=1,fn do + for j=255,1,-1 do + ffth[i][j] = ffth[i][j-1] + end + ffth[i][0]=0 + for j=(255/fn)*(i-1),(255/fn)*(i) do + ffth[i][0] = ffth[i][0] + fft(j) + end + ffth[i][0] = (ffth[i][0] + ffth[i][1])/2 + end + + for i=1,nc do + clouds[i].x = clouds[i].x - 0.5 + if clouds[i].x < -10 then + clouds[i] = {x=260,y=math.random(50),s=math.random(10)} + end + circ(clouds[i].x-10,clouds[i].y,clouds[i].s,14) + end + len=print("greets to everyone in the chat",240,20,14,false,2) + + print("greets to everyone in the chat",240-(t*2)%(len+240),20,14,false,2) + + for x=0,239 do + tx=239-x + for f=1,fn do + line(x,50+f*6-((10-(fn-f)))*ffth[f][tx//f],x,89,14-f*2) + end + --[[ + line(x,69-7*ffth[1][tx],x,89,13) + line(x,74-20*ffth[2][tx//2],x,89,10) + line(x,79-20*ffth[3][tx//3],x,89,7) + line(x,84-15*ffth[4][tx//4],x,89,4) + line(x,89-10*ffth[5][tx//5],x,89,1) + --]] + end + + for y = 0,45 do + by=y+90 + memcpy(by*120,math.min(89,(math.sin(y+t)*2+90-y*1.5))//1*120,120) + + -- shift left right a bit + shift = math.random(2)-1 + memcpy(by*120+shift,by*120,120+shift) + + end + + + +end + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/nusan.lua b/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/nusan.lua new file mode 100644 index 000000000..124f53f8f --- /dev/null +++ b/shader_file_sources/2023_05_15_byte_jam_monday_night_bytes/nusan.lua @@ -0,0 +1,43 @@ +ma,mi,r,s,abs=math.max,math.min,math.random,math.sin,math.abs +cls() +function SCN(y) +for i=0,47 do +v=i//3*(s(i%3+t/15+y/50+i//3*0.6*s(t/50))*7+8) +if (t*2-abs(y-64))%120<30 then +v=mi(255,i//3*(s((i+(t/100)//3)%3+t/200+(abs(y-64)-t*4)//40%3)*0.5+0.5)*25) +end + poke(0x3FC0+i,v) +end +end +uu=20 +function TIC()t=time()/50 +if t%20<1 then vo=r(140)+50 end +for i=0,3 do +if t%50<2 then +circ(vo,64,64,0) +end +if fft(i*3)>0.02 then +if t%100<50 then + rect(r(240),r(136),r(30),r(30),15) +else + circ(r(240),r(136),r(10),15) +end +if t%230<60 then + line(r(240),r(136),r(240),r(136),15) +end +end +end +for i=0,3 do +if fft(r(20))>0.02 then + circb(vo,64,r(64),15) +end +end +d=ma(s(t/7)*60-30,0) +for i=0,9999 do +x,y=r(240),r(136) +a=pix(x-1,y)+pix(x+1,y)+pix(x,y-1)+pix(x,y+1) +pix(x+d*(r()-0.5),y+d*(r()-0.5),mi(15,ma(pix(x,y)*0.5+a*0.125,0))) +end +if fft(1)>0.02 then uu=r(136) end +print("FieldFx",vo-50,uu,15,3,3) +end diff --git a/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..703ec931f --- /dev/null +++ b/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,26 @@ +for i=0,45,3 do +poke(0x3fc0+i,i*16) +if i < 13 then +poke(0x3fc1+i,i*16) +end +poke(0x3fc2+i,i*16) +end + +function TIC()t=time()//32 +print("beep",10+math.sin(time()/200)*10,20,8,8,8) +print("boop",60,80-fft(1)*30,8,8,8) +dx = math.sin(time()/1000) +dy = math.sin(time()/631) +for y=0,136,2 do for x=0,240,2 do +px=x+t//2%2 +py=y+t//4%2 +if math.pow(y-68+dy*68,2)+math.pow(x-120+dx*120,2) < 1500 then +pix(px,py,(x-t|y)+t>>3) +else +if py < 50 and math.random() > 0.95 then + pix(px,py,15) +else +pix(px,py,pix(x+math.random()*1.04,y-2)/1+y/160) +end +end +end end end diff --git a/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..701a18767 --- /dev/null +++ b/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,101 @@ +abs=math.abs +sin=math.sin +max=math.max + +fmax={} +flist={} +xcount=15 +dcount=100 + +for i=1,255 do + fmax[i]=0 + for d=0,dcount do + local t={} + for x=0,xcount do + t[x+1]=0 + end + flist[d+1]=t + end +end + +cls() +t=0 + +function TIC() + cls() + for i=0,xcount do + for j=0,15 do + local t=i*15+j + fmax[t+1]=math.max(fmax[t+1],fft(t)) + end + end + + for d=dcount,0,-1 do + if d==0 then + local t={} + for x=0,xcount do + local v=0 + for i=0,15 do + local idx=x*15+i + v=v+(fft(idx)/fmax[idx+1])/15 + end + t[x+1]=v + end + flist[1]=t + else + flist[d+1]=flist[d] + end + end + + local h=90 + local hx=xcount/2 + + for dp=dcount,1,-1 do + local y0=185-(dp/dcount)*150 + local y1=185-((dp-1)/dcount)*150 + local xs=0.1+1/(dp/dcount)^.4 + + for x=1,xcount do + local a={ + x=((x-1-hx)*xs+hx)*16, + y=y0-flist[dp][x]*h, + c=flist[dp][x] + } + local b={ + x=((x-hx)*xs+hx)*16, + y=y0-flist[dp][x+1]*h, + c=flist[dp][x+1] + } + local c={ + x=((x-1-hx)*xs+hx)*16, + y=y1-flist[max(1,dp-1)][x]*h, + c=flist[max(1,dp-1)][x] + } + local d={ + x=((x-hx)*xs+hx)*16, + y=y1-flist[max(1,dp-1)][x+1]*h, + c=flist[max(1,dp-1)][x+1] + } + tri( + a.x,a.y, + b.x,b.y, + c.x,c.y, + -10*(a.c+b.c+c.c)/3-t/20 + ) + tri( + b.x,b.y, + c.x,c.y, + d.x,d.y, + -10*(d.c+b.c+c.c)/3-t/20 + ) + --line( + --(x-1)*16,135-a*30-dp*2, + --x*16,136-b*30-dp*2, + --12+dp/15 + --) + --elli(x*16,68,s*10,s*40,s*4) + end + end + + t=t+1 +end diff --git a/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..536b33291 --- /dev/null +++ b/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,129 @@ +-- mt +-- gonna try a flow field +-- greets to all + +m=math +s=m.sin +c=m.cos +r=m.random +tau=m.pi*2 + +p={} -- x,y +np=500 + +ff={} +fs=10 + +speed=1 +curve=0.5 --LOL mispelt curve as curse + +function BDR(l) + vbank(0) + ra=5*s(t/100) + ga=5*s(t/110) + ba=5*s(t/130) + if l==1 then + for i=0,15 do + j=15-i + poke(0x3fc0 + i*3,255-i*(10+ra)) + poke(0x3fc0 + i*3 + 1,255-i*(10+ga)) + poke(0x3fc0 + i*3 + 2,255-i*(10+ba)) + end + end +end + +function BOOT() +cls() +for i=1,np do +p[i]={x=r(240),y=r(136)} +end + +for x=0,240/fs+1 do + ff[x]={} + for y=0,136/fs+1 do + ff[x][y]=s(x*curve)+c(y*curve) + end +end +end +t=0 + +first=true + +function TIC()t=t+1 + if t == 600 then + t=0 + first=true + end +--[[ + vbank(1) + cls() +for i=1,#ff do + for j=1,#ff[i] do + line((i-1)*fs,(j-1)*fs,(i-1)*fs+2*s(ff[i][j]),(j-1)*fs+2*c(ff[i][j]),3) + end +end +--]] + vbank(0) + if first == true then + curve = r() + cls() + len=print("monday",240,0,15,false,5) + print("monday",120-len/2,10,15,false,5) + len=print("night",240,0,15,false,5) + print("night",120-len/2,50,15,false,5) + len=print("bytes",240,0,15,false,5) + print("bytes",120-len/2,90,15,false,5) + p={} + while #p < np do + x=r(240)-1 + y=r(136)-1 + if pix(x,y) == 15 then + table.insert(p,{x=x,y=y}) + end + end + first=false + end + + + for i=1,8000 do + x=r(240)-1 + y=r(136)-1 + col=pix(x,y) + if col == 0 then + else + pix(x,y,col-1) + end + end + if t%4 == 0 then + for x=0,240/fs+1 do + ff[x]={} + for y=0,136/fs+1 do + ff[x][y]=s(x*curve+t/100)+c(y*curve+t/300) + end + end + end + for i=1,np do + x = p[i].x + y = p[i].y + + fx=x//fs + fy=y//fs + + if fx < 0 or fx > #ff or fy < 0 or fy > #ff[fx] then + x = r(240) + y = r(136) + fx=x//fs + fy=y//fs + p[i].x = x + p[i].y = y + end + fa = ff[x//fs][y//fs] + + x = x+speed*s(fa) + y = y+speed*c(fa) + + p[i].x = x + p[i].y = y + pix(p[i].x,p[i].y,15) + end +end diff --git a/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/totetmatt.lua b/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/totetmatt.lua new file mode 100644 index 000000000..d0539c735 --- /dev/null +++ b/shader_file_sources/2023_05_29_byte_jam_monday_night_bytes/totetmatt.lua @@ -0,0 +1,65 @@ +--* FOR ADMIN +-- THIS IS TOTETMATT +-- Hello Everyone, It's holiday here +-- Wheeeeee \o/ +-- Mandatory : I'm not a bot +-- O wait, its STILL NOT BONZOMATIC +--* +fftFactor=10 +nb=255 +fftX = {} -- new array +for i=1,nb do + fftX[i] = math.random(-10,10)/10 +end +fftY = {} -- new array +for i=1,nb do + fftY[i] = math.random(-10,10)/10 +end +function TIC()t=time()//32 + +--for y=0,136 do +--for x=0,240 do +--pix(x,y,fft(y*.5+math.asin(math.sin(x*.1))*10)*fftFactor) +--end end +for i=1,nb do + fftX[i]=fftX[i]+fft(i) + fftY[i]=fftY[i]+fft(255-i) + if i%2 ==0 then c = circ else c=circb end + c(120+math.sin(fftX[i])*125, + 64+math.sin(fftY[i])*75, + 5+(fftX[i]+fftY[i])%10, + (i%3+8)+(.1*(fftX[1+(i+t)%8]))%2) + +end +--end end + +end + +function SCN(l) +zz=fft((l+t)%255)*100 +poke(0x3FF9+1,zz) +s="Do you ARCHIVE ?" +cr=0 +s:gsub(".", function(c) +print(c, +136+1+cr*26-(fftX[20]*10)%500, +64+math.cos(cr+fftY[2]*10)*10, +15+fftX[math.floor(1+l*.1)]+t//2, +false,5) +cr=cr+1 +end) + +if fft(40+l+t%255)> .01 then +poke(0x3FC2, 255) + +poke(0x3FC0, 12+l*50) +poke(0x3FC1, 128) +print("Because YOU SHOUlD !",5+math.sin(t//8)*10,120,1+fftX[4],false,2) +else +poke(0x3FC2, 0) +poke(0x3FC0, 0) +poke(0x3FC1, 0) +end + + +end diff --git a/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl b/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl new file mode 100644 index 000000000..4b4922de6 --- /dev/null +++ b/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl @@ -0,0 +1,159 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +// so distracted making the stream work... + +float hash(vec2 uv) { + vec3 p3 = mod(uv.xyx * vec3(324.34,453.23,345.1),vec3(13,7,5)); + p3 += dot(p3,p3.yzx+34.19); + return fract((p3.x+p3.y)*p3.z); +} + +float n2(vec2 st) { + vec2 i=floor(st); + vec2 f = fract(st); + float tl=hash(i); + float tr=hash(i+vec2(1,0)); + float bl=hash(i+vec2(0,1)); + float br=hash(i+vec2(1,1)); + vec2 u = f*f*(3-2*f); + return mix(tl, tr, u.x) + (bl-tl)*u.y*(1-u.x)+(br-tr)*u.x*u.y; +} + +float wwid=(2+6*texture(texFFT,0.05).x); + +float bloc(vec3 p, vec3 sz) { + vec3 q = abs(p)-sz; + return max(q.x,max(q.y,q.z)); +} + +vec2 min2(vec2 a, vec2 b) { + return a.x < b.x ? a : b; +} + +vec3 cbz(float t) { + vec3 p0 = vec3(-1,sin(fGlobalTime/5),0); + vec3 p1 = vec3(0,0.1,0.1); + vec3 p2 = vec3(0.1,0.0,0.5); + vec3 p3 = vec3(1,sin(fGlobalTime/7.1),0.1); + vec3 x= pow (1-t,3)*p0; + x += pow(1-t,2)*3*t*p1; + x += (1-t)*3*t*t*p2; + x+= t*t*t*p3; + return x; +} + +float nearestCbz(vec3 p) { + float ub=1,lb=0; + float sln = 1e7; + for (int i=0; i< 10; ++i) { + float tq = (ub - lb)/4; + float t = lb + 2*tq; + float ts = length(cbz(t+tq) - p); + float bs = length(cbz(t-tq) -p); + if (bs < ts) { + ub = t; + sln=min (sln,bs); + } else { + lb = t; + sln = min(sln, ts); + } + if (sln < 0.01) break; + } + return sln; +} + +vec2 map(vec3 p) { + vec2 bubble = vec2(nearestCbz((p+vec3(1,0,5))/6)-0.05,1); //vec2(length(p)-wwid,1); + vec2 box = vec2( + bloc(p+vec3(15-mod(fGlobalTime*10,30),sin(floor(fGlobalTime/30)*3.1)*5+2,0),vec3(3.,0.1,3)),2); + return min2(bubble, box); +} + +vec3 gn(vec3 p) { + vec2 e=vec2(0.001,0); + return normalize(map(p).x-vec3(map(p-e.xyy).x,map(p-e.yxy).x,map(p-e.yyx).x)); +} + +float getNoisy(vec2 wuv) { + + wuv *=.2; + float val=0; + + float amp=0.75; + + for (int i=1; i < 13; ++i) { + val += pow(1-n2(i/20+ wuv * 20 / i) / 2 * pow(i,0.25),4)*amp; + amp *= 0.5; + wuv *= 4.5; + //wuv.y += 0.15*(fGlobalTime*amp); + } + return val; + } + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro= vec3(0,0,-10),rd=normalize(vec3(uv,1)); + float t=0; + vec2 d; + + for(int i=0; i<100; ++i) { + d=map(ro+rd*t); + if (d.x<0.01) { + if (d.y != 1) break; + vec3 n = gn(ro+rd*t); + ro += rd * t+0.1; + vec3 nrd = refract(rd,n,1.15); + if (length(nrd)>0) rd= nrd; + else rd=reflect(rd,n); + } + t += d.x; + } + + vec3 col=vec3(0); + + vec3 ld=vec3(-1,0,0); + + if (d.x<0.01) { + vec3 p=ro+rd*t; + if (d.y ==1) { + vec2 wuv=vec2(atan(p.x,p.z)+fGlobalTime,atan(p.y,p.z)); + + float val=getNoisy(wuv); + col=mix(vec3(0,1,0),vec3(0,0,1),val)*0.5+0.1; + col=mix(col,vec3(0.7),smoothstep(0.6,0.99,abs(p.y)/wwid)); + col *= 0.6 + dot(gn(p),ld); + } else if (d.y == 2) { + + float val = getNoisy(p.xz*vec2(0.1,1.6)); + col = mix(vec3(0.4,0.2,0.1),vec3(0.2,0.01,0),val)*1.2; + } + } else { + float val=getNoisy(rd.xy+vec2(sin(fGlobalTime/5),0)); + col=mix(vec3(0,0.3,1),vec3(1),val)*0.5+0.1; + //col *= 0.6 + dot(gn(p),ld); + } + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl b/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl new file mode 100644 index 000000000..32f30d127 --- /dev/null +++ b/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl @@ -0,0 +1,111 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +#define time fGlobalTime + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float eps = 0.001; + +vec3 bkg(vec3 d) { + return mix( + vec3(1,.9,.9), + vec3(.2,.15,1), + pow(abs(d.y), 1.2) + ); +} + +vec2 df(vec3 p) { + vec3 q=p; + vec2 e=vec2(length(p-vec3(7,10,-5))-2, 1); + + p.x=0; + p.y+=sin(q.x-texture(texFFTIntegrated,0.).x*2.+sin(q.x*.75+texture(texFFTIntegrated,.5).x*10.))/2.; + p.y+=sin(q.x*1.5+texture(texFFTIntegrated,0.).x*1.5+sin(q.x*1.333-texture(texFFTIntegrated,.5).x*15.))/2.; + vec2 d=vec2( + (length(p)-(.5+texture(texFFTSmoothed, 0.0).x*1.)+sin(q.x+time+sin(q.x*.375+time*1.473))*.4)*.7, 0); + d=d.x.05) { + col = tile1(uv); + + } + else if(txt<.11 && txt >.1){ + + col = tile2(uv); + } + + if(txt > .15) { + + col = vec3(1.);} + + return col.x; + } +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + if(abs(uv.y)<.35){ + uv*=15.+asin(sin(bpm))*5.5; + } else { + + uv*=50.*sin(floor(fGlobalTime+length(uv)+dot(floor(sin(uv.yx*11.)),floor(cos(uv.xy*13.))))); + } + uv*=rot(floor(bpm+.1*hashwithoutsine12(uv))); + + vec3 col = vec3(0.); + + col.r = channel(uv); + col.g = channel(uv); + col.b = channel(uv); + + if(mod(fGlobalTime,1.)>.9){ + col = 1-col; + } + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt_2.glsl b/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt_2.glsl new file mode 100644 index 000000000..327abe3e7 --- /dev/null +++ b/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt_2.glsl @@ -0,0 +1,50 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texFeedback; // value written to feedback_value in previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +layout(location = 1) out vec4 feedback_value; // value that will be available in texFeedback in the next frame + +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(.0,.1,.2))); ;} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +vec3 col = vec3(0.); + + + vec3 p,d=normalize(vec3(uv,1.)); + for(float i=0.,g=0.,e=0.;i++<99;){ + + p=d*g; + float z=p.z; + p.z -=5.-fGlobalTime*20.; + p.x +=asin(sin(fGlobalTime*2.)); + p = erot(p,vec3(0.,0.,1.),p.z*.1+fGlobalTime); + p.y += sin(p.z*.1)*4.; + p.xy = abs(p.xy)-3.1; + p.z = asin(sin(p.z)); + + float h =length(p)-1.; + h = min(min(length(p.xz),length(p.zy))-.1-sqrt(texture(texFFTSmoothed,floor(10*(p.y+p.x))/10).x*2),h); + g+=e=max(.001,abs(h)*.7); + col +=floor(pal(z*.1+p.z*.2-fGlobalTime)*20)/10*.0655/exp(i*i*e); + } + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_visy.glsl b/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_visy.glsl new file mode 100644 index 000000000..72bac76a7 --- /dev/null +++ b/shader_file_sources/2023_06_05_shader_jam_monday_night_bytes/grabber_mondaynightbytes_visy.glsl @@ -0,0 +1,69 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec2 m; +float d; +float t; + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time*0.5 + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time*0.1)), c * 0.15, cos( c * 0.1 + time / .1 ) * .25, 1.0 ); +} + +vec4 ripple(vec2 v, float time) +{ + float c = 0.5 + sin(v.x * 1.0) + cos(sin(time*0.01 + v.y) * 2.0); + float rippleIntensity = 0.3+(sin(c * 0.2 + cos(time*0.02+d*10.1)*d)) * 0.001; + float rippleOffset = cos(c * 0.1 + time / 0.01) * 0.25; + vec2 distortedUV = v + vec2(rippleOffset, 0.0); + vec4 texColor = texture(texPreviousFrame, distortedUV * 0.5 + 0.5); + return texColor * rippleIntensity; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + t = fGlobalTime; + + uv -= 0.5; + if (uv.y < 0.0) uv.y = 0.0-uv.y; + if (uv.x < 0.0) uv.y = 0.0-uv.y; + + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv*=0.5; + m.x = atan(uv.x / uv.y) / 1.14; + m.y = 1 / length(uv) * .7; + d = m.y; + + float f = cos(texture( texFFTIntegrated, d ).r*0.1)*0.1; + float f2 = cos(texture( texFFT, d ).r*0.1)*1; + m.x += sin( f*1. ) * cos(f)*0.1; + m.y += fGlobalTime * 0.05; + + vec4 t1 = ripple(-m * 3.14, t*0.01) * d*cos(t*0.01)*1.1; + for(float ff = 0.0; ff < 8.0; ff+=1.0) { + vec4 t2 = plas(ff*0.1+m+f*cos(f*0.1+t*0.1),t)*d*cos(t1.r*0.1+t*0.2+f*0.1)*cos(t*10.1+d+ff*0.1)*1.; + t1/=t2*1; + } + out_color = vec4(t1.r*1.6,t1.g*1.7,t1.b*1.5,1.0); + out_color = 0.7*clamp( out_color, t1.r*1.0-d/1., 2.0 )/t1; + +} \ No newline at end of file diff --git a/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..d51e55e52 --- /dev/null +++ b/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,106 @@ + +for y=0,135 do + for x=0,239 do + if y>95 then + pix(x,y,13+math.random()*4) + else + local col=((x)%8<4 and 1 or 0) + pix(x,y,13+col) + end + end +end + +for i=0,12 do + print("bopalong\n cats",0+i,30-i,i,0,3) +end + +t=0 +t2=0 +fs={0,0,0} + +function cat(i,x,y) +-- 40w + -- body + elli(x,y,20,30,3) + elli(x,y-5,15,20,12) + + -- head + local hpos=y-30-fs[2] + elli(x,y-hpos+1,18,13,2) + elli(x,y-hpos,18,13,3) + -- mouth + elli(x,y-hpos+3,10,4,12) + elli(x,y-hpos,12,3,3) + -- eyes + elli(x-8,y-hpos-3,5,3,12) + elli(x+8,y-hpos-3,5,3,12) + elli(x-8,y-hpos-3,2,3,15) + elli(x+8,y-hpos-3,2,3,15) + + -- hat + elli(x,y-hpos-10,23,3,7) + rect(x,y-hpos-20,8,12,5) + rect(x+8,y-hpos-20,3,12,6) + rect(x-12,y-hpos-20,12,12,7) + + -- legs + for i=0,8 do + elli(x-12,y+22+i*3,4,6,3+i%2) + elli(x+12,y+22+i*3,4,6,3+i%2) + end + -- feets + local xpos=-15 + local off=0 + for i=0,5 do + if i==3 then off=20 end + local ypos=math.max(0,fs[1]-2)*(off>=3 and 1 or 0) + elli(x+xpos+i*2+off,y+50-ypos/2,1,2,12) + end + + -- upper legs + xpos=0 + xpos2=0 + local off1=math.sin(t2/3+i) + local off2=math.cos(t2/3+i) + for i=0,8 do + elli(x-20-xpos,y-5+i*2,4,4,3+i%2) + elli(x+20+xpos2,y-5+i*2,4,4,3+i%2) + xpos=xpos+fs[3]+off1 + xpos2=xpos2+fs[3]+off2 + end + for i=0,8 do + elli(x-20-xpos,y+11+i*2,4,4,3+i%2) + elli(x+20+xpos2,y+11+i*2,4,4,3+i%2) + xpos=xpos-fs[3]+off2 + xpos2=xpos2-fs[3]+off1 + end +end + +function TIC() + poke(0x3FFB,0) + t=t+1 + + fs[1]=fs[1]*.8+(fft(0)+fft(1)+fft(2)+fft(3)+fft(4)) + fs[2]=fs[2]*.8+(fft(10)+fft(11)+fft(12)+fft(13)+fft(14)) + fs[3]=fs[3]*.8+(fft(20)+fft(21)+fft(22)+fft(23)+fft(24)) + t2=t2+fs[3] + + vbank(1) + cls() + for i=0,3 do + local x=i*80-t*1.5 + x=x%300-30 + cat(i,x,48) + end + local str={"greets to","gasman","visy","tobach","aldroidia","and you"} + print("love u all =^^=",10,120,12,0,2) +end + +function SCN(y) + vbank(0) + local o=t*math.max(1,(y-85)/10) + poke(0x3FF9,-o%240-120) + + vbank(1) + poke(0x3FF9,y>119 and -o%240-120 or 0) +end diff --git a/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..75e861301 --- /dev/null +++ b/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,86 @@ +-- hello from gasman! +-- ^ +-- greetings to alia, visy and tobach +-- and jam-master aldroid! + +-- right, going to have a go at a +-- voxel landscape +-- which i did recently, but this one +-- is going to be... different. I +-- guess. + + +noise={} +for y=0,512 do + noise[y]={} + for x=0,512 do + noise[y][x]=math.random(0,16) + end +end + +land={} +for y=0,255 do + land[y]={} + for x=0,255 do + land[y][x]=0 + end +end + +for oct=1,6 do + k=2^oct + s=2^(7-oct) + for y=0,255 do + for x=0,255 do + vy=y//k + vx=x//k + fy=(y%k)/k + fx=(x%k)/k + x0=noise[vy][vx]*(1-fy)+noise[vy+1][vx]*fy + x1=noise[vy][vx+1]*(1-fy)+noise[vy+1][vx+1]*fy + v=x0*(1-fx)+x1*fx + land[y][x]=land[y][x]+v/s + end + end +end + +function SCN(y) + -- gasman patented gradient background + poke(16320,y) + poke(16321,y) + poke(16322,y) +end + +function TIC() + cls() + t=time() + a=t/1234 + sa=math.pi/4 + for y=-40,40 do + for x=-40,40,.5 do + vrx=x*math.cos(a)+y*math.sin(a) + vry=y*math.cos(a)-x*math.sin(a)+100*math.sin(t/1000) + + cx1=vrx+5*math.sin(t/123) + cy1=vry+5*math.sin(t/232) + c1=math.sqrt(cx1*cx1+cy1*cy1) + + cx2=vrx-5*math.sin(t/123) + cy2=vry-5*math.sin(t/232) + c2=math.sqrt(cx2*cx2+cy2*cy2) + + --v=( + -- math.sin(vrx*.12)+math.sin(vrx*.23) + -- +math.sin(vry*.34)+math.sin(vry*.15) + --)*2+8 + v=land[vry%256//1][vrx%256//1]-2 + v=v+math.sin(c1/4) + v=v+math.sin(c2/4) + v=v*(1+fft(1)*2) + rx=x*math.cos(sa)+y*math.sin(sa) + ry=y*math.cos(sa)-x*math.sin(sa) + sy=88+(ry*2)/2 + sx=120+(rx*2) + line(sx,sy,sx,sy-v*4,v) + end + end +end diff --git a/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..95e95d44a --- /dev/null +++ b/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,85 @@ +--tobach here!! :) +--greetz to alia, visy and gasman <3 +--hope ur monday is going swell!! + +--i'm going to hopefully make what +--i was supposed to make for outline! + +rain={} + +for i=0,70 do + rain[i]={math.random()*256,math.random()*256} +end + +sin=math.sin +abs=math.abs +function TIC() + cls() + for i=0,240,2 do + line(i,0,i,240,abs(sin(i/16)*3)) + --line(i,0,i,240,sin(i/7)*3) + end + for i=0,30 do + circ(0+(i*8),106+sin(i)*3,10,7+sin(i)) + end + rect(0,110,240,40,15) + t=time()/100 + elli(120,80,28,38,14) + elli(99,90,8,24,14) + --elli(140,90,8,24,14) + elli(110,116,8,4,14) + elli(129,116,8,4,14) + elli(120,60,20,24,14) + elli(120,90,24,28,13) + for i=0,3 do + st=-sin(i)*3 + tri(103+(i*9),74+st,107+(i*9),69+st,111+(i*9),74+st,14) + end + for i=0,4 do + sv=-sin(i/1.2)*3 + tri(98+(i*9),84+sv,102+(i*9),79+sv,106+(i*9),84+sv,14) + end + for i=0,2 do + line(110,55,90,55+sin(i*2)*9,15) + end + for i=0,2 do + line(130,55,150,55+sin(i*2)*9,15) + end + circ(112,45,3,12) + circ(128,45,3,12) + circ(113,45,1,0) + circ(127,45,1,0) + tri(116,51,120,48,124,51,15) + rect(118,57,4,1,15) + + tri(107,38,110,26,113,36,14) + tri(107+20,36,110+20,26,113+20,38,14) + rect(109,34,2,8,14) + rect(129,34,2,8,14) + elli(119,37,8,2,5) + + rect(123,24,2,54,15) + elli(120,20,20,4,8) + tri(100,20,92,30,140,20,8) + tri(100,20,150,30,140,20,8) + for i=0,7 do + circ(140-i*2,74-i/4,5-sin(i/4),14) + end + + rect(40,118,14,4,14) + + rect(46,68,2,50,0) + rectb(45,68,3,50,14) + circ(46,68,8,10) + rect(41,88,11,3,15) + rect(38,67,17,3,12) + + + for i=1,#rain do + for j=0,8 do + pix((rain[i][1]-j/4-t*4)%240,(rain[i][2]+t*4*(i/4+4)+j*2)%256,8) + pix((rain[i][1]-j/4-t*4)%240,(rain[i][2]+t*4*(i/4+4)+j*2+1)%256,9) + end + end + +end diff --git a/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/visy.lua b/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/visy.lua new file mode 100644 index 000000000..0ade757dd --- /dev/null +++ b/shader_file_sources/2023_06_12_byte_jam_monday_night_bytes/visy.lua @@ -0,0 +1,60 @@ +t = 0 +curr = {} +last = {} + +function init() + for i=1,255 do + curr[i] = 0 + last[i] = 0 + end +end + +init() + +function fft_update() + for i=1,255 do + curr[i] = last[i] + fft(i) + last[i] = curr[i] + end +end + +-- NES 2A03 <3 + +cy = 0 + +function pal(c0,c1) + if(c0==nil and c1==nil)then for i=0,15 do poke4(0x3FF0*2+i,i)end + else poke4(0x3FF0*2+c0,c1) end +end + +function scanline(s) +tt = (8+math.abs(math.cos(t*0.01+s*2)*8)) % 8 +poke(0x3fc0,curr[s*0.3//(tt+1)+10]*100) +poke(0x3fc1,curr[s*0.4//(tt+1)+10]*10) + +poke(0x3fc2,curr[s*0.5//(tt+1)+10]*100) +end + +function TIC()t=time()//32 + + f=0 + fft_update() + cc = curr[16]+curr[32]+curr[160] + cc = cc*0.1 + f = fft(15) + cls(0) + pal(0,0) + cy=-cy+f*100 + for y=cy,cy+460,1 do + sy = (y-cy+f) + x1 = -256+sy%8 * 64+t*2%240 + y2 = sy+64 + sx = 64+math.cos(sy+t*0.1)*32 + + tri(x1-64,128+sy-math.cos(t*0.1)*32,-32+x1+sx,64+y2+math.cos(t*0.1)*32,x1,32+math.cos(t*0.2+sy%8)*15,sy-cc) +-- trib(x1-33,127+sy-math.cos(t*0.1)*32,-32+x1+sx,64+y2+math.cos(t*0.1)*32,x1,32+math.cos(t*0.1)*3,sy%8) + circ(x1,sy,sy*0.4-16+math.cos(t*0.04+sy%8)*32,cc+sy+t*0.2) + + end + + end diff --git a/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..00945e50b --- /dev/null +++ b/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,157 @@ +abs=math.abs +sin=math.sin +cos=math.cos + +function BOOT() + cls(14) + for i=0,10 do + print("BUDDY",40+i,15+i,i,0,4) + print("SALTERTON",10+i,45+i,i,0,4) + end + for y=89,135 do + for x=0,239 do + local v=(x-120) / ((y-89)/80+1) + pix(x,y,4-(v%8<2 and 1 or 0)) + end + end +end + +function SCN(y) + vbank(0) + if y<85 and y>10 then + poke(0x03FF9,sin(time()/400+y/40)*100%240-120) + poke(0x03FFa,(sin(-time()/100)*5)) + else + poke(0x03FF9,0) + poke(0x03FFa,0) + end +end + +function TIC() + t=time()//32 + vbank(1) + cls() + + fposl={ + x=abs(t%400-200)+20, + y=130-abs(sin(t/8)*10) + } + fposr={ + x=abs((t+36)%400-200)+20, + y=130-abs(cos(t/8)*10) + } + + elli(fposl.x,fposl.y,10,5,15) + elli(fposr.x,fposr.y,10,5,15) + + bpos={ + x=(fposl.x+fposr.x)/2, + y=60-abs(cos(t/4)*10) + } + elli(bpos.x,bpos.y,30,35,2) + elli(bpos.x-1,bpos.y-2,27,32,3) + elli(bpos.x-2,bpos.y-4,24,28,4) + + tri( + bpos.x,bpos.y-30, + bpos.x-4,bpos.y, + bpos.x+4,bpos.y, + 15 + ) + tri( + bpos.x,bpos.y+6, + bpos.x-4,bpos.y, + bpos.x+4,bpos.y, + 15 + ) + a={ + x=12, + y=30 + } + fposl.y=fposl.y-5 + fposl.x=fposl.x-5 + fposr.y=fposr.y-5 + fposr.x=fposr.x+5 + for i=0,.5,.1 do + circ( + mix(bpos.x+a.x+10*i,fposl.x,i), + mix(bpos.y+a.y,fposl.y,i), + 5,4-i*4) + circ( + mix(bpos.x-a.x-10*i,fposr.x,i), + mix(bpos.y+a.y,fposr.y,i), + 5,4-i*4) + + circ( + mix(bpos.x+a.x+10*(.5-i),fposl.x,i+.5), + mix(bpos.y+a.y,fposl.y,i+.5), + 5,2+i*4) + circ( + mix(bpos.x-a.x-10*(.5-i),fposr.x,i+.5), + mix(bpos.y+a.y,fposr.y,i+.5), + 5,2+i*4) + end + + hpos={ + x=bpos.x,y=bpos.y-30-abs(sin(t/8))*10 + } + elli(hpos.x,hpos.y+2,12,14,2) + elli(hpos.x,hpos.y,12,14,4) + elli(hpos.x,hpos.y+6,6,4,12) + rect(hpos.x-6,hpos.y+2,12,4,4) + elli(hpos.x-4,hpos.y-2,3,2,12) + elli(hpos.x-4,hpos.y-2,1,1,15) + elli(hpos.x+4,hpos.y-2,3,2,12) + elli(hpos.x+4,hpos.y-2,1,1,15) + elli(hpos.x-4,hpos.y-11,6,4,15) + elli(hpos.x+5,hpos.y-10,5,3,15) + elli(hpos.x-8,hpos.y-7,4,6,15) + elli(hpos.x+8,hpos.y-7,4,6,15) + rect(hpos.x-10,hpos.y,3,7,15) + rect(hpos.x+7,hpos.y,3,7,15) + elli(hpos.x,hpos.y+1,2,4,2) + + -- arms + a={ + x=23, + y=-20 + } + armr={ + x=bpos.x+a.x+sin(t/10)*20, + y=bpos.y+a.y+sin(t/7.57)*20, + } + armr2={ + x=armr.x+sin(t/8.246)*16, + y=armr.y+sin(t/12.57)*16, + } + arml={ + x=bpos.x-a.x+cos(t/10)*20, + y=bpos.y+a.y+cos(t/7.57)*20, + } + arml2={ + x=arml.x+cos(t/8.246)*16, + y=arml.y+cos(t/12.57)*16, + } + for i=0,.5,.1 do + circ( + mix(bpos.x+a.x,armr.x,i*2), + mix(bpos.y+a.y,armr.y,i*2), + 5,2+i*4) + circ( + mix(armr.x,armr2.x,i*2), + mix(armr.y,armr2.y,i*2), + 5,2+i*4) + circ( + mix(bpos.x-a.x,arml.x,i*2), + mix(bpos.y+a.y,arml.y,i*2), + 5,2+i*4) + circ( + mix(arml.x,arml2.x,i*2), + mix(arml.y,arml2.y,i*2), + 5,2+i*4) + end +end + +function mix(a,b,t) + return a*(1-t)+b*t +end \ No newline at end of file diff --git a/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..0f9a0c7dd --- /dev/null +++ b/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,117 @@ +-- hello from gasman!!! +-- let's all get hyped for NOVAAAAA + +-- greetings to reality404, alia ^ +-- and tobach + +function SCN(y) + if y<100 then + poke(16320,0) + poke(16321,0) + poke(16322,0) + else + v=(y-100)*4 + poke(16320,v) + poke(16321,v) + poke(16322,v) + end + s=(y-30)/70 + poke(16320+27,0x3b*s) + poke(16321+27,0x5d*s) + poke(16322+27,0xc9*s) +end + +function person(x,y,bop) + circ(x,y+bop,2,13) + rect(x-2,y+4,5,10,13) + rect(x-1,y+14,3,6,13) +end + +starcount=60 +stars={} +for i=0,starcount do + stars[i]={ + math.random(0,239), + math.random(0,50), + math.random() + } +end + +galcount=50 +gal={} +for i=0,galcount do + gal[i]={ + math.random(), + math.random(), + } +end + +function TIC() + t=time() + vol=fft(0) + -- rect(0,0,240,110,0) + cls() + for i=0,starcount do + s=stars[i] + pix( + s[1],s[2], + 13+(1+math.sin(t/400+s[3]*8)/2*4) + ) + end + + for j=0,galcount do + -- ok, so galaxies don't actually + -- spin on a timescale comprehensible + -- to humans, but let's use some + -- artistic licence here + g=gal[j] + i=j/50 + a=i*10+t/10000 + k=2.1 + x=i*math.sin(a)*20 + y=i*math.cos(a)*40 + x1=150+x*math.cos(k)+y*math.sin(k) + y1=30+y*math.cos(k)-x*math.sin(k) + circ(x1+g[1]*2,y1+g[2]*2,1,12+i*4) + x=i*math.sin(a+math.pi)*20 + y=i*math.cos(a+math.pi)*40 + x1=150+x*math.cos(k)+y*math.sin(k) + y1=30+y*math.cos(k)-x*math.sin(k) + circ(x1+g[1]*2,y1+g[2]*2,1,12+i*4) + end + + fx=160 + fy=120 + for i=0,10 do + dx=math.random(-10,10) + dy=math.random(0,10) + clr=2+math.random(0,2) + line(fx,fy,fx+dx,fy-dy,clr) + line(fx+1,fy,fx+dx+1,fy-dy,clr) + end + + for i=2,6 do + pix(fx+(i-4)*4,fy-(t/50+10*math.sin(i))%20,i%3+2) + end + + for z=1,1.7,.05 do + for x=-1,1,.03 do + z1=z+math.sin(z+x*8+t/400)/10 + sy=-10+100/z1 + sx=120+x*100*(3/z1) + circ(sx,sy,2,9) + end + end + rect(104,109,9,11,14) + circ(108,115,2+vol*10,15) + + for i=0,8 do + a=i*math.pi/4 + person( + 160+30*math.cos(a), + 110+15*math.sin(a), + vol*10 + ) + end + +end diff --git a/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..e05d648f2 --- /dev/null +++ b/shader_file_sources/2023_06_19_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,84 @@ +--greetz to gasman, reality and alia!! +--hmmmm what to make this week +--well nova is THIS WEEKEND!! +abs=math.abs +sin=math.sin +cos=math.cos +function TIC() + cls() + t=time()//32 + fv=fft(0)+fft(1)+fft(2)+fft(3)*3 + if fv>1 then fv=1 end + if fv<0.5 then fv=0 end + --print(fv) + + rect(30,15,180,110,12) + + print("THE CHAIR",40+sin(t/4)*6,28,t/4,true,3) + print("DANCING",60+sin(t/6+0.5)*16,48,t/4+2,true,3) + print("WILL",90+sin(t/8+1)*32,68,t/4+3,true,3) + print("RETURN",70+sin(t/4+1.5)*16,88,t/4+4,true,3) + --print("THE CHAIR",120+sin(t/4+2)*6,28,true,0,3) + + print("NOVA 2023 23-25 JUNE BUDLEIGH SALTERTON YOU BETTER BE THERE !!",240-t*4%1200,3,12,true,2) + + for i=0,20 do + line(i,0,i,135,i%2+1) + line(220+i,0,220+i,135,i%2+1) + end + + for k=0,4,2 do + if fv>0.9+sin(k)/32 then + person2(-70+k*38,10+sin(k+3)*8) + else + person1(-70+k*38,10+sin(k+3)*8) + end + end + + for i=0,8 do + rect(0+i*28,120,24,24,15) + end + + --line(0,135,0,135-fft(0)*200,12) + +end + +function chair(x,y) + rect(x+50,y+50,3,20,1) + rect(x+70,y+50,3,20,1) + rect(x+56,y+50,3,17,1) + rect(x+76,y+50,3,17,1) + rect(x+50,y+50,28,3,1) + rect(x+50,y+30,3,20,1) + rect(x+65,y+30,3,20,1) + rect(x+50,y+30,20,18,1) +end + +function person1(x,y) + chair(x+42,y+0) + rect(x+94,y+84,20,6,14) + rect(x+94,y+64,6,20,14) + rect(x+110,y+84,20,6,14) + rect(x+110,y+64,6,20,14) + circ(x+120,y+68,10,14) + rect(x+117,y+72,7,10,14) + rect(x+108,y+80,25,35,14) + rect(x+110,y+110,8,35,14) + rect(x+123,y+110,8,35,14) +end + +function person2(x,y) + chair(x+48,y+-10) + for i=0,6 do + line(x+100+i,y+55,x+104+i,y+88,14) + end + for i=0,6 do + line(x+120+i,y+55,x+124+i,y+88,14) + end + + circ(x+120,y+62,10,14) + rect(x+117,y+72,7,10,14) + rect(x+108,y+74,25,35,14) + rect(x+110,y+106,8,35,14) + rect(x+123,y+106,8,35,14) +end \ No newline at end of file diff --git a/shader_file_sources/2023_06_23_shader_jam_nova/alianova.lua b/shader_file_sources/2023_06_23_shader_jam_nova/alianova.lua new file mode 100644 index 000000000..6b1b9d2c2 --- /dev/null +++ b/shader_file_sources/2023_06_23_shader_jam_nova/alianova.lua @@ -0,0 +1,87 @@ +f={} +fmax={} +for i=1,256 do + f[i]=0 + fmax[i]=0.000001 +end + +cls() +t=0 +bass=0 + +function TIC() + vbank(1) + memcpy(0x8000,0,16320) + + vbank(0) + for x=0,240//8 do + local v=fft(x*8) + fmax[x+1]=math.max(fmax[x+1],v) + v=(v/fmax[x+1])+(f[x+1]*.8) + f[x+1]=v + + if x>0 then + local c=v*3 + tri( + x*8-8,136, + x*8,136, + x*8-8,136-f[x]*10, + c + ) + tri( + x*8-8,136-f[x]*10, + x*8,136, + x*8,136-f[x+1]*10, + c + ) + end + end + + bass=0 + for i=1,10 do + bass=bass+f[i] + end + + + local len=120*135-1 + memcpy(0x4000,121,len) + + cls() + memcpy(0,0x8000,16320) + local strl={"=^^=","NOVA","GRTz","NICO","TBCH","GMAN","eViL","dave","f3ll","mntr","jtrk","dBoy","andU","trans","rhts"} + local str=strl[t//10%#strl+1] + print(str,6,51+math.sin(t/10)*20,15,0,10) + print(str,5,50+math.sin(t/10)*20,12,0,10) + + vbank(1) + ttri( + 0,0, + 480,0, + 0,136*2, + math.sin(t/12)*10,math.sin(t/8)*4, + 480+math.sin(t/10)*4,math.sin(t/7)*4, + math.sin(t/11)*14,136*2+math.sin(t/9)*4, + 2 + ) + + vbank(0) + memcpy(0,0x4000,len) + + vbank(1) + + t=t+bass/80 + print("alia",4,129,15) + print("alia",3,130,12) +end + +function SCN(y) + vbank(1) + for x=0,239 do + pix(x,y,math.max(0, + pix(x,y)-(x%2+y%2)%2+((bass/12)*(t//16%1)) + )) + end + local v=f[(y+t//1)%135+1] + poke(0x3ff9,v*10) + poke(0x3ffa,v*10) +end \ No newline at end of file diff --git a/shader_file_sources/2023_06_23_shader_jam_nova/dave84nova.lua b/shader_file_sources/2023_06_23_shader_jam_nova/dave84nova.lua new file mode 100644 index 000000000..438b5fb91 --- /dev/null +++ b/shader_file_sources/2023_06_23_shader_jam_nova/dave84nova.lua @@ -0,0 +1,45 @@ +-- title: Nova Lasers +-- author: dave84 +-- desc: ByteJam tribute to the lasers at Nova demoparty +-- license: MIT License +-- version: 1.0 +-- script: lua + +-- Greets to everyone IRL! +t=0 +s=math.sin +c=math.cos +cls() +function TIC() +vbank(1) +cls(0) +vbank(0) +line(0,((t*10)//1)%136,240,((t*10)//1)%136,0) +line(((t*20)//1)%240,0,((t*20)//1)%240,240,0) + +x1,y1=0,0 +x2,y2=0,0 +x2,y3=0,0 +for i=0,12 do + x1=120+s(t)*30 + y1=68+c(t+i)*30 + pix(x1,y1,t//1) + vbank(1) + line(240//2,136,x1,y1,t//1) + vbank(0) + x2=40+s(t*-1)*30*s(t+i*2) + y2=68+c(t)*30*s(t+i*2) + pix(x2,y2,t//1) + vbank(1) + line(240//2,0,x2,y2,t//1) + vbank(0) + x3=200+s(t*-1)*30*s(t-i) + y3=68+c(t)*30*s(t+i) + pix(x3,y3,t//1) + vbank(1) + line(240//2,0,x3,y3,t//1) + vbank(0) +end + +t=t+0.1 +end diff --git a/shader_file_sources/2023_06_23_shader_jam_nova/gasmannova.asm b/shader_file_sources/2023_06_23_shader_jam_nova/gasmannova.asm new file mode 100644 index 000000000..566cd14d4 --- /dev/null +++ b/shader_file_sources/2023_06_23_shader_jam_nova/gasmannova.asm @@ -0,0 +1,150 @@ + DEVICE ZXSPECTRUM48 + org 0x8000 + + ld hl,0 + ld de,0x4000 + ld bc,0x1800 +texturelp + ld a,(hl) + inc hl + and (hl) + inc hl + ld (de),a + inc de + dec bc + ld a,b + or c + jr nz,texturelp + + ld hl,text +do_text + ld a,(hl) + or a + jr z,text_done + rst 0x10 + inc hl + jr do_text + +text_done +frame_lp + ei ; what asshole disabled interrupts by default??? + halt + + ld a,2 + out (254),a + +frame_num ld a,0 + inc a + and 31 + ld (frame_num+1),a + jr nz,no_change_attr + + ld a,(attr_mod+1) + inc a + cp 63 + jr nz,no_reset_mod + ld a,4 +no_reset_mod + ld (attr_mod+1),a + +no_change_attr + + ld hl,0x5800 + call attr_splurge + ld hl,0x5a00 + call attr_splurge + + ld hl,0x5901 + ld de,0x5900 + ld bc,0xff + ldir + +scrl_counter + ld a,0 + dec a + and 7 + ld (scrl_counter+1),a + jr nz,scrl_skip_char + +scrltext_pos ld hl,scroller + ld a,(hl) + or a + jr nz,scrltext_notdone + ld hl,scroller + ld a,(hl) +scrltext_notdone + inc hl + ld (scrltext_pos+1),hl + + ld l,a + ld h,0 + add hl,hl + add hl,hl + add hl,hl + ld de,0x3c00 + add hl,de + ld de,scrlbuf + ld bc,8 + ldir + +scrl_skip_char + + ld de,scrlbuf + ld hl,0x591f + + rept 8 + ld a,(de) + add a,a + ld (de),a + sbc a,a + inc de + ld b,a + ld a,r + and 7 + or b + ld (hl),a + ld bc,0x0020 + add hl,bc + edup + + xor a + out (254), a + jp frame_lp + +attr_splurge + ld b,0 +attr_mod + ld d,4 +first_b + ld a,0 +attr_lp + ld (hl),a + inc a + cp d + jr nz,no_attr_reset + ld a,0 +no_attr_reset + inc hl + djnz attr_lp + + ld a,(attr_mod+1) + ld b,a + ld a,(first_b+1) + inc a + cp b + jr c,no_reset_first_b + xor a +no_reset_first_b + ld (first_b+1),a + ret + +text + db "ladies and gentlemen, the first ever zx spectrum jam!" + db 0 + +scrlbuf db 0,0,0,0,0,0,0,0 + +scroller db "Party on dudes and dudesses!!!! Greetings to nico - dave84 - tobach - " + db "alia - mantratronic - jtruk - fell - evvvvil - deathboy - aldroid - kris !!!", 0 + + SAVESNA "jam.sna", 0x8000 diff --git a/shader_file_sources/2023_06_23_shader_jam_nova/jtruknova.lua b/shader_file_sources/2023_06_23_shader_jam_nova/jtruknova.lua new file mode 100644 index 000000000..63b0bd187 --- /dev/null +++ b/shader_file_sources/2023_06_23_shader_jam_nova/jtruknova.lua @@ -0,0 +1,98 @@ +-- Greetz to all at Nova and fellow +-- Jammers :) + +T=0 +DISCS={} + +function BDR(y) + vbank(0) + local r=.5+math.sin(T*.0014)*.5 + local g=.5+math.sin(T*.0012)*.5 + local b=.5+math.sin(T*.001+y/60)*.5 + local i=2 + local addr=0x3fc0+i*3 + poke(addr,r*255) + poke(addr+1,g*255) + poke(addr+2,b*255) +end + +function BOOT() + for i=1,10 do + addDisc() + end +end + +function addDisc() + local dx=.5+math.random() + + DISCS[#DISCS+1]={ + x=math.random()*239, + y=math.random()*135, + a=math.random()*math.pi*2, + scale=30+math.random()*30, + dx=dx, + } +end + +function TIC() + T=time() + vbank(1) + cls() + rect(0,0,63,63,8) + rect(5,3,63-10,30,1) + local sh=20 + rect(15,63-sh,35,sh,13) + rect(20,63-sh+3,10,sh-5,8) + local s=5 + tri(0,63,0,63-s,s,63,0) + print("NOVA",10,20,2,true,2) + + vbank(0) + cls() + + for i=1,#DISCS do + local disc=DISCS[i] + disc.x=disc.x+disc.dx + if(disc.x>240+disc.scale)then + disc.x=-disc.scale + end + local xc,yc=disc.x,disc.y + local d=disc.scale + local a1=disc.a+T*.001 + local a2=a1+math.pi/2 + local a3=a2+math.pi/2 + local a4=a3+math.pi/2 + + local p1x=xc+math.sin(a1)*d + local p1y=yc+math.cos(a1)*d + local p2x=xc+math.sin(a2)*d + local p2y=yc+math.cos(a2)*d + local p3x=xc+math.sin(a3)*d + local p3y=yc+math.cos(a3)*d + local p4x=xc+math.sin(a4)*d + local p4y=yc+math.cos(a4)*d + drawQ(p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y,0) + end + + vbank(1) + cls() +end + +function drawQ(p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y,s) + local sx,sy=s//2,s%2 + local sx0,sy0=sx*64,sy*64 + local sx1,sy1=sx0+63,sy0+63 + drawT(p1x,p1y,p2x,p2y,p3x,p3y, + sx0,sy0,sx0,sy1,sx1,sy1) + drawT(p3x,p3y,p4x,p4y,p1x,p1y, + sx1,sy1,sx1,sy0,sx0,sy0) +end + +function drawT( + dx0,dy0,dx1,dy1,dx2,dy2, + sx0,sy0,sx1,sy1,sx2,sy2) + ttri( + dx0,dy0,dx1,dy1,dx2,dy2, + sx0,sy0,sx1,sy1,sx2,sy2, + 2,0) +end \ No newline at end of file diff --git a/shader_file_sources/2023_06_23_shader_jam_nova/mantratronicnova.lua b/shader_file_sources/2023_06_23_shader_jam_nova/mantratronicnova.lua new file mode 100644 index 000000000..643949dc6 --- /dev/null +++ b/shader_file_sources/2023_06_23_shader_jam_nova/mantratronicnova.lua @@ -0,0 +1,100 @@ +isfirst=true + +djp={} + +texts={"NOVA", +"DEATHBOY", +"SELLS", +"AVON", +"SUNA" +} + +function TIC() t=time()/100 + tt=t//40%#texts+1 + rt=t + t=t%40 + if t<.5 then + isfirst=true + djp={} + end + + for i=0,47 do + poke(0x3fc0+i,i*4) + end + + if isfirst then + isfirst=false + cls(0) + + + -- feel free to replace this + len = print(texts[tt],240,136,12,false,5) + print(texts[tt],120-len/2,70,12,false,5) + + for y=0,135 do + for x=0,239 do + if pix(x,y) == 12 then + local p = {x=x,y=y,c=15,s=1} + table.insert(djp,p) + end + end + end + else + divide = math.min((t*50)//1,#djp) + for i=1,divide do + dx=120-djp[i].x + dy=68-djp[i].y + a=math.atan2(dx,dy)+rt/10000 + d=(dx^2+dy^2)^.5 + + djp[i].x = 120+ (math.random()+d)*math.sin(a) + djp[i].y = 68+ (math.random()+d)*math.cos(a) + djp[i].c = math.max(6,math.min(15,djp[i].c +(math.random() -.45))) + djp[i].s = djp[i].s +(math.random() -.5) + local p = djp[i] + circ(p.x,p.y,p.s,p.c) + end + + for i=1,3000 do + x=math.random(239)-1 + y=math.random(135)-1 + pix(x,y-1, (pix(x,y) + pix(x+1,y+1) + pix(x+1,y-1) + pix(x-1,y+1) + pix(x-1,y-1))/5) + end + + for i=divide,#djp do + local p = djp[i] + pix(p.x,p.y,15) + end + end + +end + +-- +-- 001:eccccccccc888888caaaaaaaca888888cacccccccacc0ccccacc0ccccacc0ccc +-- 002:ccccceee8888cceeaaaa0cee888a0ceeccca0ccc0cca0c0c0cca0c0c0cca0c0c +-- 003:eccccccccc888888caaaaaaaca888888cacccccccacccccccacc0ccccacc0ccc +-- 004:ccccceee8888cceeaaaa0cee888a0ceeccca0cccccca0c0c0cca0c0c0cca0c0c +-- 017:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec +-- 018:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee +-- 019:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec +-- 020:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee +-- + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000 +-- + +-- +-- 000:100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2023_06_23_shader_jam_nova/niconova.lua b/shader_file_sources/2023_06_23_shader_jam_nova/niconova.lua new file mode 100644 index 000000000..910bf638a --- /dev/null +++ b/shader_file_sources/2023_06_23_shader_jam_nova/niconova.lua @@ -0,0 +1,111 @@ +``` +-- yo it's nico +-- representing cats +-- let's try an idea inspired +-- by something else happening at this +-- party (greets to maple!) + +-- this set is banging +-- FFT is being funky so this will not be +-- music synced. Sorry if that is +-- a problem for anybody +-- accurate to some IIDX charts though +-- :P + +notes = {} +notenow = 1 + +sin = math.sin +cos = math.cos +function TIC()t=time()//32 + +keycolor = 12 +cls() + +-- bg effect +for x=0,240 do + for y=0,138 do + pix(x,y,sin(x/16+t/16)+sin(y/8+t)+(t/32)*2) + end +end + +rect(80,0,90,120,0) -- note lanes + +if (t%10==0 and notenow==1) then + pos = math.random(8)-1 + notes[#notes+1] = { + col = pos, + position = 0 + } -- god I hate lua +end + +for i=1,#notes do -- draw notes + color = 12 + if notes[i]["col"]%2 == 0 then + color = 10 + end + if notes[i]["col"] == 0 then + rect(80,notes[i]["position"],18,2,3) + else + rect(98+(notes[i]["col"]*8),notes[i]["position"],8,2,color) + end + notes[i]["position"] = notes[i]["position"]+2 +end + +fftboop = fft(0)+fft(1)+fft(2)+fft(3)+fft(4) +if fftboop>0.5 then + keycolor = 6 +end +rect(80,115,90,50,14) -- base + + color = 15 + for j=1,#notes do -- adding a comment every time lua is a pain + if (notes[j]["col"] == 0 + and notes[j]["position"] >= 110 + and notes[j]["position"] <= 120) then + color = 5 + rect(80,0,18,118,12) + end + end + +circ(88,127,6,color) -- turntable + + -- turntable spinning +line(88,122,88,128,12) +-- couldn't make it rotate in time + +line(80,0,80,115,12) -- guides +line(80+6*3,0,80+6*3,115,12) -- guides + +for i=1,4 do + color = 12 + for j=1,#notes do -- adding a comment every time lua is a pain + if (notes[j]["col"]~=0 and notes[j]["col"]%2 == 1 and notes[j]["col"]//2+1 == i + and notes[j]["position"] >= 110 + and notes[j]["position"] <= 120) then + color = 5 + rect(90+(i*16),0,8,118,12) + end + end + rect(90+(i*16),124,8,10,color) -- low keys + line(90+(i*16),0,90+(i*16),115,12) + line(90+(i*16)+8,0,90+(i*16)+8,115,12) +end + +for i=1,3 do + color = 10 + for j=1,#notes do -- adding a comment every time lua is a pain + if (notes[j]["col"]//2 == i + and notes[j]["col"]%2 == 0 + and notes[j]["position"] >= 110 + and notes[j]["position"] <= 120) then + color = 5 + rect(90+(i*16)+8,0,8,118,12) + end + end + + rect(90+(i*16)+8,124-8,8,10,color) -- high keys +end + +end +``` \ No newline at end of file diff --git a/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..4e22c493b --- /dev/null +++ b/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,112 @@ +fmax={} +for i=1,256 do fmax[i]=0.00001 end + +function mix(a,b,t) + return a*(1-t)+b*t +end + +function pal(bk,r,g,b) + for i=0,15 do + local t=i/15 + poke(16320+i*3+0,mix(bk,r,t)) + poke(16320+i*3+1,mix(bk,g,t)) + poke(16320+i*3+2,mix(bk,b,t)) + end +end + +pal(0,255,110,110) +cls() + +vbank(1) +pal(0,255,255,255) +cls() +t=0 + +function sample(x,t) + local v=0 + for i=1,20 do + v=v+math.sin((x+i+t)*math.pi*2^i)*fft(i-1) + end + return v +end + +function r2d(p,a) + local sa=math.sin(a) + local ca=math.cos(a) + return { + x=ca*p.x+sa*-p.y, + y=ca*p.y+sa*p.x + } +end + +function TIC() + for i=1,256 do + fmax[i]=math.max(fmax[i],fft(i-1)) + end + + vbank(0) + if t%2==1 then + memcpy(1,0,16319) + end + poke(0x03ff9,(t+1)%2) + + for i=0,135 do + local j=(i/(135*(10/9))+.1)^2*255//1 + local v=math.min(15, + (fft(j)/fmax[j+1])^.75*16 + ) + pix(t%2,135-i,v) + end + + vbank(1) + cls() + if t%2==1 then + memcpy(1,0,16319) + end + poke(0x03ff9,(t+1)%2) + local lastx1=nil local lasty1=nil + local lastx2=nil local lasty2=nil + + for x=0,239 do + local i=x/240 + local v=sample(i,-t/100) + v=v*40 + local px=x + local py=v+68 + + + line( + (lastx2 or px)+2,(lasty2 or py)+2, + px+2,py+2,1) + line( + lastx2 or px,(lasty2 or py), + px,py,15) + lastx2=px + lasty2=py + + v=sample(i*(t//40%4+1),0) + v=v*40 + local ptemp=r2d({x=0,y=v+40},i*math.pi*2) + local mp=math.sin(t/80)*.5+1.5 + mp=1 + px=mix(px,ptemp.x+120,mp) + py=mix(py,ptemp.y+68,mp) + + line( + (lastx1 or px)+2,(lasty1 or py)+2, + px+2,py+2,1) + line( + lastx1 or px,(lasty1 or py), + px,py,12) + lastx1=px + lasty1=py + end + + for y=0,135 do + for x=0,239 do + --pix(x,y,math.max(0,pix(x,y)-x%3+y%3%1)) + end + end + + t=t+1 +end diff --git a/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..24c8d9a21 --- /dev/null +++ b/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,129 @@ +-- mantra here +-- going to try a feedback effect + +-- thanks to raccoonviolet for +-- doing this on short notice! + +-- ^ +-- gl & hf to nico, tobach and alia + +bass=0 +mids=0 +treb=0 +first=true +m=math +s=m.sin +c=m.cos +tau=m.pi*2 + +text={"FIELDFX","MONDAY", "GOOD", "TO BE", "BACK", "", "Nico", "Tobach", "Alia", "Violet", "and you"} + +function BOOT() +cls() +end + +function BDR(l) +if l ==0 then +vbank(1) +rt=s(t/30) +gt=s(t/31) +bt=s(t/32) +for i=0,15 do +poke(0x3fc0+i*3,math.min(255,i*(10+5*rt))) +poke(0x3fc0+i*3+1,math.min(255,i*(10+5*gt))) +poke(0x3fc0+i*3+2,math.min(255,i*(10+5*bt))) +end +end +end + +function TIC()t=time()/100 +--bass=0 +bass = bass*.9 +for i=0,8 do + bass = bass + fft(i) +end + +--mids=0 +mids = mids*.9 +for i=10,30 do + mids = mids + fft(i) +end + +treb=0 +for i=100,255 do + treb = treb + fft(i) +end + +if first then + vbank(0) + memcpy(0x8000,0,120*136) + first=false +end +vbank(0) +memcpy(0,0x8000,120*136) + + +cx=120+s(mids)*10 +cy=68+c(mids)*8 + +circb(120,68,treb*20,treb*12) + +tex=text[(t//20 % #text)+1] +len=print(tex,2400,120,treb*16,true,4) +if t/20 %1 > .5 then +print(tex,120-len/2,60,4+math.min(7,treb*2)+t/10,true,4) +end + +vbank(1) +cls() +d=200 + +x1= cx+d*s(tau/8) +x2= cx+d*s(tau/8*3) +x3= cx+d*s(tau/8*5) +x4= cx+d*s(tau/8*7) + +y1= cy+d*c(tau/8) +y2= cy+d*c(tau/8*3) +y3= cy+d*c(tau/8*5) +y4= cy+d*c(tau/8*7) + +twist=s(mids*5)/16 + +d = d- s(bass)*10 +u1= cx+d*s(tau/8+twist) +u2= cx+d*s(tau/8*3+twist) +u3= cx+d*s(tau/8*5+twist) +u4= cx+d*s(tau/8*7+twist) + +v1= cy+d*c(tau/8+twist) +v2= cy+d*c(tau/8*3+twist) +v3= cy+d*c(tau/8*5+twist) +v4= cy+d*c(tau/8*7+twist) + +--[[ +line(x1,y1,x2,y2,3) +line(x2,y2,x3,y3,3) +line(x3,y3,x4,y4,3) +line(x4,y4,x1,y1,3) + +line(u1,v1,u2,v2,5) +line(u2,v2,u3,v3,5) +line(u3,v3,u4,v4,5) +line(u4,v4,u1,v1,5) + +ttri(x1,y1,x2,y2,x3,y3, + x1,y1,x2,y2,x3,y3,2) +--]] + +ttri(x1,y1,x2,y2,x3,y3, + u1,v1,u2,v2,u3,v3,2) +ttri(x1,y1,x4,y4,x3,y3, + u1,v1,u4,v4,u3,v3,2) + + memcpy(0x8000,0,120*136) +print(tex,120-len/2,60,8,true,4) +vbank(0) +cls() + +end diff --git a/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/nico.lua b/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/nico.lua new file mode 100644 index 000000000..a27985015 --- /dev/null +++ b/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/nico.lua @@ -0,0 +1,56 @@ +-- hi it's nico coming to you live +-- from the cramped corner of my room +-- that is not full of junk! +-- been a while since I did one of +-- these monday night jams, +-- let's see what I come up with +-- greets to everybody cool +-- (everybody here is cool) + +s = math.sin +c = math.cos +t = 0 + +resetpoint = 0 + +width = 30 +-- let's start with a plasma +function TIC()t=time()/260-resetpoint + +width = 40 +vbank(0) +for y=0,136 do for x=0,240 do +pix(x,y, +(s(x/16+t)+s((y+t)/(16/s(t/2)))+t)%4+(c(t/32)*16)+((y//width)%16)*4) +end end + +vbank(1) + +pix((t*8)%240,s(t)*(136/2)+(136/2)+2+1,15) +pix((t*8)%240,c(t)*(136/2)+(136/2)+2+1,15) + +pix((t*8)%240,s(t)*(136/2)+(136/2)+2,12) +pix((t*8)%240,c(t)*(136/2)+(136/2)+2,12) +_,_,click,_,_,_,_ = mouse() + +if t>100 then + cls() + resetpoint = resetpoint + t +end + +vbank(0) + + +end + +-- was surprised that just worked. +-- first time using blackhole on new laptop + +function SCN(l) + bop = fft(0)+fft(1)+fft(2)+fft(3)+fft(4) + if l%width*2 == 0 then + poke(0x3FF9,l//width*(bop*50)) + else + poke(0x3FF9,-l//width*(bop*50)) + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..17d975406 --- /dev/null +++ b/shader_file_sources/2023_07_03_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,68 @@ +-- ^ +--hello!! tobach here!! +--time for another jam :-) + +--greetz to violet, nico, alia, mantra +--and molive who i'm sat in vc with +--swearing at my monitor :-) + +flr=math.floor +sin=math.sin +cos=math.cos +abs=math.abs + +imgbuf={} +for i=1,128 do + imgbuf[i]={} + for j=1,128 do + imgbuf[i][j]=0 + end +end + +function SCN(scnln) + poke(0x3ff9,sin(scnln/16+t)*16) +end + +function TIC() + cls() + t=time()/100 + twister() + for y=1,128 do + for x=1,128 do + imgbuf[x][y]=peek4(y*240+x) + --pix(120+x,4+y,imgbuf[x][y]) + end + end + --angle=sin(t/128)*8 + angle=t/16 + for y=0,135 do + for x=0,239 do + u=flr(x*cos(angle)-y*sin(angle)) + v=flr(x*sin(angle)+y*cos(angle)) + u=u*2 + v=v+y + pix(x,y,imgbuf[u%127+1][v%127+1]) + end + end +end + +--i have no clue what i'm doing +--but i'm rolling with it lmao + +--also my maths is wrong somewhere +--and idk where... + +function twister() + amp=16+sin(t/4)+(fft(0)+fft(1)*64) + for y=0,135 do + line(0,y+1,128,y+1,(y/16+t/4+sin(y/4+t/3)+10)) + end + for y=0,135 do + a=sin(y/amp+t/2)*cos(y/32+t/32)*40+60 + b=sin(y/amp+90+t/2)*cos(y/32+t/32)*40+60 + c=sin(y/amp+180+t/2)*sin(y/32+t/32)*40+60 + if a2 then + --vbank(1) + --cls() + --col=(c-3)*5+1+5 + --end + local x=(((c*136)-t)%(136*5))-136 + rect(x+5,5,125,125,col) + + for q=0,3 do + local r={ + x=q*4, + y=q*8 + } + local lp=nil + for i=0,1,.02 do + local off={ + --x=math.random()*.05-.025, + --y=math.random()*.05-.025 + x=math.sin(t/60+i*40+r.x)*0.1, + y=math.cos(t/60+i*4+r.y)*0.1, + } + local p=spline(evoke[c+1],i,off) + l=lp or p + line( + x+p.x*134, + 1+p.y*134, + x+l.x*134, + 1+l.y*134, + col+q+1) + lp=p + end + end + end + + --for i=0,15 do + --vbank(0) + --print("###",0,i*6,i) + --vbank(1) + --print("###",30,i*6,i) + --end + --vbank(1) + --print("=^^=",5,32,0,0,10) + --print("=^^=",5,30,15,0,10) +end diff --git a/shader_file_sources/2023_07_24_byte_jam_prevoke/superogue.lua b/shader_file_sources/2023_07_24_byte_jam_prevoke/superogue.lua new file mode 100644 index 000000000..a35de8405 --- /dev/null +++ b/shader_file_sources/2023_07_24_byte_jam_prevoke/superogue.lua @@ -0,0 +1,45 @@ +-- superogue here... +-- welcome everone! <3 +T={ +" demos & intros", +" streaming music", +" tracked music", +" alternative", +" tiny intros", +"freestyle graphics", +" ansi & ascii", +" pixel graphics", +" animation", +" interactive" +} +t=1x=1y=1 +function TIC() +f=.008+(fft(0)/39) +cls()z=119 +for i=0,136,2 do +line(0,i,240,i,15+math.sin(i+t/9)*9%1.7) +end +for i=0,571,1 do +x=math.sin(t+x*y+f) +y=math.sin(t*9+x+y+x)-math.sin(t+x+i) +circb(x*z*1.5+80,y*z+68,(y*y*z/39)*5+1,8+((t+i/19)%3)) +circb(160-(x*z*1.5),y*z+68,(y*y*z/39)*5+1,8+((t+i/19)%3)) +end +print("get your ass to",80,33,0) +print("get your ass to",79,32,10) +print("evoke 2023",34,59,0,2,3) +print("evoke 2023",32,57,12+(t*7%4),2,3) +print(T[1+(t//.3%10)],73,96,0) +print(T[1+(t//.3%10)],72,95,10) +print("www.evoke.eu",98,129,0,1,1,1) +print("www.evoke.eu",98,128,12,1,1,1) +print("5711",225,3,0,1,1,1,1) +print("5711",224,2,14,1,1,1,1) +print("5711",2,3,0,1,1,1,1) +print("5711",1,2,14,1,1,1,1) +print("5711",225,128,0,1,1,1,1) +print("5711",224,129,14,1,1,1,1) +print("5711",2,128,0,1,1,1,1) +print("5711",1,129,14,1,1,1,1) +t=t+f +end \ No newline at end of file diff --git a/shader_file_sources/2023_07_24_byte_jam_prevoke/tobach.lua b/shader_file_sources/2023_07_24_byte_jam_prevoke/tobach.lua new file mode 100644 index 000000000..1093a2fcd --- /dev/null +++ b/shader_file_sources/2023_07_24_byte_jam_prevoke/tobach.lua @@ -0,0 +1,91 @@ +-- ^ +--tobach here!! evoke is this weekend!! +--greetz to alia =^^=, superogue, +--aldroid and violet! <3 + +--since this jam is evoke themed +--i have a cool idea of what to make +--this week, let's hope it works out!! + +clouds={} +builds={} + +for i=1,25 do + clouds[i]={math.random()*256,math.random()*128,math.random()*8+4} +end + +for i=1,400 do + builds[i]=math.random()*40+10 +end + +sin=math.sin +text="EVOKE 2023 28-30TH JULY KOLN, GERMANY DEMOS, SEMINARS, FRIENDS, KOLSCH AND CURRYWURST BRING YOUR MATES!" +function TIC() + cls(10) + t=time()/50 + + cloudsinnit(-60+sin(t/32)*64) + + rect(0,150+sin(t/32)*64,240,20,13) + rect(0,170+sin(t/32)*64,240,80,6) + + buildpos=t/2%250 + + for i=1,400 do + rect((i*8-buildpos*10),150-builds[i]+sin(t/32)*64,8,1+builds[i],14) + end + + sign(190-t*8%680,80+sin(t/32)*64) + + --plaen :) + rect(45,68,146,18,12) + rect(45,86,146,2,8) + tri(20,68,45,68,45,70+18,8) + tri(20,68,45,68,45,68+18,12) + for i=0,2 do + circ(190+i*6,76,8-i,12) + end + for i=0,15 do + rect(54+i*8,74,4,6,15) + end + rect(198,72,10,4,15) + --bloody maths!!!! + tri(88,77,88,82,140,84,13) + tri(68+20,64,68+20,79,78+20,79,9) + rect(94,84,18,7,9) + rect(98,82,10,10,14) + tri(20,50,25,68,40,68,8) + rect(76,88,3,10,14) + rect(176,88,3,10,14) + circ(78,95,3,15) + circ(178,95,3,15) + + for i=1,4 do + drawtext(230-t*10%2500+i,20+i,i) + end +end + +function sign(x,y) + rect(66+x,40+y,50,30,2) + rect(68+x,43+y,46,24,12) + rect(68+x,70+y,6,14,2) + rect(108+x,70+y,6,14,2) + print("..",80+x,39+y,1,false,2) + print("KOLN",68+x,50+y,1,true,2) +end + +function cloudsinnit(y) + for i=1,25 do + for j=1,clouds[i][3] do + circ((clouds[i][1]+j*2-1-(t/2)*i)%256,y+clouds[i][2]-1,5,13) + circ((clouds[i][1]+j*2-(t/2)*i)%256,y+clouds[i][2],5,12) + end + end +end + +function drawtext(x,y,cl) + for i=1,#text do + c=text:sub(i,i) + print(c,x+i*18,y+sin(i/2+t/2)*8,cl,true,3) + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_07_28_byte_jam_evoke/LIVECODE_WALL.lua b/shader_file_sources/2023_07_28_byte_jam_evoke/LIVECODE_WALL.lua new file mode 100644 index 000000000..3af49a374 --- /dev/null +++ b/shader_file_sources/2023_07_28_byte_jam_evoke/LIVECODE_WALL.lua @@ -0,0 +1,98 @@ + +--LIVECODING WALL +--CTRL+R to run +--ESC to stop running + +t=1 +S=math.sin +C=math.cos + +function W(a,j,k) + b=a+math.pi/2 + for i=-12,12 do + p=i*4 + z=math.abs(i)-j+5 + + x=p*C(a) + y=p*S(a) + circ(120+x,68+y,z,k) + + x=p*math.cos(b) + y=p*math.sin(b) + circ(120+x,68+y,z,k) + end +end + +-- Genuine Tobach Grass +function grass(y) + for i=0,240 do + line(0+i,100+S(i)*10+y,0+i,135+y,7) + line(0+i-3+S(time()/500+i)*2,110+S(i)*10+y,0+i,135+y,6) + end +end + +function TIC() +t=t+1 +cls() +P=math.sin(t/64)+2 +for y=0,136,2 do +for x=0,240,2 do +xx=x-120 +yy=y-68.1 +z=(xx*xx+yy*yy)/999 +X=(xx+yy)/z +X=(xx+yy)/z +X=(xx+yy)/z + +Y=(xx-yy)/z +c=(X+math.sin(t/64)*28)//P&(Y+math.sin(t/57)*39)//P +pix(x,y,8-(c&z//1)%4) + +end end + +grass(0) +elli(120,136,25,85,t/25+1) +elli(124,136,22,82,t/25) +W(t/16,0,2) +W(t/16,3,12) +circ(120,68,8,t/25+2) +circ(120,68,6,t/25+10) +circ(120,68,4,t/25+2) + +tx=S(t/4)*2 +ty=S(t/6)*3 +print("welcome to evoke 2023",61+tx*100,7+ty,0) +print("welcome to evoke 2023",60+tx*10,60+ty*10,10+(t/32%4)) + +sheep(tx,0) +sheep(-170+tx,10) + +sheep(35+tx,10) +sheep(-125+tx,15) + +end + +function sheep(x,y) + +dx=180 +dy=100 + +turned = math.floor((t/80)%2) +elli(dx+10+x -(turned),dy+8+y,8,6,12) +elli(dx+x + (turned * 19),dy+6+y,2,4,1) +rect(dx+4+x,dy+13+y,2,6,1) +rect(dx+14+x,dy+13+y,2,6,1) + +letter_spacing=10 +for d=0,100,letter_spacing do + letter="A" + if d==0 then + letter="B" + end + print(letter, + x+dx+d+math.sin(t/10+d/10)*10+10, + y+dy-d-10, + 10) +end + +end \ No newline at end of file diff --git a/shader_file_sources/2023_07_28_byte_jam_evoke/nusan.lua b/shader_file_sources/2023_07_28_byte_jam_evoke/nusan.lua new file mode 100644 index 000000000..32dab2a1c --- /dev/null +++ b/shader_file_sources/2023_07_28_byte_jam_evoke/nusan.lua @@ -0,0 +1,35 @@ +s,t,r=math.sin,0,math.random +cls() +function TIC() +t=t+0.005+fft(1)*0.15 +if fft(3)>0.6 then + rect(0,0,240,136,15) +end +ui=(t*40)%68 +rect(0,68+ui,240,2,15) +rect(0,68-ui,240,2,15) +for i=0,47 do + poke(0x3FC0+i,i//3*15*(s(i%3+t)*0.5+0.5 +i//12)) +end +for i=0,5 do +circ(s(t+i)*80+120,68,fft(i+1)*40,t*10) +end +te=r(6) +if fft(2)>0.1 then +for i=0,1999 do +a,b=r(240)-1,r(136)-1 +rect(a-te,b,te*2,1,pix(a+r(3)-2,b+r(3)-3)*0.99+0.02*s(t)) +end +end +for i=0,15 do +o=t+i*0.2 +x,y=s(o*3.2)*80+120,s(o+s(o)+s(o*2))*40+68 +if i>1 then + line(x,y,u,v,i) + line(x,y,w*2-x,z*2-y-10,i) + line(x,y,u*2-x,v*2-y-10,i) +end +w,z=u,v +u,v=x,y +end +end diff --git a/shader_file_sources/2023_07_28_byte_jam_evoke/superogue_jam.lua b/shader_file_sources/2023_07_28_byte_jam_evoke/superogue_jam.lua new file mode 100644 index 000000000..6afa368e9 --- /dev/null +++ b/shader_file_sources/2023_07_28_byte_jam_evoke/superogue_jam.lua @@ -0,0 +1,38 @@ +-- superogue here... +-- gasman we miss you ! +-- greetings do dojoe, tobach +-- and everyone at evoke 2023! +-- visit the sizecoding discord +-- and follow tcc (tiny code christmas) +-- to start coding tic80 yourself +-- also seminar at 13.00 on sat ;-) +-- <3 +function SCN(l) +poke(16322,l) +poke(16320,l/4) +end +t=0 +function TIC() +f=fft(0)+fft(1)*2+.1 +t=t+f +s=math.sin(t/9) +c=math.cos(t/9) +cls() +sc=math.sin(t/24)*4+16 +for y=-99,99,5 do for x=-99,99,5 do +-- some rotation +X=x*c-s*y +Y=x*s+c*y +z=fft(2)+(math.sin(x/17+t/8)+math.cos(y/19-t/4)+t/4)%8+8 + +circ(X*sc/z+120,Y*sc/(z*3)+190-z*8,z/4,z) +end end +for i=0,3 do +rect(220+i,4-i,15,15,i) +end +print("AHK",225,6,12,1,1,1,1) +-- OCD much... +print("welcome to evoke 2023",77,65,0,1,1,2,1) +print("welcome to evoke 2023",76,64,12,1,1,2,1) +end + diff --git a/shader_file_sources/2023_07_28_byte_jam_evoke/superogue_jam_2.lua b/shader_file_sources/2023_07_28_byte_jam_evoke/superogue_jam_2.lua new file mode 100644 index 000000000..8e3ac4c7e --- /dev/null +++ b/shader_file_sources/2023_07_28_byte_jam_evoke/superogue_jam_2.lua @@ -0,0 +1,30 @@ +-- superogue here, on 2 now ;-) +-- good luck nusan! +-- have a nice party! <3 +t=0 +function TIC() +f=fft(0)+fft(1) +t=t+f*3+.5 +P=t//32 +for y=0,136 do +for x=0,240 do +z=math.abs(y-68)+.1 +X=((x+y)-120)/z +Y=199/z +-- moving AND pattern ftw! ;-) +c=((X*4-8+t)//1&(X-Y+7)//.5)//1 +pix(x,y,P&8+c%4) +end end +-- what next? +for i=9,0,-1 do +sx=(t-i*24)%240 +sy=64+math.sin(i+t/9)*8*fft(2) +f2=fft(2)*4 +r=(math.sin(f2+i/4)+1)+sx/7 +for s=0,5 do +circ(240-sx-s/2,sy+sx/7-s,r-s*3,-s/1.12) +end +end +end + + diff --git a/shader_file_sources/2023_07_28_byte_jam_evoke/tobach-jam.lua b/shader_file_sources/2023_07_28_byte_jam_evoke/tobach-jam.lua new file mode 100644 index 000000000..668e25e68 --- /dev/null +++ b/shader_file_sources/2023_07_28_byte_jam_evoke/tobach-jam.lua @@ -0,0 +1,32 @@ +sin=math.sin +cos=math.cos +abs=math.abs +flr=math.floor +fv=0 + +function TIC() + t=time()/100 + for y=0,135 do + for x=0,239 do + sv=flr(sin(x/(16+sin(t/2)*8)+cos(t/4)*2+t)*sin(y/(16+sin(t/2)*8)+sin(t/2)*2)) + pix(x,y,flr(sv+y/16-t/2)) + end + end + + for j=0,16 do + for i=0,16 do + circ(-48+i*24+sin(j/4+t/4)*64,0+j*18+sin(j/4+t)*8,5,i) + end + end + + for i=0,3 do + print("EVOKE 2023",28+i,68+i-abs(sin(t)*16),15-i,true,3) + end + + --print(fv,0,0,2,2) + for i=0,256 do + fv=fft(i)*256 + --line(i,135,i,135-fv,i) + end +end + diff --git a/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..7f42c3f78 --- /dev/null +++ b/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,158 @@ +t=0 +st=0 +x=120 y=68 +fma=0 +fch=0 + +cls() + +function fb() + local p0={x=0,y=135} + local p1={x=239,y=135} + local p2={x=0,y=0} + local p3={x=239,y=0} + + ttri( + p0.x,p0.y, + p1.x,p1.y, + p2.x,p2.y, + p1.x,p1.y, + p0.x,p0.y, + p3.x,p3.y, + 2) + ttri( + p1.x,p1.y, + p2.x,p2.y, + p3.x,p3.y, + p0.x,p0.y, + p3.x,p3.y, + p2.x,p2.y, + 2) +end + +function r2d(p,a) + return { + x=(math.cos(a)*p.x)+(math.sin(a)*-p.y), + y=(math.cos(a)*p.y)+(math.sin(a)*p.x) + } +end + +function mix(a,b,t) + return a*(1-t)+b*t +end + +l0=0 l1=0 r0=0 r1=0 h=0 + +function TIC() + local fc=0 + for i=0,15 do + fc=fc+fft(i) + end + fma=math.max(fma*.98,fc) + if fc>fma*.9 and t-fch>20 then + st=st+1 + fch=t + end + + vbank(1) + memcpy(0,0x4000,16320) + + x=(x+(st//8%3)-1+((st+2)//4%3)-1)%240 + y=(y+((st+4)//8%3)-1+(st//4%3)-1)%136 + + print("=^^=",x-60,y-10,15,0,6) + print("=^^=",240-x-60,136-y-10,15,0,6) + + vbank(0) + fb() + + for y=0,135 do + for x=0,239 do + pix(x,y,pix(x,y)-(x+y)%2*(t%3==0 and .9 or 0)) + end + end + + if t%2==0 then + memcpy(0x4000,120,16200) + else + memcpy(0x4000,0,16320) + end + + vbank(1) + local x=-t%240 + local x1=x + local y=135 + + for i=0,10 do + elli(x,y,20,10,13+i%2) + y=y-6 + x=x+math.sin(y/10+t/10)*5 + end + + local sl={x=x-12,y=y+8} + local sr={x=x+12,y=y+1} + local el={x=-40,y=0} + local er={x=40,y=0} + + l0=l0+0.05*(st//4%2*2-1) + l1=l1+0.07*(st//2%2*2-1) + r0=l0+0.04*((st+2)//4%2*2-1) + r1=l1+0.06*((st+1)//2%2*2-1) + + el=r2d(el,math.sin(l0)) + el={x=el.x+sl.x,y=el.y+sl.y} + er=r2d(er,math.sin(r0)) + er={x=er.x+sr.x,y=er.y+sr.y} + + hl={x=-30,y=0} + hl=r2d(hl,math.sin(l1)) + hl={x=hl.x+el.x,y=hl.y+el.y} + hr={x=30,y=0} + hr=r2d(hr,math.sin(r1)) + hr={x=hr.x+er.x,y=hr.y+er.y} + for i=0,10 do + circ( + mix(sl.x,el.x,i/10), + mix(sl.y,el.y,i/10), + 5, + 13+i%2) + circ( + mix(el.x,hl.x,i/10), + mix(el.y,hl.y,i/10), + 5, + 13+i%2) + circ( + mix(sr.x,er.x,i/10), + mix(sr.y,er.y,i/10), + 5, + 13+i%2) + circ( + mix(er.x,hr.x,i/10), + mix(er.y,hr.y,i/10), + 5, + 13+i%2) + end + + h=h+(st//8%2*2-1) + local bob=math.abs(h%30-15)-5 + elli(x,y-13+bob,18,12,15) + elli(x,y-15+bob,18,12,13) + + print("=^^=",x-23,y-18+bob,15,0,2) + print("=^^=",x-23,y-20+bob,12,0,2) + + -- Fire was added to tie in with the end of the mix... + --for i=0,5 do + --tri( + --x+math.random()*14-7,135, + --x+math.random()*14-7,135, + --x+math.random()*14-7,135-math.random()*20, + --3) + --end + + t=t+1 +end + +function SCN(y) + poke(0x3ff9,fft(y+t%136)*8+math.sin(y/20+t/20)*20) +end \ No newline at end of file diff --git a/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..9d804ddd5 --- /dev/null +++ b/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,68 @@ +-- gasman here!!!!!! + +-- greetings to aldroid, aldroid's dog, +-- alia, jtruk, mrsynackster + psenough + +-- thanks to everyone who sent get-well +-- wishes during evoke :-) + +-- fuckings to covid + +-- ok, I haven't done a good old +-- 3D doughnut before (I think) + +function TIC() + t1=time()/1355 + t2=math.sin(time()/245)*32 + t3=math.sin(time()/356)*32 + t4=0.4+0.4*(1+math.sin(time()/68)) + for y=0,135 do + for x=0,239 do + tx=(x+t2)%32-16 + ty=(y+t3)%32-16 + a=math.atan2(tx,ty)+t1 + r=math.sqrt(tx*tx+ty*ty)/16 + if r*(1+math.sin(a*5))0) then pix(x,y,(h-7 +((x&y)&1)))break + end + end + end +end +t=t+1 +end \ No newline at end of file diff --git a/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/ps.lua b/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/ps.lua new file mode 100644 index 000000000..393548390 --- /dev/null +++ b/shader_file_sources/2023_07_31_byte_jam_monday_night_bytes/ps.lua @@ -0,0 +1,88 @@ +-- ps says banana!!! + +local acc=0 + +function TIC() + poke (0x3FFB,0) + local t=time()//128 + cls(t) + poke(0x3FF8,t) + acc = acc + fft(2) + if acc > 50 then acc = 0 end + --for y=0,136 do + for x=0,240 do + + local tsl = 1--time()//32 + circ(x,fft(x)*200//1,acc,(x>>3+tsl)%16) + circ(x,135-fft(x)*200//1,acc,(x>>3+tsl)%16) + + local c = 8+math.sin(time()//1000)*8 + local w = 14+math.sin(x*2+time()/400)*12 + + math.sin(time()/2000+x/4+acc)*2 + -math.sin(x/14+time()/1000)*8 + circ(x, + 68+math.sin(time()/1000)*(fft(1)/2)*w*(x%3-1)*4, + w, + c+w/2) + end + + math.randomseed(time()/2000//4) + local sf = 3+math.random()*3//1 + math.randomseed(time()) + for x=0,240,sf do + if math.random()>fft(1)+fft(2)+fft(3) then + local c=pix(x,68) + local sx=math.sin(time()/1000+x/16)*20*fft(0) + -math.sin(x/14+time()/1000)*88*fft(2) + rect(x,0,2,30+sx,c) + rect(x,137-(30+sx),2,30+sx,c) + + end + end + + math.randomseed(time()//200) + for i=0,100 do + local x=math.random(240) + local y=math.random(136) + local c=pix(x,y) + local len = 3+30*fft(1) + local len2 = 3+50*fft(4) + if fft(0) > 0.05 then c = 0 end + line(x-len,y,x+len,y,c) + line(x,y-len,x,y+len,c) + circ(x,y,len2,c) + end + + vbank(1) + cls(0) + + math.randomseed(time()//200) + for i=0,100 do + local x=math.random(240) + local y=math.random(136) + local c=pix(x,y) + local len = 3+30*fft(1) + local len2 = 3+50*fft(4) + if fft(0) > 0.05 then c = 0 end + circ(x,y,len2/2,12) + end + + local wx = math.sin(time()/200)*5 + local wy = math.sin(time()/400)*30 + print("banana worm is real!",11+wx,65+1+wy,15,false,2) + print("banana worm is real!",10+wx,65+wy,12,false,2) + + + vbank(0) + + +-- end +end + +function BDR(l) +-- for x=0,240 do +-- pix(x,l-1,pix(x,l+math.sin(time()/200+fft(3)*10)*1.5)) +-- end + + poke(0x3FF9,math.sin(acc+l*2)*math.sin(time()/2000+fft(0))*3) +end \ No newline at end of file diff --git a/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_NuSan.glsl b/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_NuSan.glsl new file mode 100644 index 000000000..49de818a1 --- /dev/null +++ b/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_NuSan.glsl @@ -0,0 +1,159 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = mod(fGlobalTime, 300); +float sec=0; + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float mus(float t) { + return texture(texFFTSmoothed, fract(t)*0.1+0.01).x; +} + +float musi(float t) { + return texture(texFFTIntegrated, fract(t)*0.1+0.01).x * 0.3; +} + +float smin(float a, float b, float k) { + float h=clamp((a-b)/k*0.5+0.5,0,1); + return mix(a,b,h)-h*(1-h)*k; +} + +vec2 smin(vec2 a, vec2 b, float k) { + vec2 h=clamp((a-b)/k*0.5+0.5,0,1); + return mix(a,b,h)-h*(1-h)*k; +} + +vec3 rnd(vec3 p) { + return fract(sin(p*322.342+p.yzx*845.432+p.zxy*452.344)*421.453); +} + +float rnd(float a) { + return fract(sin(a*454.506)*394.453); +} + +vec3 eee=vec3(0); +vec3 atm=vec3(0); +float map(vec3 p) { + + vec3 bp=p; + + p.y -=sin(time*0.1)*3; + + for(int i=0; i<4; ++i) { + float pu=sin(musi(0.05+i*0.1))*0.6+1.0; + float t=musi(i*0.1)*1.4; + p.xz *= rot(t*0.2); + p.xy *= rot(t*0.3); + //p.yz=abs(p.yz)-(0.2+i*0.2)*pu*1.5; + p.yz=smin(p.yz,-p.yz,-1.5); + + p.yz-=(0.2+i*0.2)*pu*1.5; + } + float d = length(p)-0.8; + d=smin(d, length(abs(p.xz)-2.0)-0.1+(length(p)-5)*0.05, 1.2); + d=smin(d, length(abs(p.yz)-2.0)-0.1+(length(p)-5)*0.05, 1.2); + d=smin(d, bp.y, 1.2+sin(musi(0.02))); + + float d2 = length(abs(p.xy)-2.0)-0.1; + atm += eee * 0.01/(0.01+abs(d2)); + d2=max(d2,0.1); + d=min(d,d2); + + return d; +} + +void cam(inout vec3 p) { + float aa=rnd(sec+0.2)*344.0; + p.yz *= rot(sin(time*0.1+aa)*0.2-0.4); + p.xz *= rot(time*0.2+aa); +} + +float gao(vec3 p, vec3 n, float d) { + return clamp(map(p+n*d)/d,0,1)*0.5+0.5; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 col=vec3(0); + + eee = vec3(1,0.2,0.5); + float t3=rnd(sec*0.9)*100+time*0.1; + eee.xz *= rot(t3); + eee.yz *= rot(t3*1.3); + eee=abs(eee); + + vec3 s=vec3(0,0,-15); + float diag=max(abs(uv.x),abs(uv.y)); + sec = floor(time*0.25-length(uv)*0.2)+floor(time*0.4-diag*0.2); + s.x += (rnd(sec)-0.5)*10; + s.y += (rnd(sec)-0.5)*6; + vec3 r=normalize(vec3(uv,0.3+rnd(sec+0.3)*1.5)); + cam(s); + cam(r); + vec3 p=s; + vec3 alph=vec3(1); + for(int i=0; i<100; ++i) { + float d=map(p); + if(d<0.001) { + vec2 off=vec2(0.01,0); + vec3 n=normalize(d-vec3(map(p-off.xyy), map(p-off.yxy), map(p-off.yyx))); + + vec3 rv=(rnd(vec3(uv, fract(time)+i))-0.5); + n=normalize(n+rv*0.1); + r=reflect(r,n); + p+=n*0.02; + float ao = gao(p,n,0.5) * gao(p,n,1) * gao(p,n,0.2); + col += atm * alph; + atm = vec3(0); + alph *= pow(1.-abs(dot(n,r)),3.) * ao; + d=0.1; + } + if(d>100.) break; + p+=r*d; + } + + col += atm * alph; + col += pow(abs(r.y),3)*16 * alph; + vec3 cc=vec3(0.4,0.7,0.2); + float t2=rnd(sec*0.5)*100; + cc.xz *= rot(t2); + cc.yz *= rot(t2*1.3); + cc=abs(cc); + float te = mus(floor(abs(atan(r.x,r.z))*20.0)*0.1); + //col += pow(abs(r.x),6)*cc*10 * alph; + col += step(abs(r.y),te*4.3) * cc * 2 * alph; + + col = smoothstep(0,1,col); + col = pow(col, vec3(0.4545)); + + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_aldroid.glsl b/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_aldroid.glsl new file mode 100644 index 000000000..f75efd0bd --- /dev/null +++ b/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_aldroid.glsl @@ -0,0 +1,92 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rot(float a) { + return mat2(cos(a),-sin(a),sin(a),cos(a)); +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +vec3 plas2(vec2 uv) { + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFTSmoothed, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + return (1.-(f + t).rrb)*vec3(1.,0.5,0.5); + +} + +float map(vec3 p) { + p.x += sin(fGlobalTime/7.); + p.y += sin(fGlobalTime/11.); + p.z += texture(texFFTSmoothed,0.1).x*20.; + return length(p) -5.; +} + +vec3 gn(vec3 p) { + vec2 e = vec2(0.001,0); + return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro=vec3(0,0,-10),rd=normalize(vec3(uv,1.)); + + float t=0, d; + + for (int i=0; i<100; ++i) { + d=map(ro+rd*t); + if (d<0.01)break; + t += d; + } + + vec3 col=plas2(floor(uv*10.)/10.)*0.05; + + vec3 ld=normalize(vec3(3,4,-13)); + + if (d<0.01) { + vec3 p = ro+rd*t; + vec3 n=gn(p); + + + col = plas2(floor(n.xy*30)/10)*dot(n,ld); + col += min(1., pow(1.+dot(n,rd),3.))*vec3(2.2,0.7,0.8); + } else { + col=texture(texPreviousFrame,uv*0.59*rot(sin(fGlobalTime/10.))+0.5).rgb*0.2; + } + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_alia.glsl b/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_alia.glsl new file mode 100644 index 000000000..94033816c --- /dev/null +++ b/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_alia.glsl @@ -0,0 +1,82 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +#define time fGlobalTime + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float eps = 0.001; + +#define r2d(p,a) p=cos(a)*p+sin(a)*vec2(-p.y,p.x); + +vec3 hash(vec3 p) { + p = fract(p * vec3(443.897,441.423,437.195)); + p += dot(p, p.yxz + 19.19); + return fract((p.xxy + p.yxx) * p.zyx); +} + +float pDist(vec3 p, vec3 d, vec4 plane) { + float dist = dot(plane.xyz * plane.w - p, plane.xyz) / dot(d, plane.xyz); + return dist<0 ? 9999999. : dist; +} + +float check(vec2 p, float s, vec2 o) { + ivec2 t = ivec2(p*s+o); + return float(( + t.x%2+t.y%2 + )%2); +} + +float feedback() { + float fb=0; + return fb; +} + +void main(void) +{ + float fft = texture(texFFT, 0.01).x; + float ftime = texture(texFFTIntegrated,0.01).x; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + vec3 o = vec3(0,0,0); +// o.rgb += texture(texPreviousFrame, (uv-.5)*.99+.5).rgb; + + uv -= 0.5; + vec2 aspect = vec2(v2Resolution.y / v2Resolution.x, 1); + uv /= aspect; + + vec3 p = vec3(sin(ftime/8)/90,sin(ftime/12)/190,-1); + r2d(uv, pow(sin(ftime/7),5)/30.); + vec3 d = normalize(vec3(uv, 1)); + + float dist = pDist(p,d, vec4(normalize(vec3(sin(ftime/3)*.03,cos(ftime/2)*.03,-1)),-.11)); + p += d * dist; + + if (mod(ftime, 8.) < 4.) + p.xy=abs(p.xy); + float fb = texture(texPreviousFrame, p.xy * aspect / (9./16.) * .5 + .5).a; + int s = int(ftime*4)%8+4; +// fb += (((int(p.x*s+time)%2+int(p.y*s+time+10)%2)%2) + // -.5)*fft/4.; + //o.rgb = vec3(dist/4.); + fb += (check(p.xy, float(s), vec2(time + 10))-.5)*fft/3.; + o.r += (1.-smoothstep(0.,0.01,abs(length(uv) - .5))) * fft*8.; + fb += hash(vec3(uv, time)).x*.1-.05; + fb=fract((fb-.5)*(pow(sin(ftime), 5.)*0.05+1.05)+.5); + //float f = texture( texFFT, d ).r * 100; + o += fb; + out_color = vec4(o, fb); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_eimink.glsl b/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_eimink.glsl new file mode 100644 index 000000000..2de6f031a --- /dev/null +++ b/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_eimink.glsl @@ -0,0 +1,156 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float E = 0.001; +const int STEPS = 64; +const float FAR = 40.0; + +float fft = texture(texFFTIntegrated, 0.1).r; + +struct MarchResult +{ + float id; + float t; + vec3 p; + vec3 n; + float d; +}; + +float box(vec3 position, vec3 dimensions){ + vec3 b = abs(position)-dimensions; + return length(max(b, 0.0)) + min(max(b.x, max(b.y, b.z)), 0.0); +} + +vec2 opU(vec2 d1, vec2 d2) +{ + return (d1.x < d2.x) ? d1 : d2; +} + +vec2 scene(vec3 p){ + vec3 pp = abs(p); + vec2 res = vec2(1.,0.); + + for (int i=0; i < 35.; ++i) + { + float a = box(p+vec3(0.,0.+sin(fGlobalTime-i),10.0-i),vec3(1.,1.,1.0)); + float b = box(p+vec3(0.,2.+sin(fGlobalTime-i),10.0-i),vec3(1.,1.,1.0)); + float c = box(p+vec3(0.,4.+sin(fGlobalTime-i),10.0-i),vec3(1.,1.,1.0)); + float d = box(p+vec3(0.,6.+sin(fGlobalTime-i),10.0-i),vec3(1.,1.,1.0)); + float e = box(p+vec3(0.,8.+sin(fGlobalTime-i),10.0-i),vec3(1.,1.,1.0)); + res = opU(res,opU(opU(vec2(d,2.0),vec2(e,1.0)),opU(vec2(c,3.0),opU(vec2(a,1.0),vec2(b,2.0))))); + } + + return res; + +} + +vec3 calcNormal(vec3 pos) +{ + vec2 e = vec2(0.00001, 0.0); + return normalize( vec3(scene(pos+e.xyy).x-scene(pos-e.xyy).x, + scene(pos+e.yxy).x-scene(pos-e.yxy).x, + scene(pos+e.yyx).x-scene(pos-e.yyx).x ) ); +} + +MarchResult march(vec3 ro, vec3 rd) +{ + float t = E; + float id = 0.0; + vec3 position = ro; + for (int i = 0; i < STEPS;++i){ + vec2 d = scene(position); + t +=d.x; + id = d.y; + position = ro+rd*t; + if (d.x < E || t > FAR) break; + } + MarchResult res; + res.t = t; + res.id = id; + res.p = position; + res.n = calcNormal(position); + return res; +} + +vec3 colorize(MarchResult m, vec3 ld) +{ + float t = m.d; + vec3 p = m.p; + vec3 col = vec3(0.0); + if (m.id == 2.0) + { + col = vec3(1.0,.2,.9) + clamp(dot(m.n,ld),0.0,1.0); + } + else if (m.id == 3.0) + { + col = vec3(.8) + clamp(dot(m.n,ld),0.0,1.0); + } + else if (m.id == 1.0) + { + col = vec3(.2,.5,1.0) + clamp(dot(m.n,ld),0.0,1.0); + } + else col = vec3(0); + return col; +} + +void main(void) +{ + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uvv = -1.0 + 2.0*uv; + uvv.x *= v2Resolution.x / v2Resolution.y; + + vec3 rayOrigin = vec3(sin(fft*.5)*10.,sin(fft*2.)*2.-5.0,cos(fft*.5)*10.-10.0); + vec3 lookAt = vec3(0.0, -5.0, 0.0); + + vec3 z = normalize(lookAt - rayOrigin); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rayDirection = normalize(mat3(x, y, z) * vec3(uvv, radians(60.00))); + + vec3 lightDirection = -rayDirection; + + vec3 col = vec3(0.0); + + MarchResult t = march(rayOrigin, rayDirection); + if ( t.t < FAR){ + col = colorize(t,lightDirection); + } + + vec4 pcol = vec4(0.0); + vec2 puv = vec2(20.0/v2Resolution.x, 20.0/v2Resolution.y); + vec4 kertoimet = vec4(0.1531, 0.12245, 0.0918, 0.051); + pcol = texture2D(texPreviousFrame, uv) * 0.1633; + pcol += texture2D(texPreviousFrame, uv) * 0.1633; + for(int i = 0; i < 4; ++i){ + pcol += texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * kertoimet[i] + + texture2D(texPreviousFrame, vec2(uv.x - (float(i)+1.0) * puv.y, uv.y - (float(i)+1.0) * puv.x)) * kertoimet[i] + + texture2D(texPreviousFrame, vec2(uv.x + (float(i)+1.0) * puv.y, uv.y + (float(i)+1.0) * puv.x)) * kertoimet[i] + + texture2D(texPreviousFrame, vec2(uv.x + (float(i)+1.0) * puv.y, uv.y + (float(i)+1.0) * puv.x)) * kertoimet[i]; + } + col += pcol.rgb; + col *= 0.25; + + col = mix(col, texture2D(texPreviousFrame, uv).rgb, 0.5); + + col = smoothstep(-0.2, 1.1, col); + + out_color = vec4(col,1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_totetmatt.glsl b/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_totetmatt.glsl new file mode 100644 index 000000000..fc881030e --- /dev/null +++ b/shader_file_sources/2023_08_07_shader_jam_monday_night_bytes/mondaynightbytes_totetmatt.glsl @@ -0,0 +1,123 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +// HELLO ! +// ########################################################### +// >> ASK FOR MORE SHADER SHOWDOWN TO YOUR LOCAL DEMOPARTY << +// // ####################################################### +float bpm = texelFetch(texFFTIntegrated,30,0).r*.5; +float rnd; +vec3 edges(vec3 p){ + vec3 ap=abs(p); + if(ap.x>ap.z) return vec3(ap.x/p.x,0,0); + return vec3(0,0,ap.z/p.z); + } +float mandel(vec2 uv){ + vec2 c = uv; + vec2 z = uv; + float i=0.,im=200.; + for(;i4.) break; + + + } + return i/im; + } +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +float box(vec3 p,vec3 b){p=abs(p)-b; return length(max(vec3(0.),p))+min(0.,max(p.x,max(p.y,p.z)));} +vec2 sdf(vec3 p){ + vec2 h; + vec3 hp=p; + hp.z -=bpm; + float jump = -bpm; + hp.y -=sqrt(2)*abs(sin(bpm*3.14)); + hp = erot(hp,vec3(1,0,0),jump*3.14); + h.x = box(hp,vec3(1.)); + h.y = 1.; + + vec2 t; + vec3 tp=p; + + tp.y+=1.5; + vec3 id = floor(tp)+.5; + id.y=0.; + + vec3 nid = id + edges(hp-id); + nid .y= 0.; + float diff = sin(texture(texFFTIntegrated,dot(cos(id*.4),sin(id.zyx*.3))).r)/2; + diff= dot(cos(id*.4),sin(id.zyx*.3)); + tp.y-=diff/2.; + t.x = box(tp-id,vec3(.49,diff/2.,.49)); + t.x = min(t.x,box(tp-nid,vec3(.493,1.,.493))); + + // t.x = max(abs(tp.x)-5.,t.x); + t.y=3+dot(sin(id*.4),cos(id.yzx*.23)); + h= t.x < h.x ? t:h; + return h; +} +#define q(s) s*sdf(p+s).x +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(0,.1,.2)));} +vec3 norm(vec3 p,float ee){vec2 e= vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} + +#define FBI(x,y) (floatBitsToInt(x)^floatBitsToInt(y)) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv*=1.+abs(tanh(sin(-fGlobalTime+length(uv))*10)); + rnd = tanh((FBI(uv.x,gl_FragCoord.y)*FBI(uv.y,gl_FragCoord.x))/2.19e9); + bpm+=rnd*.05*length(uv); + bpm = floor(bpm) + smoothstep(0.,1.,pow(fract(bpm),.75)); + vec3 col =vec3(0.); + float zoomzoomzeum=sin(fGlobalTime); + vec3 ro=vec3(5.,2.,-5.),rt=vec3(0.); + ro = erot(ro,vec3(0.,1.,0),bpm); + ro.x +=zoomzoomzeum; + ro.z +=bpm; + rt.z +=bpm; + vec3 z= normalize(rt-ro),x=normalize(cross(z,vec3(0.,-1.,0.))),y=cross(z,x); + vec3 rd=mat3(x,y,z)*normalize(vec3(uv,(1.-zoomzoomzeum*.5+.5))); + vec3 rp=ro; + vec3 light = vec3(1.,2.,-3.); + vec3 acc = vec3(0.); + for(float i=0.;i++<128;){ + + vec2 d =sdf(rp); + float effectSwitch = mod(fGlobalTime,10)<5. ? d.y:0; + float wave= exp(-7.*fract(effectSwitch+bpm*.5+rp.y*.1-.01*length(rp.xz-vec2(0,bpm)))); + if(d.x<.1 && d.y==1.)acc +=mix(vec3(.1),pal(d.y),tanh(wave))*exp(-abs(d.x))/(60.-wave*50); + if(d.y==1.)d.x = max(.001,abs(d.x)); + rp+=rd*d.x; + if(d.x<.001){ + vec3 n = norm(rp,.001); + float dif = max(0.,dot(normalize(light),n)); + + col =mix(vec3(.01),pal(d.y),tanh(wave))*dif; + + break; + } + } + ivec2 gl = ivec2(gl_FragCoord.xy); + ivec2 off= ivec2(5.); + float vr = texelFetch(texPreviousFrame,gl+off,0).a; + float vg = texelFetch(texPreviousFrame,gl-off,0).a; + float vb = texelFetch(texPreviousFrame,gl-off,0).a; + out_color = vec4(mix(vec3(vr,vg,vb),sqrt(col+acc),sin(bpm)+1.5+texture(texFFT,uv.y+fGlobalTime).r*5),length(col+acc)); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_ivandianov.glsl b/shader_file_sources/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_ivandianov.glsl new file mode 100644 index 000000000..12b264aa2 --- /dev/null +++ b/shader_file_sources/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_ivandianov.glsl @@ -0,0 +1,102 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +#define time fGlobalTime +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texLogo; +uniform sampler2D texLogoBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define F float +#define V vec2 +#define W vec3 +#define N normalize +#define L length +#define S(x) sin(x+2*sin(x+4*sin(x))) +#define sabs(x) sqrt((x)*(x)+.1) +#define smax(a,b) ((a+b+sabs(a-(b)))*.5) +#define Z(p,s) (asin(sin(p*T/s)*.9)/T*s) +#define T 6.283 +#define rot(x) mat2(cos(x),-sin(x),sin(x),cos(x)) + +layout(location = 0) out vec4 o; // out_color must be written in order to see anything + +F gl=0; + +F sdf(W p){ + W pI=p; + + + p.x+=S(p.z*.1+time)*p.z*.05; + p.y+=S(p.z*.161+time)*p.z*.05; + p.xy=V(atan(p.y,p.x)/T*8+S(pI.z*.162+time*.2),-L(p.xy)+1.5+.6*S(pI.z*.2+time*.2)); + + p.z+=time*4; + + p.y+=.5; + F pl=p.y; + + p.xz=Z(p.xz,2); + + p.y+=.5*sin(pI.z+time+atan(p.y,p.x)); + F sp=L(p)-.3; + F l=L(p)-.02+.02*sin(pI.z+S(time)); + l*=.5; + + pl=smax(pl,-sp) + .01*sin(atan(pl,sp)*40); + + pl=min(pl,l); + gl+=.01/l*pl; + if(l<.002)gl++; + + return pl*.5; +} + +W norm(W p){ + F d=sdf(p);V e=V(0,.001); + return N(W(d-sdf(p-e.yxx),d-sdf(p-e.xyx),d-sdf(p-e.xxy))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + o*=0; + + F i=0,d=0,e=1; + W p,rd=N(W(uv,1)); + rd.xz*=rot(.2*S(time*.1+uv.y*.2)); + rd.yz*=rot(.1*S(time*.161+uv.x*.23)); + for(;i++<99&&e>.001;){ + p=rd*d+.00001; + d+=e=sdf(p); + } + W l=W(0,1,0); + l.xy*=rot(p.z*.4+time*4); + W n=norm(p); + o.r+=dot(n,l)*.5+.5; + o.g+=dot(n,l.zxy)*.5+.5; + o.b+=dot(n,l.yzx)*.5+.5; + o*=(1-i/99)*.8+.2; + //o=pow(max(o,0),vec4(.5)); + o+=gl; + o*=smoothstep(50,0,d); +} + + + + + + diff --git a/shader_file_sources/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_kostik.glsl b/shader_file_sources/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_kostik.glsl new file mode 100644 index 000000000..9f9553cce --- /dev/null +++ b/shader_file_sources/2023_08_12_shader_battle_demodulation/final/grabber_demodulation2023_kostik.glsl @@ -0,0 +1,131 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texLogo; +uniform sampler2D texLogoBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float fMidiKnob; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define INF (1./0.) +#define mr(t) (mat2(cos(t), sin(t), -sin(t), cos(t))) +#define time fGlobalTime +#define beat (time/60.*130.) + +float hash(float t) {return fract(sin(t)*45562.5648);} + +float box(vec3 p,vec3 s) { + p = abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +vec3 ct(vec3 p) { + if(p.x.0001;){ + p=rd*d+.00001; + d+=e=sdf(p); + } + + o+=1-i/99; + W l=W(0,1,0); + W n=norm(p); + o.r+=dot(n,l)*.5+.5; + o.b+=dot(n,l.zxy)*.5+.5; + o+=pow(dot(reflect(rd,n),l)*.5+.5,40); + o+=gl; + o=pow(o,vec4(.8)); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_jin_x.glsl b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_jin_x.glsl new file mode 100644 index 000000000..1ab5dc24e --- /dev/null +++ b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_jin_x.glsl @@ -0,0 +1,61 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define PI 3.14159265358979 +#define rot(x) mat2(cos(x), -sin(x), sin(x), cos(x)) + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float t = fGlobalTime * 0.5; + + int d = 0; + for (; d < 100; ++d) { + int i = 0; + vec2 j = uv * (5+float(d)/10) * 0.5; + vec2 p = vec2(cos(t), sin(t)) * 0.7; + for (; i < 64 && length(j) < 4; ++i) { + j = vec2(j.x*j.x - j.y*j.y + p.x, 2*j.x*j.y + p.y); + } + if (d > i) { break; } + } + + //vec3 col= vec3(0); + //col = clamp(vec3(float(d) / 64), 0, 1); + + vec3 q = vec3(uv, dot(uv,uv)); + for (int j = 0; j < 12; ++j) { + q.xz *= rot(t); + q.yz *= rot(t*0.7); + q = q.gbr - 1/(length(q) - q.grb); + } + + vec3 f = vec3(1, 0.5, 0); + vec3 col; + float w = clamp(float(d) / 20., 0, 1); +// if (d < 64) col = * vec3(0.5, 1, 0.2); +// else col = q; + vec3 c = 0.5+0.5*cos(2*PI*(w+vec3(0,0.333,0.667))); + col = c * (w) + clamp(q,0,0.5f) * (1-w); + + out_color = vec4(col, 0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_kostik.glsl b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_kostik.glsl new file mode 100644 index 000000000..a2a028d80 --- /dev/null +++ b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_kostik.glsl @@ -0,0 +1,121 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform float fMidiKnob; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define INF (1./0.) +#define rep(p,s) (mod(p,(s))-(s)/2.) +#define mr(t) (mat2(cos(t),-sin(t),sin(t),cos(t))) +#define PI 3.1415926535 + +#define BPM 130. +#define beat (time/60.*BPM) + +float ffti(float t) { + return texture(texFFTIntegrated, t).r * exp(t*5.5); +} + + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y, p.z)); +} + + +float hash(float t) {return fract(sin(t)*45325.32165);} +float hash(vec2 t) {return hash(dot(t,vec2(1.44,2.46423)));} + +float mybox(vec3 p, vec3 s, float h) { + float m1 = box(p,s); + float m = INF; + for(float i=0.;i<3.;++i) { + p += s*vec3( + hash(h+i), + hash(h+1.22+i)+time, + hash(h+1.77+i) + ); + s *= .69; + p=rep(p, 2.*s); + m=min(m, box(p, s/1.7)); + } + return max(-m, m1); +} + + +vec3 glow = vec3(0.); + +float map(vec3 p) { + p.x += time*.3; + vec3 op=p; + float m=INF; + + for(float i=0.; i<2.;++i) { + p = op; + float sx = .5; + if(i==1.) p.x += .5*sx; + vec2 cell = vec2(0.); + cell.x = floor(p.x / sx); + p.x = rep(p.x, sx); + + float sy = mix(.2, 1.5, hash(cell.x)); + p.y += ffti(hash(cell.x+1.32))*.15 * (i==1. ? -1. : 1.); + cell.y = floor(p.y/sy); + p.y = rep(p.y, sy); + + vec3 bs = vec3(sx/7., sy/2.2, mix(.02, .08, hash(cell))); + //float m1=box(p, bs); + float m1=mybox(p, bs, hash(cell+2.11)); + if(hash(cell+1.12 + floor(beat))<.3) { + glow += vec3(1.,1.2,1.5)*.002/(m1+.01) * exp(-3.*fract(beat)); + } + m = min(m, m1); + } + + return min(m, -op.z+.1); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float blur=smoothstep(0., 1.5, dot(uv,uv)); + + vec3 c=vec3(0.); + vec3 O=vec3(0.,0.,-6.), D=vec3(uv, 6.); + D += .2*(hash(uv+time)-.5) * blur; + D = normalize(D); + O.yz *= mr(-PI/4.); + D.yz *= mr(-PI/4.); + if(fract(beat/32.)<.5) { + O.xy *= mr(PI/4.); + D.xy *= mr(PI/4.); + } + + float d=0.,i; + for(i=0.;i<64.;++i) { + vec3 p=O+D*d; + float m=map(p); + d += m; + if(m<.001*d) { + break; + } + } + c += exp(-d*.07) * pow(max(0., 1.-i/32.), 3.); + c += glow; + c = sqrt(c); + c *= mix(1., .3, blur); + + out_color = vec4(c, 0.); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_musk.glsl b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_musk.glsl new file mode 100644 index 000000000..f2fd458e2 --- /dev/null +++ b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_musk.glsl @@ -0,0 +1,72 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float T=fGlobalTime; + +mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,s,-s,c);} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + + mat2 r2=rot(T*0.1); + float zoom=sin(T)*0.5+0.5; + float zoom2=zoom*4.0+1.0; + vec2 pan=sin(vec2(T*.6,T*.4+2))*5.0; + vec2 pan2=smoothstep(-1,1,sin(T*.3))*pan; + vec2 uv2=uv*zoom2+pan2; + float w=0; + for (int i=0;i<30; i+=1){ + vec2 suv=sin(uv2); + w+=suv.x+suv.y; + uv2=sin(uv2); + uv2=uv2*2.0; + uv2*=r2; + } + float tres=smoothstep(-1,1,sin(T+10))*4.0; + float wave=smoothstep(-tres,tres,w); + vec3 c4=vec3(.2,.9,.2); + vec3 c4b=vec3(.9,.4,.1); + vec3 c=mix(c4,c4b,cos(T))*2.0; + vec3 c2a=vec3(.3,.4,.2); + vec3 c2b=vec3(.4,.1,.4); + vec3 c2=mix(c2a,c2b,sin(T*.4+4))*.22; + vec3 c3=mix(c,c2,wave); + vec3 cc=1.4*c3/(1.0+c3); + out_color = vec4(cc,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_provod.glsl b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_provod.glsl new file mode 100644 index 000000000..c4601f699 --- /dev/null +++ b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_provod.glsl @@ -0,0 +1,104 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float t=fGlobalTime; +float vmax(vec3 p){return max(max(p.x,p.y),p.z);} +float ha(float f){return fract(sin(f)*54783.5438);} +#define box(p,s) vmax(abs(p)-(s)) +#define R(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define T(t,s) texture(t,(s)/textureSize(t,0)) +#define ffti(f) T(texFFTIntegrated,f).r + +float w(vec3 p){ + p.xy*=R(t*1.1); + p.yz*=R(t*.7); + return box(p, vec3(.7)); +} +vec3 wn(vec3 p){ + return normalize(vec3( + w(p+vec3(.01,0.,0.)), + w(p+vec3(.0,.01,0.)), + w(p+vec3(.0,0.,.01)) + )-w(p)); +} + +float bg(vec2 uv){ + vec3 O=vec3(1.8*sin(t*.8),.7+.4*sin(t*.6),5.),D=normalize(vec3(uv,-1.)),p; + O.x += sin(T(texFFTIntegrated,4.).r*.3); + float l=0.; + for (float i=0.;i<100.;++i){ + float d=w(p=O+D*l);l+=d; + if(d<.001){ + return .2+.2*wn(p).y; + //return max(0., wn(p).y); + } + } + return 0.; +} + +float cn(vec2 p){ + return + texture(texNoise, p).r + + texture(texNoise, p*2.+t*.01).r; +} + +vec2 cno(vec2 p, float dd){ + vec2 d=vec2(0.,dd); + return vec2( + cn(p+d.yx)-cn(p-d.yx), + cn(p+d.xy)-cn(p-d.xy) + ) / (d.y*2.); +} + +void main(void) { + vec2 res=v2Resolution.xy; + vec2 ts = gl_FragCoord.xy / v2Resolution.xy; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 C=vec3(0.); + + float v=bg(uv); + + vec2 fts=floor(ts*200.); + v*=ha(fts.x*fts.y+floor(t*8.));//*.06; + v*=.3; + + vec2 off = cno(ts/4., .01); + vec2 ptsd = ts + vec2(0., -2.) / res + off*.0001; + if (ptsd.y > -0.) + v += texture(texPreviousFrame, ptsd).a; + + if (v<1.||ha(fts.x*fts.y+t) > .99) + v*=.99; + + //v-=.001; + + C=vec3( + smoothstep(.0, .6, v), + smoothstep(.5, 1., v), + smoothstep(.9, 1., v) + ); + + //C.rg = off; + + out_color = vec4(sqrt(C),v); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_totetmatt.glsl b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_totetmatt.glsl new file mode 100644 index 000000000..fb6ef2ff8 --- /dev/null +++ b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_totetmatt.glsl @@ -0,0 +1,116 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec3 pal(float t){return .5+.5*cos(6.28*(t+vec3(0,.3,.7)));} +float diam2(vec2 p,float s){p=abs(p);return (p.x+p.y-s)*inversesqrt(3.);} +float timer ; +float bpm = texture(texFFTIntegrated,.3).r*3; +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +float tru(vec3 p){ + + vec3 id = floor(p)+.5; + vec3 gv = p-id; + gv.x *= fract(452.6*sin(dot(id,vec3(452.5,985.5,487.56)))) > .5 ? -1:1 ; + gv.xz-=.5 * (gv.x >-gv.z ? 1:-1); + return max(abs(gv.y)-.05,abs(diam2(gv.xz,.5)*4)-.05); + } + vec3 path(float t){ + + vec3 o=vec3(0); + o.x+=asin(sin(t*.45))*.5; + o.x+=asin(cos(t*.75))*.45; + o.y+=asin(cos(t*.95))*.33; + o.y+=asin(sin(t*.35))*.44; + return o; + } +vec2 sdf(vec3 p){ + vec2 h; + vec3 hp=p; + hp.z -=timer; + hp+=path(floor((hp.z*.025+.5))+timer); + h.x = length(hp)-1.-.2*mix(0,dot(sin(hp+fGlobalTime),cos(hp.zxy*5)),tanh(sin(bpm+fGlobalTime)*10)*.5+.5);; + h.y =1.; + + vec2 t; + vec3 tp=p; + tp+=path(tp.z); + tp/=4.; + t.x = min(tru(tp.zxy),min(tru(tp),tru(tp.yzx))); + t.y= 2.; + h=t.x < h.x ? t:h; + return h; + } + #define q(s) s*sdf(p+s).x + vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float rnd = ((floatBitsToInt(uv.x)*floatBitsToInt(gl_FragCoord.y)) ^ (floatBitsToInt(uv.y)*floatBitsToInt(gl_FragCoord.x)))/2.19e9; + bpm+=+rnd*.1; + bpm = floor(bpm)+smoothstep(.0,1.,pow(fract(bpm),.4)); timer +=fGlobalTime+bpm; +vec3 col = vec3(0.); + vec2 puv = uv* gl_FragCoord.x / v2Resolution.x; + puv +=.5; + float q = texelFetch(texFFTSmoothed,int(puv.x*50),0).r; + float st ; + col+=sqrt((st=step(-(abs(uv.y)-.5),sqrt(q)))*sqrt(q)); + if(st>.00) uv*=(1+sqrt(q)*5); + vec3 ro=vec3(0,0,-5),rt=vec3(0); + ro = erot(ro,vec3(0.,1.,0),bpm*.1); + ro.z +=timer-tanh(cos(bpm)*5); + + ro+=path(ro.z)*2; + rt.z+=timer; + rt+=path(ro.z); + vec3 z=normalize(rt-ro),x=normalize(cross(z,vec3(0.,-1.,0))),y=cross(z,x); + vec3 rd=mat3(x,y,z)*normalize(vec3(uv,1.+.5*tanh(sin(bpm)*5))); + vec3 rp=ro; + vec3 light = vec3(1.,2,-3+timer); + vec3 acc=vec3(0.); + for(float i=0;i++<128;){ + + vec2 d = sdf(rp); + if(d.y==2.){ + acc+=vec3(.03,.04,.05)*exp(10*-abs(d.x))/(20-19*exp(-3*fract(fGlobalTime+rp.z))); + d.x = max(.001,abs(d.x)); + + } + rp+=rd*d.x; + if(d.x < .001){ + + vec3 n = norm(rp,.001); + vec3 nl= normalize(light-rp); + float dif = max(0.,dot(nl,n)); + float spc = pow(max(0,dot(rd,reflect(nl,n))),16); + col = vec3(.75)*dif + spc; + + if(d.y==1){ + col=col*(col); + rd= reflect(rd,n); + rp+=rd*.1; + continue; + } + break; + } + } + + + out_color = vec4(sqrt(col+acc),1.); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_z0rg.glsl b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_z0rg.glsl new file mode 100644 index 000000000..f3a4354c2 --- /dev/null +++ b/shader_file_sources/2023_08_12_shader_battle_demodulation/qualif/grabber_demodulation2023_z0rg.glsl @@ -0,0 +1,133 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float lenny(vec2 v) +{ + return abs(v.x)+abs(v.y); +} + +vec3 getCam(vec3 rd, vec2 uv) +{ + vec3 r = normalize(cross(rd, vec3(0.,1.,0.))); + vec3 u = normalize(cross(rd, r)); + return normalize(rd+r*uv.x+u*uv.y); +} + +float _cube(vec3 p, vec3 s) +{ + vec3 l= abs(p)-s; + return max(l.x, max(l.y, l.z)); +} +mat2 r2d(float a) { +float c = cos(a); + float s= sin(a); + return mat2(c, -s, s, c); + } +float map(vec3 p) +{ + float pix = .05; + p = floor(p/pix)*pix; + vec3 op = p; + float rep = 2.; + + p.xy *= r2d(p.z*.1*sin(fGlobalTime)); + p.z += texture(texFFTIntegrated, 0.).x*3.; + p.z = mod(p.z+rep*.5,rep)-rep*.5; + p.xy *= mix(.5,1.,sin(p.z*2.)*.5+.5); + float shape = _cube(p, vec3(1.,1.,.1)); + shape = max(shape, -_cube(p, vec3(.99,.99,1.))); + + float ground = -op.y+5. + -texture(texNoise, op.xz*.01+vec2(0.,fGlobalTime*.03)).x*10.; + + shape = min(shape, ground); + + return shape; +} +#define sat(a) clamp(a, 0., 1.) +float hash11(float seed) +{ + return fract(sin(seed*123.456)*123.456); +} +vec3 rdr(vec2 uv) +{ + vec3 col = vec3(0.); + + vec3 ro = vec3((hash11(floor(fGlobalTime))-.5)*5.,(hash11(floor(-fGlobalTime))-.5)*3.,-5.); + vec3 ta = vec3(0.,0.,0.); + vec3 rd = normalize(ta-ro); + rd = getCam(rd, uv); + col = (1.-sat(lenny(uv)))*vec3(1.,0.,0.2); + vec3 p = ro; + vec3 accCol = vec3(0.); + for (int i = 0;i <128;++i) + { + float res = map(p); + if (res < 0.01) + { + col = vec3(.1); + if (p.y >1.) + { + vec3 rgb = mix(vec3(1.,0.,0.2), vec3(.8,0.5,.7)*0., sin(p.y*5.+fGlobalTime)); + col = rgb*sat(sin(p.y*50.)-.5)*2.; + } + } + if (p.y <1.) + accCol += vec3(sin(p.z)*.2+.8, .5,1.)*(1.-sat(res/.5))*.1; + p+=rd*res; + } + + + col += accCol; + col = pow(col, vec3(2.2)); + + return col; +} + +vec3 rdr2(vec2 uv) +{ + vec2 off = vec2(0.01,0.)*texture(texFFTSmoothed, 0.2).x*40.; + vec3 col = vec3(0.); + col.x = rdr(uv+off).x; + col.y = rdr(uv).y; + col.z = rdr(uv-off).z; + return col; + } + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv *= 2.-length(uv)*2.; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / mix(lenny(uv), length(uv),-1.) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 20*.1; + + + vec3 col = vec3(1.)*f; + + col += rdr2(uv); + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_14_byte_jam_monday_night/alia.lua b/shader_file_sources/2023_08_14_byte_jam_monday_night/alia.lua new file mode 100644 index 000000000..5ee5abd3d --- /dev/null +++ b/shader_file_sources/2023_08_14_byte_jam_monday_night/alia.lua @@ -0,0 +1,128 @@ +cos=math.cos +sin=math.sin +pi=math.pi + + +function r2d(p,a) + return { + x=(cos(a)*p.x)+(sin(a)*-p.y), + y=(cos(a)*p.y)+(sin(a)*p.x) + } +end + +t=0 +ti=0 +mbass=0 +cooldown=0 +trigger=false +syncthing=0 +ft=0 +dir={x=0,y=0} +fscale=0 +frot=0 + +function TIC()t=time()//32 + + for i=0,47 do + poke(16320+i,sin(i+t/10)^2*i*6) + end + vbank(1) + cls() + memcpy(0,0x4000,16320) + + trigger=false + local bass=0 + for i=0,10 do + bass=bass+fft(i) + end + ft=ft+bass + dir={x=sin(ft/100)^5,y=sin(ft/77)^5} + fscale=sin(ft/50)^5 + frot=(sin(ft/150)^5)/24 + + if bass>mbass and cooldown<=0 then + mbass=bass + cooldown=20 + trigger=true + syncthing=syncthing+1 + end + mbass=math.max(bass,mbass*.98) + cooldown=cooldown-1 + + for y=t%2,135,2 do + for x=t%2,239,2 do + pix(x,y,math.max(0,pix(x,y)-1)) + end + end + + local lp=nil + local lo=nil + for i=0,pi*2,(pi*2)/100 do + local p=r2d({x=10,y=0},i+t) + lp=lp or p + local o={x=sin(ti/8+i/5)*40+120,y=sin(ti/7+i/5)*40+68} + lo=lo or o + local f=fft(i*30//1)*2 + p.x=p.x*(1+f) + p.y=p.y*(1+f) + + line(lp.x+lo.x,lp.y+lo.y,p.x+o.x,p.y+o.y,15) + if f>.5 then + circ(p.x+o.x,p.y+o.y,5,15) + end + lo=o + lp=p + end + + vbank(0) + local scale=fscale/20+1 + local p0=r2d({x=-.5,y=-.5},frot) + local p1=r2d({x=.5,y=-.5},frot) + local p2=r2d({x=-.5,y=.5},frot) + local p3=r2d({x=.5,y=.5},frot) + local off={ + x=dir.x*5+120, + y=dir.y*5+68} + p0={x=p0.x*240*scale+off.x,y=p0.y*136*scale+off.y} + p1={x=p1.x*240*scale+off.x,y=p1.y*136*scale+off.y} + p2={x=p2.x*240*scale+off.x,y=p2.y*136*scale+off.y} + p3={x=p3.x*240*scale+off.x,y=p3.y*136*scale+off.y} + ttri( + 0,0, + 240,0, + 0,136, + p0.x,p0.y, + p1.x,p1.y, + p2.x,p2.y, + 2 + ) + ttri( + 240,0, + 0,136, + 240,136, + p1.x,p1.y, + p2.x,p2.y, + p3.x,p3.y, + 2 + ) + if trigger then + local strs={"=^^=","alia"," <3","fris"," :3"," uwu"} + print(strs[syncthing%#strs+1],5,32,15,0,10) + --print("=^^=",5,30,0,0,10) + end + + memcpy(0x4000,0,16320) + + vbank(1) + cls() + print("greets to jtruk, mantra, gasman",25,110,12) + print("aldroid and ferris. And everyone watching!",7,120,12) + print("=^^=",107,130,12) + + t=t+.01 + ti=ti+1 + vbank(0) +end + +function SCN(y) +end \ No newline at end of file diff --git a/shader_file_sources/2023_08_14_byte_jam_monday_night/gasman.lua b/shader_file_sources/2023_08_14_byte_jam_monday_night/gasman.lua new file mode 100644 index 000000000..1bc36abb0 --- /dev/null +++ b/shader_file_sources/2023_08_14_byte_jam_monday_night/gasman.lua @@ -0,0 +1,153 @@ +-- hello from gasman! +-- shoutouts to aldroid, alia, +-- mantratronic, jtruk and ferris! + +-- sooo... in the absence of any ideas +-- I'm going to have another go at +-- doughnuts like last time and see +-- if I come up with anything different +-- (plus I have a whole hour this time) + +vertices={} +vcount=0 +faces={} +fcount=0 +bigr=1 +smallr=0.4 +jcount=40 +icount=10 + +for j=0,jcount-1 do + b=j*math.pi*2/jcount + for i=0,icount-1 do + a=i*math.pi*2/icount + vcount=vcount+1 + x0=(bigr+smallr*math.cos(a)) + vertices[vcount]={ + math.cos(b)*x0, + smallr*math.sin(a), + math.sin(b)*x0, + } + fcount=fcount+1 + faces[fcount]={ + i+j*icount+1, + (i+1)%icount+j*icount+1, + i+((j+1)%jcount)*icount+1, + } + fcount=fcount+1 + faces[fcount]={ + (i+1)%icount+j*icount+1, + (i+1)%icount+((j+1)%jcount)*icount+1, + i+((j+1)%jcount)*icount+1, + } + end +end + +edges={} +for i=1,20 do + edges[i]=math.random(10,30) +end + +function TIC() + cls() + t=time() + + for i=0,15 do + h=(t/4000+i/16)%3 + if h<1 then + r=1-(h%1) + g=h%1 + b=0 + elseif h<2 then + r=0 + g=1-(h%1) + b=h%1 + else + r=h%1 + g=0 + b=1-(h%1) + end + poke(16320+i*3,i*16*math.sqrt(r)) + poke(16321+i*3,i*16*math.sqrt(g)) + poke(16322+i*3,i*16*math.sqrt(b)) + end + + ra=t/534 + rb=t/645 + rc=t/756 + + cra=math.cos(ra) + sra=math.sin(ra) + crb=math.cos(rb) + srb=math.sin(rb) + crc=math.cos(rc) + src=math.sin(rc) + + vt={} + for i=1,vcount do + v0=vertices[i] + v1={ + v0[1]*cra+v0[3]*sra, + v0[2], + v0[3]*cra-v0[1]*sra, + } + v2={ + v1[1], + v1[2]*crb+v1[3]*srb, + v1[3]*crb-v1[2]*srb, + } + v3={ + v2[1]*crc+v2[2]*src, + v2[2]*crc-v2[1]*src, + v2[3], + } + v4={ + -- will it all screw up + -- if I try to add some perspective? + -- not what I was going for + -- but I kinda like it :-) + v3[1]*60/(1+v3[3])+120, + v3[2]*60/(1+v3[3])+68, + v3[3] + } + vt[i]=v4 + end + ft={} + for i=1,fcount do + f=faces[i] + v1=vt[f[1]] + v2=vt[f[2]] + v3=vt[f[3]] + ft[i]={ + v1[1],v1[2],v1[3], + v2[1],v2[2],v2[3], + v3[1],v3[2],v3[3], + } + end + table.sort(ft, + -- dammit it's a comparison function + -- why does lua have to be so annoying + function(f1,f2) + return ( + math.max(f1[3],f1[6],f1[9]) + < math.max(f2[3],f2[6],f2[9]) + ) + end + ) + for i=1,fcount do + f=ft[i] + clr=f[3]*5+8 + tri( + f[1],f[2], + f[4],f[5], + f[7],f[8], + clr) + end + -- just some design overlay thing I guess + for y=1,20 do + circ(0,y*16-8,edges[y],0) + circ(0,y*16-8,edges[y]-4,4) + circ(240,y*16-8,edges[21-y],0) + circ(240,y*16-8,edges[21-y]-4,4) + end +end diff --git a/shader_file_sources/2023_08_14_byte_jam_monday_night/jtruk.lua b/shader_file_sources/2023_08_14_byte_jam_monday_night/jtruk.lua new file mode 100644 index 000000000..57fd0540d --- /dev/null +++ b/shader_file_sources/2023_08_14_byte_jam_monday_night/jtruk.lua @@ -0,0 +1,143 @@ +-- Greetz to: Aldroid, The Wolf, +-- Ferris, Mantratronic, +-- Alia, Gasman +-- Byte Jam Viewers! + +SIN,COS=math.sin,math.cos + +T=0 +VINES={} + +function BDR(y) + for i=0,4 do + for s=0,2 do + local addr=0x3FC3+(i*3+s)*3 + local r=.5+SIN(i+s*.2+y*.02+T*.03)*.5 + local g=.5+SIN(1+i+s*.2+y*.022+T*.03)*.5 + local b=.5+SIN(2+i+s*.2+y*.023+T*.03)*.5 + poke(addr,r*255//1) + poke(addr+1,g*255//1) + poke(addr+2,b*255//1) + end + end +end + +function BOOT() + startVine() +end + +function startVine() + if #VINES==50 then + VINES={} + end + + local r=math.random(3) + if r==0 then + x,y=math.random(-20,239+20),-20 + a=math.pi/2 + elseif r==1 then + x,y=239+20,math.random(-20,135+20) + a=math.pi + elseif r==2 then + x,y=math.random(-20,239+20),139+20 + a=math.pi*1.5 + else + x,y=-20,math.random(-20,135+20) + a=0 + end + a=a+math.random()-.5 + makeVine(x,y,a) +end + +function TIC() + cls() + + for i=1,#VINES do + local v=VINES[i] + if v.active and T%5==1 then + addSeg(v) + end + + local offScreen=doVine(v,4) + if v.active and offScreen then + v.active=false + startVine() + end + end + + print("VINE JAM",190,2,4) + + T=T+1 +end + +function makeVine(x,y,a) + VINES[#VINES+1]={ + x=x, + y=y, + c=math.random(1,15), + a={a}, + aim=a, + active=true, + age=0, + } +end + +function addSeg(v) + local lastA=v.a[#v.a] + local dA=v.aim-lastA + + v.a[#v.a+1]=lastA+dA*.3 +end + +function doVine(v,wSrc) + local xl0,yl0=v.x,v.y + xl0=xl0+math.sin(T*.02+v.age*.03)*10 + yl0=yl0+math.sin(T*.01+v.age*.04)*10 + for i=1,#v.a do + w=((#v.a-i)*.2)*wSrc*(v.age^.7)/100 + w=math.min(w,10) + local a=v.a[i] + local ls=SIN(a) + local lc=COS(a) + local xl1=xl0+lc*10 + local yl1=yl0+ls*10 + + local fx00=xl0-ls*w + local fy00=yl0+lc*w + local fx01=xl0+ls*w + local fy01=yl0-lc*w + + local fx10=xl1-ls*w + local fy10=yl1+lc*w + local fx11=xl1+ls*w + local fy11=yl1-lc*w + + tri(fx00,fy00,fx01,fy01,fx10,fy10,v.c) + tri(fx10,fy10,fx11,fy11,fx01,fy01,v.c) + + if i%2==0 then + local lx1=fx11+ls*w + local ly1=fy11-lc*w + tri(fx11,fy11,lx1,ly1,fx01,fy01,v.c-1) + else + local lx1=fx10-ls*w + local ly1=fy10+lc*w + tri(fx10,fy10,lx1,ly1,fx00,fy00,v.c-1) + end + + xl0,yl0=xl1,yl1 + + if xl0<-50 or xl0>=240+50 or + yl0<-50 or yl0>=136+50 then + return true + end + end + + v.age=v.age+1 + + if math.random()<.03 then + v.aim=math.random()*math.pi*2 + end + + return false +end diff --git a/shader_file_sources/2023_08_14_byte_jam_monday_night/mantratronic.lua b/shader_file_sources/2023_08_14_byte_jam_monday_night/mantratronic.lua new file mode 100644 index 000000000..0b80c1172 --- /dev/null +++ b/shader_file_sources/2023_08_14_byte_jam_monday_night/mantratronic.lua @@ -0,0 +1,214 @@ +-- mt here +-- back to fft shenanigans +-- then maybe twisty donuts + +-- greets to alia, aldroidia, ferris +-- gasman, hoffman, jtruk, and you! + +m=math +s=m.sin +c=m.cos +fc={} +fm={} +fn={} +fh={} +fs={} +fa={} + +function BOOT() + for i=0,255 do + fc[i]=0 + fm[i]=0 + fn[i]=0 + fh[i]=0 + fs[i]=0 + fa[i]=0 + end +end + +function BDR(l) + vbank(0) + if l == 0 then + for i=1,15 do + poke(0x3fc0+i*3, (i*15+t*.3)%255) + poke(0x3fc0+i*3+1, (i*15+t*.5+60)%255) + poke(0x3fc0+i*3+2, (i*15+t*.7+120)%255) + end + end +end + +function TIC()t=time()/100 + cls() + + for i=0,255 do + fc[i] = fft(i)*.1 + if fc[i] > fm[i] then fm[i] = fc[i] end + fn[i] = fc[i]/fm[i] + fa[i] = fa[i] + fc[i] + fh[i] = fh[i]*.95 + fn[i]*.05 + bi = m.max(0,i-5) + ei = m.min(255,i+5) + fs[i]=0 + for i = bi,ei do + fs[i] = fs[i]+fh[i]*.1 + end + end + + vbank(0) + cls() + --[[ + it=t%50 + dt=it//25 + it=it/25 + it=it-0.5 + it=it*128 + if dt < 1 then + poke(0x3ffa,128+it) + poke(0x3ff9,0) + else + poke(0x3ffa,0) + poke(0x3ff9,128+it) + end + --]] + for i=0,239 do + line(i,10,i,10-fc[i]*100,2) + print("fft current * 100",0,12,2,true,1,true) + + line(i,36,i,36-fm[i]*100,4) + print("fft max * 100",0,38,4,true,1,true) + + line(i,62,i,62-fn[i]*10,6) + print("fft normalized * 10",0,64,6,true,1,true) + + line(i,88,i,88-fh[i]*10,8) + print("fft history * 10",0,90,8,true,1,true) + + line(i,114,i,114-fs[i]*10,10) + print("fft smooth * 10",0,116,10,true,1,true) + + + end + + vbank(1) + cls(0) + + for i=0,255,.5 do + cx=160 + cy=68 + r = 50 + a = i/255 * m.pi * 2 + fa[0]*10 + + + mx = r * s(a) + my = r * c(a) + w = 5*(1+10*fs[i//1]) + + ra = i/255+t/500 + x1= w*s(ra) + y1= w*c(ra) + x2= w*s(ra+m.pi/2) + y2= w*c(ra+m.pi/2) + x3= w*s(ra+m.pi) + y3= w*c(ra+m.pi) + x4= w*s(ra+m.pi/2+3) + y4= w*c(ra+m.pi/2+3) + + segment2(x1,y1,x2,y2,r,a,12) + segment2(x2,y2,x3,y3,r,a,13) + segment2(x3,y3,x4,y4,r,a,14) + segment2(x4,y4,x1,y1,r,a,15) + +--[[ segment(x1,y1,x2,y2,mx,my,2) + segment(x2,y2,x3,y3,mx,my,6) + segment(x3,y3,x4,y4,mx,my,10) + segment(x4,y4,x1,y1,mx,my,14) + --]] + end +end + +function segment2(x1,y1,x2,y2,r,a,col) + ix1= (r-x1) * s(a) + iy1= (r+y1) * c(a) + ix2= (r-x2) * s(a) + iy2= (r+y2) * c(a) + line(ix1+cx,iy1+cy,ix2+cx,iy2+cy,col) + + --[[ nope. + if xa <= 0 and x1 < x2 then + if ya <= 0 and y1 > y2 then + ix1= (r-x1) * s(a) + iy1= (r-y1) * c(a) + ix2= (r-x2) * s(a) + iy2= (r-y2) * c(a) + line(ix1+cx,iy1+cy,ix2+cx,iy2+cy,col) + + elseif ya >= 0 and y1 < y2 then + ix1= (r-x1) * s(a) + iy1= (r-y1) * c(a) + ix2= (r-x2) * s(a) + iy2= (r-y2) * c(a) + line(ix1+cx,iy1+cy,ix2+cx,iy2+cy,col) + + end + elseif xa > 0 and x1 > x2 then + if ya <= 0 and y1 > y2 then + ix1= (r+x1) * s(a) + iy1= (r+y1) * c(a) + ix2= (r+x2) * s(a) + iy2= (r+y2) * c(a) + line(ix1+cx,iy1+cy,ix2+cx,iy2+cy,col) + + elseif ya >= 0 and y1 < y2 then + ix1= (r+x1) * s(a) + iy1= (r+y1) * c(a) + ix2= (r+x2) * s(a) + iy2= (r+y2) * c(a) + line(ix1+cx,iy1+cy,ix2+cx,iy2+cy,col) + + end + end--]] +end + + +function segment(x1,y1,x2,y2,mx,my,c) + --hmmmmmmm + if mx <= 0 and x1 < x2 then + if my <= 0 and y1 < y2 then + line(x1+cx+mx,y1+cy+my,x2+cx+mx,y2+cy+my,c) + elseif my > 0 and y1 > y2 then + line(x1+cx+mx,y1+cy+my,x2+cx+mx,y2+cy+my,c) + end + elseif mx > 0 and x1 > x2 then + if my <= 0 and y1 < y2 then + line(x1+cx+mx,y1+cy+my,x2+cx+mx,y2+cy+my,c) + elseif my > 0 and y1 > y2 then + line(x1+cx+mx,y1+cy+my,x2+cx+mx,y2+cy+my,c) + end + end + return +end + +function fftcirc() + for i=0,255,.1 do + cx=120 + cy=68 + r = 50 + a = i/255 * m.pi * 2 + + ix = r * s(a) + iy = r * c(a) + ox = r*(1+2*fs[i//1]) * s(a) + oy = r*(1+2*fs[i//1]) * c(a) + line(ix+cx,iy+cy,ox+cx,oy+cy,13) + end +end +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2023_08_14_live_performance_ccc23/molive.sb3 b/shader_file_sources/2023_08_14_live_performance_ccc23/molive.sb3 new file mode 100644 index 000000000..a1578dc74 Binary files /dev/null and b/shader_file_sources/2023_08_14_live_performance_ccc23/molive.sb3 differ diff --git a/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl b/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl new file mode 100644 index 000000000..882ccd7e5 --- /dev/null +++ b/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl @@ -0,0 +1,137 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time=mod(fGlobalTime, 300); + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float musi(float t) { + return texture(texFFTIntegrated, fract(t)*0.1+0.01).x; +} + +float mus(float t) { + return texture(texFFTSmoothed, fract(t)*0.1+0.01).x; +} + +float rnd(float t) { + return fract(sin(t*374.452)*895.342); +} + +vec3 rnd3(vec3 t) { + return fract(sin(t*545.349+t.yzx*434.234+t.zxy*954.234)*543.252); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +float sec; + +float map(vec3 p) { + + float d=length(p)-1; + d=min(d, abs(box(p, vec3(5+mus(0.01)*50)))); + p.xz = abs(p.xz)-sin(time*vec2(0.2,0.3))*4-2; + d=min(d, length(p.xz)-0.1); + + d=abs(d)-1; + + return d; +} + +void cam(inout vec3 p) { + float t=time*0.1+musi(0.01)*0.2; + p.xz *= rot(t); + p.xy *= rot(t*0.7); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col=vec3(0); + + sec=floor(fGlobalTime*0.5-length(uv)*0.2); + sec+=5*floor(fGlobalTime*0.3-abs(uv.x)*0.2); + time = mod(fGlobalTime, 300) + rnd(sec)*300; + + + if(rnd(sec+0.4)<0.3) uv.x=abs(uv.x); + if(rnd(sec+0.5)<0.3) uv.y=abs(uv.y); + + float count=10; + for(int j=0; j0 && d=9000) { + cur = abs(sin(time*0.3+vec3(0.25,0.5,0.75)))*min(0.6,0.5/(0.1+length(uv))); + } + col += cur; + } + col /= count; + + + col *= 0.7; + col *= 1.2-length(uv); + + col = smoothstep(0,1,col); + col = pow(col, vec3(0.4545)); + + out_color = vec4(col, 1); + +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl b/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl new file mode 100644 index 000000000..40f95b3c2 --- /dev/null +++ b/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_alia.glsl @@ -0,0 +1,104 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define r2d(p,a) p=cos(a)*p+sin(a)*vec2(-p.y,p.x) +#define pi 3.142 // accuracty is important lol + +float pln(vec3 p, vec3 d, vec3 n, float o) { + float dist=dot(n * o - p, n) / dot(d,n); + return dist<0. ? 10000. : dist; +} + +vec3 hash(vec3 p) { + p=fract(p*vec3(224.357,351.537,474.357)); + p += dot(p, p+19.19); + return fract((p.xxy + p.yxx) * p.zyx); +} + +vec3 col(vec2 p, float t) { + vec2 op = p; + p=fract(p)*2.-1.; + float d = length(p); + if (fract(t/4.) > .5) { + p=abs(p); + d=max(p.x,p.y); + } + d=fract(abs(d-fract(time))); + d=(1-smoothstep(0.,.005,d))*20.; + + p=op; + p=fract(p)*2.-1.; + float r=1-step(0.03, abs(p.x+sin(time))); + float g = 1-step(0.02, abs(max(p.x,p.y)+fract(time))); + + return vec3(r, g*4., 0) + d; +} + + +vec3 pos(vec2 p) { + p = vec2(pi*2.*p.x, 2. * p.y - 1.); + return vec3(sqrt(1.001-p.y*p.y) * vec2(cos(p.x), sin(p.x)), p.y); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec4 o=vec4(0,0,0,1); + float ft = texture(texFFTIntegrated, 0.01).x/8.; + float cd=sin(ft*.67349); + cd = pow(abs(cd), 5.) * sign(cd); + vec3 p = vec3(sin(time)*.5,sin(time*.7937),-5+cd*3.); + + vec3 d = normalize(vec3(uv, 1)); + + r2d(d.xz, sin(ft*1.246527)/2.); + r2d(d.yz, sin(ft)/2.); + + vec3 k=hash(vec3(uv,.1)); + float fd = 5.; + + const int samps=64; + float l=sqrt(length(uv)); + + for (int i=0;i49) break; + } + } // s + + c*=a; + if (td>49) c=uv.y; + float pulse = smoothstep(.49,.5,length(fract((uv.y)*.01-t/32)-.5)); + + float scan=sin((uv.x+uv.y)*540)*0.25+0.75; + c*=scan; + c+=pulse+uvOrg.y*.1; + vec3 mc=mix(vec3(.4,.5,.8),vec3(.8,.5,.4),clamp(1-uvOrg.y,0,1)); + out_color = (fc *.7 + vec4(vec3(sqrt(smoothstep(0,1,c*mc))),1) * .3); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl b/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl new file mode 100644 index 000000000..0af38fee4 --- /dev/null +++ b/shader_file_sources/2023_08_21_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl @@ -0,0 +1,76 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texText; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 txt(vec2 uv){ + vec2 puv = uv * vec2(v2Resolution.y / v2Resolution.x, 1); + puv+=.5; + + puv*=v2Resolution.xy*vec2(1,-1); + puv.y+=256; + + ivec2 gl = ivec2(puv); + int offset = 88+0*int(sin(fGlobalTime*4)*13+13); + return texelFetch(texText,gl,0).aaa; + return texelFetch(texText,clamp(gl,ivec2(offset,19),ivec2(10+offset,19+19)),0).aaa; + } +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 col =vec3(0.); + float lol = tanh(sqrt(texelFetch(texFFT,int(+gl_FragCoord.x / v2Resolution.x*128)%128,0).r)); + if(abs(uv.y)>.4-lol*.5) uv*=(3.); + vec2 ouv =uv; float rnd = (floatBitsToInt(uv.x)^floatBitsToInt(gl_FragCoord.y))*(floatBitsToInt(uv.y)^floatBitsToInt(gl_FragCoord.x))/2.19e9; + float bpm = texture(texFFTIntegrated,.3).r+rnd*.01+exp(-3*fract(fGlobalTime*170/60*.25))*sqrt(length(uv)); + bpm = floor(bpm)+smoothstep(0.,1.,fract(bpm)); + + vec2 zuv = vec2(atan(uv.x,uv.y),log(length(uv))); + zuv.yx+=-fGlobalTime*.5+tanh(sin(bpm*5)*2); + zuv = asin(sin(zuv*4))/4; zuv = vec2(atan(zuv.x,zuv.y),log(length(zuv))); + zuv.y+=.5+sin(bpm+zuv.y); + zuv = asin(sin(zuv)); + + uv = mix(uv,zuv,tanh(sin(fGlobalTime)*5)*.5+.5); + + + float lim=5.; + for(float i=0.;i++.8){fcol = 1-fcol;} + fcol = mix(fcol,1-fcol,exp(-3*fract(uv.y+fGlobalTime*170/60*.25))); + out_color = vec4(fcol,.2/col.r); +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderBonzajGPT.dx11.hlsl b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderBonzajGPT.dx11.hlsl new file mode 100644 index 000000000..3dfa241bc --- /dev/null +++ b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderBonzajGPT.dx11.hlsl @@ -0,0 +1,99 @@ +Texture2D texChecker; +Texture2D texNoise; +Texture2D texTex1; +Texture2D texTex2; +Texture2D texTex3; +Texture2D texTex4; +Texture1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +Texture1D texFFTSmoothed; // this one has longer falloff and less harsh transients +Texture1D texFFTIntegrated; // this is continually increasing +Texture2D texPreviousFrame; // screenshot of the previous frame +SamplerState smp; + +cbuffer constants +{ + float fGlobalTime; // in seconds + float2 v2Resolution; // viewport resolution (in pixels) + float fFrameTime; // duration of the last frame, in seconds +} + +float4 plas( float2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return float4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +void R(inout float2 p,float a) +{ + p = p*cos(a) + float2(p.y,-p.x)*sin(a); +} + +float grid(float2 uv) +{ + float2 gp = uv*20; + gp=cos(gp*2*3.141593); + float g = max(gp.x,gp.y); + g = saturate(g*10-9); + + float2 gs = uv; + gs = abs(gs); + if(max(gs.x,gs.y)>.405) g=0; + return g; +} + + +float4 main( float4 position : SV_POSITION, float2 TexCoord : TEXCOORD ) : SV_TARGET +{ + float2 uv = (position.xy-v2Resolution/2)/v2Resolution.y/.8; + float3 c = .6; + + float2 gp = uv*20; + gp=cos(gp*2*3.141593); + float g = max(gp.x,gp.y); + g = saturate(g*10-9); + + float2 gs = uv; + gs = abs(gs); + if(max(gs.x,gs.y)>.405) g=0; + + c=lerp(c,float3(1,0,1),g); + + float3 rd = normalize(float3(uv,1)); + float3 ro = float3(0,0,-10); + float t = (3 - ro.y)/rd.x; + + float2 fuv = (ro+rd*t).xz; + //return float4(fuv.xy,0,0); + g = grid(fuv); + c=lerp(c,float3(1,0,1),g); + + + + float2 bp = frac(fGlobalTime/5)*2; + if(bp.x>1) bp = 2-bp; + bp.x = bp.x*2-1; + bp.x *= .3; + bp.y = .35-abs(sin(fGlobalTime))*.5; + bp -= uv; + bp /= 1.5; + float2 bp2 = bp + .02; + if(length(bp2)<.1) + c *= .5; + if(length(bp)<.1) + { + bp /= .1; + R(bp,.3); + + //bp = pow(abs(bp),1.3)*sign(bp); + bp = normalize(float3(bp,1)).xy; + + float ch = sin(bp.x*10+fGlobalTime*10); + ch *= sin(bp.y*10); + c = ch>0 ? float3(1,0,0) : 1; + } + + + + + return c.xyzz; +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderCitrus.glsl b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderCitrus.glsl new file mode 100644 index 000000000..d857aeb50 --- /dev/null +++ b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderCitrus.glsl @@ -0,0 +1,124 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float wihajster(vec2 uv, vec2 offset, float radius) +{ + float dist = length(uv - offset) - radius; + + return dist; +} + +float rand(float x) +{ + return fract(sin(x) * 43999.109284) * 12451.98512415; +} + +vec2 rotate(vec2 uv, float amount) +{ + uv += 0.5; + uv *= mat2( sin(amount), -cos(amount), + cos(amount), sin(amount)); + uv -= 0.5; + return uv; +} + +float starfield(vec2 uv) +{ + if((texture(texTex2, uv).x + texture(texTex2, uv).y +texture(texTex2, uv).z) / 3 > .5) + { + return 1.; + } + return 0.; +} + +void main(void) +{ + vec2 uv = out_texcoord; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv *= 3.5; + + + + float erf = wihajster(uv, vec2(0.0, 0.0), 0.5 + sin(fGlobalTime) * .2 + .2); + if(erf > 0) + { + if(starfield(uv) == 1.) + { + out_color = vec4(1.0); + } + + if(starfield(uv + vec2(0.5)) == 1.) + { + out_color = vec4(0, 1, 1, 1.0); + } + + if(starfield(uv+ vec2(0.7)) == 1.) + { + out_color = vec4(1, 0, 1, 1.0); + } + + if(starfield(uv+ vec2(0.8)) == 1.) + { + out_color = vec4(0, 1, 1, 1.0); + } + + + } + else + { + //erf + vec3 noise = texture(texNoise, uv * 0.3 + vec2(fGlobalTime * 0.2, 0)).xyz; + if(noise.x < 0.19) + { + out_color = vec4(0, 0, 1, 1.0); + } + else if(noise.x < .32) + { + out_color = vec4(0, 1, 0, 1); + } + else if(noise.x < .48) + { + out_color= vec4(1,1, 1, 1); + } + } + //mun + float mun = wihajster(uv, vec2(sin(fGlobalTime), cos(fGlobalTime)), 0.1 + sin(fGlobalTime) * .2 + .2); + if(mun < 0) + { + out_color = vec4(texture(texNoise, uv + vec2(-sin(fGlobalTime), -cos(fGlobalTime))).xxx, 1); + } + + + +} + + + + + + + + + + + + + diff --git a/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKK_stage1.DX11.hlsl b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKK_stage1.DX11.hlsl new file mode 100644 index 000000000..334007370 --- /dev/null +++ b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKK_stage1.DX11.hlsl @@ -0,0 +1,118 @@ +Texture2D texChecker; +Texture2D texNoise; +Texture2D texTex1; +Texture2D texTex2; +Texture2D texTex3; +Texture2D texTex4; +Texture1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +Texture1D texFFTSmoothed; // this one has longer falloff and less harsh transients +Texture1D texFFTIntegrated; // this is continually increasing +Texture2D texPreviousFrame; // screenshot of the previous frame +SamplerState smp; + +cbuffer constants +{ + float fGlobalTime; // in seconds + float2 v2Resolution; // viewport resolution (in pixels) + float fFrameTime; // duration of the last frame, in seconds +} + +float4 plas( float2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return float4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + + +void R(inout float2 p,float a) +{ + a*=2*.3141593; + p = p*cos(a) + float2(p.y,-p.x)*sin(a); +} + +float M(float x,float r) +{ + return (floor(x/r)-.5)*r; +} + +float cu(float3 q) +{ + q=abs(q); + return max(max(q.x,max(q.y,q.z))-1,1.3-length(q)); +} + + +float sdf(float3 p) +{ + float t = fGlobalTime*5; + float d = length(p)-1; + + float3 q = p; + q.y -= sin(t); + //q.x = (q.x/5-floor(q.x/5)-.5)*5; + R(q.xz,t); + R(q.xy,t/3); + d = cu(q); + + q = p; + //q.y -= sin(t); + q.z += t*5; + q.z = (q.z/5-floor(q.z/5)-.5)*5; + //R(q.xz,t); + //R(q.xy,t/3); + d = min(cu(q/5)*5-.5,d); + + d = min(d,p.y+4+sin(p.x)*cos(p.z+sin(p.x+t*3))); + + return d*.5; +} + + +float4 main( float4 position : SV_POSITION, float2 TexCoord : TEXCOORD ) : SV_TARGET +{ + float2 uv = TexCoord; + uv -= 0.5; + uv /= float2(v2Resolution.y / v2Resolution.x, 1); + + float3 ro = float3(0,0,-7); + float3 rd = normalize(float3(uv,1)); + float t=0, d; + float3 p; + + for(int i=0;i<200;i++) + { + d = sdf(p=ro+rd*t); + if(d<0.01) break; + t += d; + } + + if(d<0.01) + { + float2 e = float2(0.01,0); + float3 n = normalize(float3(sdf(p+e.xyy),sdf(p+e.yxy),sdf(p+e.yyx)) - d); + float3 ld = normalize(float3(2,1,-3)); + float3 f = dot(ld,n)*float3(1,1,.5); + + ro = p + n*.02; + rd = ld; + float s=0; + for(int i=0;i<50;i++) + { + d = sdf(p=ro+rd*s); + if(d<0.01) break; + s += d; + } + if(d<.01) f=0; + + f += (n.y*.5+.5)*float3(.5,.7,.7)/2; + f *= .5; + f /= 1+f; + f = pow(f,1/2.2); + + + return f.xyzz/pow(1.01,t); + } + + + return 1/t; +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKK_stage2.DX11.hlsl b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKK_stage2.DX11.hlsl new file mode 100644 index 000000000..59c7f637e --- /dev/null +++ b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKK_stage2.DX11.hlsl @@ -0,0 +1,158 @@ +Texture2D texChecker; +Texture2D texNoise; +Texture2D texTex1; +Texture2D texTex2; +Texture2D texTex3; +Texture2D texTex4; +Texture1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +Texture1D texFFTSmoothed; // this one has longer falloff and less harsh transients +Texture1D texFFTIntegrated; // this is continually increasing +Texture2D texPreviousFrame; // screenshot of the previous frame +SamplerState smp; + +cbuffer constants +{ + float fGlobalTime; // in seconds + float2 v2Resolution; // viewport resolution (in pixels) + float fFrameTime; // duration of the last frame, in seconds +} + +float4 plas( float2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return float4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + + +void R(inout float2 p,float a) +{ + a*=2*.3141593; + p = p*cos(a) + float2(p.y,-p.x)*sin(a); +} + +float M(float x,float r) +{ + return (x/r-floor(x/r)-.5)*r; +} + +float cu(float3 q) +{ + q=abs(q); + return max(max(q.x,max(q.y,q.z))-1,1.3-length(q)); +} +float cube(float3 q,float3 r) +{ + q=abs(q)-r; + return max(q.x,max(q.y,q.z)); +} + + +float sdf(float3 p) +{ + float t = fGlobalTime*5; + float d = length(p)-1; + + float3 q = p; + //q.y -= sin(t); + //q.x = (q.x/5-floor(q.x/5)-.5)*5; + R(q.xz,t); + R(q.xy,t/3); + //d = cu(q); + d = max(length(p.xy)-4,abs(p.z)-9); + + q=p; + q.z -= 10; + q.y -= 3; + d = min(d,cube(q,5)); + q.z = M(q.z,30); + float b = max(cube(q,float3(5,5,10)),8-p.z); + + q = p; + q.z=M(q,5); + q=abs(q); +// b = max(b,2-max(q.y,q.z)); +// b = max(q.y,q.z)-2; + d = min(d,b); + + q = p; + q.y += 2.5; + q.z = M(q.z,6); + //q.z = (q.x/8-floor(q.z/8))*8-4; + d = min(d,max(max(length(q.yz)-2,abs(abs(q.x)-4)-.5),-7.5-p.z)); + + + + q = p; + //q.y -= sin(t); + q.z -= t*12; + q.z = (q.z/5-floor(q.z/5)-.5)*5; + q.y += 10; + //R(q.xz,t); + //R(q.xy,t/3); + d = min(cu(q/5)*5-.5,d); + + d = min(d,p.y+13+.5*sin(p.x)*cos(p.z+sin(p.x+t*3))); + + return d*.5; +} + + +float4 main( float4 position : SV_POSITION, float2 TexCoord : TEXCOORD ) : SV_TARGET +{ + float gt = fGlobalTime*5; + float2 uv = TexCoord; + uv -= 0.5; + uv /= float2(v2Resolution.y / v2Resolution.x, 1); + + float3 ro = float3(0,0,-50); + R(ro.xz,sin(gt/7)); + R(ro.zy,cos(gt/3)*.05+.1); + + + float3 rf = normalize(-ro);//float3(0,0,1); + float3 ru = float3(0,1,0); + ru = normalize(ru-rf*dot(ru,rf)); + float3 rs = cross(rf,ru); + + //float3 rd = normalize(float3(uv,1)); + float3 rd = normalize(uv.x*rs+uv.y*ru+rf); + float t=0, d; + float3 p; + + for(int i=0;i<200;i++) + { + d = sdf(p=ro+rd*t); + if(d<0.01) break; + t += d; + } + + if(d<0.01) + { + float2 e = float2(0.01,0); + float3 n = normalize(float3(sdf(p+e.xyy),sdf(p+e.yxy),sdf(p+e.yyx)) - d); + float3 ld = normalize(float3(2,1,-3)); + float3 f = dot(ld,n)*float3(1,1,.5); + + ro = p + n*.02; + rd = ld; + float s=0; + for(int i=0;i<50;i++) + { + d = sdf(p=ro+rd*s); + if(d<0.01) break; + s += d; + } + if(d<.01) f=0; + + f += (n.y*.5+.5)*float3(.5,.7,.7)/2; + f *= .5; + f /= 1+f; + f = pow(f,1/2.2); + + + return f.xyzz/pow(1.01,t); + } + + + return 1/t; +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKlos.glsl b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKlos.glsl new file mode 100644 index 000000000..fd5f44b64 --- /dev/null +++ b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderKlos.glsl @@ -0,0 +1,116 @@ +#version 410 core + +// cheers to k2! + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +#define f float +#define v3 vec3 +#define T fGlobalTime + +v3 A = v3(0.2, 0.6, 1.2); + +f g = 10e8; + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +mat2 rot(f a) { return mat2(cos(a), sin(a), -sin(a), cos(a)); } + +f box(v3 p, v3 b) { + v3 q = abs(p) - b; + return length(max(q, 0.)) + min(max(max(q.x, q.y), q.z), 0.); +} + +f map(v3 p) { + + // p.z += 0.1*T; + + f s = p.y +1. -dot(plas(0.2*p.xz, T).x, plas(0.5*p.xz, T).y) ; + + p.z -= 8.; + p.z -= 8. + 3.*sin(20.*T); + p.y -= abs(sin(7.5*T)); + + // p. + + for (f i = 0.; i < 4. ; ++i) { + p = abs(p); + p -= v3(0.2, 0.4, 1.); + p.xy *= rot(4.*T); + p.zy *= rot(2.33*T); + } + f s2 = box(p, v3(10., 0.1, 0.1)); + + f s1 = length(p) -0.2 + 0.1*sin(T); + g = min(g, s1); + s = min(s, s1); + s = min(s, s2); + + return s; +} + +void main(void) +{ + vec2 uv = out_texcoord; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + if (abs(uv.y) > 0.4) { return; } + + v3 c = v3(0); + + v3 ro = v3(0); + ro.x += 1.5*sin(.8*T); + v3 rd = normalize(v3(uv, 2)); + rd.xy *= rot(0.2*sin(T)); + + + f t = 0; + f d = 0; + + for ( f i = 0.; i < 64.; ++i) { + d = map( ro + rd * t); + t += d; + if (d < 0.001 || t > 20.) { + break; + } + c = vec3(mix(A + abs(0.5*sin(2.*T)), A.yxz, t/32.) ); + } + + + c += exp(g - 10); + + + out_color = vec4(c, 1.); + +/* + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; +*/ +} \ No newline at end of file diff --git a/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderMaq.glsl b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderMaq.glsl new file mode 100644 index 000000000..114c8fca4 --- /dev/null +++ b/shader_file_sources/2023_08_25_shader_showdown_xenium/shaderMaq.glsl @@ -0,0 +1,121 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +void main(void) +{ + float iTime = fGlobalTime; + vec2 p = out_texcoord; + p /= vec2(v2Resolution.y / v2Resolution.x, 1); + p-=0.5; + p.y*=1.1; + p*=4.0; + + vec2 iT=vec2(sin(iTime*0.5)*1.4, sin(iTime*1.3)*1.2); + + float d=length(p); + + //vec2 uv = 4.0*p; + vec2 uv=p; + vec3 col; + + + int fx = 0; + + int NFX=3; + float DX = 1.0/float(NFX); + + fx = int(sin(iTime*0.25)/DX); + + // kulka +if(fx==0) +{ + p+=iT; + float R=0.6; + float z= sqrt(0.5-p.x*p.x-p.y*p.y); + float z2= sqrt(0.5+p.x*p.x+p.y*p.y); + if(d16 then + table.remove(verts,#verts) + end + + vbank(1) + cls() + for i=0,15 do + pix(i,0,i) + end + vbank(0) + --cls() + memcpy(0,120,16320-120) + local start=0 local ends=16320-1048 + for i=0,2 do + local d=math.random()*ends + local s=math.random()*ends + local l=math.random()*1048 + l=math.min(l,ends-l) + memcpy(d,s,l) + end + + for y=t%2,135//2 do + for x=t%2,239//2 do + pix(x*2+t%2,y*2+t%2,pix(x*2,y*2)-.9) + end + end + for i=0,12 do + print("=^^=", + 5+sin(t/40+i/4)*15, + 80+cos(t/40+i/4)*15-vs[1]/2,i,0,10) + end + + --local rotation=t/20 + + --for z=1,#verts-1 do + --local row0=verts[z] + --local row1=verts[z+1] + --local z0=(z-1)/16-.5 + --local z1=z/16-.5 + + --for i=1,#row0-1 do + --local col=0 + --local v0={x=row0[i].x,y=row0[i].y,z=z0} + --col=col+v0.y + --local tv=rot({x=v0 + --v0=n2s(rot(v0,rotation)) + --local v1={x=row0[i+1].x,y=row0[i+1].y,z=z0} + --col=col+v1.y + --v1=n2s(rot(v1,rotation)) + --local v2={x=row1[i].x,y=row1[i].y,z=z1} + --col=col+v2.y + --v2=n2s(rot(v2,rotation)) + --local v3={x=row1[i+1].x,y=row1[i+1].y,z=z0} + --v3=n2s(rot(v3,rotation)) + --trace(v0.x..":"..v1.x..":"..v2.x) + --col=(col*10//1)%16+1.5 + --ttri( + --v0.x,v0.y, + --v1.x,v1.y, + --v2.x,v2.y, + --col,0, + --col,0, + --col,0, + --2) + --ttri( + --v1.x,v1.y, + --v2.x,v2.y, + --v3.x,v3.y, + --col,0, + --col,0, + --col,0, + --2) + --end + --end + vbank(1) + cls() + --for i=1,240 do + --pix(i-1,135-vs[i]*5,12) + --end +end + +function SCN(y) + vbank(0) + poke(0x03FF9,vs[(y+1+t)%255+1]*2//1) +end \ No newline at end of file diff --git a/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_jtruk.lua b/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_jtruk.lua new file mode 100644 index 000000000..a78e8ea56 --- /dev/null +++ b/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_jtruk.lua @@ -0,0 +1,129 @@ +-- Greetz: Aldroid, Synesthesia +-- T^Bach, Alia, Totetmatt +-- Sofa Jam watchers + +MOUSE_LAST_B=false +T=0 + +TF={ + {9,116,83,44,102,32,138,206,135,197,105,116,83}, + {13,117,83,86,90,95,137,152,137,146,91,117,83}, + {10,117,95,117,86,102,86,86,90,87,102,117,106,146,101,144,90,131,85,117,85}, + {14,118,114,117,103,108,107,113,115,110,137,129,137,122,113,125,106,117,103}, + {3,116,50,109,93,132,92,152,70,157,40,149,18,112,11,80,20,81,55,101,88,109,93}, + {4,98,24,118,38,144,39,157,34,159,22,136,15,115,8,84,14,78,39,92,40,97,24}, + {4,118,60,119,52,123,52,123,61,125,65,117,65,116,59,118,52}, + {3,118,47,117,51,105,52,91,49,92,42,105,41,118,46,127,42,144,42,147,48,142,52,125,53,117,51}, + {12,135,20,125,13,119,15,133,23,150,26,150,22,137,18}, + -- left eye + {12,137,49,143,46,132,46,129,52,139,52,145,48,142,46}, + {0,136,49,136,46,132,48,135,51,135,51,138,49,136,46}, + {4,111,46,112,42,100,40,100,43}, + -- right eye + {12,105,48,110,47,104,44,98,45,96,48,105,50,109,50,110,47}, + {0,104,47,104,45,102,48,104,49,106,48,105,45,103,44}, + {4,134,44,130,47,128,44,139,42,140,45}, + -- mouth + {2,121,79,120,77,111,77,108,80,109,82,121,81,130,81,131,79,130,76,124,77,120,77}, + + -- ear + {2,85,49,84,46,84,53,86,54,85,49}, +} + +SCRATCH={} + +function setCol(c,r,g,b) + poke(0x3fc0+c*3,r) + poke(0x3fc0+c*3+1,g) + poke(0x3fc0+c*3+2,b) +end + +function TIC() + vbank(0) + cls() + for i=1,#TF do + draw(TF[i],i) + end + + drawScratch() + + local mx,my,lb,mb,rb,msx,msy=mouse() + if lb and MOUSE_LAST_B==false then + SCRATCH[#SCRATCH+1]=mx + SCRATCH[#SCRATCH+1]=my + + local str="" + for i=1,#SCRATCH do + if i==1 then + str=string.format("%d",SCRATCH[i]) + else + str=string.format("%s,%d",str,SCRATCH[i]) + end + end + str=string.format("{%s}",str) + trace(str) + end + MOUSE_LAST_B=lb + + fade=.5+math.cos(T/80)*.5 + r=0*fade+(1-fade)*200 + g=0*fade+(1-fade)*100 + b=120*fade + setCol(9,r,g,b) + r=255 + g=255 + b=255 + setCol(10,r,g,b) + r=255*fade+(1-fade)*200 + g=255*fade+(1-fade)*100 + b=255*fade + setCol(13,r,g,b) + r=255*fade+(1-fade)*200 + g=0*fade+(1-fade)*100 + b=0*fade + setCol(14,r,g,b) + + vbank(1) + cls() + local xofs=math.sin(T/20)*20 + for x=-20,300,40 do + rect(x+xofs,0,10,137,15) + rect(x+xofs+2,0,3,137,14) + end + + elli(xofs+12,120,10,20,9) + elli(xofs+190,120,10,20,9) + elli(xofs+12,110,5,13,3) + elli(xofs+190,110,5,13,3) + for y=0,3 do + elli(xofs+20,100+y*6,12,2,3) + elli(182+xofs,100+y*6,12,2,3) + end + r=0*fade+(1-fade)*200 + g=0*fade+(1-fade)*100 + b=120*fade + setCol(9,r,g,b) + + T=T+1 +end + +function draw(trifan,bump) + local c=trifan[1] + local x0,y0=trifan[2],trifan[3] + local xL,yL=trifan[4],trifan[5] + + local bx=math.sin(T/10+bump) + local by=math.cos(T/10+bump) + for i=6,#trifan,2 do + local x,y=trifan[i],trifan[i+1] + tri(x0+bx,y0+by,xL+bx,yL+by,x+bx,y+by,c) + xL,yL=x,y + end +end + +function drawScratch() + for i=1,#SCRATCH,2 do + local x,y=SCRATCH[i],SCRATCH[i+1] + pix(x,y,12) + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_tobach.lua b/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_tobach.lua new file mode 100644 index 000000000..9e6018d3a --- /dev/null +++ b/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_tobach.lua @@ -0,0 +1,90 @@ +--helllooooooo :) +--aaaaand we're off!! +--greetz to alia jtruk and totetmatt <3 + +sin=math.sin +cos=math.cos +abs=math.abs + +function TIC() +cls(8) +t=time()/100 + +--this one's gonna take a while +--to cook ;) + +fv=-abs(sin(t/4)*16) +fv2=-abs(sin(t/4-0.2)*32) +fv3=-abs(sin(t/4-0.4)*32) +fv4=-abs(sin(t/4-0.6)*32) +fv5=-abs(sin(t/4-0.8)*32) + +for i=0,16 do + rect(0+i*22,0,20,136,6) + rect(0-2+i*22,0,2,136,5) +end + + rect(20,10,80,80,12) + rect(22,12,76,76,10) + rect(16,85,100,6,12) + +for i=0,32 do + line(60-i,80+i,170+i,80+i,13) +end + rect(60,50,110,30,14) + rect(28,113,175,24,14) + + elli(115,98,18,4,14) + elli(115,96,18,4,15) + + elli(70,98,18,4,14) + elli(70,96,18,4,15) + + elli(160,98,18,4,14) + elli(160,96,18,4,15) + + for i=0,12 do + elli(115+sin(i/2)*16,95+cos(i/2)*4,1,2,3+math.random()*2) + end + +elli(120,85+fv,32,11,0) +elli(120,85+fv,30,9,14) +elli(120,83+fv,30,7,15) +rect(151,83+fv,25,3,15) +rect(151,84+fv,25,3,14) +for i=0,8 do + line(180,80+i+fv,240,78+i,2) +end +elli(170,83+fv,15,8,4) + +for i=0,5 do + circ(44+(i*28),128,5,1) +end + +--sosig :) +for i=0,8 do + circ(105+sin(i/4-1+sin(t/2)/2)*12,68+cos(i/4-1+sin(t/2)/2)*12+fv3,4,2) +end +for i=0,8 do + circ(105+sin(i/4-1+sin(t/2)/2)*12,68+cos(i/4-1+sin(t/2)/2)*12-2+fv3,1,3) +end + +--egg +for i=0,18 do + circ(115+sin(i+t/8)*4,78+cos(i+t/8)*2+fv2,2,4) + circ(115+sin(i+t/8)*(8+fv2/8+2),78+cos(i+t/8)*4+fv2,2,12) +end +for i=0,30 do + circ(115+i,68+sin(i/2)*(2+sin(t/2+1))+fv5,1,1) + circ(115+i,68+sin(i/2)*(2+sin(t/2+1))+2+fv5,1,2) + circ(115+i,68+sin(i/2)*(2+sin(t/2+1))+4+fv5,1,1) + circ(115+i,68+sin(i/2)*(2+sin(t/2+1))+6+fv5,1,2) +end +for i=0,8 do + circ(135+sin(i/4-1-sin(t/2+1)/2)*12,68+cos(i/4-1-sin(t/2+1)/2)*12+fv4,4,2) +end +for i=0,8 do + circ(135+sin(i/4-1-sin(t/2+1)/2)*12,68+cos(i/4-1-sin(t/2+1)/2)*12-2+fv4,1,3) +end + +end diff --git a/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_totetmatt.lua b/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_totetmatt.lua new file mode 100644 index 000000000..fb08c3f56 --- /dev/null +++ b/shader_file_sources/2023_08_28_byte_jam_monday_night_bytes/2023_08_28_totetmatt.lua @@ -0,0 +1,89 @@ +-- Hello folks ! +-- It's still not bonzomatic ! :D +-- Cheers to the viewers and participants ! + +-- Today, FFT and tsoding codes inspiration ! + +cx=240/2 +cy=136/2 +grav= 0.1 +inercia = 1 -- <<< Don't forget +cxdir=1 +fftv={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} +fftc={} +cc=1 +csize=6 +function sign(x) + if x == 0 then + return 1 + end + return x / math.abs(x) +end +function leFFT(x,o) + v = 0 + for z=1,o do + v = fft(x+z)/o + end + return v + +end +function TIC()t=time()//32 +cls() +size=16 +for x=0,size do + + u = x*240/size + val=math.sqrt(leFFT(u,size)*5) + fftv[x]=136-val*500 + rect(u, + 136-val*500, + size, + 136, + 8+x/2+t/4 + ) + fftc[x]= 8+x+val*50 + line(u, + 136-leFFT(u,5)*500, + u+size, + 136-leFFT(u+1,5)*500, + 12) + +end +ni = inercia+grav +inercia=sign(ni)*math.min(4,math.abs(ni)) + + +cy=cy+inercia +cx=cx+cxdir +if cx+csize >= 240 or cx-csize <= 0 then +cxdir = cxdir*-1 +end +if cy+csize> 136 or cy+8>= fftv[cx//16] then + inercia= -inercia- fftv[cx//16]*.005 + cc=fftc[cx//16] + cy=fftv[cx//16]-5 + csize = 6+fftv[cx//16]*.05 + +end + +circ(cx,cy,csize,cc) + +circ(cx,cy,csize-5,cc+1) + +--for y=0,136 do for x=0,240 do +--pix(x,y,(x+y+t)>>3) +end + + + +function OVR() +strs={"ASKS FOR MORE SHOWDOWNS <3!","DONT FORGET TO ARCHIVE <3!"} +str=strs[1+(t//32)%2] +cc=0 +str:gsub(".", function(c) + cc=cc+1 + x=(-cx+cc*15-t)%450 +print(c,x, +-15+.2*fftv[1+x%16]+math.tanh(cc+math.sin(cc*.3+t/8)*5)*50,t+7+cc%5+math.sin(cc+t),false,3) +end) +end \ No newline at end of file diff --git a/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..4e070f9bf --- /dev/null +++ b/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,64 @@ +-- aldroid here +-- hello how are you fine thank you +-- thanks to violet and lynn and +-- love to my fellow coders! +-- wooooo! +s=math.sin +c=math.cos + +-- forgotten how arrays work in lua :( +function smokeyboop(x,y,t) +for i=4,0,-1 do +circ(x-s(t+i)*2,y-(t+i*2)%50,2,i) +end +end + +function train(x,y) + +for i=20,50,10 do +circ(i+x,20+y,3,1) +end +rect(15+x,15+y,45,5,1) +rect(17+x,5+y,35,10,1) +rect(50+x,y,10,15,1) +rect(18+x,y,4,6,1) + +for i=0,120,40 do +rect(65+x+i,y,35,20,1) +boops=fft(i)*20*math.pow(i+1,.5) +for kk=0,boops do +k=boops*20 +rect(90+x+i-25,y-k-20,35,10,4-kk%5) +end +for j=70+i,95+i,10 do +circ(j+x,20+y,3,1) +end +end +smokeyboop(18+x,y,time()/64) +end + +function TIC()t=time()/16 +-- last minute decision to do a train +-- :) + +cls(0) +train(240-t%550,100) +a=print("choo choo!",0,0,1) +a=math.min( + math.max(t%550+a+50-550,0)-1, + a) +ox=30 +oy=10 +sx=4 +sy=4 +r=0.5 +for i=0,1 do +for x=0,a do for y=0,7 do +if pix(x,y)==1 then +px=sx*x*c(r)-sy*y*s(r) +py=sy*y*c(r)+sx*x*s(r) +circ(ox+px,oy+py,3-i,4-i) +end +end end +end +end \ No newline at end of file diff --git a/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..7cc5c6b1c --- /dev/null +++ b/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,134 @@ +sin=math.sin +cos=math.cos +random=math.random +pi=math.pi +min=math.min +max=math.max + +t=0 +dir=0 +vbank(1) +cls() +circ(20,20,20,2) +circ(18,18,15,3) +circ(16,16,9,4) +circ(11,11,2,12) + +memcpy(0x4000,0,16320) +cls() + +function copy(x,y,s,z,t) + --local z2=(1/(z))+1 + --local x=(x-120)*z2+120 + --local y=(y-68)*z2+68 + local o=0 + ttri( + x,y, + x+s,y, + x,y+s, + 0+o,0, + 0+o,40, + 40+o,0, + 2,0, + z,z,z) + ttri( + x+s,y, + x,y+s, + x+s,y+s, + 0+o,40, + 40+o,0, + 40+o,40, + 2,0, + z,z,z) +end + +function rot2d(p,a) + local c=cos(a) + local s=sin(a) + return { + x=(c*p.x)+(s*(-p.y)), + y=(c*p.y)+(s*p.x) + } +end + +function pos() + local p={ + x=pi*2*random(), + y=2*random()-1 + } + local s=math.sqrt(1.001-p.y*p.y) + return { + x=s*cos(p.x), + y=s*sin(p.x), + z=p.y + } +end + +pts={} +idx=1 +x=.6 +z=3 + +for z=-3,3 do + for x=-.5,.5 do + for i=1,30 do + local pt=pos() + pts[idx]={ + x=x, + y=pt.y*.25, + z=pt.z*.25+z, + t=0 + } + idx=idx+1 + end + end +end + +-- body +for i=1,300 do + local pt=pos() + pts[idx]={ + x=pt.x/2, + y=pt.y/2-.5, + z=pt.z*4, + t=1 + } + idx=idx+1 +end + +function TIC() + vbank(1) + for i=0,40 do + memcpy(i*120,0x4000+i*120,21) + end + + vbank(0) + cls() + for i=1,#pts do + local pt=pts[i] + local xz=rot2d({x=pt.x*(1+sin(pt.z+t))+sin(pt.z+t*1.3),y=pt.z},t) + local xy=rot2d({x=xz.x,y=pt.y*(1+sin(pt.z+t))+cos(pt.z+t*1.3)},sin(t+pt.z)) + --pt.x=xz.x + --pt.z=xz.y + --xz=rot2d({x=pt.x,y=pt.y},sin(t/20)/8) + --pt.x=xz.x pt.y=xz.y + local z=xz.y/6+.5 + copy(xy.x*30+120, + xy.y*30+68, + 10-z*3,z,pt.t) + --copy(sin(i+t)*80+120, + --sin(i*2+t*3.3)*80+68,20,1) + end + + vbank(1) + cls() + --local x=dir%3-1 + --local y=dir//3%3-1 + --for i=0,min(t*7//1%24,12) do + --print("=^^=", + --5+x*i, + --40+y*i,i,0,10) + --end + if t*7//1%24==23 then dir=dir+1 end + t=t+.03 +end diff --git a/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/nico.lua b/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/nico.lua new file mode 100644 index 000000000..dd48216b9 --- /dev/null +++ b/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/nico.lua @@ -0,0 +1,68 @@ +-- so this idea is probably too ambitious... +-- greets to everybody!! + +sin = math.sin +cos = math.cos +pi = math.pi +-- uhh rotation, yes +-- how the heck do I do this +-- right +function lrot(x,y,l,rot,c) + line(x,y,x+(sin(rot/pi)*l),y+cos(rot/pi)*l,c) +end + + +function dancer(x,y,c) + -- lol I can't do dance animation + circ(x,y+sin(t/2)*2,8,c) + -- body + lrot(x,y,40,0,c) + -- legs + lrot(x,y+40,30,-1,c) + lrot(x,y+40,30,1,c) + -- arms + lrot(x,y+20,30,8+sin(t/2),c) + lrot(x,y+20,30,-8+sin(t/2),c) +end + +function TIC()t=time()/35 + x = 0 + kick = fft(0)+fft(1)+fft(2)+fft(3)+fft(4) + cls(0) + + rect(45,5,140,80,15) + + for x=50,180 do + for y=10,80 do + pix(x,y,sin(x)+sin(y)*t) + end + end + + rect(85,60,60,30,15) + + circ(98,75,10,0) + lrot(98,75,8,-t/4,12) + + circ(130,75,10,0) + lrot(130,75,8,t/4,12) + + circ(110,40+sin(t/2)*2,8,5) + lrot(110,40,20,0,5) + + lrot(110,50,25,2+(sin(t/2)/2),5) + lrot(110,50,25,12+(sin(t/2)/2),5) + + for y=100,120,4 do + for x=-40,50,1 do + if x+y == 0 then + c = 2 + else + c = x+y + end + boing = sin(t/2)*10 + dancer(x*30+y,y+boing,c) + end + end + + +end \ No newline at end of file diff --git a/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/suule.lua b/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/suule.lua new file mode 100644 index 000000000..1788b3a0b --- /dev/null +++ b/shader_file_sources/2023_09_04_byte_jam_monday_night_bytes/suule.lua @@ -0,0 +1,146 @@ +-- Hey! First time here! I hope +-- it will be a worthwhile one + +flr=math.floor +sin=math.sin +cos=math.cos +pi=math.pi +rand=math.random + +strx={} +stry={} +strz={} + +-- Let's make some stars +function crtstrfld() + for i=0,360 do + strx[i]=flr(rand()*240)-120 + stry[i]=flr(rand()*136)-68 + strz[i]=flr(rand()*400)-100 + end +end + + +function strclr(a) + if a < 150 then return 14 end + if a < 300 then return 14 end + if a < 400 then return 13 end + return 12 +end +--360 stars, dst =600 + +function drwstrfld() + for i=0,360 do + local prs=600/(600-strz[i]) + local x=120-strx[i]*prs + local y=68-stry[i]*prs + pix(x,y,strclr(strz[i])) + strz[i]=strz[i]+4 + if strz[i]>600 then strz[i]=0 end + + end +end + +function quad(x1,y1,x2,y2,x3,y3,x4,y4,col) + tri(x1,y1,x2,y2,x3,y3,col) + tri(x3,y3,x4,y4,x2,y2,col) +end + +function drwcockpit() + -- Lower + quad(0,104, 62,91, 0,136, 80,136,14) + quad(177,91,240,104,159,136,240,136,14) + quad(62,91,177,91,80,136,159,136,13) + -- Upper + quad(70,44, 72,44, 59,92, 61,92, 14) + quad(20,30, 23,30, -2,103, 1,103, 13) + quad(30,12, 75,35, 22,29, 72,44, 14) + quad(0, 2, 30,12, 0,30, 22,29 ,13) + quad(169,44, 167,44, 180,92, 178,92, 14) + quad(219,30,216,30,241,103,238,103, 13) + quad(209,12,164,35,217,29,167,44,14) + quad(240,2, 209,12, 240,30, 217,29, 13) + -- And now the bars + quad(72,34,75,36,167,34,164,36,14) + quad(24,10,32,13,215,10,207,13,13) + quad(87,36,152,36,89,44,150,44,14) +end + +-- Phew... now for the fun parts! + +function drwHUD(t_mod) + for i=0,9 do + line(22+i,110+i*2,25+i,110+i*2,7) + line(26+i,109+i*2,29+i,109+i*2,7) + line(31+i,108+i*2,34+i,108+i*2,7) + line(35+i,107+i*2,38+i,107+i*2,7) + line(40+i,106+i*2,43+i,106+i*2,7) + line(44+i,105+i*2,47+i,105+i*2,7) + end + local max=flr(20*fft(4)) + for c=0,max do + if c>9 then i=0 else i=9-c end + line(22+i,110+i*2,25+i,110+i*2,6) + line(26+i,109+i*2,29+i,109+i*2,6) + end + local max=flr(20*fft(8)) + for c=0,max do + if c>9 then i=0 else i=9-c end + line(31+i,108+i*2,34+i,108+i*2,6) + line(35+i,107+i*2,38+i,107+i*2,6) + end + local max=flr(20*fft(12)) + for c=0,max do + if c>9 then i=0 else i=9-c end + line(40+i,106+i*2,43+i,106+i*2,6) + line(44+i,105+i*2,47+i,105+i*2,6) + end + for i=0,4 do + elli(18+i*2,112+i*4,2,1,2) + end + local max=flr(10*fft(1)) + for c=0,max do + if c>4 then i=0 else i=4-c end + elli(18+i*2,112+i*4,2,1,3) + end + -- Radar 1 + circ(85,106,8,0) + line(85,106,85+flr(7*sin(t_mod/50*pi/2)),106+flr(7*cos(t_mod/50*pi/2)),4) + -- Radar 2 + circ(155,106,8,0) + circb(155,106,(t_mod/2)%8,4) + circ(105,102,3,0) + circ(135,102,3,0) + circ(105,125,3,0) + circ(135,125,3,0) + rect(101,102,38,24,0) + rect(105,98,30,32,0) + rect(91,35,57,8,0) +print('NORDLICHT 2023',92,37,3, true,1,true) +end + +function dsplytext(t_mod) + local adj_t=t_mod/2%300 + if (adj_t>0) and (adj_t < 20) then print('GREETZ TO',102,108,6, true,1,true)end + if (adj_t>19) and (adj_t < 40) then print(' ALIA ',105,108,6, true,1,true)end + if (adj_t>39) and (adj_t < 60) then print(' NICO ',105,108,6, true,1,true)end + if (adj_t>59) and (adj_t < 80) then print(' ALDROID',102,108,6, true,1,true)end + if (adj_t>79) and (adj_t < 100) then print(' VIOLET ',105,108,6, true,1,true)end + if (adj_t>99) and (adj_t < 120) then print('LYNNDRUMM',102,108,6, true,1,true)end + if (adj_t>139) and (adj_t < 160) then print('SEE YA AT',102,108,6, true,1,true)end + if (adj_t>159) and (adj_t < 180) then print('NORDLICHT',102,108,6, true,1,true)end + if (adj_t>179) and (adj_t < 200) then print(' 2023!! ',102,108,6, true,1,true)end + if (adj_t>239) and (adj_t < 260) then print(' HAVE A ',105,108,6, true,1,true)end + if (adj_t>259) and (adj_t < 280) then print('GREAT DAY',102,108,6, true,1,true)end +end + + +function TIC() + t=time()/30 + if t<1 then crtstrfld() end + cls(0) + drwstrfld() + drwcockpit() + drwHUD(t) + dsplytext(t) +end diff --git a/shader_file_sources/2023_09_08_byte_jam_nordlicht/gasman.lua b/shader_file_sources/2023_09_08_byte_jam_nordlicht/gasman.lua new file mode 100644 index 000000000..b8eb7f284 --- /dev/null +++ b/shader_file_sources/2023_09_08_byte_jam_nordlicht/gasman.lua @@ -0,0 +1,218 @@ +bk={} +pal={} +for i=0,47 do + pal[i+1]=peek(16320+i) +end + +ffthist={} +for i=0,255 do + ffthist[i]=0 +end + +amp=0 + +function bgpix(x,y,v) + bk[y*240+x]=v +end + +function BDR(y) + mode=t//3456%3 + v1=128+64*math.sin((y-t/34)/4) + v2=128+64*math.sin((y+t/34)/4) + if mode==0 then + poke(16323,v1) + poke(16324,0) + poke(16325,v2) + elseif mode==1 then + poke(16323,v2) + poke(16324,v1) + poke(16325,0) + else + poke(16323,0) + poke(16324,v2) + poke(16325,v1) + end +end + +function hypnotoad(x,y) + r=math.sqrt(x*x+y*y) + tr=3*math.sin(t/678+r/28) + a=(math.atan2(x,y)+tr)*8/math.pi//1 + rf=(r/24+tz)//1 + + bgpix(x+120,y+68,(a%2)~(rf%2)) +end + +function interference(x,y) + x0=x+20*math.sin(t/269) + y0=y+20*math.sin(t/369) + x1=x-20*math.sin(t/269) + y1=y-20*math.sin(t/369) + + r0=math.sqrt(x0*x0+y0*y0)//8%2 + r1=math.sqrt(x1*x1+y1*y1)//8%2 + + bgpix(x+120,y+68,r0~r1) +end + +-- yes folks, we're doing +-- all the classics tonight +function rotozoom(x,y) + x1=x*math.cos(t/444)+y*math.sin(t/444) + y1=y*math.cos(t/444)-x*math.sin(t/444) + s=1+0.9*math.sin(t/555) + x2=x1*s + y2=y1*s + + bgpix(x+120,y+68,(x2//32%2)~(y2//32%2)) +end + +function tunnel(x,y) + r=math.sqrt(x*x+y*y) + rf=200/(r+5) + a=(math.atan2(x,y))*8/math.pi//1 + + bgpix(x+120,y+68,(a%2)~((rf+t/123)//1%2)) +end + +frame=0 +function TIC() +ffthist[frame]=fft(1) +frame=(frame+1)%256 + +ca=math.cos(.05) +sa=math.sin(.05) + +t=time() + +tz=t/267 + +fxn=t//2345%4 +if fxn==0 then + fx=interference +elseif fxn==1 then + fx=hypnotoad +elseif fxn==2 then + fx=rotozoom +else + fx=tunnel +end + +for y=-68,68 do + for x=-120,120 do + x1=x*0.95 + y1=y*0.95 + x2=x1*ca+y1*sa + y2=y1*ca-x1*sa + p=pix(x2+120,y2+68) + if p>1 then + p=p-1 + bk[(y+68)*240+x+120]=p + else + bk[(y+68)*240+x+120]=-1 + fx(x,y) + end + end +end + +-- HELL YEAH I FIXED IT!!!!! + +for y=0,68+68 do + for x=0,240 do + v=bk[y*240+x] + if v>-1 then + pix(x,y,v) + end + end +end + + fftval1=fft(1) + fftval2=fft(2) + fftval3=fft(3) + for x=0,239 do + v=8*fftval1*math.sin(x/8) + +8*fftval2*math.sin(x/16) + +8*fftval3*math.sin(x/32) + pix(x,64+v,8) + pix(120+v,x,8) + end + +print("triace messy ektr0",0,0,14,true) + +amp=8*(1+math.sin(t/67)) + +s=3+fft(0)*8 + +t1={123,135,146} +t2={234,246,268} + + circ( + math.random(0,239), + math.random(0,137), + math.random(2,10), + math.random(0,16) + ) + +for n=0,2 do + d=math.sin((n+t/1234)*math.pi*2/3) + a=t/(t1[n+1]) + b=t/(t2[n+1]) + + for x0=-24,24 do + for y0=-4,4 do + if pix(x0+24+n*48,y0+4)==14 then + z0=0 + y1=y0 + x1=x0*math.cos(a)+z0*math.sin(a) + z1=z0*math.cos(a)-x0*math.sin(a) + x=x1*math.cos(b)+y0*math.sin(b) + y=y1*math.cos(b)-x0*math.sin(b) + circ( + 120+60*d +s*x, + 67+s*y, + 2,10-n) + end + end + end + + rect(0,120,240,18,0) + dy0=fft(1)*2 + dy1=fft(2)*2 + dy2=fft(3)*2 + tx=240-(t/24)%480 + + line(0,132,240,132,15) + line(0,135,240,135,15) + for x=0,240,10 do + line(x+4,131,x,137,15) + end +end + + circ(tx+70,127+dy0,6,14) + circ(tx+90,127+dy0,6,14) + circ(tx+120,127+dy1,6,14) + circ(tx+140,127+dy1,6,14) + circ(tx+170,127+dy2,6,14) + circ(tx+190,127+dy2,6,14) + circ(tx+25,129+dy0,4,14) + circ(tx+45,129+dy0,4,14) + rect(tx+20,122+dy0,30,6,13) + rect(tx+20,115+dy0,5,8,13) + rect(tx+19,114+dy0,7,2,13) + rect(tx+30,118+dy0,5,8,13) + circ(tx+25,115-(t/100%10),3-(t/500%2),12) + + rect(tx+60,120+dy0,40,10,2) + rect(tx+110,120+dy1,40,10,2) + rect(tx+160,120+dy2,40,10,2) + + line(tx+50,128+dy0,tx+59,128+dy0,13) + line(tx+100,128+dy0,tx+109,128+dy1,13) + line(tx+150,128+dy1,tx+159,128+dy2,13) + + print("ektr0",tx+63,122+dy0,3) + print("triace",tx+113,122+dy1,4) + print("messy",tx+163,122+dy2,5) + + +end \ No newline at end of file diff --git a/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl b/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl new file mode 100644 index 000000000..f8b5f15d0 --- /dev/null +++ b/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_NuSan.glsl @@ -0,0 +1,172 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time=mod(fGlobalTime, 300.0); +vec2 ratio=vec2(v2Resolution.x/v2Resolution.y,1); + +vec4 pack(vec2 p) { + vec4 v=vec4(0); + v.xy = floor(p*255.0)/255.0; + v.zw = (p-v.xy)*255.0; + return v; +} + +vec2 unpack(vec4 p) { + return p.xy+p.zw/255.0; +} + +vec4 packspeed(vec2 p) { + p+=0.5; + vec4 v=vec4(0); + v.xy = floor(p*255.0)/255.0; + v.zw = (p-v.xy)*255.0; + return v; +} + +vec2 unpackspeed(vec4 p) { + return p.xy+p.zw/255.0-0.5; +} + +vec2 rnd(vec2 t) { + return fract(sin(t*452.214+t.yx*840.517)*642.324); +} + +float box(vec2 p, vec2 s) { + p=abs(p)-s; + return max(p.x,p.y); +} + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float smin(float a, float b, float h) { + float k=clamp((a-b)/h*0.5+0.5,0,1); + return mix(a,b,k)-k*(1-k)*h; +} + +float map(vec2 p) { + p-=0.5; + p*=ratio; + + float d=-box(p, vec2(0.92,0.48)); + + vec3 p2 = vec3(p,0); + float t=time*0.1; + p2.xz *= rot(t*0.7); + p2.yz *= rot(t*0.6); + + p2=abs(p2)-0.4; + p2=abs(p2)-0.2; + d=min(d, box(p2.xy, vec2(0.05))); + d=min(d, box(p2.zy, vec2(0.05))); + d=min(d, box(p2.xz, vec2(0.05))); + + p2.xz *= rot(t*.3); + p2=abs(p2)-0.1; + d=min(d, length(p2)-0.05); + + return d; +} + +vec2 norm(vec2 p) { + vec2 off=vec2(0.01,0); + return normalize(vec2(map(p+off.xy)-map(p-off.xy), map(p+off.yx)-map(p-off.yx))); +} + +void main(void) +{ + vec2 uv = gl_FragCoord.xy / v2Resolution.xy; + vec2 ida = gl_FragCoord.xy; + ivec2 id = ivec2(gl_FragCoord.xy); + + vec4 col=texelFetch(texPreviousFrame, id, 0); + + float pulse=6.0; + time = time + rnd(vec2(floor(time/pulse),.7)).x*300; + time += sin(time*0.2)*5.0; + + bool reset=fract(time/pulse)<0.02; + if(texelFetch(texPreviousFrame, ivec2(0,2), 0).x<0.5) reset=true; + + if(id.y==0) { + + vec2 pos=unpack(col); + vec2 speed=unpackspeed(texelFetch(texPreviousFrame, ivec2(id.x,1), 0)); + + float d=map(pos); + float l=length(speed); + if(l<0.01 || l>0.9) reset=true; + if(reset) { + //pos=rnd(ida + fract(time) + 0.7); + pos=sin(time*vec2(0.3,0.4)*.2)*0.4+0.5; + } + + pos += speed*0.08/ratio; + + col=pack(pos); + } else if(id.y==1) { + + vec2 speed=unpackspeed(col); + vec2 pos=unpack(texelFetch(texPreviousFrame, ivec2(id.x,0), 0)); + + float d=map(pos); + float l=length(speed); + if(l<0.01 || l>0.9) reset=true; + if(reset) { + speed=(rnd(ida + fract(time))-0.5)*0.5; + } + + if(d<0.01) { + vec2 n=norm(pos); + if(dot(n,speed)<0.0) { + speed=reflect(speed, n); + speed*=0.9; + } + } + + speed*=0.98; + speed.y-=0.005; + + col=packspeed(speed); + + } else if(id.y==2 && id.x==0) { + col=vec4(1); + } else { + col.xyz *= vec3(0.98,0.95,0.7); + + float sd=10; + for(int i=0; i<300; ++i) { + + vec2 pos=unpack(texelFetch(texPreviousFrame, ivec2(i,0), 0)); + float d=length((pos-uv)*ratio); + //col.xyz += vec3(1,0.5,0.3)*0.2*smoothstep(0.015,0.0,length(d)); + sd = smin(sd, d,.03); + } + + col.xyz += vec3(1,0.5,0.9)*0.15*smoothstep(0.012,0.0,sd); + + float dd=map(uv); + col.xyz += 0.1 * vec3(0.2,0.3,2.4) * smoothstep(0.,-.003,dd) * (1+dd*30.0); + } + + out_color = col; +} \ No newline at end of file diff --git a/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl b/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl new file mode 100644 index 000000000..b9a86439d --- /dev/null +++ b/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl @@ -0,0 +1,102 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float fbm31(vec3 p) { + vec3 f=floor(p),s=vec3(7,157,113); + p-=f; vec4 h=vec4(0,s.yz,s.y+s.z)+dot(f,s);; + p=p*p*(3.-2.*p); + h=mix(fract(sin(h)*43758.5),fract(sin(h+s.x)*43758.5),p.x); + h.xy=mix(h.xz,h.yw,p.y); + return mix(h.x,h.y,p.z); +} + +mat2 rot(float a) { + return mat2(cos(a),-sin(a),sin(a),cos(a)); +} + +float sdBox(vec3 p,vec3 r) { + p = abs(p)-r; + return max(p.x,max(p.y,p.z)); +} + +vec2 min2(vec2 a,vec2 b) { + return a.x64) { + vec2 e=vec2(0,.01); + vec3 n=normalize(d-vec3(S(p-e.xyy),S(p-e.yxy),S(p-e.yyx))); + rd=reflect(rd,normalize(n-.01*rnd(vec3(uv*td+i,dd)))); + c+=max(0,pow(1+dot(rd,n),8.)); + a=a/3;dd=.1; + } + td+=d/2; + } + + vec3 mat=mix(vec3(.8,.5,.3),vec3(.3,.5,.8),clamp((uv.x*uv.y)*4,0,1)); + vec3 ll=mat*c/64*clamp(1-td/32,0,1); + float scan=sin((uv.x+uv.y)*540)*sin((uv.x-uv.y)*270)+1; + out_color = fc*.2+.5*scan*vec4(sqrt(ll),1)*(1-length(uv)/3); +} \ No newline at end of file diff --git a/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl b/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl new file mode 100644 index 000000000..08752296f --- /dev/null +++ b/shader_file_sources/2023_09_11_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl @@ -0,0 +1,96 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float diam2(vec2 p,float s){p=abs(p);return (p.x+p.y-s)*inversesqrt(3.);} + +float tru(vec2 p){ + vec2 id = floor(p)+.5; + vec2 gv = p-id; + gv.x *= fract(452.6*sin(dot(id,vec2(452.5,985.5)))) > .5 ? -1.:1. ; + gv.xy-=.5 * (gv.x >-gv.y ? 1. :-1.);float q; + return abs(q=diam2(gv.xy,.5))-.0*sqrt(texture(texFFTSmoothed,q).r); +} +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +vec3 one(vec2 uv){vec3 col=vec3(0.); + uv*=8.; + float bpm = texture(texFFTIntegrated,.3).r+fGlobalTime*.2; + bpm = floor(bpm)+smoothstep(.0,1.,fract(bpm)); + for(float i=0,im=8.;ib.z + end) + + for i=1,#bobs do + drawBob(bobs[i]) + end + + vbank(1) + cls() + drawUNESCO(20,50) + + for i=1,#bobSeeds do + local s=bobSeeds[i] + local x=120+math.sin(s*54)*120+math.sin(s*32+T*.1)*3 + local y=(s*32+(s+.2)*T*.6)%140-5 + local c=i%2==0 and 14 or 15 + tri(x,y,x+3,y+3,x-3,y+4,c) + rect(x-2,y+3,5,2,c) + end + + T=T+1 +end + +function makeBob(i,bseed) + local x=math.sin(i+bseed*20+T*.01)*150 + local y=math.sin(i+bseed*28+T*.012)*100 + local z=6+math.sin(i+bseed*32+T*.013)*5 + + x=x/z + y=y/z + local scale=clamp(1/z,.1,1) + local size=10*scale + local c=1+scale*15 + return { + x=120+x, + y=68+y*(.5+VOL*.5), + z=z, + size=10*scale, + c=1+scale*15, + } +end + +function drawBob(b) + circ(b.x,b.y,b.size,b.c) +end + +-- +-- 001:eccccccccc888888caaaaaaaca888888cacccccccacc0ccccacc0ccccacc0ccc +-- 002:ccccceee8888cceeaaaa0cee888a0ceeccca0ccc0cca0c0c0cca0c0c0cca0c0c +-- 003:eccccccccc888888caaaaaaaca888888cacccccccacccccccacc0ccccacc0ccc +-- 004:ccccceee8888cceeaaaa0cee888a0ceeccca0cccccca0c0c0cca0c0c0cca0c0c +-- 017:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec +-- 018:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee +-- 019:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec +-- 020:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee +-- + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000 +-- + +-- +-- 000:100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2023_09_16_byte_jam_dutch_demoscene_unesco/mantratronic.lua b/shader_file_sources/2023_09_16_byte_jam_dutch_demoscene_unesco/mantratronic.lua new file mode 100644 index 000000000..afe40868d --- /dev/null +++ b/shader_file_sources/2023_09_16_byte_jam_dutch_demoscene_unesco/mantratronic.lua @@ -0,0 +1,124 @@ +-- mantratronic here +-- congrats on unesco acceptance +-- and greetings to all + +M=math +R=M.random +S=M.sin + +nmb=3 +mb={} +t=0 + +function BDR(l) + for i=0,15 do + poke(0x3fc0+i*3,i/15*128+i/15*128*S(2+t/100+l/100)) + poke(0x3fc0+i*3+1,i/15*128+i/15*128*S(4+t/100+l/100)) + poke(0x3fc0+i*3+2,i/15*128+i/15*128*S(t/100+l/100)) + end +end + +function BOOT() + for i=1,nmb do + mb[i]={x=1,y=1} + end +end + +function dist(a,b) + return ((a.x-b.x)^2+(a.y-b.y)^2)^.5 +end + +function clamp(x,a,b) + return M.max(a,M.min(b,x)) +end + +cen={x=0,y=0} +ffth={0,0,0} + +function TIC()t=time()/32 +cls(0) + +ffth[1]=ffth[1]+fft(2)/2 +ffth[2]=ffth[2]+fft(10)*2 +ffth[3]=ffth[3]+fft(100)*6 + +for i=1,nmb do + mb[i].x = 80*S(i/5 * ffth[i]) + mb[i].y = 60*S(i/5 * ffth[i]*.9) + +end + +for y=0,136 do for x=0,200 do + local sum=0 + for i=1,nmb do + sum=sum+50/dist(mb[i],{x=x-100,y=y-68}) + end + if ((y/2+ffth[1]+5*S(x/30+t/20+ffth[2]))%20)>7-fft(0)*10 then + pix(x+40,y,clamp(sum*3,0,15)) + else + local ll = (3*sum%1)/(.5*sum//1) + if ll < 0.05 then + pix(x+40,y,3) + elseif ll < 0.1 then + pix(x+40,y,7) + elseif ll < 0.15 then + pix(x+40,y,11) + elseif ll < 0.2 then + pix(x+40,y,15) + elseif ll < 0.25 then + pix(x+40,y,11) + elseif ll < 0.3 then + pix(x+40,y,7) + elseif ll < 0.35 then + pix(x+40,y,3) + end + + end +end end + +for i=1,nmb do +-- circ(140+mb[i].x,68+mb[i].y,10,12) +end + +print("U",8,2,15,true,4) +print("N",8,24,15,true,4) +print("E",8,46,15,true,4) +print("S",8,68,15,true,4) +print("C",8,90,15,true,4) +print("O",8,112,15,true,4) + +end + +--[[ .____..____._.____. .___. + / // / \ \ \ \ + / // / _\ `-| \ + / // / / \ \ + / _ / \___\ , . \ + / // / \\ \ \ \ +|____//____/ \__________|\____|\|\____| + + ------------| + / | | | + | | | | + | | | | + | \______/ | + | | + | __ | + | / \ | + | < <> > | + | \__/ | + | | + \____________/ + +--]] + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2023_09_16_byte_jam_dutch_demoscene_unesco/suule.lua b/shader_file_sources/2023_09_16_byte_jam_dutch_demoscene_unesco/suule.lua new file mode 100644 index 000000000..ba6c2e2db --- /dev/null +++ b/shader_file_sources/2023_09_16_byte_jam_dutch_demoscene_unesco/suule.lua @@ -0,0 +1,185 @@ +-- Hello everybody! Hope you're having a +-- wonderful day! It's a day certainly +-- worth celebrating! +flr=math.floor +sin=math.sin +cos=math.cos +rand=math.random +sqrt=math.sqrt +pi=math.pi +add=table.insert +rem=table.remove + +max=20 +dst=600 +spd=2 +fact=0.01 +txx={} +tyy={} +tzz={} +cxx1={} +cyy1={} +czz1={} +crr1={} +cxx2={} +cyy2={} +czz2={} +crr2={} +cxx3={} +cyy3={} +czz3={} +crr3={} +cxx4={} +cyy4={} +czz4={} +crr4={} + + + + +function BOOT() + for i=0,max do + txx[i]=0 + tyy[i]=0 + tzz[i]=i*i*2 + cxx1[i]=0 + cyy1[i]=0 + czz1[i]=i*i*2 + crr1[i]=0 + cxx2[i]=0 + cyy2[i]=0 + czz2[i]=i*i*2 + crr2[i]=0 + cxx3[i]=0 + cyy3[i]=0 + czz3[i]=i*i*2 + crr3[i]=0 + cxx4[i]=0 + cyy4[i]=0 + czz4[i]=i*i*2 + crr4[i]=0 + + end +end + +-- PREPARE FOR THE WURST TUNNEL EVER! + +function cycleit() + for i=0,max do + tzz[i]=tzz[i]+i*i*fact + czz1[i]=czz1[i]+i*i*fact + czz2[i]=czz2[i]+i*i*fact + czz3[i]=czz3[i]+i*i*fact + czz4[i]=czz4[i]+i*i*fact + end + if tzz[max] > 900 then + rem(tzz,max+1) + add(tzz,1,0) + rem(txx,max+1) + add(txx,1,2*sin(t/100*pi/2)) + rem(tyy,max+1) + add(tyy,1,2*cos(t/100*pi/2)) + rem(czz1,max+1) + add(czz1,1,0) + rem(cxx1,max+1) + add(cxx1,1,2*sin(t/100*pi/2)+4-2*fft(20)) + rem(cyy1,max+1) + add(cyy1,1,2*cos(t/100*pi/2)+4-2*fft(1)) + rem(crr1,max+1) + add(crr1,1,flr(6*fft(0))) + rem(czz2,max+1) + add(czz2,1,0) + rem(cxx2,max+1) + add(cxx2,1,2*sin(t/100*pi/2)-4-2*fft(10)) + rem(cyy2,max+1) + add(cyy2,1,2*cos(t/100*pi/2)-4-2*fft(6)) + rem(crr2,max+1) + add(crr2,1,flr(6*fft(1))) + rem(czz3,max+1) + add(czz3,1,0) + rem(cxx3,max+1) + add(cxx3,1,2*sin(t/100*pi/2)+4-2*fft(5)) + rem(cyy3,max+1) + add(cyy3,1,2*cos(t/100*pi/2)-4-2*fft(12)) + rem(crr3,max+1) + add(crr3,1,flr(10*fft(2))) + rem(czz4,max+1) + add(czz4,1,0) + rem(cxx4,max+1) + add(cxx4,1,2*sin(t/100*pi/2)-4-2*fft(8)) + rem(cyy4,max+1) + add(cyy4,1,2*cos(t/100*pi/2)+4-2*fft(6)) + rem(crr4,max+1) + add(crr4,1,flr(10*fft(4))) + + end +end + +function calccol(dis) + if dis < 40 then return 15 end + if dis < 80 then return 14 end + if dis < 120 then return 13 end + if dis < 160 then return 12 end + if dis < 200 then return 11 end + if dis < 240 then return 10 end + if dis < 280 then return 9 end + if dis < 320 then return 8 end + if dis < 360 then return 7 end + if dis < 420 then return 6 end + if dis < 460 then return 5 end + if dis < 500 then return 4 end + if dis < 540 then return 3 end + if dis < 580 then return 2 end + if dis < 620 then return 1 else return 0 end +end + +function drawcell(t) + +end + +function drawtunnel() + for i=0,max-1 do + if tzz[i]<600 then + local prs=dst/(dst-tzz[i]) + local prsn=dst/(dst-tzz[i+1]) + local x=120+(txx[i]*prs) + local y=68+(tyy[i]*prs) + local cx1=120+(cxx1[i]*prs) + local cy1=68+(cyy1[i]*prs) + local cx2=120+(cxx2[i]*prs) + local cy2=68+(cyy2[i]*prs) + local cx3=120+(cxx3[i]*prs) + local cy3=68+(cyy3[i]*prs) + local cx4=120+(cxx4[i]*prs) + local cy4=68+(cyy4[i]*prs) + + local xn=120+(txx[i+1]*prsn) + local yn=68+(tyy[i+1]*prsn) + local radius=10*prs + local radiusn=10*prsn + circb(x,y,radius,calccol(tzz[i])) + if tzz[i+1]<600 then + line(x+radius,y,xn+radiusn,yn,calccol(tzz[i+1])) + line(x-radius,y,xn-radiusn,yn,calccol(tzz[i+1])) + line(x,y+radius,xn,yn+radiusn,calccol(tzz[i+1])) + line(x,y-radius,xn,yn-radiusn,calccol(tzz[i+1])) + line(x+radius/sqrt(2),y+radius/sqrt(2),xn+radiusn/sqrt(2),yn+radiusn/sqrt(2),calccol(tzz[i+1])) + line(x-radius/sqrt(2),y+radius/sqrt(2),xn-radiusn/sqrt(2),yn+radiusn/sqrt(2),calccol(tzz[i+1])) + line(x+radius/sqrt(2),y-radius/sqrt(2),xn+radiusn/sqrt(2),yn-radiusn/sqrt(2),calccol(tzz[i+1])) + line(x-radius/sqrt(2),y-radius/sqrt(2),xn-radiusn/sqrt(2),yn-radiusn/sqrt(2),calccol(tzz[i+1])) + end + circ(cx1,cy1,crr1[i]*prs,calccol(czz1[i])) + circ(cx2,cy2,crr2[i]*prs,calccol(czz2[i])) + circ(cx3,cy3,crr3[i]*prs,calccol(czz3[i])) + circ(cx4,cy4,crr4[i]*prs,calccol(czz4[i])) + end + end +end + +function TIC() + t=time()//32 + cls(0) + cycleit() + drawtunnel() + print('GET SOME DEMOSCENE INTO YOUR BLOODSTREAM') +end \ No newline at end of file diff --git a/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..dcb937be5 --- /dev/null +++ b/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,127 @@ +-- hello, aldroid here! +-- <3 to violet and fellow coders! +-- and <3 to the chat (And You!) +-- got an idea for an idea that +-- might be a bit ambitious in an +-- hour! + +C=math.cos +S=math.sin + +pxs={ +-- back +{-5,0,-3},{0,-3,-1},{5,0,-3}, +{0,3,-1}, +-- nose, +{0,1,9}, +-- rocket +{-1,0,-3}, +{1,0,-3}, +{1,-3,-8}, + +} +trs={ +-- back +{1,2,3,3},{1,3,4,4}, +-- nose +{1,2,5,4},{2,3,5,4}, +{1,4,5,3},{4,3,5,3}, +-- rocket +{6,7,8,2} +} + +function rotx(pt,a) + return { + pt[1], + pt[2]*C(a)-pt[3]*S(a), + pt[3]*C(a)+pt[2]*S(a) + } +end +function roty(pt,a) + return { + pt[1]*C(a)-pt[3]*S(a), + pt[2], + pt[3]*C(a)+pt[1]*S(a) + } +end +function rotz(pt,a) + return { + pt[1]*C(a)-pt[2]*S(a), + pt[2]*C(a)+pt[1]*S(a), + pt[3] + } +end + +function scale(pt,s) + return {pt[1]*s,pt[2]*s,pt[3]*s} +end + +function depth(p1,p2,p3) + return (p1[3]+p2[3]+p3[3])/3 +end + +function depthfirst(t1,t2) +return t1[7]0.01 and 7 or 1 +for i=1,2000 do +a=i*0.0125+t*.05 +x,y=po(a) +o,p=po(a-0.5) +o,p=o-x,p-y +v=math.min(2+fft((a/4)%30)*40,z) +c=math.abs(i//20%16-8)+1 +b=math.min(v*v*.03,3) +line(x-p*b+120,y+o*b+75,x+p*b+120,y-o*b+76,c+2) +circ(x+120,y+76,v,c) +if i>1000 and i<1100 then +circ(120+ju,76+jo,(fft(4)*60+10)*(9-(i//10)%10)*0.2,15+i) +end +end +end diff --git a/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/suule.lua b/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/suule.lua new file mode 100644 index 000000000..2b334ffa8 --- /dev/null +++ b/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/suule.lua @@ -0,0 +1,150 @@ +local rand=math.random +local pi=math.pi +local cos=math.cos +local sin=math.sin +local abs=math.abs +local flr=math.floor +local add=table.insert +local rem=table.remove + +starsx={} +starsy={} +starsc={} +clouds1={} +clouds2={} +clouds3={} + +pal={0x07,0x08,0x0c, + 0x89,0x83,0x78, + 0xc4,0xb5,0x9b, + 0xe7,0xce,0xa2, + + 0xff,0xe3,0xb2, + 0xdc,0x21,0x21, + 0x91,0x10,0x10, + 0x0d,0x16,0x3f, + + 0x29,0x36,0x6f, + 0x3b,0x5d,0xc9, + 0x41,0xa6,0xf6, + 0x73,0xef,0xf7, + + 0xf4,0xf4,0xf4, + 0x94,0xb0,0xc2, + 0x55,0x6c,0x86, + 0x33,0x3c,0x57 } + +function BOOT() + for i=0,72 do + starsx[i]=240*rand() + starsy[i]=86*rand() + starsc[i]=11+4*rand() + end +-- Silly LUA, indicies start at 0 :) + for i=1,#pal do + poke(0x03FC0+i-1,pal[i]) + end + for i=0,240 do + clouds1[i]=0 + clouds2[i]=0 + clouds3[i]=0 + end +end + +function cycleit() + rem(clouds1,240) + add(clouds1,1,flr(64*fft(0)-1)) + rem(clouds2,240) + add(clouds2,1,flr(64*fft(4)-1)) + rem(clouds3,240) + add(clouds3,1,flr(64*fft(8)-1)) +end + +function drwstrs() + vbank(0) + for i=0,72 do + pix(starsx[i],starsy[i],starsc[i]) + end +end + +function drwmnts() + vbank(0) + for i=0,239 do + _1wav=3*cos(2-(i/8.1)/4*pi) + _2wav=3*cos((i/4.7)/4*pi) + _3wav=3*cos((i/5.4)/4*pi) + line(i,60+_1wav+_2wav+_3wav,i,87,8) + _1wav=sin((i/8.2)/5*pi) + _2wav=sin((i/12.7)/5*pi) + _3wav=sin((i/3.2)/5*pi) + line(i,74+_1wav+_2wav+_3wav,i,87,9) + _1wav=sin((i/12.2)/5*pi) + _2wav=sin((i/2.7)/5*pi) + _3wav=sin((i/8.2)/5*pi) + line(i,82+_1wav+_2wav+_3wav,i,87,10) + end +end + +function drwmn() + circ(120,25,21,4) +-- circ(120,25,14,3) + elli(120,26,16,13,2) + ellib(120,26,16,12,1) + elli(120,24,16,11,4) + circ(111,18,5,2) + circ(111,19,4,0) + circ(129,18,5,2) + circ(129,19,4,0) + tri(120,25,125,29,115,29,2) + circ(111,21,1,5) + circ(129,21,1,5) +end + +-- ATTEMPT 2 + +function drwclds() + for j=0,240 do + if clouds3[j] > 0 then + circ(j,26,clouds3[j],13) + circ(j,28,clouds3[j],12) + end + if clouds2[j] > 0 then + circ(j,36,clouds2[j],13) + circ(j,34,clouds2[j],12) + end + if clouds1[j] > 0 then + circ(j,42,clouds1[j],13) + circ(j,40,clouds1[j],12) + end + end +end + +function TIC() + timepass=time()//20 + cls(0) + drwstrs() + drwmnts() + drwmn() + cycleit() + drwclds() + +end + +function SCN(row) + if row > 87 then + vbank(0) + for index=0,239 do + colour=pix(index,87-(row-87)*2) + pix(index,row,colour) + end + poke(0x03FF9, 3*sin((87-row+timepass/6)/4*pi)) + else + poke(0x03FF9, 0) + end +end + + + + + + diff --git a/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..c6a78e824 --- /dev/null +++ b/shader_file_sources/2023_09_18_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,95 @@ +carpetarr={} +for i=1,16 do + carpetarr[i]={} +end + +sin=math.sin +cos=math.cos +function TIC() + t=time()/100 + cls(4) + rect(0,0,240,80,12) + for i=0,26 do + for j=0,8 do + rect(i*9,j*9,8,8,10) + end + end + + --checkout + rect(0,90,200,80,15) + rectb(0,91,200,45,0) + rect(0,75,240,20,14) + rectb(0,75,240,20,13) + rectb(1,76,238,18,13) + + + print("NOT TESCO",30,10,8,true,3) + print("NOT TESCO",32,12,9,true,3) + + for i=1,3 do + rect(16+i*18,28,10,4,1) + rect(17+i*18,29,10,4,2) + end + + for i=1,5 do + rect(88+i*18,28,10,4,1) + rect(89+i*18,29,10,4,2) + end + + milk(220-t*8%300,15) + jam(270-t*8%360,2) + ciggies(220-t*8%310,34) + pop(320-t*8%540,13) + cereal(320-t*8%500,0) + +end + +function pop(x,y) + rect(120+x,20+y,25,50,4) + rect(122+x,17+y,21,3,4) + rect(124+x,15+y,17,3,4) + rect(122+x,70+y,21,3,4) + rect(124+x,72+y,17,3,4) + rect(124+x,70+y,17,3,3) + rect(122+x,20+y,21,50,3) + rectb(120+x,35+y,25,20,1) + rect(121+x,36+y,23,18,2) + rect(130+x,11+y,5,4,1) +end + +function cereal(x,y) + rect(80+x,40+y,40,50,4) + rectb(80+x,40+y,40,50,3) + tri(85+x,60+y,115+x,60+y,100+x,80+y,2) + tri(87+x,60+y,113+x,60+y,100+x,78+y,3) + circ(93+x,60+y,7,2) + circ(106+x,60+y,7,2) + circ(96+x,62+y,7,3) + circ(103+x,62+y,7,3) +end + +function jam(x,y) + rect(60+x,50+y,25,35,2) + rectb(60+x,50+y,25,35,12) + rectb(61+x,51+y,23,33,13) + rect(58+x,45+y,29,5,1) + rect(62+x,60+y,21,8,13) +end + +function milk(x,y) + rect(20+x,20+y,20,50,12) + rect(40+x,40+y,10,30,12) + rect(40+x,22+y,8,5,12) + rect(45+x,25+y,5,16,12) + rect(30+x,16+y,8,4,6) + rect(20+x,46+y,30,12,7) + rect(22+x,48+y,26,8,6) +end + +function ciggies(x,y) + rect(70+x,20+y,20,30,12) + rect(70+x,30+y,20,2,4) + for i=0,20 do + line(70+x,32+i+y,89+x,32+i+y,7+i%2) + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/lexbailey.lua b/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/lexbailey.lua new file mode 100644 index 000000000..39d35638b --- /dev/null +++ b/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/lexbailey.lua @@ -0,0 +1,174 @@ +-- LIVE CODED triangle pattern thing +-- by Lex Bailey +-- 25/09/2023 - FieldFX Byte Jam + +-- oh my! we're live! :) +-- This is my first ever live code +-- thing, super excited! + +sin=math.sin +cos=math.cos +tau=6.283 + +-- Taken from stack overflow :D +-- https://stackoverflow.com/questions/68317097/how-to-properly-convert-hsl-colors-to-rgb-colors-in-lua +function hslToRgb(h, s, l) + h = h / 360 + s = s / 100 + l = l / 100 + + local r, g, b; + + if s == 0 then + r, g, b = l, l, l; -- achromatic + else + local function hue2rgb(p, q, t) + if t < 0 then t = t + 1 end + if t > 1 then t = t - 1 end + if t < 1 / 6 then return p + (q - p) * 6 * t end + if t < 1 / 2 then return q end + if t < 2 / 3 then return p + (q - p) * (2 / 3 - t) * 6 end + return p; + end + + local q = l < 0.5 and l * (1 + s) or l + s - l * s; + local p = 2 * l - q; + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + end + + if not a then a = 1 end + return r * 255, g * 255, b * 255, a * 255 +end + + +function cp_tri(x,y,a,r,c) + local x1=x+r*(sin(a)) + local y1=y+r*(cos(a)) + local x2=x+r*(sin(a+(tau/3))) + local y2=y+r*(cos(a+(tau/3))) + local x3=x+r*(sin(a+((tau/3)*2))) + local y3=y+r*(cos(a+((tau/3)*2))) + tri(x1,y1,x2,y2,x3,y3,c) +end + +function avg_fft() + local tot = 0 + for i=0,20 do + tot=tot+fft(i) + end + return tot +end + +function palette(n) + local addr=0x3fc0 + for i=0,15 do + local o=i*3 + local l=(i*100)/15 + if l > 100 then + l=100 + end + local r,g,b = hslToRgb(n,100,l) + poke(addr+o+0, r) + poke(addr+o+1, g) + poke(addr+o+2, b) + end + local r,g,b = hslToRgb((n+180)%360,100,50) + poke(addr+(15*3)+0, r) + poke(addr+(15*3)+1, g) + poke(addr+(15*3)+2, b) +end + +function next(c) + local c2=(c+1)%15 + if c2 == 0 then + c2=1 + end + return c2 +end + +function prev(c) + local c2=(c-1) + if c2 == 0 then + c2=14 + end + return c2 +end + +function TIC() + cls(0) + local t=time()/60 + cp_tri(180,67,t/50,50,12) + cp_tri(60,67,t/50,50,12) + cp_tri(120,67,t/50,80,6) + palette(t%360) + local t2 = time()/1000 + local af=avg_fft()*2 + local col=0 + for x=0,11 do + for y=-3,10 do + col=next(col) + angle=0 + local t6=t2%6 + if t6 < 1 then + angle=angle+((tau/3)*t6) + end + local off_x=0 + local off_y=0 + if t6 > 1.5 and t6 < 2.5 then + off_x = (t6-1.5)*25 + end + if t6 > 4.5 and t6 < 5.5 then + off_y = (t6-4.5)*50 + end + y2=0 + if y%2==1 then + angle=angle+(tau/2) + y2=10 + end + local sz=10 + cp_tri(x*25+off_x,(y*25)+y2,angle,sz+af,col) + col=next(col) + cp_tri((x*25)+12,(y*25)+y2+25+off_y,angle,sz-af,col) + end + col=next(col) + end + + local t3=(time()/10) + for i=1,4 do + cp_tri(((t3+(i*70))%300)-50, -10+(i*30), (-t3/30)+((tau/4)*i), 20+(af*5), 15) + cp_tri(((t3+(i*70))%300)-50, -10+(i*30), (-t3/30)+((tau/4)*i), 20-(af*5), 14) + end + + for x=0,11 do + for y=-3,10 do + col=prev(col) + angle=0 + local t6=t2%6 + if t6 < 1 then + angle=angle-((tau/3)*t6) + end + local off_x=0 + local off_y=0 + if t6 > 1.5 and t6 < 2.5 then + off_x = (t6-1.5)*25 + end + if t6 > 4.5 and t6 < 5.5 then + off_y = (t6-4.5)*50 + end + y2=0 + if y%2==1 then + angle=angle+(tau/2) + y2=10 + end + local sz=4 + cp_tri(x*25+off_x,(y*25)+y2,angle,sz+af,col) + col=prev(col) + cp_tri((x*25)+12,(y*25)+y2+25+off_y,angle,sz-af,col) + end + col=prev(col) + end + +end + diff --git a/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/ompuco.lua b/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/ompuco.lua new file mode 100644 index 000000000..335b5790c --- /dev/null +++ b/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/ompuco.lua @@ -0,0 +1,47 @@ +function TIC()t=time()/512 + +hresx = 120 +hresy = 68 + +cls() + +s = math.sin +c = math.cos + +yoff=0 + +ff = 0 + +for i=0,128 do + +f = 8 + +px1 = s(i/f+t) +py1 = c(i/f+t) + +px2 = s((i+1)/f+t) +py2 = c((i+1)/f+t) + + +xoff = c(i/40 + t-1)*32*(1+ff*.1) + + +px1 = px1 * 32 + hresx + xoff +py1 = py1 * 32 + hresy + yoff + +ff = fft((1+(i)/3.0+t)%10)*24 +yoff = s(i/40 + t-1)*32*(1+ff*.1) + +yoff = yoff+ ff + +px2 = px2 * 32 + hresx + xoff +py2 = py2 * 32 + hresy + yoff + +j = (i/8+t*5) % 18 + 2 + +line(px1,py1,px2,py2,j) + +print("HEHE") + +end +end \ No newline at end of file diff --git a/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/suule.lua b/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/suule.lua new file mode 100644 index 000000000..23a3979a9 --- /dev/null +++ b/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/suule.lua @@ -0,0 +1,262 @@ +local rand=math.random +local pi=math.pi +local cos=math.cos +local sin=math.sin +local sqrt=math.sqrt +local abs=math.abs +local flr=math.floor +local add=table.insert +local rem=table.remove + +pal={0x07,0x08,0x0c, + 0x3d,0x14,0x14, + 0x58,0x32,0x20, + 0xff,0xe3,0xb2, + + 0x43,0xc0,0x48, + 0x1a,0xa1,0x1f, + 0x1b,0x78,0x1f, + 0x0b,0x3f,0x0d, + + 0x0d,0x16,0x3f, + 0x29,0x36,0x6f, + 0x3b,0x5d,0xc9, + 0x41,0xa6,0xf6, + + 0xf4,0xf4,0xf4, + 0x94,0xb0,0xc2, + 0x55,0x6c,0x86, + 0x33,0x3c,0x57 } + +clouds1={} +clouds2={} +clouds3={} +clouds4={} +clouds5={} +clouds6={} +clouds7={} +clouds8={} +clouds9={} +cloudspos={} + +local spd=30 +local dst=1200 + +--Are you ready to fly tonight? +function BOOT() + for i=0,300 do + clouds1[i]=0 + clouds2[i]=0 + clouds3[i]=0 + clouds4[i]=0 + clouds5[i]=0 + clouds6[i]=0 + clouds7[i]=0 + clouds8[i]=0 + clouds9[i]=0 + cloudspos[i]=i*spd + end + for i=1,#pal do + poke(0x03FC0+i-1,pal[i]) + end +end + +function cycleclouds() + for i=0,300 do + cloudspos[i]=cloudspos[i]+spd + end + if cloudspos[300]>1600 then + rem(cloudspos,300) + add(cloudspos,1,0) + rem(clouds1,300) + add(clouds1,1,30*fft(0)) + rem(clouds2,300) + add(clouds2,1,30*fft(2)) + rem(clouds3,300) + add(clouds3,1,30*fft(4)) + rem(clouds4,300) + add(clouds4,1,30*fft(6)) + rem(clouds5,300) + add(clouds5,1,30*fft(8)) + rem(clouds6,300) + add(clouds6,1,30*fft(10)) + rem(clouds7,300) + add(clouds7,1,30*fft(12)) + rem(clouds8,300) + add(clouds8,1,30*fft(14)) + rem(clouds9,300) + add(clouds9,1,30*fft(16)) + end +end + +function drawclouds() + for i=0,300 do + if cloudspos[i]1 then + elli(xshft-2*prs,yshft+2*prs,5*rad,2*rad,13) + elli(xshft,yshft,5*rad,2*rad,12) end + xshft=120+10*prs + yshft=68+20*prs + rad=clouds2[i]*prs + if rad>1 then + elli(xshft-2*prs,yshft+2*prs,5*rad,2*rad,13) + elli(xshft,yshft,5*rad,2*rad,12) end + xshft=120-10*prs + yshft=68+20*prs + rad=clouds3[i]*prs + if rad>1 then + elli(xshft-2*prs,yshft+2*prs,5*rad,2*rad,13) + elli(xshft,yshft,5*rad,2*rad,12) end + xshft=120+20*prs + yshft=68+20*prs + rad=clouds4[i]*prs + if rad>1 then + elli(xshft-2*prs,yshft+2*prs,5*rad,2*rad,13) + elli(xshft,yshft,5*rad,2*rad,12) end + xshft=120-20*prs + yshft=68+20*prs + rad=clouds5[i]*prs + if rad>1 then + elli(xshft-2*prs,yshft+2*prs,5*rad,2*rad,13) + elli(xshft,yshft,5*rad,2*rad,12) end + xshft=120+30*prs + yshft=68+20*prs + rad=clouds6[i]*prs + if rad>1 then + elli(xshft-2*prs,yshft+2*prs,5*rad,2*rad,13) + elli(xshft,yshft,5*rad,2*rad,12) end + xshft=120-30*prs + yshft=68+20*prs + rad=clouds7[i]*prs + if rad>1 then + elli(xshft-2*prs,yshft+2*prs,5*rad,2*rad,13) + elli(xshft,yshft,5*rad,2*rad,12) end + xshft=120+40*prs + yshft=68+20*prs + rad=clouds8[i]*prs + if rad>1 then + elli(xshft-2*prs,yshft+2*prs,5*rad,2*rad,13) + elli(xshft,yshft,5*rad,2*rad,12) end + xshft=120-40*prs + yshft=68+20*prs + rad=clouds9[i]*prs + if rad>1 then + elli(xshft-2*prs,yshft+2*prs,5*rad,2*rad,13) + elli(xshft,yshft,5*rad,2*rad,12) end + end + end +end + +function quad(x1,y1,x2,y2,x3,y3,x4,y4,col) + tri(x1,y1,x2,y2,x3,y3,col) + tri(x3,y3,x4,y4,x2,y2,col) +end + +function drawrotor(tx1,ty1,tim_r) + switch=tim_r%4 + sigx=1 sigy=1 + if switch==0 then sigx=1 sigy=1 end + if switch==1 then sigx=1 sigy=-1 end + if switch==2 then sigx=-1 sigy=-1 end + if switch==3 then sigx=-1 sigy=1 end + for i=1,19 do + line(120+tx1+i*sigx,77+ty1-sqrt(20*20-i*i)*sigy,120+tx1+i*sigx,77+ty1-sqrt(20*20-(i+1)*(i+1))*sigy,12) + line(120+tx1-i*sigx,77+ty1+sqrt(20*20-i*i)*sigy,120+tx1-i*sigx,77+ty1+sqrt(20*20-(i+1)*(i+1))*sigy,12) + end + for i=1,17 do + line(120+tx1+i*sigx,77+ty1-sqrt(18*18-i*i)*sigy,120+tx1+i*sigx,77+ty1-sqrt(18*18-(i+1)*(i+1))*sigy,13) + line(120+tx1-i*sigx,77+ty1+sqrt(18*18-i*i)*sigy,120+tx1-i*sigx,77+ty1+sqrt(18*18-(i+1)*(i+1))*sigy,13) + end + for i=1,14 do + line(120+tx1+i*sigx,77+ty1-sqrt(15*15-i*i)*sigy,120+tx1+i*sigx,77+ty1-sqrt(15*15-(i+1)*(i+1))*sigy,13) + line(120+tx1-i*sigx,77+ty1+sqrt(15*15-i*i)*sigy,120+tx1-i*sigx,77+ty1+sqrt(15*15-(i+1)*(i+1))*sigy,13) + end + for i=1,11 do + line(120+tx1+i*sigx,77+ty1-sqrt(12*12-i*i)*sigy,120+tx1+i*sigx,77+ty1-sqrt(12*12-(i+1)*(i+1))*sigy,14) + line(120+tx1-i*sigx,77+ty1+sqrt(12*12-i*i)*sigy,120+tx1-i*sigx,77+ty1+sqrt(12*12-(i+1)*(i+1))*sigy,14) + end + for i=1,8 do + line(120+tx1+i*sigx,77+ty1-sqrt(9*9-i*i)*sigy,120+tx1+i*sigx,77+ty1-sqrt(9*9-(i+1)*(i+1))*sigy,14) + line(120+tx1-i*sigx,77+ty1+sqrt(9*9-i*i)*sigy,120+tx1-i*sigx,77+ty1+sqrt(9*9-(i+1)*(i+1))*sigy,14) + end +end + +function drawplane(xs,ys) + quad(107+xs,90+ys,109+xs,90+ys,105+xs,107+ys,107+xs,107+ys,1) + quad(132+xs,90+ys,134+xs,90+ys,134+xs,107+ys,136+xs,107+ys,1) + quad(105+xs,107+ys,136+xs,107+ys,105+xs,109+ys,136+xs,109+ys,1) + quad(101+xs,101+ys,105+xs,101+ys,101+xs,111+ys,105+xs,111+ys,15) + quad(136+xs,101+ys,140+xs,101+ys,136+xs,111+ys,140+xs,111+ys,15) +-- Lower wing + quad(64+xs,91+ys,176+xs,91+ys,45+xs,97+ys,195+xs,97+ys,6) + line(45+xs,97+ys,195+xs,97+ys,4) +-- Struts + line(65+xs,68+ys,102+xs,91+ys,15) + line(65+xs,91+ys,102+xs,68+ys,15) + quad(65+xs,66+ys,67+xs,66+ys,65+xs,92+ys,67+xs,92+ys,1) + quad(100+xs,66+ys,102+xs,66+ys,100+xs,92+ys,102+xs,92+ys,1) + line(54+xs,68+ys,98+xs,95+ys,14) + line(54+xs,95+ys,98+xs,68+ys,14) + quad(54+xs,66+ys,57+xs,66+ys,54+xs,96+ys,57+xs,96+ys,1) + quad(96+xs,66+ys,99+xs,66+ys,96+xs,96+ys,99+xs,96+ys,1) + line(139+xs,68+ys,174+xs,91+ys,15) + line(139+xs,91+ys,174+xs,68+ys,15) + quad(173+xs,66+ys,175+xs,66+ys,173+xs,92+ys,175+xs,92+ys,1) + quad(139+xs,66+ys,141+xs,66+ys,139+xs,92+ys,141+xs,92+ys,1) + line(142+xs,68+ys,185+xs,95+ys,14) + line(142+xs,95+ys,185+xs,68+ys,14) + quad(183+xs,66+ys,186+xs,66+ys,183+xs,96+ys,186+xs,96+ys,1) + quad(142+xs,66+ys,145+xs,66+ys,142+xs,96+ys,145+xs,96+ys,1) +-- Now the upper wing + quad(64+xs,64+ys,176+xs,64+ys,45+xs,68+ys,195+xs,68+ys,5) + line(45+xs,68+ys,195+xs,68+ys,4) +--Can't fly without an engine + circ(120+xs,82+ys,11,15) + circ(120+xs,83+ys,11,14) + elli(120+xs,84+ys,11,9,13) + circ(120+xs,88+ys,12,7) + circ(120+xs,90+ys,12,6) + elli(120+xs,92+ys,12,9,5) + quad(120+xs,72+ys,123+xs,72+ys,117+xs,75+ys,122+xs,75+ys,12) +-- Rest of the plane :) + quad(74+xs,110+ys,166+xs,110+ys,65+xs,118+ys,175+xs,118+ys,5) + line(65+xs,118+ys,175+xs,118+ys,4) + quad(108+xs,92+ys,133+xs,92+ys,114+xs,110+ys,127+xs,110+ys,5) + elli(120+xs,82+ys,9,3,1) + elli(120+xs,83+ys,9,2,0) +-- Oh right this guy... + elli(120+xs,83+ys,6,2,2) + circ(120+xs,78+ys,4,3) + circ(120+xs,76+ys,4,2) +-- And the tail... + circ(120+xs,112+ys,7,6) + elli(120+xs,110+ys,6,4,5) + elli(120+xs,93+ys,3,24,4) +end + +function calcwoba(t_wob) + return sin(t_wob/pi) +end +function calcwobb(t_wob) + return 3*cos(t_wob/pi) +end + + +function TIC() + cls(10) + rect(0,90,240,90,7) + rect(0,105,240,90,6) + rect(0,120,240,90,5) + cycleclouds() + drawclouds() + asft=calcwoba(time()/30) + bsft=calcwobb(time()/60) + drawrotor(asft,bsft,time()//80) + drawplane(asft,bsft) +end + + diff --git a/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/vurpo.lua b/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/vurpo.lua new file mode 100644 index 000000000..a2b9acc4f --- /dev/null +++ b/shader_file_sources/2023_09_25_byte_jam_monday_night_bytes/vurpo.lua @@ -0,0 +1,36 @@ +function tile(x,y,z) + if (x+8&18==0)~=(y+8&18==0) then + return 3+z + else + return 13+z + end +end + +function rot(x,y,t) + return x*math.cos(t)-y*math.sin(t), x*math.sin(t)+y*math.cos(t) +end + +function BOOT() + for i=0,15 do + poke(16320+3*i,i*16) + poke(16321+3*i,50) + poke(16322+3*i,math.min(128-i*8,128+i*8)) + end +end + +function TIC() + t=time()/1000 + f=fft(1) + for x=0,239 do for y=0,136 do + x0 = x-120 + y0 = y-68 + l = math.sqrt(x0*x0+y0*y0)/100 + x1,y1 = rot(x0,y0,-2/(l+0.1)*f*2+t) + pix(x,y,tile( + math.floor(x1), + math.floor(y1), + -f*3-l*7 + )) + end end + circ(120,68,15+f*40,-f*5)--3+f*6+l+t) +end \ No newline at end of file diff --git a/shader_file_sources/2023_09_30_shader_jam_piilanit/pumpuli.glsl b/shader_file_sources/2023_09_30_shader_jam_piilanit/pumpuli.glsl new file mode 100644 index 000000000..9ba884895 --- /dev/null +++ b/shader_file_sources/2023_09_30_shader_jam_piilanit/pumpuli.glsl @@ -0,0 +1,251 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float sdHex( in vec2 p, in float r ) +{ + const vec3 k = vec3(-0.866025404,0.5,0.577350269); + p = abs(p); + p -= 2.0*min(dot(k.xy,p),0.0)*k.xy; + p -= vec2(clamp(p.x, -k.z*r, k.z*r), r); + return length(p)*sign(p.y); +} + +float flog( in float a ) { + return pow(2.71828,log2(a)); +} + +vec3 hsl2rgb( in vec3 c ) +{ + vec3 rgb = clamp( abs(mod(c.x*6.0+vec3(0.0,4.0,2.0),6.0)-3.0)-1.0, 0.0, 1.0 ); + return c.z + c.y * (rgb-0.5)*(1.0-abs(2.0*c.z-1.0)); +} + +vec3 HueShift (in vec3 Color, in float Shift) +{ + vec3 P = vec3(0.55735)*dot(vec3(0.55735),Color); + vec3 U = Color-P; + vec3 V = cross(vec3(0.55735),U); + Color = U*cos(Shift*6.2832) + V*sin(Shift*6.2832) + P; + return vec3(Color); +} + +vec3 rgb2hsl( in vec3 c ){ + float h = 0.0; + float s = 0.0; + float l = 0.0; + float r = c.r; + float g = c.g; + float b = c.b; + float cMin = min( r, min( g, b ) ); + float cMax = max( r, max( g, b ) ); + l = ( cMax + cMin ) / 2.0; + if ( cMax > cMin ) { + float cDelta = cMax - cMin; + //s = l < .05 ? cDelta / ( cMax + cMin ) : cDelta / ( 2.0 - ( cMax + cMin ) ); Original + s = l < .0 ? cDelta / ( cMax + cMin ) : cDelta / ( 2.0 - ( cMax + cMin ) ); + if ( r == cMax ) { + h = ( g - b ) / cDelta; + } else if ( g == cMax ) { + h = 2.0 + ( b - r ) / cDelta; + } else { + h = 4.0 + ( r - g ) / cDelta; + } + if ( h < 0.0) { + h += 6.0; + } + h = h / 6.0; + } + return vec3( h, s, l ); +} + +float sum( in vec2 a) { + return a.x+a.y; +} +float sum( in vec3 a) { + return a.x+a.y+a.z; +} +float sum( in vec4 a) { + return a.x+a.y+a.z+a.w; +} +float sdEqTri( in vec2 p, in float r ) +{ + const float k = sqrt(3.0); + p.x = abs(p.x) - r; + p.y = p.y + r/k; + if( p.x+k*p.y>0.0 ) p = vec2(p.x-k*p.y,-k*p.x-p.y)/2.0; + p.x -= clamp( p.x, -2.0*r, 0.0 ); + return -length(p)*sign(p.y); +} + +float ang; +float zoa; +float ang2; + +void main(void) +{ + vec2 uv = out_texcoord; + vec2 uv_ = uv; + uv_ *= -1; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 uv2 = out_texcoord; + uv2 -= 0.5; + uv2 /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + float fGt = mod(fGlobalTime/20,1)*2-1; + + uv *=3; + + vec2 m; + m.x = atan(uv.y / uv.x) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + //m.x += fGt*0.1; + //m.y += fGt*0.25; + + float fft = texture(texFFTSmoothed,flog(abs(uv.x)*.2)).r*40; + + float smf2 = texture(texFFTSmoothed,flog(abs(m.x)*.03+.1)).r*40; + float smf = texture(texFFTSmoothed,d/20).r*40; + float boom = smoothstep(0,1,texture(texFFTSmoothed,0.005).r*40); + float tsak = smoothstep(0,1,texture(texFFTSmoothed,0.01).r*30); + + boom = smoothstep(1.0,20.0,boom*10); + tsak = smoothstep(1,20,tsak*20); + + ang += -3.1415/2+fGt;//+smf;//(smf*1.1);//*4+boom*2-tsak*2; + ang2+= -3.1415/2; + + vec2 rot = uv; + + rot.x=sin(ang)*uv.x+cos(ang)*uv.y; + rot.y=sin(ang)*uv.y-cos(ang)*uv.x; + + zoa=0;//fGt*3.1415; + + float zoom = 1+tsak*.8-boom*.5; + vec2 zoof = vec2(0+tsak*.2,0-boom*.4); + vec2 zoor = zoof; + zoor.x=sin(zoa)*zoof.x+cos(zoa)*zoof.y; + zoor.y=sin(zoa)*zoof.y-cos(zoa)*zoof.x; + + uv2 *= zoom; + vec2 rot2 = uv2; + + rot2.x=sin(ang2)*uv2.x+cos(ang2)*uv2.y; + rot2.y=sin(ang2)*uv2.y-cos(ang2)*uv2.x; + + uv2 = rot2*1.1; + + uv2 *= vec2(v2Resolution.y / v2Resolution.x, 1); + uv2 += 0.5; + + vec4 prev= texture(texPreviousFrame,uv2); + vec4 pnof= texture(texPreviousFrame,out_texcoord*vec2(1,-1)); + + vec4 moi = vec4(900); + vec4 nor = texture(texTex2,rot+vec2(0.5,0.5)); + + vec2 moiu=-uv; + + float fy = texture(texFFT,flog(abs(m.y)*.8)+fGt*10-tsak).r*(1*(1+abs(m.y)*40)); + float fx = texture(texFFT,flog(abs(m.x)*.4)).r*(10*(1+abs(m.x)*40)); + float fys = texture(texFFTSmoothed,flog(abs(m.y)*.8)+fGt).r*(10*abs(m.y*40)); + float fxs = texture(texFFTSmoothed,flog(abs(m.x)*.4)).r*(100*(1+abs(m.x)*4)); + + vec4 moi2= texture(texTex3,vec2(fGt,-fGt)*rot*4+vec2(0.5,0.5)); + vec4 nor2= texture(texTex4,vec2(fGt,-fGt)*rot*4+vec2(0.5,0.5)); + + + //vec4 moi2= texture(texTex3,(moiu)*(smf2*2+.5)); + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + vec4 c = moi; + c-=fy*40; + c+=vec4(fx*abs(rot.y)); + c+=step(sdEqTri(rot,.2+tsak*.1),0+fx*0.01)*2; + c/=step(sdEqTri(rot,.18+tsak*.1),0+fx*0.01)*3; + + c*=moi+vec4(fx,fy*5+fxs/2,fxs,0); + c+=-400*step(sdHex(rot,0.4),m.y); + c = clamp(c,-0.0,1.0); + vec4 sub = vec4(1-m.y*0.5); + vec4 add = vec4(fxs*.2,fxs*.01,fxs*.1,1); + vec4 mul = vec4(8,0.8,.4,1); + c *= mul;//*(nor.r); + c += add+vec4(.1,.02,.05,1); + c = clamp(c,-1.0,1.0); + c -=sub; + c *=4; + c = vec4(HueShift(c.rgb,fGt*0.05+tsak*.1),1); + + vec4 hsl = vec4(rgb2hsl(c.rgb),1); + hsl = vec4(hsl.x*0.8+boom*.01,hsl.y*.5,hsl.z,1); + vec4 rgb = vec4(hsl2rgb(hsl.rgb),1); + rgb = clamp(rgb,0,1); + vec3 phsl = rgb2hsl(prev.rgb*.95); + rgb += vec4(hsl2rgb(vec3(phsl.x+uv.x/20,phsl.y*.9,phsl.z*.99)),1); + + rgb*=(1-prev*.2)*clamp(boom,1.0,1.05); + + vec4 outside = vec4(abs(m.y)*fy*4); + + outside = clamp(outside,0.0,1.0); + + //outside*=step((100+sum(prev.rgb))*-sdEqTri(uv,1),0); + //outside+=step(sum(rgb.rgb)*-sdEqTri(uv,1),0)*-4*fxs; + //rgb *=step( sdHex(uv,.3*(1+fx*.4)),0); + rgb *=sdEqTri(uv,.5)*-4; + + rgb *=((1+clamp(fxs,0.0,1.0))*fx*.8)*(1-d); + + float kes = float(abs(uv.x)>.4)*.8+.2; + + vec4 comp = vec4(0); + + vec4 vari = vec4(hsl2rgb(vec3(.9-tsak*.4,1,.7)),1); + + comp = -fys*outside+rgb+(sum(rgb)/10*fx)*(rgb+prev*20); + comp = clamp(comp,0.0,1.0); + comp /= vec4(step(sdEqTri(rot,0.8+tsak*.2),0)); + comp += vec4(step(sdHex(rot,0.4+fx*0.01),0)); + comp -= vec4(step(sdHex(rot,0.38-fx*0.04),0)); + comp += (step(sdEqTri(uv,.8+fx*.1),0))*vari; + comp -= (step(sdEqTri(uv,.74-fx*.01),0)); + comp *= 1+prev*.8; + comp = clamp(comp,0.0,1.0); + comp += vec4(hsl2rgb(vec3(phsl.x,phsl.y*.3,phsl.z*.1))*.8,1)*vec4(1,.8,1,1); + comp *= 0.5+fys*.5; + comp += pnof*.5; + + out_color = comp; + //out_color +=moi2*abs(dot(nor2.xyz,vec3(cos(abs(fGt+2)*10)*8,sin(abs(fGt+2)*10)*8,-.5))); + //out_color = vec4(step(sdHex(rot,1+fys*1),0)); + //out_color *= vec4(kes);//vec4(smf2); + //out_color = vec4(float((uv.x+1)/2>fGt)); +} \ No newline at end of file diff --git a/shader_file_sources/2023_10_02_shader_jam_monday_night_bytes/sender_mondaynightbytes_aldroid.glsl b/shader_file_sources/2023_10_02_shader_jam_monday_night_bytes/sender_mondaynightbytes_aldroid.glsl new file mode 100644 index 000000000..7a4485c67 --- /dev/null +++ b/shader_file_sources/2023_10_02_shader_jam_monday_night_bytes/sender_mondaynightbytes_aldroid.glsl @@ -0,0 +1,119 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rot(float a) { + return mat2(cos(a),-sin(a),sin(a),cos(a)); +} + +vec3 plas( vec2 v, float time ) +{ + v.x=sin(v.x*3+sin(v.y))/3; + v.y=cos(v.y*3+cos(v.x/3))/4; + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 )*0.2; + return vec4( sin(c * 0.12 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ).xyz; +} + +vec3 plas2(vec2 uv) { + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec3 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + return t ; +} + +float boll(vec3 p) { + + return length(p)-1-texture(texFFTSmoothed,0.1).r*10; +} + +float PI=3.1415; + +float gl=1e7; +float bl=0; + +vec2 min2(vec2 a, vec2 b) { + return a.x0?vec3(0.6,0.7,0.1):vec3(0.7,0.1,0.74); + + vec3 col=plas2(uv).xxx;// texture(texPreviousFrame,puv).gbr*vec3(0.97,0.97,0.6); + if (d.x< 0.01) { + vec3 p=ro+rd*t; + vec3 n=gn(p); + if (d.y==1) { + col=vec3(texture(texFFT,0.1).r>0.001?1:0)*dot(n,ld)*100; + } else if (d.y==2) { + col=plas2(vec2(bl,bl)/10).y*barcol; + } + } + + col += exp(-gl*gl*gl*10)*barcol; + + out_color.rgb = col; +} \ No newline at end of file diff --git a/shader_file_sources/2023_10_02_shader_jam_monday_night_bytes/sender_mondaynightbytes_alia.glsl b/shader_file_sources/2023_10_02_shader_jam_monday_night_bytes/sender_mondaynightbytes_alia.glsl new file mode 100644 index 000000000..bc7954da9 --- /dev/null +++ b/shader_file_sources/2023_10_02_shader_jam_monday_night_bytes/sender_mondaynightbytes_alia.glsl @@ -0,0 +1,113 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define rot2d(p,a) p=cos(a)*p+sin(a)*vec2(-p.y,p.x); +#define pi 3.142 +#define eps 0.001 +#define t fGlobalTime + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float smin(float a,float b, float k) { + float c=clamp(.5+.5*(b-a)/k, 0., 1.); + return mix(b,a,c) - k*c*(1-c); +} + +float box(vec3 p, float s, float r) { + p=abs(p)-s; + return length(max(p, 0.)) + min(max(p.x,max(p.y,p.z)),0.)-r; +} + +vec3 hsl2rgb(vec3 h) { + vec3 r=clamp(abs(mod(h.x*6.+vec3(0,4,2), 6.) - 3.) - 1., 0., 1.); + return h.z + h.y * (r-.5) * (1.-abs(2.*h.z - 1.)); +} + +vec2 df(vec3 p) { + float a=p.z; + //rot2d(p.xz,(a+t)/160.); + //rot2d(p.yz,(a+t*1.15)/160.); + vec3 q=p; + vec2 e = vec2(10000,1); + for (int i=0;i<8;i++) { + float l=sin(texture(texFFTIntegrated, i/8.)*4.).x; + l=pow(abs(l),5.)*sign(l)*.25+.5; + rot2d(p.xy, 1.); + rot2d(p.xz, 1.); + e.x = smin(e.x, + box(p+vec3( + sin(t+i), + sin((t*1.153+i)*1.2), + sin((t*1.2535+i)*1.3)), l/2., .2), .1); + } + p=q; + p.x+=sin(p.z/8.+t)/1.5; + p.y+=sin(p.z/8.+t*1.24)*1.5; + vec2 d=vec2(-length(p.xy)+3, 0); + + d=d.x0.5,s=rand()*3+5} +end + +xbase=120 + +function fishy() + for i=1,#f do + local f=f[i] + l=f.x+(f.l and f.s or -f.s)*1.5 + r=f.x+(f.l and -f.s or f.s) + tri( + f.x,f.y+3, + f.x,f.y-3, + r,f.y, + 8+(t/10+i)%4) + tri( + f.x,f.y+3, + f.x,f.y-3, + (f.x/2+l/2),f.y, + 8+(t/10+i+1)%4) + tri( + l,f.y+3, + l,f.y-3, + f.x/2+l/2,f.y, + 8+(t/10+i+1)%4) + + f.x=((f.x+(f.l and -1 or 1)+10)%260)-10 + f.y=f.y+sin(i+t/15)/2 + end +end + +function TIC() + vbank(0) + local s=sin(t/41)^7*65+65 + local x=sin(t/40)*s + local y=cos(t/40)*s + circ(120+x,68+y,8,(-t*.4)%14+1) + x=sin(t/40+pi)*s + y=cos(t/40)*s + circ(120+x,68+y,8,(-t*.4)%14+1) + + if t%3==0 then + memcpy(0x4000,16320+3,45) + memcpy(16320+3,0x4003,42) + memcpy(16320+42,0x4000,3) + end + + vbank(1) + cls() + x=120+sin(t/16)^3*30 + y=68+cos(t/8)*20 + local x2=120+sin(t/16-.3)^3*30 + local y2=68+cos(t/8-.3)*20 + local x3=120+sin(t/16-.2)^3*30 + local y3=68+cos(t/8-.2)*20 + + rect(x-20,y,40,80,3) + rect(x-20,y+45,40,5,2) + --ears. Gotta have cat ears + elli(x-25,y-33,15,22,3) + elli(x-25,y-33,12,19,2) + elli(x+25,y-33,15,22,3) + elli(x+25,y-33,12,19,2) + + circ(x,y+110,60,3) + elli(x,y+2,50,40,2) + elli(x,y,50,40,3) + circ(x-20,y-12,15,12) + circ(x+20,y-12,15,12) + circ(x2-20,y2-12,5,15) + circ(x3+20,y3-12,5,15) + + elli(x,y+17,25,12,12) + rect(x-25,y+5,52,12,3) + elli(x-12,y+27,1,7,12) + --elli(x+12,y+25,2,7,12) + + circ(x3,y3+52,5,4) + line(x3,y3+52,x3,y3+57,14) + + --print("seafood steve",0,105,15,0,3) + --print("they're all about the fish",80,122,15,0,1) + for i=0,11 do + local c=i==11 and 12 or 15-i + print("seafood steve",sin(t/8+i/2)*4,115-i+cos(t/8+i/2)*4,c,0,3) + print("they're all about the fish",80+cos(t/8+i/2)*2,133-i+sin(t/8+i/2)*2,c,0,1) + end + fishy() + t=t+1 +end diff --git a/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..2f58afb9d --- /dev/null +++ b/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,96 @@ +-- hello from gasman! +-- ^ +-- greetings to ToBach, Suule, Alia +-- and Aldroid! + +-- will fft effects work with fantasy +-- console audio? only one way to find +-- out!!! + +-- the classic out-of-ideas scanline +-- fade + +function BDR(y) + poke(16320,y/4.5) + poke(16321,y/3.5) + poke(16322,y/2) +end + +map={} +fftpoints={} +for i=0,255 do + fftpoints[i]={ + math.random(0,63), --x + math.random(0,63), --y + math.random(30,100)/300, --speed + math.random(0,100)*math.pi/50, --angle + math.random(-50,50)/5000, --angle change + } +end + +-- oh joy, a random crash +-- ..that isn't happening now + +for i=0,0xffff do + map[i]=0 +end + +function iter() + newmap={} + for y=0,63 do + for x=0,63 do + newmap[(y<<6)+x]=( + map[((y+63&63)<<6)+x]+ + map[(y<<6)+(x+63&63)]- + 2*map[(y<<6)+x]+ + map[(y<<6)+(x+1&63)]+ + map[((y+1&63)<<6)+x] + )/6.001 + end + end + map=newmap +end + +function TIC() + cls() + + + iter() + iter() + for i=0,64 do + coords=fftpoints[i] + coords[1]=(coords[1]+coords[3]*math.cos(coords[4]))%64 + coords[2]=(coords[2]+coords[3]*math.sin(coords[4]))%64 + coords[4]=coords[4]+coords[5] + ix=(coords[1]//1<<6)+coords[2]//1 + map[ix]=map[ix]+fft(i)*20*(i+1) + end + iter() + iter() + + a=time()/3456 + + -- finally!!!! + for z=0,63 do + for x=0,63 do + tz=z-32 + tx=x-32 + tz1=tz*math.cos(a)+tx*math.sin(a) + tx1=tx*math.cos(a)-tz*math.sin(a) + mapz=(tz1+32)/64*10 + mapx=tx1/32*10 + scale=2/(mapz+0.05) + if scale>0 then + sy=50+scale*30 + sx=120+(mapx*10)*scale + height=map[(z<<6)+x] + sy=sy-height + if tz1<0 then + circ(sx,sy,1,(height*4)+1) + else + pix(sx,sy,(height*4)+1) + end + end + end + end +end diff --git a/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/suule.lua b/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/suule.lua new file mode 100644 index 000000000..698a59a22 --- /dev/null +++ b/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/suule.lua @@ -0,0 +1,140 @@ +abs=math.abs +rand=math.random +sin=math.sin +cos=math.cos +pi=math.pi +flr=math.floor +ceil=math.ceiling + +starsx={} +starsy={} +starsc={} + +function BOOT() + for i=0,72 do + starsx[i]=240*rand() + starsy[i]=100*rand() + starsc[i]=11+4*rand() + end +end + + +-- I LOVE QUADS! +function quad(x1,y1,x2,y2,x3,y3,x4,y4,col) + tri(x1,y1,x2,y2,x3,y3,col) + tri(x2,y2,x3,y3,x4,y4,col) +end + +function kitupperbody(shftx) + -- kimono + quad(103,64, 123,46, 104,84, 132,77, 13) + quad(123,46, 128,46, 132,77, 135,75, 15) + quad(104,84, 132,77, 105,95, 128,86, 14) + quad(132,77, 135,75, 128,86, 133,85, 15) + quad(107,50, 126,44, 103,62, 127,47, 1) + quad(110,50, 124,44, 105,58, 105,63, 12) + quad(109,49, 113,49, 105,58, 105,60, 13) + quad(116,51, 122,46, 118,52, 122,48, 1) + quad(107,59, 117,51, 109,61, 118,52, 2) + quad(103,64, 107,59, 103,69, 109,61, 2) + -- sash + quad(105,91, 118,89, 104,99, 119,96, 2) + quad(118,89, 129,85, 119,97, 128,93, 2) + quad(129,85, 133,82, 128,93, 132,91, 1) + quad(129,85, 133,82, 128,93, 132,91, 1) + quad(133,85, 138+shftx,80, 132,89, 137+shftx,92, 1) + quad(138+shftx,80, 140+shftx,78, 137+shftx,92, 139+shftx,91, 2) +end + +function kitlowerbody(shftx) + quad(105,98, 128,93, 96+shftx/2, 117,123+shftx/2,114,13) + quad( 96+shftx/2,117,123+shftx/2,114,84+shftx, 136,119,136,13) + tri(109,114,100+shftx,136,107+shftx,136,14) + quad(128,93, 130,91,123+shftx/2,114,128+shftx/2,114,14) + quad(123+shftx/2,114,128+shftx/2,114,114+shftx,136,126+shftx,136,14) + quad(130,91, 132,90, 128+shftx/2,114,135,112,15) + quad(128+shftx/2,114,135,112,126+shftx,136,132+shftx,136,15) +end + +function kithandsfront(shftx) + tri(123,48,128,65,136,65,14) + quad(118,59, 130,69, 108+shftx,106,112+shftx,106,15) + quad(114,94, 128+shftx/2,65, 112+shftx,106,136+shftx/2,65,14) + quad(111,77, 118,59, 114,94, 128+shftx/2,65,13) + line(111,77,118,59,14) + tri(111,75,113,79,116,77,2) + quad(113,79,116,77,113+shftx/2,93,115+shftx/2,93,2) + quad(113+shftx/2,93,115+shftx/2,93,110+shftx,106,112+shftx,106,2) + quad(80,74, 173,22, 81,76, 175,24, 1) + -- Hands + tri(97,74,113,87,112,90, 13) + quad(102,70, 111,76, 97, 74, 109,84, 12) + quad(111,76, 113,79, 109,84, 113,87, 12) + quad(97,74, 102,70, 93,62, 100,61, 12) + quad(98,71, 98,74, 91,69, 93,62, 12) +end + +function kitears(shftx) + tri(128+shftx,13,118,24,124,29,12) + tri(124+shftx,20,120,25,122,28,13) + tri(113+shftx,12,110,24,115,24,12) + tri(112+shftx,18,111,23,113,23,13) +end + +function kithead(shfty,tim) + -- headshape + quad(108,45,125, 40, 110,50, 124,44,13) + quad(124,28,129, 33, 117,39, 131,45,13) + quad(88, 40, 93, 37, 99, 48, 128,41,12) + quad(93, 37, 128,41, 104,32, 123,31,12) + quad(104,32, 125,31, 108,25, 118,22,12) + quad(88, 37, 89, 42, 93, 36, 93, 40,15) + -- eyes + if tim%120 > 60 then + elli(111,32,3,1,2) + elli(111,33,3,1,13) + elli(111,34,3,1,12) + else + elli(111,31,3,1,2) + elli(111,32,3,1,13) + elli(111,33,3,1,4) + elli(111,34,3,1,12) + pix(110,32,0) + end + -- that smile :) + line(97,45,99,45,14) + line(100,44,104,44,14) + line(104,44,108,42,14) + line(108,42,111,39,14) + --markings + quad(120,34,122,34,126,30,124,28,2) + tri(120,34,122,34,115,37,3) + line(105,32,110,27,2) + trib(106,31,108,26,110,27,2) +end + +function ashf(tim,fact) + return fact*sin(tim/40*pi) +end + +function background() + for i=0,72 do + pix(starsx[i],starsy[i],starsc[i]) + end + for i=0,240 do + line(i,3*sin(i/16*pi)+3*sin(i/46*pi)+5*sin(i/126*pi)+5*sin(i/39*pi)+100,i,136,7) + end + circ(190,40,10,4) +end + +function TIC() + cls(0) + t=time()/60 + background() + kitupperbody(ashf(t,1.5)) + kitlowerbody(ashf(t,2.5)) + kithandsfront(ashf(t,2)) + kithead(0,t) + kitears(ashf(t,3)) +end + diff --git a/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..d5cbc1ece --- /dev/null +++ b/shader_file_sources/2023_10_09_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,39 @@ +tarr={} +for i=1,60 do + tarr[i]={} +end +sr={" ", ",", ".", ":", ";", "O", "3", "#", "#", "#", "#", "#", "#"} +sin=math.sin +cos=math.cos +abs=math.abs +function TIC() + t=time()//32 + cls() + for y=1,21 do + for x=1,60 do + pv=sin(x/8+t/7+sin(y/7+t/13)+sin(x/32+t/32)*8)*8+8 + pix(x,y,pv-8) + for i=0,8 do +-- line(30+sin(t/8+i/32)*30,11+cos(t/8+i/32)*11,30-sin(t/8+i/32)*30,11-cos(t/8+i/32)*11,15-i) + by=abs(sin(t/8+i/4))*14 + bx=sin(t/16+i/4)*24 + circ(31+bx,20-by,3,i/2+8+t/8-2) + circ(30+bx,19-by,3,i/2+8+t/8) + end + print("MONDAY NIGHT BYTES",61-t*2%300,6,0,true,2) + print("MONDAY NIGHT BYTES",60-t*2%300,6,12,true,2) + --yes there are still "nil"'s + -- being shown on screen + --i do not care anymore :) + + tarr[x][y]=peek4(y*240+x) + end + end + cls() + for y=1,21 do + for x=1,60 do + ft=tarr[x][y]//1 + print(sr[ft+1],x*4,y*6,ft,true,1,true) + end + end +end diff --git a/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..9bc0b651f --- /dev/null +++ b/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,120 @@ +rand=math.random +sin=math.sin +cos=math.cos +abs=math.abs +min=math.min +max=math.max + +t=0 +-- Hi to aldroid! And Suule, jtruk +-- and nusan! + +for i=0,15 do + poke(16320+i*3+0,i*4) + poke(16320+i*3+1,i*16) + poke(16320+i*3+2,i*4) +end +vbank(1) +for i=0,7 do + poke(16320+i*3+0,i*32) + poke(16320+i*3+1,i*32) + poke(16320+i*3+2,i*32) +end +for i=8,15 do + poke(16320+i*3+0,i*16) + poke(16320+i*3+1,i*8+128/4) + poke(16320+i*3+2,i*4) +end + +vbank(0) +for y=0,145 do + for x=0,239 do + local c=rand()*16 + line(x,y,x+rand()*c/2-c/4,y-rand()*c/2,(c/16)^2*16) + end +end + +r={} +for i=1,10 do + r[i]={ + x=rand()*240,y=rand()*136, + dx=rand()*2-1,dy=rand()-1 + } +end +c={ + x=rand()*240,y=rand()*136, + dx=rand()*2-1,dy=rand()-1 +} + +function TIC() + t=t+1 + vbank(0) + poke(0x3FFa,t%136-68) + + vbank(1) + cls() + for i=1,#r do + local r=r[i] + local y=r.y-abs(sin(t/5+i)*4) + local y2=r.y-abs(sin(t/5+i+.8)*4) + + elli(r.x+1,r.y+2,6,8,1) + elli(r.x-r.dx/2-4,y2+4,1,2,5) + elli(r.x-r.dx/2+4,y2+4,1,2,5) + elli(r.x,y,5,8,4) + circ(r.x-r.dx,y+4,2,7) + + elli(r.x+r.dx+2,y2-12,1,4,6) + elli(r.x+r.dx-2,y2-12,1,4,6) + circ(r.x+r.dx,y2-8,3,5) + + + r.x=r.x+r.dx + r.y=r.y+r.dy + if r.x<-10 then r.x=250 end + if r.y<-10 then r.y=146 end + if r.x>250 then r.x=-10 end + if r.y>146 then r.y=-10 end + if rand()<0.01 then + r.dx=rand()*2-1 r.dy=rand()-1 + end + end + + + elli(c.x+1,c.y+5,5,10,1) + elli(c.x+1-c.dx*5,c.y+14,5,10,1) + + local y=c.y+abs(sin(t/6)*4) + elli(c.x-3,y+3,1,3,10) + elli(c.x+3,y+3,1,3,10) + local y2 + circ(c.x+c.dx,y-6,4,14) + elli(c.x+c.dx-3,y-8,1,2,12) + elli(c.x+c.dx+3,y-8,1,2,12) + for i=0,4 do + y2=c.y-(c.dy-1)*i*2+abs(sin(t/6+i/3)*2) + circ(c.x-c.dx*i, + y2, + 4,12+(i%2)*3) + end + local x2=c.x-c.dx*4 + elli(x2-3,y2+3,1,3,10) + elli(x2+3,y2+3,1,3,10) + + for i=0,10 do + circ(x2+cos(t/10+i/4)*.4*i,y2-4-i,1,(i%2)*4+10) + end + + c.x=c.x+c.dx + c.y=c.y+c.dy + if c.x<-10 then c.x=250 end + if c.y<-10 then c.y=146 end + if c.x>250 then c.x=-10 end + if c.y>146 then c.y=-10 end + if rand()<0.01 then + c.dx=rand()*2-1 c.dy=rand()-1 + end + + print("til bnuydon come",20,122,1,0,2) + print("til bnuydon come",20,120,7,0,2) +end diff --git a/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..cb2ff969a --- /dev/null +++ b/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,116 @@ +-- Greetz Nusan, Alia, Suule, Aldroid +SX,SY=128,128 +BOB={} +T=0 +SIN=math.sin + +function BOOT() + cls() + + local fc,hc,ec,ebc=1,2,3,4 + circ(64,55,55,hc) + rect(32,50,64,70,fc) + + elli(64,110,32,8,hc) + elli(64-14,70,10,5,ec) + elli(64+14,70,10,5,ec) + + -- eyeballs + circ(64-14,70,3,ebc) + circ(64+14,70,3,ebc) + -- nostrils + circ(64-4,86,3,ec) + circ(64+4,86,3,ec) + + elli(64,110,20,5,fc) + elli(64,107,20,5,hc) + get() + cls() +end + +function BDR(y) + vbank(1) + for c=1,15 do + local addr=0x3fc0+c*3 + local r=.5+math.sin(c*.1+T*.08+y*.05)*.5 + local g=.5+math.sin(-c*.13-T*.05+y*.027)*.5 + local b=.5+math.sin(-c*.18+T*.07-y*.04)*.5 + poke(addr,r*255//1) + poke(addr+1,g*255//1) + poke(addr+2,b*255//1) + end + + vbank(0) + local addr=0x3fc0 + local r=.5+math.sin(T*.032-y*.05)*.5 + local g=.5+math.sin(T*.04-y*.027)*.5 + local b=.5+math.sin(T*.028+y*.04)*.5 + poke(addr,r*255//1) + poke(addr+1,g*255//1) + poke(addr+2,b*255//1) +end + +function TIC() + vbank(1) + decay() + + NROSSES=6 + for i=1,NROSSES do + local ofs=(i/NROSSES)*math.pi*2 + local s=.25+SIN(ofs+T/54)*.12 + local x=120+SIN(ofs+T/50)*80-s*64 + local y=68+SIN(ofs+T/82)*48-s*64 + set(x,y,s) + end + +-- set(30,30,.5) + vbank(0) + decay() + local x=120+SIN(T/33)*70-1*64 + local y=70+SIN(T/28)*20-1*64 + set(x,y,1) + drawText("SHADEBOBS!",34-x/4,64-y/4,3) + T=T+1 +end + +function decay() + for y=0,135 do + for x=0,239 do + local c=pix(x,y) + if c>0 then --and math.random()>.1 then + pix(x,y,c-1) + end + end + end +end + +function get() + for y=0,SY-1 do + for x=0,SX-1 do + BOB[y*SX+x]=pix(x,y) + end + end +end + +function set(x0,y0,z) + local y1=(SY-1)*z + local x1=(SX-1)*z + for y=0,y1 do + for x=0,x1 do + local ys=((y/(y1+1))*SY)//1 + local c=BOB[((ys*SX)+(x/z))//1] + if c>0 then + local xd,yd=x0+x,y0+y + local c=math.min(c+pix(xd,yd),15) + pix(xd,yd,c) + end + end + end +end + +function drawText(t,x,y,s) + print(t,x-1,y-1,0,false,s) + print(t,x+1,y+1,0,false,s) + print(t,x,y,12,false,s) +end + diff --git a/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/nusan.lua b/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/nusan.lua new file mode 100644 index 000000000..e5eb6ac6a --- /dev/null +++ b/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/nusan.lua @@ -0,0 +1,48 @@ +-- hellllllllllo +r,t,t2,s,ta=math.random,0,0,math.sin,{} +function SCN(w) +for k=0,47 do + poke(0x3fc0+k,k//3*16*(s(k%3+math.abs(w-68)/30+(k>24 and k/8 or 0)+t*.01+(fft(k%7)*pu>0.1 and 4 or 0))*.5+.5)) +end +end + +function TIC() +pu=0.5 +t=t+0.01+fft(1)*pu+fft(4)*pu +t2=t2+0.007+fft(3)*pu+fft(7)*pu +po=(s(t/20)>0.7) and 3 or 1 +for i=0,299 do +x,y=r(240)-1,r(136)-1 +circb(x,y,2,pix(x,y)*.7) +end +for i=1,100 do + h=i*0.15+t*0.05 + x,y=s(h)*60*po+120,s(h*.7)*30*po+68 + x,y=x+s(h*0.6)*40,y+s(h*0.4)*20 + x,y=x+s(h*1.2+t2*.07)*15,y+s(h*1.4+t2*.1)*10 + if i>1 then + o=s(t2*.2+i*.07)+s(t2*.1+i*.04) + u,v=(x-a),(y-b) + m=math.sqrt(u*u+v*v) + for j=-5,5 do + sq=j/10 + line(x+v*sq,y-u*sq,a+v*sq,b-u*sq,i%8+8) + circ(x+v*(sq+o*2),y-u*(sq+o*2),m*.5,(i+j/3)%8) + end + if i%20==0 then + circ(x,y,fft(i//20)*50*po*pu,15) + end + end + ju=math.floor(r(100))+1 + ju=(i+50)%100+1 + cu=ta[ju] + if cu and fft(i%7)*pu>0.2 then + line(x,y,cu[1],cu[2],14) + for l=0,1,.1 do + circb(x*l+cu[1]*(1-l),y*l+cu[2]*(1-l),4,14) + end + end + a,b=x,y + ta[i]={x,y} +end +end diff --git a/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/suule.lua b/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/suule.lua new file mode 100644 index 000000000..02be7ce58 --- /dev/null +++ b/shader_file_sources/2023_10_16_byte_jam_monday_night_bytes/suule.lua @@ -0,0 +1,251 @@ +-- I hope you'll all have a great time today +sin=math.sin +cos=math.cos +abs=math.abs +pi=math.pi +ran=math.random +flr=math.floor +cel=math.ceil + +local beakrot=0 + +function q(x1,y1,x2,y2,x3,y3,x4,y4,c) + tri(x1,y1,x2,y2,x3,y3,c) + tri(x2,y2,x3,y3,x4,y4,c) +end + +function clmp(val,min,max) + if valmax then return max else return val end +end + +function rotp(ox,oy,dx,dy,rot) + local sx=ox-dx + local sy=oy-dy + local rx=sx*cos(rot/360*pi)-sy*sin(rot/360*pi) + local ry=sx*sin(rot/360*pi)+sy*cos(rot/360*pi) + return ox-rx,oy-ry +end + +-- Today it's gonna be a massive animation! +-- I hope I can finish it all today! + +function drw_necc(xs,ys) + q(195+xs,48+ys, 209+xs,55+ys, 198+xs,77+ys, 216+xs,66+ys, 1) + q(198+xs,77+ys, 216+xs,66+ys, 192+xs,89+ys/2, 214+xs,87+ys, 2) + q(192+xs,89+ys/2, 214+xs,87+ys, 180+xs,106+ys/2,209+xs,109+ys/2,2) + q(180+xs,106+ys/2,209+xs,109+ys/2,172+xs/2,136,216+xs/2,136,2) + q(175+xs,121+ys/2,211+xs,121+ys/2,146+xs/2,136,236+xs/2,136,2) +end + +function drw_col(xs,ys) + q(176+xs,111+ys, 184+xs,115+ys, 174+xs,122+ys, 183+xs,127+ys, 15) + q(184+xs,115+ys, 194+xs,116+ys, 183+xs,127+ys, 196+xs,128+ys, 15) + q(194+xs,116+ys, 211+xs,112+ys, 196+xs,128+ys, 215+xs,123+ys, 15) + q(176+xs,113+ys, 184+xs,117+ys, 174+xs,120+ys, 183+xs,125+ys, 12) + q(184+xs,117+ys, 194+xs,118+ys, 183+xs,125+ys, 196+xs,126+ys, 12) + q(194+xs,118+ys, 211+xs,114+ys, 196+xs,126+ys, 215+xs,121+ys, 12) + line(175+xs,116+ys,183+xs,121+ys,15) + line(183+xs,121+ys,195+xs,122+ys,15) + line(195+xs,122+ys,213+xs,117+ys,15) + line(180+xs,114+ys,177+xs,122+ys,15) + line(184+xs,116+ys,182+xs,124+ys,15) + line(188+xs,116+ys,187+xs,125+ys,15) + line(194+xs,117+ys,193+xs,126+ys,15) + line(199+xs,117+ys,200+xs,126+ys,15) + line(205+xs,114+ys,207+xs,124+ys,15) + line(210+xs,114+ys,213+xs,122+ys,15) +end + +function drw_hair(xs, ys, bnc) + q(177+xs,18+ys, 187+xs-ys/4,20+ys/2, 171+xs,35+ys, 186+xs,28+ys, 2) + q(191+xs+ys/4,4-ys/4, 203+xs+ys/4,14-ys/4, 177+xs,18+ys, 187+xs-ys/4,20+ys/2, 2) + q(213+xs+ys/2,0-ys/2, 219+xs+ys,10-ys/2, 191+xs+ys/4,4-ys/4, 203+xs+ys/4,14-ys/4, 2) + q(230+xs+ys,4-2*ys, 239+xs+ys,9-2*ys, 213+xs+ys/2,0-ys/2, 219+xs+ys,10-ys/2, 2) + + q(198+xs+ys/4,17+ys-ys/2, 203+xs+ys/4,25+ys-ys/2, 186+xs,27+ys, 201+xs,31+ys, 2) + q(198+xs+ys/4,17+ys-ys/2, 203+xs+ys/4,25+ys-ys/2, 213+xs+ys/4,15+ys-ys, 213+xs,23+ys-1.5*ys, 2) + q(213+xs+ys/4,15+ys-ys, 213+xs,23+ys-1.5*ys, 226+xs+ys,18+ys-1.5*ys, 221+xs+ys,26+ys-1.5*ys, 2) + q(226+xs+ys,18+ys-1.5*ys, 232+xs+ys,22+ys-2*ys, 221+xs+ys,26+ys-1.5*ys, 238+xs+1.5*ys,31+ys-2*ys, 2) + + q(200+xs,31+ys, 209+xs+ys/4,29+ys-ys/2, 204+xs,36+ys, 210+xs+ys/4,36+ys-ys/2, 2) + q(209+xs+ys/4,29+ys-ys/2, 226+xs+ys,36+ys-ys, 210+xs+ys/4,36+ys-ys/2, 223+xs+ys*1.5,42+ys-ys, 2) + q(226+xs+ys,36+ys-ys, 233+xs+ys*1.25,40+ys-ys*1.5, 223+xs+ys*1.5,42+ys-ys, 235+xs+ys*2,50+ys-ys*1.5, 2) + + q(226+xs+ys,36+ys-ys, 233+xs+ys*1.25,40+ys-ys*1.5, 223+xs+ys*1.5,42+ys-ys, 235+xs+ys*2,50+ys-ys*1.5, 2) +end + +function drw_head(xs,ys) + q(173+xs,32+ys, 189+xs,25+ys, 166+xs,40+ys, 200+xs,30+ys, 2) + q(166+xs,40+ys, 200+xs,30+ys, 165+xs,55+ys, 212+xs,45+ys, 2) + q(165+xs,55+ys, 212+xs,45+ys, 173+xs,69+ys, 209+xs,56+ys, 2) + q(173+xs,69+ys, 209+xs,56+ys, 185+xs,74+ys, 208+xs,63+ys, 2) +end + +function drw_eyes(xs,ys) + q(179+xs,38+ys, 182+xs,37+ys, 178+xs,51+ys, 188+xs,52+ys, 12) + q(182+xs,37+ys, 186+xs,39+ys, 188+xs,52+ys, 192+xs,48+ys, 12) + q(166+xs,40+ys, 169+xs,39+ys, 165+xs,52+ys, 169+xs,51+ys, 12) + circ(187+xs,47+ys,2,0) + circ(168+xs,47+ys,2,0) + q(179+xs,38+ys, 182+xs,37+ys, 178+xs,50+ys, 185+xs,49+ys, 9) + q(182+xs,37+ys, 186+xs,39+ys, 185+xs,48+ys, 191+xs,46+ys, 8) + q(166+xs,40+ys, 169+xs,39+ys, 165+xs,48+ys, 169+xs,48+ys, 9) + q(166+xs,40+ys, 167+xs,39+ys, 165+xs,48+ys, 166+xs,48+ys, 8) + q(181+xs,38+ys, 182+xs,37+ys, 183+xs,48+ys, 188+xs,47+ys, 10) + q(169+xs,38+ys, 172+xs,38+ys, 169+xs,59+ys, 172+xs,59+ys, 2) +end + +function drw_mic(xs,ys) +-- Hand + q(140+xs,100+ys, 152+xs,107+ys, 131+xs,107+ys, 149+xs,119+ys, 2) + q(131+xs,107+ys, 149+xs,119+ys, 118+xs,118+ys, 141+xs,133+ys, 2) + q(118+xs,118+ys, 141+xs,133+ys, 125+xs+ys/4,136, 135+xs,136, 2) + q(136+xs,104+ys, 144+xs,105+ys, 132+xs,109+ys, 147+xs,115+ys, 1) + q(132+xs,109+ys, 147+xs,115+ys, 122+xs,119+ys, 140+xs,122+ys, 1) + q(122+xs,119+ys, 140+xs,122+ys, 127+xs,128+ys, 133+xs,128+ys, 1) +-- Finger 1 + q(134+xs,104+ys, 143+xs,102+ys, 134+xs,92+ys, 142+xs,96+ys, 1) + q(134+xs,92+ys, 142+xs,96+ys, 136+xs,85+ys, 145+xs,79+ys, 2) +-- Mic + circ(153+xs,98+ys,9,14) + circ(148+xs,104+ys,6,15) + q(143+xs,101+ys, 154+xs,107+ys, 127+xs,121+ys, 132+xs,126+ys,15) + circ(129+xs,123+ys,3,14) +-- Thumb + q(143+xs,112+ys, 149+xs,106+ys, 145+xs,116+ys, 153+xs,119+ys, 2) + q(145+xs,116+ys, 153+xs,119+ys, 134+xs,126+ys, 141+xs,133+ys, 2) +-- Finger 2 + q(121+xs,110+ys, 136+xs,98+ys, 145+xs,108+ys, 131+xs,106+ys, 1) + q(121+xs,110+ys, 136+xs,98+ys, 141+xs,102+ys, 131+xs,106+ys, 2) + q(136+xs,98+ys, 145+xs,108+ys, 131+xs,106+ys, 140+xs,112+ys, 2) +-- Finger 3 + q(121+xs,110+ys, 131+xs,107+ys, 118+xs,118+ys, 128+xs,116+ys, 2) + q(131+xs,107+ys, 139+xs,114+ys, 128+xs,116+ys, 133+xs,119+ys, 2) +end + +function drw_beak(xs,ys,rot) +-- Beak Lower + -- Origin point 186,65 + local sx1,sy1=rotp(186+xs,65+ys,163+xs,77+ys,rot) + local sx2,sy2=rotp(186+xs,65+ys,177+xs,62+ys,rot) + local sx3,sy3=rotp(186+xs,65+ys,164+xs,83+ys,rot) + q(sx1,sy1, sx2,sy2, sx3,sy3, 186+xs,65+ys, 13) + sx1,sy1=rotp(186+xs,65+ys,180+xs,81+ys,rot) + sx2,sy2=rotp(186+xs,65+ys,186+xs,73+ys,rot) + q(sx3,sy3, 186+xs,65+ys, sx1,sy1, sx2,sy2, 13) + -- Origin point 183,66 + sx1,sy1=rotp(183+xs,66+ys,165+xs,77+ys,rot) + sx2,sy2=rotp(183+xs,66+ys,177+xs,64+ys,rot) + sx3,sy3=rotp(183+xs,66+ys,165+xs,81+ys,rot) + q(sx1,sy1, sx2,sy2, sx3,sy3, 183+xs,66+ys, 14) + sx1,sy1=rotp(183+xs,66+ys,175+xs,79+ys,rot) + sx2,sy2=rotp(183+xs,66+ys,181+xs,71+ys,rot) + q(sx3,sy3, 183+xs,66+ys, sx1,sy1, sx2,sy2, 14) +-- Beak Upper Start + q(157+xs,62+ys, 163+xs,63+ys, 148+xs,72+ys, 155+xs,72+ys, 13) + q(163+xs,63+ys, 169+xs,66+ys, 155+xs,72+ys, 161+xs,75+ys, 13) + q(169+xs,66+ys, 178+xs,74+ys, 161+xs,75+ys, 165+xs,82+ys, 13) + q(167+xs,52+ys, 173+xs,52+ys, 157+xs,62+ys, 163+xs,63+ys, 13) + q(173+xs,52+ys, 180+xs,56+ys, 163+xs,63+ys, 169+xs,66+ys, 13) + q(180+xs,56+ys, 184+xs,64+ys, 169+xs,66+ys, 178+xs,74+ys, 13) +-- Beak Upper End + q(144+xs,81+ys, 154+xs,91+ys, 144+xs,95+ys, 146+xs,103+ys,15) + q(148+xs,72+ys, 155+xs,72+ys, 144+xs,81+ys, 161+xs,75+ys, 15) + q(144+xs,81+ys, 161+xs,75+ys, 154+xs,91+ys, 165+xs,82+ys, 15) +end + +function drw_stg() + q(20,100,100,100,50,0,70,0,14) + elli(60,100,40,2,13) +end + +function drw_rab(xs,ys) + -- legs + q(65,96, 71,100, 62,100, 71,101, 15) + q(59+xs/2,90+ys/4, 63+xs/2,88+ys/4, 62,100, 65,96, 15) + q(57+xs,81+ys/2, 61+xs,78+ys/2, 59+xs/2,90+ys/4, 63+xs/2,88+ys/4, 15) + q(45,98, 49,98, 45,101, 52,101, 15) + q(50+xs/2,88+ys/4,53+xs/2,90+ys/4, 45,98, 49,98, 15) + q(51+xs,77+ys/2, 55+xs,81+ys/2, 50+xs/2,88+ys/4,53+xs/2,90+ys/4, 15) + -- body + q(51+xs,77+ys/2, 61+xs,78+ys/2, 55+xs,81+ys/2, 57+xs,81+ys/2, 15) + q(53+xs,65+ys/2, 63+xs,68+ys/2, 51+xs,77+ys/2, 61+xs,78+ys/2, 15) + q(52+xs,59+ys/2, 61+xs,61+ys/2, 53+xs,65+ys/2, 63+xs,68+ys/2, 15) + q(56+xs,57+ys/2, 59+xs,58+ys/2, 52+xs,59+ys/2, 61+xs,61+ys/2, 15) + --head + q(57+xs,45+ys/2, 61+xs,56+ys/2, 56+xs,57+ys/2, 59+xs,58+ys/2, 15) + q(57+xs,45+ys/2, 63+xs,49+ys/2, 61+xs,56+ys/2, 64+xs,56+ys/2, 15) + q(61+xs,56+ys/2, 64+xs,56+ys/2, 62+xs,61+ys/2, 64+xs,61+ys/2, 15) + q(52+xs,51+ys/2, 57+xs,45+ys/2, 53+xs,57+ys/2, 61+xs,56+ys/2, 15) + q(51+xs,55+ys/2, 52+xs,51+ys/2, 50+xs,58+ys/2, 53+xs,57+ys/2, 15) + --ears + q(57+xs,36+ys/2, 60+xs,33+ys/2, 57+xs,45+ys/2, 59+xs,47+ys/2, 15) + q(63+xs,35+ys/2, 64+xs,40+ys/2, 60+xs,47+ys/2, 62+xs,49+ys/2, 15) + --outline + line(65,96, 63+xs/2,88+ys/4, 13) + line(61+xs,78+ys/2, 63+xs/2,88+ys/4,13) + line(63+xs,68+ys/2, 61+xs,78+ys/2, 13) + line(45,98,50+xs/2,88+ys/4,13) + line(50+xs/2,88+ys/4,51+xs,77+ys/2,13) + line(51+xs,77+ys/2,53+xs,65+ys/2,13) + line(63+xs,35+ys/2, 60+xs,47+ys/2,13) + line(57+xs,36+ys/2, 60+xs,33+ys/2,13) + line(57+xs,36+ys/2, 57+xs,45+ys/2,13) + line(57+xs,45+ys/2, 52+xs,51+ys/2,13) + line(52+xs,51+ys/2, 50+xs,58+ys/2,13) + line(63+xs,49+ys/2, 64+xs,56+ys/2,13) +end + +function drw_gut(xs,ys,fftx) + -- neck + q(73+xs,62+ys/2, 76+xs,58+ys/2, 74+xs,64+ys/2, 78+xs,62+ys/2, 15) + q(50+xs,70+ys/2, 73+xs,62+ys/2, 59+xs,71+ys/2, 74+xs,64+ys/2, 15) + line(73+xs,62+ys/2, 76+xs,58+ys/2, 13) + line(50+xs,70+ys/2, 73+xs,62+ys/2, 13) + q(48+xs,69+ys/2, 57+xs,65+ys/2, 49+xs,76+ys/2, 59+xs,75+ys/2, 15) + -- hand + q(52+xs,59+ys/2, 54+xs,63+ys/2, 44+xs,69+ys/2, 49+xs,69+ys/2, 15) + line(52+xs,59+ys/2, 44+xs,69+ys/2, 13) + q(44+xs,69+ys/2, 49+xs,69+ys/2, 45+xs,73+ys/2, 49+xs,70+ys/2, 15) + q(49+xs,70+ys/2, 55+xs,72+ys/2, 45+xs,73+ys/2, 55+xs,74+ys/2, 15) + circ(70+xs,65+ys/2,2,15) +end + +function drawfft() + vbank(0) + for i=0,240 do + pix(i,68+60*fft(i),1+i%15) + end +end + +function calcbeakrot(inp) + local fftsum = clmp((fft(12)+fft(16)+fft(20)+fft(24)+fft(28)+fft(32))/6*500,0,50) + trace(fftsum) + if inp > 5-fftsum then return inp-1 else return 5-fftsum end +end + +function osc(fac,tim,div) + return fac*sin(tim/div*pi) +end + + +function TIC() + t=time()/60 + vbank(0) + cls(0) + drw_stg() + drawfft() + vbank(1) + cls(0) + beakrot=calcbeakrot(beakrot) + drw_rab(osc(1,t,15),-abs(osc(4,t,15))) + drw_gut(osc(1,t,15),-abs(osc(4,t,15)),2) + drw_necc(osc(4,t,15),-abs(osc(2,t,15))) + drw_col(osc(4,t,15),-abs(osc(2,t,15))) + drw_hair(osc(4,t,15),-abs(osc(2,t,15))) + drw_head(osc(6,t,15),-abs(osc(4,t,15))) + drw_eyes(osc(6,t,15),-abs(osc(4,t,15))) + drw_mic(osc(6,t,15),-abs(osc(4,t,15))) + drw_beak(osc(6,t,15),-abs(osc(4,t,15)),beakrot) +end diff --git a/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/aldroid.glsl b/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/aldroid.glsl new file mode 100644 index 000000000..931f033e4 --- /dev/null +++ b/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/aldroid.glsl @@ -0,0 +1,102 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rot(float a) { + return mat2(cos(a),-sin(a), sin(a), cos(a)); +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 10.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +// glsl oklab conversion from https://www.shadertoy.com/view/WtccD7 +// credit to mattz +const mat3 fwdA = mat3(1.0, 1.0, 1.0, + 0.3963377774, -0.1055613458, -0.0894841775, + 0.2158037573, -0.0638541728, -1.2914855480); + +const mat3 fwdB = mat3(4.0767245293, -1.2681437731, -0.0041119885, + -3.3072168827, 2.6093323231, -0.7034763098, + 0.2307590544, -0.3411344290, 1.7068625689); + +vec3 okl(vec3 c) { + + vec3 lms = fwdA * c; + + return fwdB * (lms * lms * lms); + +} + +float cog(vec3 p, float a) { + + float cedge = length(p.xy)-3.; + cedge += smoothstep(-0.01,0.01,sin(atan(p.y,p.x)*10+a)); + return max(max(abs(p.z)-0.5,cedge),-length(p.xy)+.7); +} + +float map(vec3 p) { + p.xz *= rot(sin(fGlobalTime)); + float ca = fGlobalTime*10+texture(texFFTSmoothed,0.01).x*100; + return min(cog(p-vec3(2.5,0,0),ca),cog(p-vec3(-2.5,0,0),-ca)); +} + +vec3 gn(vec3 p) { + vec2 e=vec2(0.001,0); + return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy), map(p-e.yyx))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro=vec3(0,0,-10+texture(texFFT,0.1).x*100),rd=normalize(vec3(uv,1)); + + float d,t=0; + + for (int i=0; i<100; ++i) { + d=map(ro+rd*t); + if (d<0.01)break; + t+=d; + } + + vec3 ld=normalize(vec3(-3,4,13)); + + float ch= length(uv)+fGlobalTime; + + float a = 0.7*cos(ch); + float b = 0.7*sin(ch); + vec3 col=vec3(okl(vec3(0.01,a,b))); + + if (d<0.01) { + vec3 al= okl(vec3(1.,a,b)); + vec3 p=ro+rd*t; + vec3 n=gn(p); + float flash = texture(texFFT,0.1).x*100; + float ao=clamp(map(p+n*0.1)/.1,0.,1.); + float s=pow(max(dot(reflect(-ld,n),-rd),0),30); + col = dot(ld,n)*al*ao+s*(1+flash); + } + out_color = vec4(col,1);//f*0.1 + t; +} \ No newline at end of file diff --git a/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/alia.glsl b/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/alia.glsl new file mode 100644 index 000000000..ea2747b9e --- /dev/null +++ b/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/alia.glsl @@ -0,0 +1,109 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define iTime int(fGlobalTime*60) +#define r2d(p,a) p=cos(a)*p+sin(a)*vec2(-p.y,p.x) + +// =^^= +// greets to juni, jtruk + alien! And ofc aldroid and h0ff <3 + +float pDist(vec3 p, vec3 dir) { + vec3 plane = normalize(vec3(sin(time/2),sin(time*.4225),2)); + float d=dot(-p,plane) / dot(dir,plane); + return d; +} + +float boxDist(vec2 p, vec2 s, float r) { + p=abs(p)-s; + return length(max(p,0.)) + min(0., max(p.x,p.y)) - r; +} + +vec3 hash(vec3 p) { + p=fract(p*vec3(253.3567,352.353,436.3535)); + p+=dot(p,p.yxz+19.19); + return fract((p.xxy+p.yxx)*p.zyx); +} + +vec3 map(vec2 p) { + vec2 op = p; + if (mod(iTime+p.y,200.) < 100.) { + p=floor(p)/10; + vec2 q=p; + p.y += sin(p.x/2+time*8)*2; + + float mask=1-step(1.,mod(p.y,8.)); + int col = int(mod(p.y,3.)); + mask *= max(0.,fract(p.x/20 - time/3 + hash(vec3(floor(p.y))).x*8.)*2-1); + p.y=fract(p.y/2)*2-.5; + float d = 1-(abs(p.y)-.2); + d = 1-smoothstep(0.,.1,p.y); + d *= mask; + + vec3 c=vec3(d); + c[col%3] = 0; + return c; + } + //if (c.x+c.y+c.z==0) { + //return c; + ivec2 a=ivec2(op+iTime*0); + int i=a.x^a.y; + vec3 c=pow(fract(vec3(i+iTime)/256), vec3(3.)); + + return c; +} + +vec3 mask(vec2 p) { + p.x *=3; + int c=int(mod(p.x,3)); + p=fract(p)-.5; + float b=1.-smoothstep(0., .1, boxDist(p, vec2(0.3), 0.)); + vec3 m=vec3(0); + m[c] = b; + return m*9; +} +#define samples 64 + +void main(void) +{ + vec3 o=vec3(0); + for (int i=0;i0) { + p=p+dir*dist; + p*=20; + o+=map(p.xy) * mask(p.xy); + } + } + out_color = vec4(o/samples,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/alien.glsl b/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/alien.glsl new file mode 100644 index 000000000..22887efca --- /dev/null +++ b/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/alien.glsl @@ -0,0 +1,74 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D c1; +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define iTime fGlobalTime + +#define bpm 140. +#define one_bpm 60./bpm +#define beat(a) fract(iTime/(one_bpm*a)) + +mat2 rot(float a) { return mat2(cos(a), -sin(a), sin(a), cos(a));} + + +void main(void) +{ + float fft = texture(texFFTSmoothed, 0.1).x * 100; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 vv = uv; + vec2 uu = uv; + uv.x += sin(iTime*0.5+fft); + uv.y += cos(iTime*0.5 + sin(0.4*iTime)); + + uu.x += sin(iTime*0.1); + uu.y += cos(iTime*0.8 + sin(0.2*iTime)); + + + + uv *= 10.0; + uv.y += iTime; + uv = fract(uv + fft); + uv -= 0.5; + uv*= rot(0.4*iTime); + uu *= rot(0.9); + uu = fract(uu); + uu -= 0.5; + + + float rad = texture(texFFT, uv.x * 1.0).r * 10; + float c = smoothstep(0.99, 1.0, length(uv) + 0.5 + texture(texFFTSmoothed, 0.07).r*5.); + vec3 color1 = c * texture(texNoise, uu*uv*fft).xyz * vec3(2.8, 0.2+fft, 0.1) * 2.0; + float cc = smoothstep(0.99, 1.0, length(uu) + 0.5 + sin(uv.y * uv.y)); + + c = c * cc; + + + + vec4 fc = mix(vec4(c), texture(texPreviousFrame, vv), fft); + if(beat(4.0) < 0.0) { + fc = 1.-fc; + } + if(beat(2.0) < 0.5) { + fc = color1.xyzz; + } + + + out_color = fc; +} \ No newline at end of file diff --git a/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/jtruk.glsl b/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/jtruk.glsl new file mode 100644 index 000000000..c3912a01a --- /dev/null +++ b/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/jtruk.glsl @@ -0,0 +1,64 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec2 proj(vec2 v, float a, float z) +{ + float zF=1-z/100; + return vec2((v.x+cos(a)-v.y*sin(a))/zF, (v.x*sin(a)+v.y*cos(a))/zF); +} + +void main(void) +{ + float pi=3.141593; + float tau=pi*2; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float zoom=sin(fGlobalTime)*3; + vec2 icon_uv = proj(uv, fGlobalTime*.4, zoom); + vec2 bg_uv = proj(uv, fGlobalTime*.6, -zoom); + + float d=sqrt(uv.x*uv.x+uv.y*uv.y); + float a=atan(uv.y,uv.x)/tau+.5; + float icon_d=sqrt(icon_uv.x*icon_uv.x+icon_uv.y*icon_uv.y); + float icon_a=atan(icon_uv.y,icon_uv.x)/tau+.5; + + float fft = texture( texFFT, 0.1 ).r * 5; + + float rFactor = sin(bg_uv.x+icon_a*tau) * 20 + sin(bg_uv.y) * 10 + fGlobalTime * 2; + float gFactor = sin(bg_uv.y+pow(d,.1)) * 20 - sin(bg_uv.x *.6) * 10 + fGlobalTime * 3; + float bFactor = -sin(d) * 20 + fGlobalTime * 5; + float r = 0.5+sin(rFactor)*.5; + float g = 0.5+sin(gFactor)*.5; + float b = 0.5+sin(bFactor)*.5; + + out_color = vec4(0,0,0,0); + if ((icon_d<.1) || ((icon_d>.15 && icon_d<.5) && ((icon_a>.167 && icon_a<=.33) || (icon_a>.5 && icon_a<=.66) || (icon_a>.8333 && icon_a<=1)))) { + out_color = vec4(g*b,fft,g*b,0); + } else { + out_color = vec4(max(r,g),g*b,0,0); + } + + float zoombg=1+sin(fGlobalTime*.5)*2; + d=d*zoombg; + if ((d<.1) || ((d>.15 && d<.5) && ((a>.167 && a<=.33) || (a>.5 && a<=.66) || (a>.8333 && a<=1)))) { + out_color.g -= out_color.r * sin(fGlobalTime*.5)*2; + } +} \ No newline at end of file diff --git a/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/juni.glsl b/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/juni.glsl new file mode 100644 index 000000000..5aa7c5e0b --- /dev/null +++ b/shader_file_sources/2023_10_23_shader_jam_monday_night_bytes/juni.glsl @@ -0,0 +1,131 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +vec2 hash2(vec2 uv){ + vec2 p = vec2(dot(uv,vec2(123.123,456.456)),dot(uv,vec2(1337.1337,0613.0713))); + return fract(sin(p)*1234.1234); +} + +vec4 voronoi(vec2 uv, float scale, float seed){ + vec2 tv= fract(uv) * scale; + vec2 ti = floor(tv); + vec2 tf = fract(tv); + float m_dist = 2.; + vec2 m_point; + for(int x = -1; x <= 1; x++){ + for(int y = -1; y<=1; y++){ + vec2 off = vec2(float(x),float(y)); + vec2 p = hash2(mod(ti + off,scale)+seed); + vec2 diff = off + p - tf; + float dist = length(diff); + if(dist < m_dist) { + m_dist = dist; + m_point = p; + } + } + } + return vec4(fract(m_point.r*seed)); +} + +vec3 getSkyGradient(vec2 uv){ + vec3 light = vec3(181,163,62)/256; + vec3 mid = vec3(0,63,97)/256; + vec3 dark = vec3(0,16,29)/256; + + mid.b += sin(fGlobalTime)/2; + + vec3 c = mid; + float mixF = uv.y - .25; + mixF*=2; + if(mixF > 0) c=mix(c,dark,mixF); + //if(mixF < 0) c=mix(c,light,abs(mixF)); + return c; +} + +#define TEX_SCALE .01 +vec4 sampleTex(vec2 uv){ + vec2 p = (uv+1.)*TEX_SCALE; + p.y += texture(texFFTIntegrated, .05).r/10; + return voronoi(p, 200, 1337.1337); +} + +#define LAYERS 60. +#define DEPTH 1. +#define LOD 20. +vec3 baseColor = vec3(0.); +vec4 raymarchTex(vec3 ro, vec3 rd){ + if(ro.z > LOD) return vec4(0.); + float layerH = DEPTH/LAYERS; + float stepsize = length(rd * (layerH/rd.y)); + vec4 c =vec4(0.); + for(float i=0.; i .95) break; + } + return c; +} + +float sdfCircle(vec2 uv, float r){ + return length(uv) - r; +} + + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv.y-=.33/2; + + vec4 c = vec4(0.); + + vec3 camera = vec3(0., 1., 0.); + + vec3 ro = camera; + vec3 rd = normalize(vec3(uv.x, uv.y, 1.)); + float flr = 0.; + if(rd.y < -.045){ + vec3 hitP = abs((ro.y-flr)/rd.y)*rd; + vec4 mid = vec4(0,63,97, 256)/256; + mid.b += sin(fGlobalTime)/2; + mid.rgb*=1.2; + c = raymarchTex(hitP, rd)* mid; + //c = sampleTex(hitP.xz); + }else { + c = vec4(getSkyGradient(uv+.75),1.); + c += (1- smoothstep(.1,.12, vec4(sdfCircle(uv-vec2(0.,0.), .1))))*.75; + + } + + out_color = c; +} \ No newline at end of file diff --git a/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..7c33fe6cb --- /dev/null +++ b/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,182 @@ +sin=math.sin +cos=math.cos +min=math.min +max=math.max +rand=math.random + +t=0 + + +for i=0,15 do + local c=(i/14)*200 + for j=0,2 do + if i==15 then c=j==0 and 255 or 0 end + vbank(0) + poke(16320+i*3+j,c) + vbank(1) + poke(16320+i*3+j,c) + end +end + +bat={x=131,y=50} +batasp=bat.x/bat.y + +function makebat() + --cls() + clip(0,0,bat.x,bat.y) + local y=45 + local w=sin(t/10)*4 + local h=sin(t/10+1)*2 + local b=sin(t/10+.5)*4 + + elli(40,y+w-2,40,30,14) + elli(90,y+w-2,40,30,14) + elli(40,y+w,40,30,4) + elli(90,y+w,40,30,4) + + elli(20,y+w+10,30,20,0) + elli(110,y+w+10,30,20,0) + elli(65,y+w+10,30,20,0) + + circ(65,y+b-12,12,6) + + elli(61,y+h-38,3,4,14) + elli(61,y+h-36,3,4,5) + elli(69,y+h-38,3,4,14) + elli(69,y+h-36,3,4,5) + + circ(65,y+h-30,8,14) + circ(65,y+h-28,8,8) + circ(62,y+h-30,2,15) + circ(68,y+h-30,2,15) + + clip() +end + +function drawbat(x,y,s) + local sx=s/2 + local sy=s/(2*batasp) + local p0={x=-sx+x,y=-sy+y} + local p1={x=sx+x,y=-sy+y} + local p2={x=-sx+x,y=sy+y} + local p3={x=sx+x,y=sy+y} + + ttri( + p0.x,p0.y, + p1.x,p1.y, + p2.x,p2.y, + 0,0, + bat.x,0, + 0,bat.y, + 2,0) + ttri( + p1.x,p1.y, + p2.x,p2.y, + p3.x,p3.y, + bat.x,0, + 0,bat.y, + bat.x,bat.y, + 2,0) +end + +bats={} +for i=1,20 do + bats[i]={x=rand()*240,y=rand()*136,s=i*4+20} +end + +clouds={} +for i=1,50 do + clouds[i]={ + x=rand()*300-30,y=rand()^2*80, + dx=rand()*2-2} +end +cpts={} +for i=1,10 do + cpts[i]={x=rand()*40-20,y=rand()*20-10,s=rand()*5+5} + cpts[i].col=(-cpts[i].y/20+.5)*10+3 +end + +xs={} +for i=1,20 do + local y=rand() + xs[i]={x=rand()*300,y=100+y*40,s=y*15+5, + dx=y+1,col=y*10+3} +end + +function TIC() + -- GREETZ to lynn, suule, truck + -- and ofc aldroid + violet <3 + -- plus all the cats out there + + vbank(0) + cls() + makebat() + + vbank(1) + cls() + for i=1,#bats do + drawbat( + bats[i].x+sin(t/30+i)*40, + bats[i].y+sin(t/37.35+i)*25, + bats[i].s) + end + + vbank(0) + cls() + + --print("stay on the path",0,50,15,0,2) + local ex=sin(t/30)^5*40 + local ex2=cos(t/30)^5*20 + elli(60+ex,80,50,20,15) + elli(60+ex+ex2,80,10,50,0) + elli(180+ex,80,50,20,15) + elli(180+ex+ex2,80,10,50,0) + rect(0,100,240,36,1) + + rect(80,50,80,60,1) + + rect(80,30,20,20,1) + tri( + 80,30,100,30,90,10,1) + rect(140,30,20,20,1) + tri( + 140,30,160,30,150,10,1) + + circ(120,85,5,2) + rect(115,85,11,20,2) + rect(90,80,10,13,2) + rect(140,80,10,13,2) + + for i=1,#clouds do + local c=clouds[i] + for j=1,#cpts do + elli( + c.x+cpts[j].x, + c.y+cpts[j].y, + cpts[j].s*1.2, + cpts[j].s, + cpts[j].col) + end + c.x=c.x+c.dx + if c.x<-30 then c.x=300 end + end + + for i=1,#xs do + local x=xs[i] + rect(x.x-1,x.y-x.s/2,2,x.s*1.5,x.col) + rect(x.x-x.s/2,x.y-1,x.s,2,x.col) + x.x=x.x-x.dx + if x.x<-30 then x.x=270 end + end + t=t+1 +end + +function BDR(y) + vbank(0) + for i=0,2 do + poke(16320+i,75-y/2) + poke(16320+i+3,y/2) + end + --poke(0x3FF9,sin(t/20-y/20)*20) + --poke(0x3FFa,sin(t/20-y/20)*20) +end \ No newline at end of file diff --git a/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/lynn.lua b/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/lynn.lua new file mode 100644 index 000000000..a43551949 --- /dev/null +++ b/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/lynn.lua @@ -0,0 +1,77 @@ +-- greetings from sunny Seattle~ +function TIC()t=time()/512 +cls() + +--quick plasma barz? + +for i=0,168 do +k=(math.sin((t/5)+(i/32))*3+1) +line(0,i,240,i,k) +end + + +text="merry christmas" +x=(math.sin(t)*32)+32 +y=(math.cos(t/3)*48)+60 +print(text,x,y,0,true,2) +print(text,x-1,y-1,12,true,2) + + +x=24 +y=0 +k=3 + +for i=0,32 do + + cos=(math.cos(t/8)*2)+4 + + y=(math.sin(t+i+cos)*80)+70 + x=(math.cos(t+i*4)*32)+i*8 + pumpkin(k,x,y,i) + + if k<5 then k=k+1 else k=3 end +end + +end + + +function pumpkin(k,x,y,i) +--shadow? outline? thing?? +elli(x,y-8,2,13,0) +elli(x,y,11,13,0) +elli(x-8,y,9,13,0) +elli(x+8,y,9,13,0) +elli(x-14,y,9,13,0) +elli(x+14,y,9,13,0) +--body +elli(x,y-8,1,12,6) +elli(x,y,10,12,k) +elli(x-8,y,8,12,k) +elli(x+8,y,8,12,k) +elli(x-14,y,8,12,k) +elli(x+14,y,8,12,k) + +--line stuff +ellib(x,y-8,1,12,0) +ellib(x,y,10,12,0) +ellib(x-8,y,8,12,0) +ellib(x+8,y,8,12,0) +ellib(x-14,y,8,12,0) +ellib(x+14,y,8,12,0) + +--eyes + +--give them some movement +a=(math.cos((t)/2+i)*1) +b=(math.sin((t)+i)*1) + +circ(x-10,y-2,4,0) +circ(x+10,y-2,4,0) +circ(x-10+a,y-2+b,2,12) +circ(x+10+b,y-2+a,2,12) +circ(x-10+b,y-2+a,1,0) +circ(x+10+a,y-2+b,1,0) +--mouth +elli(x,y+5,8,2,0) +rect(x-4,y+1+2,9,2,k) +end \ No newline at end of file diff --git a/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/suule.lua b/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/suule.lua new file mode 100644 index 000000000..19d5bdc08 --- /dev/null +++ b/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/suule.lua @@ -0,0 +1,234 @@ +-- Boo! +-- I hope this is gonna work out well! + +sin=math.sin +cos=math.cos +abs=math.abs + +function q(x1,y1,x2,y2,x3,y3,x4,y4,col) + tri(x1,y1,x2,y2,x3,y3,col) + tri(x2,y2,x3,y3,x4,y4,col) +end + +function ear1(tim) + a=sin(tim/40) + q(134+a*3,8+a*2, 156+a*3,19+a*2, 122,16, 148,34, 15) + q(163+a*5,-4+a*3, 164+a*5,3+a*3, 134+a*3,8+a*2, 156+a*3,19+a*2, 15) + q(136+a*3,9+a*2, 152+a*3,17+a*2, 125,18, 141,29, 0) + q(158+a*5,0+a*3, 162+a*5,1+a*3, 136+a*3,9+a*2, 152+a*3,17+a*2, 0) +end + +function ear2(tim) + a=sin(tim/40) + q(76+a*3,7+a*2, 79+a*3,7+a*2, 76,36, 80,34, 15) + q(79+a*3,7+a*2, 88+a*3,7+a*2, 80,34, 88,38, 0) + q(88+a*3,7+a*2, 96+a*3,6+a*2, 88,38, 101,30, 0) + q(96+a*3,6+a*2, 100+a*3,2+a*2, 101,30, 107,18, 15) + q(76+a*3,7+a*2, 79+a*3,7+a*2, 75+a*5,-14+a*3, 76+a*5,-14+a*3, 15) + q(79+a*3,7+a*2, 88+a*3,7+a*2, 76+a*5,-14+a*3, 77+a*5,-16+a*3, 0) + q(88+a*3,7+a*2, 96+a*3,6+a*2, 77+a*5,-16+a*3, 79+a*5,-16+a*3, 0) + q(96+a*3,6+a*2, 100+a*3,2+a*2, 79+a*5,-16+a*3, 89+a*5,-13+a*3, 15) +end + + +function body(tim) + a=abs(sin(tim/30)) + q(63,77, 110,97, 60,94, 106,108, 0) + q(60,94, 106,108,53,108, 112,119, 0) + q(53,108, 112+a*2,119-a*1.5,36,122-a*2, 112,136, 0) + q(17-a*3,128-a*2, 36,122-a*2, 10-a*3,136, 112,136, 0) + q(112+a*2,119-a*1.5,136+a*3,128-a*2,112,136,146+a*3,136, 0) + q(77-a*1.5,123, 75-a*1.5,98, 80+a*1.5,125, 84+a*1.5,124, 15) + q(88-a*1.5,124, 96,122-a*1.5, 94+a*2,117-a*1.5, 98,107-a*1.5, 15) + q(98,107-a*1.5, 96,122-a*1.5, 100-a*2,118-a*1.5, 108+a*2,122-a*1.5, 15) + q(44,125-a*1.5, 62,127-a*1.5, 38,128-a*1.5, 45,129-a*1.5, 15) +end + +function antlers() + q(70,16, 78,13, 81,32, 90,24, 14) + q(69,12, 77,11, 70,16, 78,13, 14) + q(69,12, 77,11, 67,8, 75,6, 14) + q(67,8, 75,6, 63,0, 72,0, 14) + q(50,8, 69,12, 50,12, 70,16, 15) + q(51,4, 67,8, 50,8, 69,12, 14) + q(39,5, 50,8, 38,9, 50,12, 15) + q(40,1, 51,4, 39,5, 50,8, 14) + q(32,5, 39,5, 32,9, 38,9, 15) + q(31,2, 40,1, 32,5, 39,5, 14) + q(29,0, 39,0, 31,2, 40,1, 14) + q(22,7, 32,5, 23,10, 32,9, 15) + q(21,3, 31,2, 22,7, 32,5, 14) + q(11,9, 22,7, 11,12, 23,10, 15) + q(12,5, 21,3, 11,9, 22,7, 14) + q(0,3, 11,9, 0,8, 11,12, 15) + q(0,-3, 12,5, 0,3, 11,9, 14) + q(118,7, 126,8, 117,16, 125,18, 14) + q(118,4, 126,5, 118,7, 126,8, 13) + q(117,2, 125,2, 118,4, 126,5, 13) + q(116,0, 124,0, 117,2, 125,2, 13) + q(125,2, 128,0, 126,5, 130,4, 13) + q(128,0, 133,0, 130,4, 135,3, 13) + q(126,5, 130,4, 126,8, 132,7, 14) + q(130,4, 135,3, 132,7, 136,6, 14) + q(135,3, 146,0, 136,6, 143,3, 14) + q(133,0, 146,0, 135,3, 142,0, 13) +end + + +function insidejaw() +-- inside + q(106,68, 115,64, 107,73, 119,70, 0) + q(107,73, 119,70, 107,84, 130,80, 0) + q(107,84, 130,80, 136,109,160,107,0) + q(136,109,160,107,143,121,162,124,0) + q(111,86, 136,106,110,87, 135,108,15) + q(113,82, 135,102,111,86, 134,105,13) + q(116,81, 138,101,113,82, 135,102,14) + q(135,102,138,101,134,105,136,106,14) + q(141,115,147,118,140,117,147,120,15) + q(145,113,149,114,141,115,147,118,14) + q(149,108,151,109,145,113,149,114,13) + q(148,120,161,122,150,118,163,119,15) + q(150,118,163,119,151,115,165,117,13) +end + +function jaw() +-- dark + q(101,63, 105,64, 97,84, 103,85, 14) + q( 97,84, 103,85, 96,93, 120,101,14) + q( 96,93, 120,101,111,102,133,111,14) + q(111,102,133,111,128,117,137,116,14) + q(111,102,133,111,128,117,137,116,14) + q(128,117,137,116,136,123,141,119,14) + q(141,119,146,122,136,123,145,127,14) + q(136,123,145,127,145,129,154,128,14) +-- medium + q(105,64, 108,66, 103,85, 107,84, 13) + q(103,85, 107,84, 120,101,123,98, 13) + q(120,101,123,98, 133,111,136,109,13) + q(133,111,136,109,137,116,141,116,13) + q(137,116,141,116,141,119,145,119,13) + q(141,119,145,119,146,122,150,120,13) + q(150,120,159,122,146,122,156,125,13) + q(146,122,156,125,145,127,154,128,13) +-- light + q(159,122,162,122,156,125,159,125,12) + q(156,125,159,125,154,128,156,128,12) +end + +function head() + --Teeth + q(114,77, 137,97, 114,81, 135,101,13) + q(137,97, 140,97, 135,101,138,100,14) + q(143,101,148,105,142,103,147,107,15) + q(142,103,147,107,141,106,145,109,14) + q(141,106,145,109,140,112,141,113,13) + q(153,110,170,112,152,113,166,115,0) + q(153,113,170,113,152,114,166,116,13) + --Ultradark + q(73,36, 105,15, 75,44, 89,38, 15) + q(65,49, 73,36, 68,52, 75,44, 15) + q(65,49, 68,52, 64,62, 68,64, 15) + q(64,62, 68,64, 64,73, 68,73, 15) + q(64,73, 68,73, 65,79, 71,79, 15) + q(65,79, 71,79, 75,85, 76,85, 15) + q(101,64, 108,63, 95,74, 102,78, 15) + q(95,74, 102,78, 84,87, 98,94, 15) + --Dark + q(76,85, 95,74, 80,86, 84,87, 14) + q(89,38, 105,15, 85,55, 101,32, 14) + q(75,44, 89,38, 68,52, 85,55, 14) + q(68,52, 85,55, 68,64, 87,62, 14) + q(68,73, 95,74, 68,52, 85,55, 14) + q(68,73, 95,74, 71,79, 76,85, 14) + q(110,59, 114,62, 108,62, 111,74, 14) + q(106,44, 115,51, 104,56, 114,62, 14) + q(106,34, 118,35, 106,44, 115,51, 14) + q(118,35, 127,38, 115,51, 133,40, 14) + q(130,40, 137,44, 115,51, 137,51, 14) + q(114,62, 136,58, 115,51, 137,51, 14) + q(114,62, 120,73, 111,74, 115,78, 14) + q(120,73, 130,77, 115,78, 122,85, 14) + q(122,85, 130,77, 130,92, 135,89, 14) + q(130,92, 135,89, 144,103,150,102,14) + q(144,103,150,102,148,107,153,107,14) + q(148,107,153,107,153,111,159,112,14) + --Medium + q(87,62, 104,56, 95,74, 101,64, 13) + q(104,56, 110,59, 101,64, 108,63, 13) + q(101,32, 106,34, 85,55, 106,44, 13) + q(85,55, 106,44, 87,62, 104,56, 13) + q(105,15, 116,14, 101,32, 106,34, 13) + q(116,14, 133,24, 106,34, 118,35, 13) + q(133,24, 138,32, 118,35, 127,38, 13) + q(127,38, 138,32, 134,37, 143,39, 13) + q(127,38, 134,37, 130,40, 135,40, 13) + q(130,40, 135,40, 137,44, 140,42, 13) + q(146,45, 148,41, 148,51, 151,46, 13) + q(137,51, 140,51, 136,58, 139,58, 13) + q(137,44, 141,45, 137,51, 140,51, 13) + q(140,42, 143,39, 137,44, 141,45, 13) + q(136,58, 139,58, 114,62, 139,61, 13) + q(114,62, 139,61, 120,73, 143,68, 13) + q(120,73, 143,68, 130,77, 153,77, 13) + q(130,77, 153,77, 135,89, 161,94, 13) + q(135,89, 161,94, 150,102,170,103,13) + q(150,102,170,103,153,107,169,107,13) + q(153,107,169,107,159,112,167,112,13) +-- Bright + q(116,14, 123,15, 133,24, 138,21, 12) + q(133,24, 138,21, 138,32, 146,28, 12) + q(138,32, 146,28, 143,39, 148,41, 12) + q(146,28, 152,35, 148,41, 157,42, 12) + q(134,37, 143,39, 135,40, 140,42, 12) + q(148,41, 157,42, 151,46, 156,46, 12) + q(143,39, 148,41, 141,45, 146,45, 12) + q(141,45, 146,45, 140,51, 148,51, 12) + + q(139,58, 149,58, 139,61, 155,59, 12) + q(140,51, 148,51, 139,58, 149,58, 12) + q(139,61, 155,59, 143,68, 157,66, 12) + q(143,68, 157,66, 153,77, 162,73, 12) + q(153,77, 162,73, 161,94, 175,91, 12) + q(153,77, 162,73, 161,94, 175,91, 12) + q(161,94, 175,91, 170,103,177,98, 12) + q(170,103,177,98, 169,107,174,106,12) + q(169,107,174,106,167,112,170,112,12) + +-- Nosehole + q(164,90, 170,90, 160,93, 165,101, 0) + q(170,90, 172,95, 165,101,174,99, 0) + q(165,101,174,99, 168,107,169,108 ,0) + q(168,107,169,108,167,112,168,112 ,0) + q(170,90, 174,91, 172,95, 174,99, 15) +end + +function eyes(tim) + q(150,46, 156,46, 148,51, 155,51, 0) + q(148,51, 155,51, 149,58, 155,59, 0) + q(149,58, 155,59, 152,61, 156,61, 0) + + q(110,40, 116,38, 109,49, 111,54, 0) + q(116,38, 124,39, 111,54, 118,60, 0) + q(124,39, 131,43, 118,60, 130,59, 0) + q(131,43, 133,48, 130,59, 133,55, 0) + + circ(120+6*sin(t/20),50+2*sin(t/20),2,3) + circ(120+6*sin(t/20),50+2*sin(t/20),1,4) + elli(152+1.5*sin(t/20),54+sin(t/20),2-sin(t/20),2,3) + elli(152+1.5*sin(t/20),54+sin(t/20),1,1,4) +end + +function TIC() + t=time()/60 + cls(8) + ear1(t) + body(t) + antlers() + insidejaw() + head() + ear2(t) + jaw() + eyes(t) +end + diff --git a/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/truck.fennel b/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/truck.fennel new file mode 100644 index 000000000..b5e7ab902 --- /dev/null +++ b/shader_file_sources/2023_10_30_byte_jam_monday_night_bytes/truck.fennel @@ -0,0 +1,109 @@ +;; script: fennel +;; So... basically: I can't edit, so... +;; hi! +;; we'll TRY this but it likely isn't working +;; yes I just spent 3 hours fixing the build as it +;; was missing fft functionality, kiitos megabates +;; for fixing that +;; oh it doesn't knowhat fennel is now? +;; ok now it knows fennel + +(global ms math.sin) +(global mc math.cos) +(global mt math.tan) +(global mf math.floor) +(global pi math.pi) +(global rnd math.random) + +;; ok well at least we've got that going +;; so yes um let's um... orange something +;; no I haven't touched tic80 in 8 months + +(fn _G.TIC [] +;; ok let's just do basic black background + (cls 0) + ;; we'll try to put the crap here + ;; no we're not able to type again. + + ;; well before the next thing I wille sure + ;; we have a functional thing WITH the ability + ;; to actually move around the source code + (global t (/ (time) 12800)) + (global c 0) + (global p1 1) + (global p2 2) + (global p3 3) + (global p4 4) + (circ 120 68 (* (rnd) 100) (+ 14 (* (rnd) 2))) + + (for [x 0 240 2] + (for [y 0 136 2] +; (pix x y (* (- 120 (* (mc t) x)) (* (ms t) y) t) >> 3) + + (pix (+ x 3) y p1) + (pix (- x 1) (+ y 1) p2) + (pix x (+ y 1) p3) +; this isn't a very good feedback thing but oh well + (global p1 (pix x y)) + (global p2 (+ p1 (pix x+1 y))) + (global p3 (+ p2 (pix x+1 y+1))) + (global p4 (+ (- p2 p3) (pix x y+1))) + ) + ) +;; we'll kill off the glitches at the top + (rect 0 0 240 2 0) + + +;; and some green ground or something + (rect 0 100 240 136 6) +;; yes I forgot how rectangles work + (for [i 0 240 5 ] + ;; this non-DRY stuff is killing me + (line (+ 0 i ) 110 (+ 3 i ) 100 4) + (line (+ 6 i ) 120 (+ 3 i ) 126 4) + (line (+ 1 i ) 115 (+ 2 i ) 118 4) + (line (+ 1 i ) 115 (+ 2 i ) 118 4) + (line (+ 4 i ) 125 (+ 0 i ) 130 4) + ;; heh I forgot rpn for a second + ;; and not having proper key movement is really annoying + ;; and my network dropped apparently + + ;; ok that's enough let's just do the damned pumkin + + ;; right we want to do this around a circle thing, ish + (for [i 0 (* 2 pi) (/ (* 2 pi) 12) ] + ;; why is this not centered + ;; got a bit distracted with being told that we are + ;; "spamming" in the tic80 channel, and ... "nope.gif" + ;; close enough + (elli (+ 125 (* (ms i) 30 )) + (+ 80 (* (mc i) 10 )) + 10 20 (+ c 4)) +; (global c (+ c 1)) + ; this is not working +; (when (c > 2) +; (print :hi) +; (global c (- c 1)) +; ) + ;; this isin radians isn't it + ;; ok now just put eyes etc on it + ;; this sucks anyway and I'm frustrated and not + ;; having fun due to the lack of keyboard controls + ;; ok so now the mouth part I guess + (elli 125 90 28 10 0) + (elli 125 85 28 8 4) + + ;; wt... well that was embarrasingly long to figure + (tri 110 65 105 70 115 70 0) + ;; ok seriously ... yay math skills + (tri 137 65 142 70 132 70 0) + (tri 125 72 120 86 130 86 3) + + ;; isn't that great? a static thing. right. let's... + ;; make some background thing and fight with the + ;; cursor keys + ) + ) + ) + + \ No newline at end of file diff --git a/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/doctorsoft.lua b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/doctorsoft.lua new file mode 100644 index 000000000..b87df2028 --- /dev/null +++ b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/doctorsoft.lua @@ -0,0 +1,93 @@ +-- Long time listener... +-- First time Jammer! + +-- Hi Mantratronic, Gasman, Visy +-- Lynn, EvilPaul, Lex, ToBach +-- & JTruk + +s=math.sin +c=math.cos + +precalc={} +cls() +width=print("HappyBday",0,0,1) + +index=1 -- Thank you Lua! +for x=0,width do + for y=0,7 do + precalc[index]=pix(x,y) + index=index+1 + end +end + +stars_x={} +stars_y={} +stars_z={} +depth=40 +nb_stars=150 + +for i=1,nb_stars do + stars_x[i]=math.random(-400,400) + stars_y[i]=math.random(-200,200) + stars_z[i]=math.random(0,depth) +end + +function TIC() + t=time()//32 + off_x=120 + off_y=68 + + -- Background AKA Sad Starfield :) + vbank(0) + cls() + + for i=1,nb_stars do + x=stars_x[i] + y=stars_y[i] + z=depth-(1+stars_z[i]+t/3)%(depth-1) -- Divide by zero is nasty + + sx=x/z + sy=y/z + + circ(sx+off_x,sy+off_y,0.5,12) + end + + -- Foreground + vbank(1) + cls() + + -- I'm blatently copying I saw + -- aldroid do but I'll tweak it. + --width=print("HappyBday",0,0,1) + + scale_x=4 + scale_y=4 + angle=t/30 + + for i=0,1 do + color=2 + if i==1 then + color=1+(t)%15 + end + + index=0 + for x=0,width do + for y=0,7 do + if precalc[index]==1 then + rel_x=x-(width/2) + rel_y=y-4 + + scr_x=scale_x*rel_x*c(angle)-scale_y*rel_y*s(angle) + scr_y=scale_y*rel_y*c(angle)+scale_x*rel_x*s(angle) + + circ(off_x+scr_x, + off_y+scr_y, + 3-i, + color) + end + + index=index+1 + end + end + end +end diff --git a/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/evilpaul.lua b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/evilpaul.lua new file mode 100644 index 000000000..2c74a82ef --- /dev/null +++ b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/evilpaul.lua @@ -0,0 +1,133 @@ +mPi=math.pi +mRandom=math.random +mSqrt=math.sqrt +mSin=math.sin +mCos=math.cos +mAbs=math.abs +mAtan=math.atan +mFloor=math.floor +function mLerp(a,b,v) + return a+(b-a)*v +end +function mClamp(a,min,max) + if amax then return max end + return a +end +function cheapAssBloom(limit,size,color) + local i=0 + for y=2,131+2,6 do + for x=2,239+2,6 do + if charBuffer[i]>limit then + circ(x,y,size,color) + end + i=i+1 + end + end +end + +-- charset magic +charSetSrc=" `'->|=:{;!*x@XKq2#W" +charSet={} +for i=0,#charSetSrc-1 do + charSet[i]=string.sub(charSetSrc,i+1,i+1) +end +charSetMod=#charSetSrc-1 + +-- palette +for i=0,15 do + local v=(i/15)^1.3 + poke(0x3fc0+i*3+1,mClamp(mLerp(0,455,v),0,255)) + poke(0x3fc0+i*3+0,mClamp(mLerp(0,205,v),0,255)) + poke(0x3fc0+i*3+2,mClamp(mLerp(0,105,v),0,255)) +end + +function TIC() + cls(0) + + -- textmode fx + local t=time()/1000 + math.randomseed(t/10) + local arcs=mRandom(1,10) + local offX=mSin(5.451+t*0.82)*20+mSin(7.413+t*0.31)*20 + local offY=mSin(8.953+t*0.99)*20+mSin(5.483+t*0.58)*20 + local rot=mSin(2.321+t*0.32)*5 + local travel=-t + local twist=mSin(4.123+t*0.51)*.02 + local bright=mSin(1.453+t*0.52)*.25+.25 + for y=0,136,6 do + local dy=136/2-y+offY + for x=0,239,6 do + local dx=239/2-x+offX + local dist=mSqrt(dx*dx+dy*dy) + local ang=mAtan(dx,dy)+rot+dist*twist + local v=mSin(ang*arcs) + v=v*mSin(dist*.025+travel) + v=v+bright + v=mClamp(v,0,1)^2 + v=mFloor(v*charSetMod) + print(charSet[v],x,y,1,true) + end +end + + -- greets text + rect(3*6,3*6,13*6,3*6,0) + print("Textmode <3",4*6,4*6,1,true) + + -- capture tet + screenBuffer={} + for i=0,136*240 do + screenBuffer[i]=peek4(i) + end + + -- blurred cells + charBuffer={} + local i=0 + for y=0,136,6 do + for x=0,239,6 do + local v=0 + for cy=y,y+5 do + for cx=x,x+5 do + v=v+pix(cx,cy) + end + end + charBuffer[i]=v + i=i+1 + end + end + + -- cheap-ass bloom + cheapAssBloom(3,20,1) + cheapAssBloom(5,10,2) + cheapAssBloom(10,5,3) + cheapAssBloom(12,3,4) + cheapAssBloom(14,2,5) + + -- elements assemble! + math.randomseed(time()) + local i=0 + for y=0,135,2 do + local cy=mSin(y/135*mPi)^.4 + for x=0,239 do + local cx=mSin(x/239*mPi)^.4 + local v=screenBuffer[i]*8 + v=v+peek4(i)+mRandom()*2 + pix(x,y,v*cx*cy) + i=i+1 + end + y=y+1 + for x=0,239 do + local cx=mSin(x/239*mPi)^.4 + local v=screenBuffer[i]*8 + v=v+peek4(i)+mRandom()*2 + pix(x,y,v*cx*cy*.8) + i=i+1 + end + end +end +--lastT=0 +--function OVR() + --local newT=time() + --print(1000/(newT-lastT),202,1,12) + --lastT=newT +--end diff --git a/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..2b6a2dabd --- /dev/null +++ b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,93 @@ + +-- BYTE JAM IS JARIG!!!!!!!! +-- greetings to everyone.... ^ +-- mantratronic * doctor soft * tobach +-- lynn * evilpaul * lex * visy +-- jtruk * raccoonviolet * aldroid + +function TIC() + t=time() + for i=1,14 do + poke(16320+i*3,192) + v=128+96*math.sin(i*math.pi/8+t/100) + poke(16321+i*3,v) + poke(16322+i*3,0) + end + + poke(16320+45,0) + poke(16320+46,128) + poke(16320+47,32) + + cls() + +coords={} +for x=-14,14 do + coords[x]={} + r2=(1.1+0.3*math.sin(t/156+x))*(14-math.abs(x))/14 + for y=0,16 do + ya=math.pi*2*y/16 + coords[x][y]={ + x/2,r2*math.cos(ya)+1.5*math.sin(t/234+x/4),r2*math.sin(ya) + } + end +end + + +ry=t/534 + +rcoords={} + +for x=-14,14 do + rcoords[x]={} + for y=0,16 do + coord=coords[x][y] + x1=coord[1]*math.cos(ry)+coord[3]*math.sin(ry) + y1=coord[2] + z1=coord[3]*math.cos(ry)-coord[1]*math.sin(ry) + zscale=1+5/(10+z1) + rcoords[x][y]={ + 120+10*zscale*(x1), + 68+10*zscale*(coord[2]) + } + end +end + +for x=-14,13 do + for y=0,16 do + c0=rcoords[x][y] + c1=rcoords[x][(y+1)%16] + c2=rcoords[x+1][y] + tri( + c0[1],c0[2], + c1[1],c1[2], + c2[1],c2[2], + (x//2)+8 + ) + end +end + +for x=-10,10 do + for z=-10,10 do + x1=x*math.cos(ry)+z*math.sin(ry) + z1=5+z*math.cos(ry)-x*math.sin(ry) + y1=( + 8+math.sin(x+t/234)/2 + +math.sin(z/4+t/2345)/2 + ) + zscale=1+5/(20+z1) + circ(120+6*x1*zscale,68+6*y1*zscale,2,15) + end +end + +--for x=-14,14 do +-- for y=0,16 do +-- coord=rcoords[x][y] +-- circ( +-- coord[1], +-- coord[2], +-- 1,(x//2)+8 +-- ) +-- end +-- end + +end diff --git a/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..4d4d85bc9 --- /dev/null +++ b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,174 @@ +-- Greets: +-- MANTRATRONIC GASMAN +-- DOCTOR SOFT VISY +-- LYNN EVILPAUL +-- LEX TOBACH +-- VIOLET ALDROID + +T=0 +SIN,COS=math.sin,math.cos +X,Y,Z=0,0,0 + +P={ + {x=-1,y=-1,z=0}, + {x=1,y=-1,z=0}, + {x=1,y=1,z=0}, + {x=-1,y=1,z=0}, +} + + +function BDR(y) + vbank(0) + local addr=0x3fc0+2*3 + poke(addr,y) + poke(addr+1,(.5+SIN(y*.1+T*.1)*.5)*128) + poke(addr+2,(.5+SIN(y*.14+T*.16)*.5)*128) +end + +function TIC() + vbank(1) + cls() + + sc=1+(SIN(T*.05)/math.pi)*1 + cakeW,cakeH=100,100 + drawCake(cakeW,cakeH,sc) + + vbank(0) + cls() + + for i=0,8 do + local u0x,u0y=(i%3)/3,(i//3)/3 + local u1x,u1y=u0x+1/3,u0y+1/3 + local p0x,p0y=u0x*2-1,u0y*2-1 + local p1x,p1y=u1x*2-1,u1y*2-1 + P={ + {x=p0x,y=p0y,z=0}, + {x=p1x,y=p0y,z=0}, + {x=p1x,y=p1y,z=0}, + {x=p0x,y=p1y,z=0} + } + + pT={} + rX=T*0.014+SIN(i*.06+T*.03) + rY=T*0.022+SIN(i*.03+T*.05) + rZ=T*0.03+SIN(i*.04+T*.03) + for i=1,#P do + p=P[i] + pT[i]=proj( + rotZ(rotY(rotX(p,rX),rY),rZ) + ) + end + drawQ( + pT[1].x, pT[1].y, pT[1].z, + pT[2].x, pT[2].y, pT[2].z, + pT[3].x, pT[3].y, pT[3].z, + pT[4].x, pT[4].y, pT[4].z, + u0x*cakeW,u0y*cakeH,u1x*cakeW,u1y*cakeH + ) + end + + vbank(1) + cls() + + print("HAPPY",96,101,3,false,2) + print("BYTEJAMMIVERSARY",31,116,3,false,2) + + print("HAPPY",95,100,12,false,2) + print("BYTEJAMMIVERSARY",30,115,12,false,2) + + T=T+1 +end + +function drawCake(w,h,s) + local wh,hh=w/2,h/2 + local cakeW=s*60 + rect(0,0,w,h,2) + elli(wh,hh+s*20,cakeW/2,5*sc,12) + elli(wh,hh-s*10,cakeW/2,5*sc,12) + rect(wh-cakeW/2,hh-s*10,cakeW+2,s*30,12) + rect(wh-2,hh-s*30,4,20*s,12) +end + +function drawQ( + d0x,d0y,d0z, + d1x,d1y,d1z, + d2x,d2y,d2z, + d3x,d3y,d3z, + s0x,s0y,s1x,s1y +) + drawT(d0x,d0y,d0z,d1x,d1y,d1z,d2x,d2y,d2z, s0x,s0y,s1x,s0y,s1x,s1y) + drawT(d2x,d2y,d2z,d3x,d3y,d3z,d0x,d0y,d0z, s1x,s1y,s0x,s1y,s0x,s0y) +end + +function drawT(d0x,d0y,d0z,d1x,d1y,d1z,d2x,d2y,d2z,s0x,s0y,s1x,s1y,s2x,s2y) + ttri( + d0x,d0y,d1x,d1y,d2x,d2y, + s0x,s0y,s1x,s1y,s2x,s2y, + -- huh. Maybe come back to z correcton later! + 2,-1,1,1,1 + ) +end + +function proj(p) + local zF=1/(6-p.z) + + return { + x=120+(p.x/zF)*10, + y=68+(p.y/zF)*10, + z=p.z/zF + } +end + +function rotX(p,r) + return { + x=p.x, + y=p.y*COS(r)-p.z*SIN(r), + z=p.y*SIN(r)+p.z*COS(r), + } +end + +function rotY(p,r) + return { + x=p.x*COS(r)-p.z*SIN(r), + y=p.y, + z=p.x*SIN(r)+p.z*COS(r), + } +end + +function rotZ(p,r) + return { + x=p.x*COS(r)-p.y*SIN(r), + y=p.x*SIN(r)+p.y*COS(r), + z=p.z + } +end + +-- +-- 001:eccccccccc888888caaaaaaaca888888cacccccccacc0ccccacc0ccccacc0ccc +-- 002:ccccceee8888cceeaaaa0cee888a0ceeccca0ccc0cca0c0c0cca0c0c0cca0c0c +-- 003:eccccccccc888888caaaaaaaca888888cacccccccacccccccacc0ccccacc0ccc +-- 004:ccccceee8888cceeaaaa0cee888a0ceeccca0cccccca0c0c0cca0c0c0cca0c0c +-- 017:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec +-- 018:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee +-- 019:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec +-- 020:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee +-- + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000 +-- + +-- +-- 000:100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/lex.lua b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/lex.lua new file mode 100644 index 000000000..87280e09d --- /dev/null +++ b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/lex.lua @@ -0,0 +1,124 @@ +-- live coded Jam-o-matic jam factory +-- Monday night bytes anniversary byte jam 13th Nov 2023 +-- Lex Bailey + +function jar(x,y,s,fill) + local s2 = s*0.8 + ellib(x,y+s2,s,s/3,12) + line(x+(s*0.4),y+s2-(s*0.3),x+(s*0.4),y-s2-(s*0.3),12) + line(x-(s*0.5),y+s2-(s*0.3),x-(s*0.5),y-s2-(s*0.3),12) + + local s3 = s*1.5 + if fill>0 then + for i=0,(fill*s3) do + elli(x,y+s2-i-1,s,s/3,2) + end + end + ellib(x,y+s2-1-(fill*s3),s,s/3,1) + line(x-s,y+s2,x-s,y-s2,12) + line(x+s,y+s2,x+s,y-s2,12) + line(x+(s*0.5),y+s2+(s*0.3),x+(s*0.5),y-s2+(s*0.3),12) + line(x-(s*0.4),y+s2+(s*0.3),x-(s*0.4),y-s2+(s*0.3),12) + ellib(x,y-s2,s,s/3,12) + ellib(x,y-s2-(s*0.03),s*0.95,(s/3)*0.95,12) + ellib(x,y-s2-(s*0.1),s*0.9,(s/3)*0.9,12) + +end + +function filler(level) + tri(120-15,20,120+15,20,120,40,13) + rect(120-6,0,12,40,13) + rect(120-15,0,30,20,8) + if level > 0 then + rect(120-6,40,12,32,2) + end + rect(120-6,77,12,level-40,2) + print("JAM", 111, 0, 12) + print("-O-", 113, 7, 12) + print("MATIC", 107, 14, 12) +end + +function conveyor(o) + rect(0,100,240,30,13) + for i=-5,16 do + local o2 = o + (i*20) + tri(o2+0,100,o2+0,130,o2+10,115,14) + end +end + +function rear_conveyor(o) + rect(0,55,240,15,13) + for i=-5,16 do + local o2 = -o + (i*25) + tri(o2+0,55,o2+0,70,o2-10,62,14) + end +end + +function lid(o,p,q) + elli(200+o,-38+p,30,10,9) + local a = -50+p-q + rect(195,0,10,7+a,13) + rect(170,a,62,10,13) + if p<100 then + tri(170,a,170,a+30,160,a+5,13) + tri(232,a,232,a+30,242,a+5,13) + else + tri(170,a,160,a+30,160,a+5,13) + tri(232,a,242,a+30,242,a+5,13) + end +end + +function logo(x,y) + tri(x-15,y,x,y+15,x+15,y-8,0) + trib(x-11,y+1,x-1,y+12,x+10,y-5,1) + trib(x-8,y+2,x-1,y+9,x+6,y-2,11) + print("FX",x-6,y,4) +end + +function labels(o,p,q) + local a = p-q-100 + + if p == 100 then + logo(40+o,90) + end + logo(120+o,90) + logo(200+o,90) + + circ(40,100-a,20,15) + rect(35,100-a,10,40,15) +end + +local t = 0 +function TIC() + t = t+1 + cls() + p = math.min(100, t%200) + q = math.max(100, t%200)-100 + r = t % 50 + offset = (q * (80/100)) + + rear_conveyor(r) + for i=-3,6 do + jar(120-r+(i*50),50,15,0) + end + + + conveyor(offset) + + jar(-40+offset,90,30,0) + jar(40+offset,90,30,0) + jar(120+offset,90,30,p/100) + jar(200+offset,90,30,1) + + local lvl = 0 + if p < 100 then + lvl = 80-(p*0.6) + end + filler(lvl) + + lid(offset,p,q) + + labels(offset,p,q) + +end + diff --git a/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/lynn.lua b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/lynn.lua new file mode 100644 index 000000000..971e3afa0 --- /dev/null +++ b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/lynn.lua @@ -0,0 +1,69 @@ +-- twitch chat broke for me +-- all communication will go thru +-- comments. lol :3 + +function BDR(l) + r=math.ceil((math.sin(l/(t/3))*4)+4) + poke(0x03ff9,math.random(0,r)) +end + +function TIC()cls()t=time()/256 + +for i=1,64 do + + -- joke's on you i dont actually + -- know any maths + -- i'm just a cat lmao + + x=((math.cos((t/3)+(i*3))*96)+(240/2)) + y=((math.sin((t/8)+(i*4))*80)+(136/2)) + k=i*4 + aminal(x,y,k) +end + +end + +function OVR() +text() +end + +function aminal(x,y,k) + +-- draw an aminal +-- it is a very cute aminal ok +-- don't hurt it's feelings +-- or mine for that matter +-- i'm trying my bestest ;-; + +elli(x,y,18,18,0) +elli(x-10,y-12,8,18,0) +elli(x+10,y-12,8,18,0) + + +elli(x,y,16,16,k) +elli(x-10,y-12,6,16,k) +elli(x+10,y-12,6,16,k) + +elli(x-6,y-3,4,4,0) +elli(x+6,y-3,4,4,0) +elli(x-6,y-3,2,2,2) +elli(x+6,y-3,2,2,2) +end + +function text() +txt="it all worked out" +txt2="in the end, didn't it?" +s=1 +x=240-((string.len(txt)*(s*6))) +y=136-((s*7)) + +print(txt,x+1,(y+1)-(s*8),15,true,s) +print(txt,x,y -(s*8),12,true,s) + +s=1 +x=240-((string.len(txt2)*(s*6))) +y=136-((s*7)) + +print(txt2,x+1,y+1,15,true,s) +print(txt2,x,y,12,true,s) +end \ No newline at end of file diff --git a/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..e97e7cc68 --- /dev/null +++ b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,164 @@ +-- mt here +-- greets to hoffman,aldroid,violet, +-- gasman, doctor soft, +-- visy, ^lynn, evilpaul, +-- lex, tobach, jtruk. + +m=math +s=m.sin +c=m.cos + +local ffth={} +local fftn={} +local texts={ + {"1YEAR",3}, + {"BYTE",4}, + {"JAAAM",3}} + +function rot(i,ax,ay,az) +local ret = rotx(i,ax) +ret = roty(ret,ay) +ret = rotz(ret,az) +return ret +end + +function rotx(i,ax) +local xx,yy,zz +yy = i.y*c(ax)-i.z*s(ax) +zz = i.z*c(ax)+i.y*s(ax) +return {x=i.x,y=yy,z=zz} +end + +function roty(i,ay) +local xx,yy,zz +xx = i.x*c(ay)-i.z*s(ay) +zz = i.z*c(ay)+i.x*s(ay) +return {x=xx,y=i.y,z=zz} +end + +function rotz(i,az) +local xx,yy,zz +xx = i.x*c(az)-i.y*s(az) +yy = i.y*c(az)+i.x*s(az) +return {x=xx,y=yy,z=i.z} +end + +local ps={} +local npx=10 +local npy=10 +local npz=5 +local eps={} + +function T2P(tex,siz) +hi=siz +cls() +ps={} +lp=print(tex,0,0,15,false,hi,false) +npx=lp +npy=hi*6 +for i=1,npx do +for j=1,npy do +if pix(i,j) == 15 then +for k=1,npz do +table.insert(ps,{x=i-npx/2,y=j-npy/2,z=k-npz/2}) +end +end +end +end +end + +function BOOT() +for i=0,255 do +ffth[i]=0 +fftn[i]=0 +end +end + +local ot=-1 +local fa=0 +local rp={} +function TIC()t=time()/32 + +if (t/500)//1%#texts ~= ot then + ot = (ot+1)%#texts + for i=1,#rp,5 do + table.insert(eps,rp[i]) + end + T2P(texts[ot+1][1],texts[ot+1][2]) +end + +rs=7+4*s(t/100) +gs=7+4*s(t/100+m.pi*2/3) +bs=7+4*s(t/100+m.pi*4/3) +for i=1,14 do + poke(0x3fc0+i*3,10+i*rs) + poke(0x3fc0+i*3+1,10+i*gs) + poke(0x3fc0+i*3+2,10+i*bs) +end + poke(0x3fc0+0,0) + poke(0x3fc0+1,0) + poke(0x3fc0+2,0) + poke(0x3fc0+15*3,205) + poke(0x3fc0+15*3+1,227) + poke(0x3fc0+15*3+2,255) + +cls() +for i=0,255 do +fi=fft(i) +if fi > fftn[i] then + fftn[i]=fi +end + +ffth[i]=ffth[i]*.9 + (fi/fftn[i])*.1 +pix(i,130-ffth[i]*5,15) +end +fa=fa+ffth[5] +lp=print("1 Year of Jam Packed Bytes!",0,140,15) +print("1 Year of Jam Packed Bytes!",240-lp,131,15) + +rp={} +for i=1,#ps do + rp[i]=rot(ps[i],fa/200+s(ps[i].x/10+fa/25),fa/50,fa/100) +end +table.insert(eps,rp[m.random(#rp)]) +for i=1,#eps do + if eps[i]~=nil then + eps[i].x=eps[i].x+0.05+0.1*s(fa/10) + eps[i].y=eps[i].y-0.1 + eps[i].z=eps[i].z-0.05 + + if eps[i].y < -50 then + table.remove(eps,i) + end + end + if eps[i]~=nil then + table.insert(rp,eps[i]) + end +end +table.sort(rp, function (a,b) return a.z < b.z end) +--[[ +for i=1,5 do + first = m.random(#eps)+1 + while eps[first]~=nil do + first = m.random(#eps)+1 + end + second = m.random(#eps)+1 + while eps[first]~=nil do + second = m.random(#eps)+1 + end + + sz1=(eps[first].z+npy/2)/3 + sz2=(eps[second].z+npy/2)/3 + line(120+eps[first].x*sz1,73+eps[first].x*sz1-ffth[5]*6, + 120+eps[second].x*sz2,73+eps[second].x*sz2-ffth[5]*6,15) +end +--]] +for i=1,#rp do + sz=(rp[i].z+npy/2)/3 + if sz>0 then + circ(120+rp[i].x*sz,73+rp[i].y*sz-ffth[5]*6,2+sz/2,m.max(1,m.min(14,sz*1.4))) + end +end + + +end diff --git a/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..80aa48a49 --- /dev/null +++ b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,93 @@ +-- ^^^^^^^^ +--hellooooo toooooooobach here +-- +--blimey! 9 people!! +--greetz to mantra, lynn, dr soft +--lex, gasman, jtruk, visy and evilpaul + +txtarr={} +txtarr[1]= "C-301000 C-202C10 G-203900 ---00000" +txtarr[2]= "---00000 ---00000 G-203902 ---00000" +txtarr[3]= "---00000 D-202C20 G-303904 ---00000" +txtarr[4]= "---00000 ---00000 G-203906 ---00000" +txtarr[5]= "C-301000 E-202C10 G-203908 ---00000" +txtarr[6]= "---00000 ---00000 G-30390A ---00000" +txtarr[7]= "---00000 F-202C20 G-20390C ---00000" +txtarr[8]= "---00000 ---00000 G-30390E ---00000" +txtarr[9]= "C-301000 G-202C10 G-203910 ---00000" +txtarr[10]="---00000 ---00000 G-203912 ---00000" +txtarr[11]="---00000 A-202C20 G-303914 ---00000" +txtarr[12]="---00000 ---00000 G-203916 ---00000" +txtarr[13]="C-301000 B-202C10 G-203918 ---00000" +txtarr[14]="---00000 ---00000 G-30391A ---00000" +txtarr[15]="---00000 C-302C20 G-20391C ---00000" +--blank for copying :) +txtarr[17]="" + +ft=0 +ft2=0 +sin=math.sin +function TIC() + cls(13) + t=time()/80 + rect(10,55,220,79,0) + rect(0,87,240,8,13) + rectb(10,54,220,81,14) + for i=1,16 do + if i==5 then + print(txtarr[i],16,48+i*8,0,true) + else + print(txtarr[i],16,48+i*8,9,true) + end + end + ft=ft+4 + if ft>16 then + ft=0 + ft2=ft2+1 + if ft2>16 then ft2=0 end + copyshit() + end + for i=0,3 do + rect(83+i*38,18,32,26,0) + end + for i=0,31 do + pix(159+i,30+sin(i+t*2)*sin(i/3+t*2)*sin(i/7+t*2)*8,4) + end + for i=0,31 do + pix(121+i,30+sin(i/(16-ft2)+t*8)*8,4) + end + for i=0,31 do + pix(83+i,30+sin(i+t*i)*(8-ft2%4),4) + end + rectb(-1,43,242,12,14) + print("SONGNAME:",3,46,14,true) + print("MY EPIC CHOON______________",60,46,0,true) + print(" PLAY STOP PLST",88,2,14,false) + print("PATTERN CLEAR PSET-ED",88,10,14,false) + for j=0,1 do + for i=0,2 do + rectb(83+i*47,0+j*8,48,9,12) + end + end + print("JANK",5,5,15,true,3) + print("TRACKER",-1,21,15,true,2) + print("2.3D-SLP'1993",6,33,15,false) + + for i=0,3 do + rect(142,79-i*8,12,8,1+i) + end + for i=0,ft2*2%4 do + rect(88,79-i*8,12,8,1+i) + end + for i=0,ft2/2%4 do + rect(34,79-i*8,12,8,1+i) + end + +end + +function copyshit() + for i=1,16 do + txtarr[i]=txtarr[i+1] + end + txtarr[15]=txtarr[1] +end \ No newline at end of file diff --git a/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/visy.lua b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/visy.lua new file mode 100644 index 000000000..25531f5d5 --- /dev/null +++ b/shader_file_sources/2023_11_13_byte_jam_monday_night_bytes/visy.lua @@ -0,0 +1,39 @@ +-- pos: 0,0 +t = 0 +for y=0,136 do + for x=0,240 do + pix(x,y,(x+y+t)>>2) + end +end + +function dist( x1, y1, x2, y2 ) + return (x2-x1)^2 + (y2-y1)^2 +end +function TIC() + t=time()*0.002 + for y=t%2,136,1 do + for x=t%2,240,1 do + local cc = pix(x,y)-0.1 + if cc < 0 then cc = 0 end + pix(x,y,cc) + end + end + aa = 64+math.cos(t*0.5)*16 + for y=0,136,3 do + for x=0,240,2 do + local px = 120 + math.sin(t)*aa + local py = 136/2 + math.cos(t)*aa + c = dist(x,y,px,py) + print(x%8,-16+t*10%16+x*8,-16+y*4+t*10%16,t*0.1+x*0.1) + pix(x,y,t+t%(pix(x,y)-c*0.001)) + pix(x+1,y,t+t*2%(pix(x,y)-c*0.002)) + pix(x+1,y+1,t+t*3%(pix(x,y)-c*0.001)) + end + end + + for x = 0, 240,1 do + for y = 136/1.5,136 do + pix(x,y,math.floor(x*0.1+y*0.1+t*2-y*0.5*math.sin(y*0.1+t*0.1)*0.1)%4 - 9+pix(x,136-y*1.01)) + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/aldroid.glsl b/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/aldroid.glsl new file mode 100644 index 000000000..60820ac77 --- /dev/null +++ b/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/aldroid.glsl @@ -0,0 +1,120 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rot(float a) { + return mat2(cos(a),-sin(a),sin(a),cos(a)); +} + +void add_to_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + imageAtomicAdd(computeTex[0], px_coord, quant_col.x); + imageAtomicAdd(computeTex[1], px_coord, quant_col.y); + imageAtomicAdd(computeTex[2], px_coord, quant_col.z); +} + +vec3 read_pixel(ivec2 px_coord){ + return 0.001*vec3( + imageLoad(computeTexBack[0],px_coord).x, + imageLoad(computeTexBack[1],px_coord).x, + imageLoad(computeTexBack[2],px_coord).x + ); +} + +vec3 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec3( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25); +} +vec3 plas2(vec2 uv) { + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec3 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + t += f; + return t; +} + +float sdBox(vec3 p, vec3 sc) { + p = abs(p) - sc; + p.x+=texture(texFFTSmoothed,p.y/1).x*100; + return max(p.x,max(p.z,p.y)); +} + +vec2 scuv; + +float map(vec3 p) { + p.x += fGlobalTime*2; + + p.x = mod(p.x+5,10)-5; + p.xz *= rot(fGlobalTime); + scuv = p.xy; + return sdBox(p,vec3(2)); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv.y += texture(texFFTSmoothed,0.01).x*2-3; + uv.y = mod(uv.y,1); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro=vec3(0,0,-10),rd=normalize(vec3(uv,1)); + + float d,t=0; + + for (int i=0; i < 100; ++i) { + d = map(ro+rd*t); + if (d < 0.01) break; + t +=d; + } + + float bassam = (uv.x+uv.y+fGlobalTime*texture(texFFT,uv.y+1).x/1000)*(10-length(uv)*texture(texFFT,0.1).x*10); + vec3 col = vec3(floor(mod(bassam-0.1,2)),floor(mod(bassam,2)),floor(mod(bassam,2))); + add_to_pixel(ivec2( + gl_FragCoord.xy+vec2(sin(fGlobalTime)*uv.x,cos(fGlobalTime)*uv.y)*50 + ),col*length(uv)); + + add_to_pixel(ivec2(gl_FragCoord.xy),plas2(uv)*0.1); + + if (d< 0.01) { + //col = plas2(scuv/5); + col = read_pixel(ivec2(scuv*100+300)); + } + + // a vignette? with my reputation? + + col *= pow(max(1-length(uv),0),0.3)*1.3; + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/alia.glsl b/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/alia.glsl new file mode 100644 index 000000000..70aa67fad --- /dev/null +++ b/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/alia.glsl @@ -0,0 +1,155 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +/* + It's transgender day of remembrance! + I'm feeling kinda shitty for not being at the local vigil, but also not up to going. + So, going to do a thing for that. + Trans rights! +*/ + +#define Rot2D(p,a) p=cos(a)*p+sin(a)*vec2(-p.y,p.x); +#define eps 0.001 +#define time fGlobalTime + +vec3 pal[5] = vec3[5]( + vec3(.5,.5,1), + vec3(1,.5,.5), + vec3(1), + vec3(1,.5,.5), + vec3(.5,.5,1) +); + +vec3 font[20] = vec3[20]( + //t + vec3(1,1,1), + vec3(0,1,0), + vec3(0,1,0), + vec3(0,1,0), + vec3(0,1,0), + //d + vec3(1,1,0), + vec3(1,0,1), + vec3(1,0,1), + vec3(1,0,1), + vec3(1,1,0), + //o + vec3(0,1,0), + vec3(1,0,1), + vec3(1,0,1), + vec3(1,0,1), + vec3(0,1,0), + //r + vec3(1,1,0), + vec3(1,0,1), + vec3(1,1,0), + vec3(1,0,1), + vec3(1,0,1) +); + +mat3 rgb2yuv = mat3( + .299, -.173, .511, + .587, -.339, -.428, + .114, .512, -.083); + +mat3 yuv2rgb = mat3( + 1,1,1, + 0, -.336, 1.732, + 1.371, -.698, 0); + +vec3 tdor(vec2 p) { + p.y=-p.y; + int x = int(mod(p.x, 5)); + ivec2 uv = ivec2(fract(p) * vec2(4, 6)); + if (x>3 || uv.x>2 || uv.y>4) return vec3(0); + return pal[x] * font[x*5 + uv.y][uv.x]; +} + +void intersectCube(inout vec3 p, vec3 dir, inout vec3 norm, inout vec2 uv) { + vec3 a = (1-p)/dir, b = (-1-p)/dir; + vec3 f = max(a, b), n = min(a, b); + + float x = min(f.x, min(f.y, f.z)), + d = max(n.x, max(n.y, n.z)), + o = d<0 ? x : d; + + norm = normalize(step(eps, abs(a-o)) - step(eps, abs(b-o))); + + p += dir * o; + if (norm.x==0 && norm.y==0) { + uv = p.xy; + } else if (norm.y==0 && norm.z==0) { + uv = p.yz; + } else { + uv = p.xz; + } +} + + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 p = vec3(0,0,-.7); + vec3 dir = normalize(vec3(uv, 1)); + + Rot2D(p.xy, time/2); + Rot2D(dir.xy, time/2); + Rot2D(p.xz, time/2); + Rot2D(dir.xz, time/2); + + vec3 o = vec3(0); + + vec3 norm; + vec2 coords; + float scale = 1.0; + float bass = texture(texFFTIntegrated, .01).x; + for (int i=0; i<50; i++) { + intersectCube(p, dir, norm, coords); + + coords = abs(coords)*10.25; + coords = coords.x < coords.y ? coords.xy : coords.yx; + coords.x -= time/2; + + if (max(coords.x, coords.y)>9 && max(coords.x, coords.y)<10) { + vec3 col = tdor(coords); + col = rgb2yuv * col; + col *= scale; + vec3 col2 = col; + Rot2D(col2.yz, 1.5); + float t= clamp(length(uv)/.5, 0,1); + col = mix(col2, col, t); + col.yz *= t; + col = yuv2rgb * col; + o += col; + } + if (o.x+o.y+o.z>0) break; + + norm += p * (sin(bass/2)*.2+.2)*(sin(time)*.5+.5); + norm += sin(i+time)*.1; + norm = normalize(norm); + dir = reflect(dir, norm); + p += norm * eps; + scale *= .9; + } + out_color = vec4(o, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/nusan.glsl b/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/nusan.glsl new file mode 100644 index 000000000..966f51def --- /dev/null +++ b/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/nusan.glsl @@ -0,0 +1,162 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time=0; +float pul=0; +float pul2=0; +float sec=0; +float pi2 = acos(-1)*2.; + +vec3 read(ivec2 iuv) { + return vec3(imageLoad(computeTexBack[0], iuv).x + ,imageLoad(computeTexBack[1], iuv).x + ,imageLoad(computeTexBack[2], iuv).x) * 0.001; +} + +void add(vec2 uv, vec3 col) { + ivec2 iuv=ivec2(uv*v2Resolution.y+v2Resolution.xy*0.5); + ivec3 qcol=ivec3(col*1000); + imageAtomicAdd(computeTex[0], iuv, qcol.x); + imageAtomicAdd(computeTex[1], iuv, qcol.y); + imageAtomicAdd(computeTex[2], iuv, qcol.z); +} + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + + +float rnd(float t) { + return fract(sin(t*542.412)*935.624); +} + +vec2 rnd(vec2 t) { + return fract(sin(t*542.412+t.yx*437.544)*935.624); +} + +vec3 rnd(vec3 t) { + return fract(sin(t*542.412+t.yzx*437.544+t.zxy*274.814)*935.624); +} + + +void proj(vec3 p, vec3 col, float blur) { + + float gr=1+3*rnd(floor(time*5.)); + p.xy=floor(p.xy*gr)/gr; + + float t=time*0.1 + pul; + p += sin(t*vec3(0.3,0.27,0.36)); + + p.yz *= rot(sin(t*0.2)*0.3); + p.xz *= rot(t*(rnd(sec)-.5)*0.7); + + + float dof = smoothstep(0,1,abs(p.z)/10); + + p.z += 10.0; + if(p.z<=0.0) return; + p.z *= 0.3+1.5*rnd(floor(time)+.3); + p.xy /= p.z; + + vec2 rn=rnd(p.xy); + rn.x*=pi2; + rn.y=pow(rn.y,0.4)*0.25; + + vec2 dec=vec2(cos(rn.x), sin(rn.x))*rn.y; + p.xy+=dec * dof * blur; + + col.xz+=dec*0.3; + + add(p.xy, col); + + +} + +float map(vec3 p) { + float d=length(p)-1; + for(int i=0; i<3; ++i) { + float t=time*0.02+pul2*0.4+i; + p.xz *= rot(t*.7 + sin(p.y*.1+time*.3)*.2); + p.yz *= rot(t+i + sin(p.x*.13-time*.2)*.2); + p=abs(p)-0.7-0.4*sin(time*vec3(.3,0.4,0.5)-1.8*max(0,sin(time*0.2))); + } + vec3 p2 = p; + p2=abs(p2)-1.3; + p2=abs(p2)-0.3; + d=min(d,length(p2.xz)-.05); + d=min(d,length(p2.yz)-.05); + d=min(d,length(p2.yx)-.05); + + d=min(d, box(p, vec3(0.4+0.3*sin(time*vec3(0.7,0.4,0.6)*0.4)))); + return d; +} + + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + time=mod(fGlobalTime*.6, 300); + sec = rnd(floor(time)+.1) * 200 + rnd(floor(time/2)+.2)*200; + pul = texture(texFFTIntegrated, 0.01).x * 0.4 + sec; + pul2 = texture(texFFTIntegrated, 0.02).x * 0.5 + sec*2; + + + vec3 s=vec3(0,0,-10); + float fov = 0.7 + rnd(sec+.1)*.5; + vec3 r=normalize(vec3(uv, fov)); + vec3 p=s; + float dd=0; + for(int i=0; i<100; ++i) { + float d=abs(map(p)); + if(d<0.001) { + d=0.1; + proj(p, vec3(abs(uv)*3.0, 1), 1.); + //break; + } + if(dd>20.0) break; + p+=r*d; + dd+=d; + } + + vec3 p2=mix(s,p,rnd(uv).x); + proj(p, vec3(abs(uv.yx)*1.0, 1), 0.3); + + vec3 col=vec3(0); + + col += read(ivec2(gl_FragCoord.xy)); + col *= 0.13 * (1.2-length(uv)); + col = smoothstep(0,1,col); + col = pow(col, vec3(0.4545)); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/wrighter.glsl b/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/wrighter.glsl new file mode 100644 index 000000000..bd20d5f3a --- /dev/null +++ b/shader_file_sources/2023_11_20_shader_jam_monday_night_bytes/wrighter.glsl @@ -0,0 +1,275 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + + +#define U gl_FragCoord.xy +#define R vec2(v2Resolution.xy) +#define T fGlobalTime + +#define pi acos(-1.) +#define tau (acos(-1.)*2.) + + +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + + + +// hashes +uint seed = 12512; +uint hashi( uint x){ + x ^= x >> 16;x *= 0x7feb352dU;x ^= x >> 15;x *= 0x846ca68bU;x ^= x >> 16; + return x; +} + +#define hash_f_s(s) ( float( hashi(uint(s)) ) / float( 0xffffffffU ) ) +#define hash_f() ( float( seed = hashi(seed) ) / float( 0xffffffffU ) ) +#define hash_v2() vec2(hash_f(),hash_f()) +#define hash_v3() vec3(hash_f(),hash_f(),hash_f()) +#define hash_v4() vec3(hash_f(),hash_f(),hash_f(),hash_f()) + +vec2 sample_disk(){ + vec2 r = hash_v2(); + return vec2(sin(r.x*tau),cos(r.x*tau))*sqrt(r.y); +} + +// point projection +ivec2 proj_p(vec3 p, float t){ + // arbitrary camera stuff + float tt = t*1; + p += sin(vec3(1.1,0.78,0.6)*tt*0.3)*0.1; + p += sin(vec3(1.1,0.78,0.6)*tt*1.)*0.1; + p.xz *= rot(tt*0.25 + sin(tt*0.25)); + p.xy *= rot(sin(tt*0.3)*0.2); + p.z -= -3.; + + // perspective proj + p.xy /= p.z*1.0; + + // depth of field + p.xy += sample_disk() * abs(p.z - 3.5 + sin(T)*0.5)*0.008; + + // convert point to ivec2. From 0 to resolution.xy + ivec2 q = ivec2((p.xy + vec2(R.x/R.y,1)*0.5)*vec2(R.y/R.x,1)*R); + if(any(greaterThan(q, ivec2(R))) || any(lessThan(q, ivec2(0))) || p.z < 0){ + q = ivec2(-1); + } + return q; +} + + +void store_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + // no clue why it wants ivec4() here... + imageStore(computeTex[0], px_coord, ivec4(quant_col.x)); + imageStore(computeTex[1], px_coord, ivec4(quant_col.y)); + imageStore(computeTex[2], px_coord, ivec4(quant_col.z)); +} + +void add_to_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + imageAtomicAdd(computeTex[0], px_coord, quant_col.x); + imageAtomicAdd(computeTex[1], px_coord, quant_col.y); + imageAtomicAdd(computeTex[2], px_coord, quant_col.z); +} + +vec3 read_pixel(ivec2 px_coord){ + return 0.001*vec3( + imageLoad(computeTexBack[0],px_coord).x, + imageLoad(computeTexBack[1],px_coord).x, + imageLoad(computeTexBack[2],px_coord).x + ); +} + +float sd_box(vec3 p, vec3 s){ + p = abs(p) - s; + return max(p.x,max(p.y,p.z)); +} + +float map(vec3 p){ + vec3 q = p; + float d = 10000; + for(int i = 0; i < 5 + (uint(T/4))%3; i++){ + p = abs(p) - 0.15; + p.xz *= rot(0.6); + p.yz *= rot(0.2 + T*0.2 + i + sin(T*0.1)); + } + d = length(p) - 0.1; + d = max(d,-sd_box(p, vec3(0.2,0.05,0.1))); + if(uint(T/3) % 3 == 0){ + d = sd_box(p, vec3(0.04,0.06,0.4)); + } + //d = min(d,abs(q.y) - 0.1); + return d; +} + +mat3 get_orth_mat(vec3 ro, vec3 tar){ + vec3 dir = normalize(tar - ro); + + vec3 right = normalize(cross(vec3(0,1,0), dir)); + vec3 up = normalize(cross(dir, right)); + + + return mat3(right, up, dir); +} + + +vec3 hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +vec3 rgb2hsv(vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +vec3 get_normal(vec3 p){ + vec2 t = vec2(0.01,0); + return normalize(vec3( + map(p + t.xyy) - map(p - t.xyy), + map(p + t.yxy) - map(p - t.yxy), + map(p + t.yyx) - map(p - t.yyx) + )); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + // Init hash + seed = 215125125; + seed += hashi(uint(U.x)) + hashi(uint(U.y)*125); + + vec3 col = vec3(0); + + ivec2 id = ivec2(U); + + vec3 cam_pos = vec3(4,0,0); + + float hue = hash_f(); + + float sat = 1.0; + if(hash_f() < 0.){ + cam_pos.xz *= rot(0.7 + T); + cam_pos.xy *= rot(3.7-T); + hue = pow(hue,0.05); hue += 0.7; + hue += sin(T*0.1+sin(T)*0.1 + uv.y)*0.1; + sat *= 0; + } else { + + hue = pow(hue,4.); + } + vec3 att = hsv2rgb(vec3(hue*1,sat,1)); + + vec3 tar = vec3(0); + + mat3 cam_mat = get_orth_mat(cam_pos, tar); + + + float fov = 1.0; + if(uint(T)%5 < 2){ + //fov = 0.005; + } + for(int k = 0; k < 1; k++){ + uv += (hash_v2()*2. - 1.)/R; + vec3 rd = cam_mat * normalize(vec3(uv,fov)); + + vec3 start_p = cam_pos + rd*0.; + start_p *= 0.7 + sin(T)*0.; + + if(uint(T)%5 < 2){ + // start_p *=0.01; + } + + vec3 ro = start_p; + vec3 p = ro; + bool hit = false; + float side = sign(map(p)); + + for(int bnc = 0; bnc < 4; bnc++){ + + float d; + for(float i = 0.; i < 30; i++){ + d = map(p)*side; + //d = sign(d) * min(abs(d),0.1); + p += rd*d*1.0; + ivec2 pproj = proj_p(p,T); + //add_to_pixel(pproj, att*0.01); + if(d < 0.005){ + hit = true; + ivec2 pproj = proj_p(p,T); + if(pproj.x >= 0){ + add_to_pixel(pproj, att); + } + break; + + } + } + + if(hit){ + // refraction/reflection logic + att *= 0.7; + vec3 n = get_normal(p) * side; + float ior = 1.; + ior = mix(ior,1.8,hue); + + vec3 prev_rd = rd; + if(side > 0){ + rd = refract(rd,n,ior); + } else { + rd = refract(rd,n,1/ior); + } + // total internal reflection + if(rd == vec3(0)){ + rd = reflect(prev_rd,n); + p += n*0.002; + } else{ + p -= n * 0.02; + side *= -1.; + } + } else { + break; + } + } + } + + + + col += read_pixel(id); + //vec3 rd = + col*=0.6; + col = col/(1+col); + col = pow(col,vec3(0.454545)); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..6e0b316dd --- /dev/null +++ b/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,115 @@ +-- mantratronic here +-- phew, that was close +-- some trib+trig tonight +-- ^ greets to h0ffman, totetmatt, +-- tobach, alia, and suule! + +m=math +s=m.sin +c=m.cos + +ts={} -- x,y,d,s,a +nt=50 + +ffth={} +fftm={} + +function rot(x,y,a) +return {x=x*s(a)-y*c(a), y=y*s(a)+x*c(a)} +end + +function clamp(x,a,b) +return m.max(a,m.min(b,x)) +end + +function BOOT() +for i=0,255 do +ffth[i]=0 +fftm[i]=0 +end + +for i=1,nt do +ts[i]={x=240*((i/nt)*2-1),y=0,d=10,s=10,a=0} +end + + +cls(15) +end +function BDR(y) +sr=s(t/10+y/300) +sg=s(t/10+y/200+m.pi*2/3) +sb=s(t/10+y/100+m.pi*4/3) +for i=0,15 do +vbank(0) +poke(0x3fc0+i*3, clamp(i*(24+8*sr),0,255)) +poke(0x3fc0+i*3+1, clamp(i*(24+8*sg),0,255)) +poke(0x3fc0+i*3+2, clamp(i*(24+8*sb),0,255)) +vbank(1) +poke(0x3fc0+i*3, clamp(i*(24+8*sr),0,255)) +poke(0x3fc0+i*3+1, clamp(i*(24+8*sg),0,255)) +poke(0x3fc0+i*3+2, clamp(i*(24+8*sb),0,255)) +end +vbank(0)end + +function TIC()t=time()/300 + +for i=0,255 do +f=fft(i) +if f > fftm[i] then fftm[i] = f end +ffth[i]=ffth[i]*.9 + f/fftm[i]*.1 + +--ffth[i]=ffth[i]*.8+m.random()*.2 +end + +--cls(15) +memcpy(0,120,120*135) +x=(s(t*20)+1)*120 +rect(x,0,2,135,15) + +for i=0,100 do +x=240*m.random() +y=136*m.random() +circb(x,y,5*m.random(),pix(x,y)) +end + +for i=1,nt do + +ts[i].s=ffth[i]*20 +ts[i].a=t+i/nt*m.pi*2 + +a=s(i/nt*m.pi*2+t) +d=clamp(s(ts[i].s)*25+25,0,50) +r=rot(d,0,a) + +r.x=ts[i].x+r.x +r.y=68+r.y+30*s(ffth[5]*i/20) + +r1=rot(ts[i].s,0,a) +r2=rot(0,ts[i].s/2,a) +r3=rot(0,-ts[i].s/2,a) + +trib(r1.x+r.x,r1.y+r.y, + r2.x+r.x,r2.y+r.y, + r3.x+r.x,r3.y+r.y, + 1+clamp(d/4,0,14)) + +-- HMMM. not doing what i want + +end + +vbank(1) +cls() +for x=0,240 do +for y=68,98 do +ny=(y+t*4)%136 +vbank(0) +p=pix(x,ny) +vbank(1) +pix(x,ny,clamp(15-p,1,15)) +end +end + +len=print("mt",0,140,15) +print("mt",240-len,130,8) + +end diff --git a/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/nusan.lua b/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/nusan.lua new file mode 100644 index 000000000..b8377f13e --- /dev/null +++ b/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/nusan.lua @@ -0,0 +1,55 @@ +r,s=math.random,math.sin +p=0 +function SCN(j) +for k=0,47 do + poke(0x3fc0+k,k/3*16*(s(t*1+k%3*2+((k+j/30+t*.2)%48>24 and 2 or 0)+(k%7)*p-j/220)*.5+.5)) +end +end +function OVR() +for k=0,47 do + poke(0x3fc0+k,k/3*16*(s(t*1+k%3*2)*.2+.8)) +end +for i=0,300 do + a=t*7+i/100 + a=a+s(t*.7+a*.4)*.5+s(t*4.7+a*.3)*.3 + x,y=s(a)*70,s(a*.3)*40 + x,y=x+s(a*.3)*30,y+s(a*0.7)*20 + x,y=x+s(a*1.3)*20,y+s(a*1.2)*10 + si=6+s(a*1.7)*4+s(a*.7)*3 + circ(x+120,y+78,si,i/20) + if i>0 then + line(x+120,y+78,px+120,py+78-si*2,15) + line(x+120,y+78,px+120,py+78+si*2,15) + end + px,py=x,y +end + +end +d,q,u=0,0,1 +function TIC()t=time()/1000 +d,q,u=(d+r(3)-2)*.95,(q+r(3)-2)*.95,((u+(r(3)-2)*.005)-1)*0.99+1 +p=math.max(0,s(t/15)*.5)*20 +tr=9999 +t3=t*2.3 +if s(t3*.7)*s(t3*1.3)>0.2 then + tr=0 +end +for i=0,tr do + x,y=r(240)-1,r(136)-1 + pix(x,y,pix((x+d)*u,(y+q)*u)*.9) +end +t2=t*10 +for i=0,1 do + x,y=r(240),r(136) + rect(x,y,r(20),r(20),15) + if s(t2)*s(t2/1.7)*s(t2/2.6)>0.1 then + line(x,y,120,78,15) + circb(120,78,r(60),15) + end +end +if s(t2*.7)*s(t2*1.3)>0.1 then +for i=0,10 do + circ(r(240),r(136),8,10) +end +end +end diff --git a/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/suule.lua b/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/suule.lua new file mode 100644 index 000000000..86104f297 --- /dev/null +++ b/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/suule.lua @@ -0,0 +1,288 @@ +--Hello there! +--Today it's time for sheep! +--But the cool kind ;) +--Greetz to Tobach, Alia and Mantra :D +sin=math.sin +cos=math.cos +pi=math.pi +abs=math.abs + +local fft1={} + +function quad(x1,y1,x2,y2,x3,y3,x4,y4,col) + tri(x1,y1,x2,y2,x3,y3,col) + tri(x2,y2,x3,y3,x4,y4,col) +end + +function clamp(x,r1,r2) + if x > r2 then return r2 end + if x < r1 then return r1 else return x end +end + +function suit(bx,by,ax1,ay1,ax2,ay2) +-- arms + circ(93+bx,101+by,10,3) + circ(147+bx,101+by,10,3) + circ(68+bx+ax1,125+by+ay1,9,3) + circ(172+bx+ax2,125+by+ay2,9,3) + quad(82+bx,98+by,102+bx,98+by,64+bx+ax1,116+by+ay1,76+bx+ax1,127+by+ay1,3) + quad(138+bx,98+by,158+bx,98+by,164+bx+ax2,127+by+ay2,176+bx+ax2,116+by+ay2,3) +-- chest + quad(110+bx,75+by,129+bx,75+by,108+bx,86+by,131+bx,86+by,3) + quad(110+bx,75+by,129+bx,75+by,108+bx,84+by,131+bx,84+by,2) + quad(108+bx,86+by,132+bx,86+by,102+bx,136,138+bx,136,3) + quad(85+bx,93+by,108+bx,86+by,96+bx,136,102+bx,136,3) + quad(89+bx,108+by,97+bx,120+by,95+bx,136,99+bx,136,2) + quad(155+bx,93+by,132+bx,86+by,144+bx,136,138+bx,136,3) + quad(151+bx,108+by,143+bx,120+by,145+bx,136,141+bx,136,2) + +-- sheen + quad(110+bx,86+by,84+bx,93+by,115+bx,112+by,100+bx,110+by,4) + quad(130+bx,86+by,156+bx,92+by,125+bx,112+by,140+bx,110+by,4) + quad(110+bx,86+by,130+bx,86+by,115+bx,112+by,125+bx,112+by,4) + quad(125+bx,88+by,151+bx,92+by,128+bx,99+by,144+bx,95+by,12) + quad(114+bx,88+by,89+bx,92+by,112+bx,99+by,96+bx,95+by,12) + + quad(85+bx,93+by,90+bx,98+by,66+bx+ax1,116+by+ay1,72+bx+ax1,120+by+ay1,4) + quad(85+bx,93+by,87+bx,99+by,69+bx+ax1,114+by+ay1,69+bx+ax1,118+by+ay1,12) + quad(155+bx,93+by,150+bx,98+by,174+bx+ax2,116+by+ay2,168+bx+ax2,120+by+ay2,4) + quad(155+bx,93+by,153+bx,99+by,171+bx+ax2,114+by+ay2,171+bx+ax2,118+by+ay2,12) +-- + quad(118+bx,75+by,120+bx,75+by,117+bx,86+by,121+bx,86+by,13) + quad(117+bx,86+by,121+bx,86+by,117+bx,136,121+bx,136,13) + quad(119+bx,75+by,119+bx,75+by,118+bx,86+by,120+bx,86+by,14) + quad(118+bx,86+by,120+bx,86+by,120+bx,136,119+bx,136,14) +end + +function ear1(bx,by,ay) + quad(79+bx,57+by+ay,83+bx,56+by//2+ay,79+bx,60+by+ay,83+bx,61+by+ay//2,15) + quad(83+bx,56+by+ay//2,94+bx,54+by+ay//4,83+bx,61+by+ay//2,94+bx,61+by+ay//4,15) + quad(94+bx,54+by+ay//4,98+bx,53+by,94+bx,61+by+ay//4,98+bx,57+by,15) +end + +function ear2(bx,by,ay) + quad(159+bx,57+by+ay,155+bx,56+by+ay//2,159+bx,60+by+ay,155+bx,61+by+ay//2,15) + quad(155+bx,56+by+ay//2,144+bx,54+by+ay//4,155+bx,61+by+ay//2,144+bx,61+by+ay//4,15) + quad(144+bx,54+by+ay//4,140+bx,53+by,144+bx,61+by+ay//4,140+bx,57+by,15) +end + +function woolbg(bx,by) + circ(119+bx,39+by,6,14) + circ(129+bx,41+by,5,14) + circ(109+bx,41+by,5,14) + circ(137+bx,45+by,4,14) + circ(101+bx,45+by,4,14) + circ(137+bx,53+by,6,14) + circ(101+bx,53+by,6,14) + circ(139+bx,58+by,5,14) + circ(99+bx,58+by,5,14) + circ(136+bx,65+by,7,14) + circ(102+bx,65+by,7,14) + circ(134+bx,71+by,7,14) + circ(104+bx,71+by,7,14) + circ(131+bx,78+by,6,14) + circ(107+bx,78+by,6,14) +end + +function sheephead(bx,by) + elli(119+bx,49+by,15,7,15) + rect(103+bx,50+by,33,20,15) + rect(111+bx,70+by,17,11,15) + elli(133+bx,63+by,4,6,15) + elli(105+bx,63+by,4,6,15) + elli(119+bx,80+by,6,2,15) + tri(103+bx,69+by,111+bx,69+by,111+bx,80+by,15) + tri(136+bx,69+by,128+bx,69+by,128+bx,80+by,15) + rect(111+bx,69+by,18,11,15) + line(107+bx,69+by,112+bx,72+by,13) + line(131+bx,69+by,126+bx,72+by,13) + line(112+bx,72+by,119+bx,69+by,12) + line(126+bx,72+by,119+bx,69+by,12) + line(119+bx,63+by,119+bx,69+by,14) + line(116+bx,63+by,122+bx,63+by,14) + line(113+bx,61+by,116+bx,63+by,14) + line(125+bx,61+by,122+bx,63+by,14) +end + +function woolfg(bx,by) + circ(119+bx,36+by,6,13) + circ(112+bx,37+by,4,13) + circ(126+bx,37+by,4,13) + circ(105+bx,42+by,4,13) + circ(133+bx,42+by,4,13) + circ(100+bx,44+by,4,13) + circ(138+bx,44+by,4,13) + circ(98+bx,51+by,3,13) + circ(140+bx,51+by,3,13) + circ(98+bx,54+by,4,13) + circ(140+bx,54+by,4,13) + circ(96+bx,57+by,3,13) + circ(142+bx,57+by,3,13) +end + + +function glasses(bx,by) + line(114+bx,54+by,123+bx,54+by,13) + line(114+bx,54+by,106+bx,57+by,13) + line(103+bx,59+by,106+bx,57+by,13) + line(123+bx,54+by,132+bx,57+by,13) + line(135+bx,59+by,132+bx,57+by,13) + line(113+bx,44+by,124+bx,44+by,12) + line(113+bx,44+by,107+bx,47+by,12) + line(102+bx,51+by,107+bx,47+by,13) + line(124+bx,44+by,130+bx,47+by,12) + line(135+bx,51+by,130+bx,47+by,13) +end + +function drawglass(bx,by) + for i=0,7 do + pix(bx+i+119,by+52-clamp(30*fft(3*i),0,7),i) + pix(bx-i+119,by+52-clamp(30*fft(3*i),0,7),i) + end + for i=8,10 do + pix(bx+i+119,by+53-clamp(30*fft(3*i),0,7),i) + pix(bx-i+119,by+53-clamp(30*fft(3*i),0,7),i) + end + for i=11,12 do + pix(bx+i+119,by+54-clamp(30*fft(3*i),0,7),i) + pix(bx-i+119,by+54-clamp(30*fft(3*i),0,7),i) + end + for i=13,14 do + pix(bx+i+119,by+55-clamp(30*fft(3*i),0,7),i) + pix(bx-i+119,by+55-clamp(30*fft(3*i),0,7),i) + end + for i=15,16 do + pix(bx+i+119,by+56-clamp(30*fft(3*i),0,7),i) + pix(bx-i+119,by+56-clamp(30*fft(3*i),0,7),i) + end +end + +function arm1(bx,by,ax,ay) + quad(60+bx,124+by,102+ax,115+ay,65+bx,135+by,102+ax,123+ay,3) + quad(63+bx,118+by,60+bx,124+by,87+ax,110+ay,102+ax,115+ay,4) + quad(67+bx,118+by,62+bx,122+by,87+ax,110+ay,102+ax,112+ay,12) + elli(93+ax,118+ay,11,9,4) + elli(94+ax,117+ay,9,7,2) + elli(94+ax,114+ay,6,2,15) + elli(96+ax,113+ay,3,2,15) + elli(102+ax,113+ay,6,4,15) + elli(89+ax,117+ay,3,3,15) + elli(90+ax,122+ay,3,5,15) + elli(96+ax,119+ay,3,4,15) + elli(97+ax,123+ay,3,6,15) + elli(102+ax,119+ay,3,4,15) + elli(103+ax,123+ay,3,6,15) + elli(109+ax,118+ay,3,4,15) + elli(110+ax,123+ay,3,6,15) + line(106+ax,119+ay,104+ax,116+ay,0) + line(107+ax,123+ay,106+ax,119+ay,0) + line(107+ax,123+ay,107+ax,125+ay,0) + line(99+ax,121+ay,97+ax,117+ay,0) + line(99+ax,121+ay,99+ax,125+ay,0) + line(92+ax,118+ay,94+ax,125+ay,0) +end + + +function arm2(bx,by,ax,ay) + quad(180+bx,124+by,138+ax,115+ay,175+bx,135+by,138+ax,123+ay,3) + quad(177+bx,118+by,180+bx,124+by,153+ax,110+ay,138+ax,115+ay,4) + quad(173+bx,118+by,178+bx,122+by,153+ax,110+ay,138+ax,112+ay,12) + elli(147+ax,118+ay,11,9,4) + elli(146+ax,117+ay,9,7,2) + elli(146+ax,114+ay,6,2,15) + elli(144+ax,113+ay,3,2,15) + elli(138+ax,113+ay,6,4,15) + elli(151+ax,117+ay,3,3,15) + elli(150+ax,122+ay,3,5,15) + elli(144+ax,119+ay,3,4,15) + elli(143+ax,123+ay,3,6,15) + elli(138+ax,119+ay,3,4,15) + elli(137+ax,123+ay,3,6,15) + elli(131+ax,118+ay,3,4,15) + elli(130+ax,123+ay,3,6,15) + line(134+ax,119+ay,136+ax,116+ay,0) + line(133+ax,123+ay,134+ax,119+ay,0) + line(133+ax,123+ay,133+ax,125+ay,0) + line(141+ax,121+ay,143+ax,117+ay,0) + line(141+ax,121+ay,141+ax,125+ay,0) + line(148+ax,118+ay,146+ax,125+ay,0) +end + + +function circfft(x,y,r,tim,cshft) + for i=0,360 do + pix(x+(90*fft(i%90)+r)*sin((i+tim)/180*pi),y+(90*fft(i%90)+r)*cos((i+tim)/180*pi),cshft+i%4) + end +end + +function drawland(scale,w) + for i=1,239 do + line(120-(2*i*scale)-(i-1),100+scale*20-fft1[w][i]-((i-1)*(i-1)/50),120-(2*(i+1)*scale)-i,100+scale*20-fft1[w][i+1]-(i*i/50),5-1/scale) + line(120+(2*i*scale)+(i-1),100+scale*20-fft1[w][i]-((i-1)*(i-1)/50),120+(2*(i+1)*scale)+i,100+scale*20-fft1[w][i+1]-(i*i/50),5-1/scale) + end +end + +function computer() + rect(24,130,206,8,14) + rect(44,121,160,9,15) + line(56,120,64,120,12) + line(68,120,76,120,12) + print('TORG-8000',45,123,12,0,1,1) +end + +function gatherfft(w) + for i=1,240 do + fft1[w][i]=90*fft(i) + end +end + +function musicfield(tim) + if tim%64==0 then + table.remove(fft1, 8) + table.insert(fft1, 1, {}) + gatherfft(1) + end + + for i=0,7 do + drawland(2/(1+(tim+(7-i)*8)%64/10),i+1) + + end +end + +function BOOT() + for i=1,8 do + fft1[i]={} + gatherfft(i) + end +end + + +function TIC() + t=time()//60 + sw1=2*sin(t/8) + sw2=2*sin(t/4) + sw3=7*sin(t/3.25/10) + sw4=4*abs(sin(t/3.25)) + sw5=6*cos((t+6.5)/20) + sw6=4*abs(sin((t+3)/3.25)) + vbank(0) + cls(0) + musicfield(t) + circfft(119,50,20,t+30,5) + circfft(119,50,40,t,8) + vbank(1) + cls(0) + woolbg(sw1,sw2) + suit(sw1,sw2,sw3,sw4,0,0) + ear1(sw1,sw2,2*sin(t/4)) + ear2(sw1,sw2,2*cos(t/4)) + sheephead(sw1,sw2) + glasses(sw1,sw2) + drawglass(sw1,sw2) + woolfg(sw1,sw2) + arm1(sw1,sw2,sw3-10,sw4-5) + arm2(sw1,sw2,sw5+10,sw6-5) + computer() +end + + diff --git a/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..0776c9827 --- /dev/null +++ b/shader_file_sources/2023_11_27_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,77 @@ +--hellooooo!!! +--greetz to mantra, alia, nusan and suule <3 + +coltab={11,10,9,8,1,2,3,4,12} +snowflakes={} +sin=math.sin +abs=math.abs +for i=1,200 do + snowflakes[i]={math.random()*256,math.random()*256} +end +function TIC() + t=time()/10 + cls() + --sorry for any stumbling in my code! + --i got out of bed about 10 mins before + --the jam... :) + + for i=0,8 do + rect(0,126-i*16,240,16,coltab[i]) + end + tri(40,100,120,20,200,100,9) + tri(40,100,140,24,200,100,9) + tri(90,50,120,20,140,50,12) + tri(90,50,140,28,169,60,12) + + rect(0,100,240,40,12) + rect(0,102,240,40,12) + rect(0,103,240,8,14) + rect(0,104,240,8,15) + + for i=0,1 do + rect((t*4%240),45,2,60,15) + rect(2+(t*4%240),45,2,60,14) + end + + shinkansen(0+sin(t/64)*8) + + for i=0,10 do + rect(-32+(i*32)+(t*4%32),100,3,20,14) + end + + for i=0,480 do + sv=abs(sin(i/80)*8) + pix(-250+i+(t*4%240),50+sv,15) + pix(-250+i+(t*4%240),51+sv,14) + end + + elli(260-t/16%280,40,20,2,13) + elli(261-t/16%280,41,20,2,12) + + elli(260-t/12%280,30,20,2,13) + elli(261-t/12%280,31,20,2,12) + + for i=1,200 do + if i%2==0 then + rect((snowflakes[i][1]+sin(t/32*i/4)+t)%256,(snowflakes[i][2]+t)%256,2,2,12) + else + pix((snowflakes[i][1]+sin(t/32*i/4)+t*2)%256,(snowflakes[i][2]+t)%256,12) + end + end + +end + +function shinkansen(x) + for i=0,8 do + circ(30+i*6+x,98-i,4+i,12) + end + rect(82+x,78,180,25,12) + line(68+x,93,280+x,93,8) + for i=0,24 do + elli(76+i*9+x,86,3,4,7) + end + rect(26+x,98,240,5,15) + for i=0,8 do + line(45+x+i*3,88-i,55+x+i*2,88-i,15) + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_0b5vr.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_0b5vr.glsl new file mode 100644 index 000000000..13f0cb81d --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_0b5vr.glsl @@ -0,0 +1,176 @@ +#version 420 core + +#define repeat(i,n) for(int i=0;i>16u; + s.x+=s.y*s.z; + s.y+=s.z*s.x; + s.z+=s.x*s.y; + return s; +} + +vec3 hash3(vec3 s){ + uvec3 r=floatBitsToUint(s); + return vec3(hash3u(r))/float(-1u); +} + +uvec3 seed; + +uvec3 random3u(){ + seed=hash3u(seed); + return seed; +} + +vec3 random3(){ + return vec3(random3u())/float(-1u); +} + +vec2 cis(float t){ + return vec2(cos(t),sin(t)); +} + +vec4 isectplane(vec3 ro,vec3 rd,vec3 n){ + float t=-dot(ro,n)/dot(rd,n); + return vec4(n,t>0.?t:FAR); +} + +mat3 orthbas(vec3 z){ + z=normalize(z); + vec3 up=abs(z.y)>.99?vec3(0,0,1):vec3(0,1,0); + vec3 x=normalize(cross(up,z)); + return mat3(x,cross(z,x),z); +} + +vec3 cyclic(vec3 p,float pump){ + mat3 m=orthbas(vec3(-5,2,-1)); + vec4 sum=vec4(0); + repeat(i,5){ + p*=m; + p+=sin(p.yzx); + sum+=vec4(cross(cos(p),sin(p.zxy)),1); + p*=2.; + sum*=pump; + } + return sum.xyz/sum.w; +} + +vec3 samplelambert(vec3 n){ + vec3 xi=random3(); + float p=TAU*xi.x; + float ct=sqrt(xi.y); + float st=sqrt(1.-ct*ct); + return orthbas(n)*vec3(cis(p)*st,ct); +} + +const int SAMPLES=32; + +void main(void) +{ + seed=uvec3(gl_FragCoord.xy,60.0*fGlobalTime); + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 p=uv*2.-1.; + p.x*=v2Resolution.x/v2Resolution.y; + + vec3 sum=vec3(0); + + repeat(iS,SAMPLES){ + vec2 pt=p; + pt+=2.*(random3().xy-.5)/v2Resolution.y; + vec3 ro=vec3(0,0,5); + vec3 rd=normalize(vec3(pt,-2)); + + vec3 col=vec3(0); + vec3 colr=vec3(1); + + repeat(iP,5){ + vec3 bc=vec3(0); + vec3 em=vec3(0); + + vec4 isect=vec4(FAR); + vec4 isect2; + + repeat(iL,10){ + float prog=float(iL)/9.; + float z=mix(-1.,0.,prog); + isect2=isectplane(ro-vec3(0,0,z),rd,vec3(0,0,1)); + vec3 rp=ro+rd*isect2.w; + vec2 co=rp.xy; + co+=mix(.0,1.,prog)*cyclic(.04*(rp+vec3(10,10,fGlobalTime)),1.).xy; + float d=length(co)-mix(1.,2.,prog); + if(isect2.w0.){ + isect=isect2; + bc=mix( + pow(.5+.5*sin(1.+2.*prog+vec3(0,2,4)),vec3(2.)), + vec3(.02), + prog + ); + em=vec3(0); + } + } + + isect2=isectplane(ro-vec3(0,0,50),rd,normalize(vec3(0,-1,-1))); + if(isect2.w=FAR){ + //col+=.1*colr; + break; + } + + col+=colr*em; + ro=ro+rd*isect.w; + ro+=0.01*isect.w; + rd=samplelambert(isect.xyz);//reflect(rd,isect.xyz); + colr*=bc; + + if(dot(colr,vec3(1.))<.01){ + break; + } + } + + sum+=col; + } + + vec3 col=sum/float(SAMPLES); + col=pow(col,vec3(.4545)); + col*=1.-.5*length(p); + col=smoothstep(vec3(0,-.04,-.08),vec3(1,1.01,1.04),col); + + out_color=vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Exca.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Exca.glsl new file mode 100644 index 000000000..c856f4fab --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Exca.glsl @@ -0,0 +1,328 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInerciaBW; +uniform sampler2D texInercia; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float ffti = 0.0; +float ffts = 0.0; +float fft = 0.0; +float iTime = fGlobalTime; +float glow = 0.0; +float beat = 0.0; +float beatstep = 0.0; +float bar = 0.0; +float barstep = 0.0; + +vec3 rotate( vec3 p, float x, float y, float z) +{ + mat3 rotx = mat3( 1.0, 0.0, 0.0, 0.0, cos(x), -sin(x), 0.0, sin(x), cos(x)); + mat3 roty = mat3( cos(y), 0.0, sin(y), 0.0, 1.0, 0.0, -sin(y), 0.0, cos(y)); + mat3 rotz = mat3( cos(z), -sin(z), 0.0, sin(z), cos(z), 0.0, 0.0, 0.0, 1.0); + return rotx*roty*rotz * p; +} + +vec3 palette( in float t, in vec3 a, in vec3 b, in vec3 c, in vec3 d ) +{ + return a + b*cos( 6.28318*(c*t+d) ); +} + +vec2 rot2d( float a, vec2 p) +{ + return mat2( cos(a), -sin(a), sin(a), cos(a)) * p; +} + +vec3 repeat( vec3 p, vec3 q) +{ + return mod(p + q*0.5, q)-q*0.5; +} + +vec3 textureMap( vec3 surfacepos, vec3 normal) +{ + mat3 trimap = mat3( + texture(texNoise, surfacepos.yz).rgb, + texture(texNoise, surfacepos.xz).rgb, + texture(texNoise, surfacepos.xy).rgb + ); + return trimap * normal; +} +vec3 textureMap2( vec3 surfacepos, vec3 normal) +{ + mat3 trimap = mat3( + texture(texTex3, surfacepos.yz).rgb, + texture(texTex3, surfacepos.xz).rgb, + texture(texTex3, surfacepos.xy).rgb + ); + return trimap * normal; +} + + +vec3 inercia( vec2 uv ) +{ + vec3 c = texture(texInercia, uv*1.25).rgb; + return c; +} + +vec3 getcam( vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize( target - cam); + vec3 right = normalize( cross(vec3(0,1,0), forward)); + vec3 up = normalize( cross(forward, right)); + return normalize( forward * fov + uv.x * right + uv.y * up); +} + +float sphere( vec3 p, float r) +{ + return length(p)-r; +} + +float box( vec3 pos, vec3 size) +{ + vec3 q = abs(pos)-size; + return length(max(q,0.0)+min(max(q.x, max(q.y, q.z)), 0.0)); +} + + +float hexPrism( vec3 p, vec2 h ) +{ + const vec3 k = vec3(-0.8660254, 0.5, 0.57735); + p = abs(p); + p.xy -= 2.0*min(dot(k.xy, p.xy), 0.0)*k.xy; + vec2 d = vec2( + length(p.xy-vec2(clamp(p.x,-k.z*h.x,k.z*h.x), h.x))*sign(p.y-h.x), + p.z-h.y ); + return min(max(d.x,d.y),0.0) + length(max(d,0.0)); +} + +float octahedron( vec3 p, float s) +{ + p = abs(p); + return (p.x+p.y+p.z-s)*0.57735027; +} + + +vec3 union( vec3 a, vec3 b) +{ + if(a.x < b.x) return a; + return b; +} + +vec3 map( vec3 p) +{ + vec2 id = floor( (p.xz+vec2(2.0))*0.25); + vec3 hexP = repeat(p+vec3(iTime*id.x,0.0,0.0), vec3(2.0, 0.0, 2.0))+ + vec3(0.0, -1.0+1.0*sin(id.x+id.y + ffti*1.0), 0.0); + hexP = rotate(hexP, ffti + id.x -id.y,-ffti + id.x -id.y, 0.0); + + float s1 = sphere( + repeat(p, vec3(2.0, 0.0, 2.0))+ + vec3(0.0, -1.0+0.5*sin(id.x+id.y + ffti*1.0), 0.0), + 0.5 + sin(ffts+id.x-id.y)*0.15); + + float oct1 = octahedron( hexP, 0.85+ffts); + + float hex1 = hexPrism( + hexP, + vec2(0.5 + sin(ffts+id.x-id.y)*0.1)); + + s1 = mix( oct1, hex1, ffts); + + float b1 = box(p, vec3(95.0, 0.1, 95.0)); + vec3 S1 = vec3(s1, 1.0, 0.0); + vec3 B1 = vec3(b1, 1.4, 0.0); + glow += 1.0- smoothstep( 0.0, 0.4, s1); + float bm = mod(bar*0.5, 11.0); + if( mod(bm, 2.0) < 1.0) return B1; + return union(S1, B1); +} + +vec3 march( vec3 cam, vec3 rd, out vec3 p, out float travel) +{ + float minim = 99.0; + for(int i = 0; i < 100; i++) + { + p = cam + rd*travel; + vec3 r = map(p); + travel+=r.x; + minim = min(r.x, minim); + + if(r.x < 0.001) + { + return r; + } + if(travel > 90.0) + { + travel = 90.0; + return vec3(minim, 0.0, 0.0); + } + } + return vec3(minim, 0.0, 0.0); +} + +vec3 normal( vec3 p ) +{ + vec3 c = map(p); + vec2 e = vec2(0.01, 0.0); + return normalize( vec3( + map(p+e.xyy).x, + map(p+e.yxy).x, + map(p+e.yyx).x + )-c.x); +} + +float diffuse( vec3 p, vec3 l, vec3 n) +{ + return max(0.0, dot(n,normalize(l-p))); +} + + +void main(void) +{ + vec2 ouv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + ffti = texture(texFFTIntegrated,0.2).r; + ffts = texture(texFFTSmoothed, 0.15).r*30.0; + fft = texture(texFFT,0.2).r; + + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + beat = floor(iTime * 130.0 / 60.0); + beatstep = fract( iTime * 130.0 / 60.0*1.0); + bar = floor(beat/4.0); + barstep = fract(beat/4.0); + + vec3 c = vec3(0.0); + + + + vec3 target = vec3(0,1,1.0); + vec3 cam = target - vec3(cos(iTime*0.3),sin(iTime*0.3)-4,2); + float fov = 0.8; + + float bm = mod(bar,4.0); + if(bm < 1.0){ + target = vec3(0.01); + cam = target - vec3(cos(iTime*0.06)-3.0,sin(iTime*0.3)*0.5-3,2); + fov = mix( 0.2, 1.0, barstep); + + } + else if(bm < 2.0){ + target = vec3(0.01); + cam = target - vec3(cos(iTime*0.56)-3.0,sin(iTime*0.13)-9.0,-8); + fov = mix( 1.2, 3.0, barstep); + + } + else if(bm < 3.0){ + target = vec3(0.0, 0.0, sin(iTime*0.4)*3.0); + cam = target - vec3(cos(iTime*0.56)-3.0,sin(iTime*0.03)-5.0,-3); + fov = mix( 1.2, 0.05, barstep); + + } + else if(bm < 4.0){ + fov = mix( 0.5, 1.0, barstep); + + } + + + vec3 rd = getcam( cam, target, uv, fov); + + vec3 light1 = target + vec3( 0.0, 2.0, sin(iTime)); + + vec3 marchP = cam; + float marchT = 0.0; + vec3 res = march( cam, rd, marchP, marchT); + float shadow = 1.0; + // Materials + if(res.y < 0.5) + { + // Sky + + } + else if(res.y < 1.5) + { + // obj 1 + vec3 n = normal(marchP); + vec3 mapUv = marchP; + + if(res.y < 1.25){ + c = vec3(1.0) * textureMap(mapUv, n) * diffuse( marchP, light1, n); + c = mix( vec3(1.0, 0.6,0.2), c, length(c)); + c = palette( length(c), vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,1.0),vec3(0.3,0.20,0.20)); + } + else { + mapUv.xz = rot2d( ffti*0.7 + length(mapUv.xz)*0.05, mapUv.xz); + c= vec3(1.0) * textureMap2(mapUv*(0.1*smoothstep(0.0, 1.0,beatstep)+0.05), n) * diffuse( marchP, light1, n); + c = palette( length(c), vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,1.0),vec3(0.3,0.20,0.20)); + } + // Shadows + vec3 shadowP = marchP; + float shadowT = 0.0; + vec3 shadowMarch = march( marchP+n*0.1, normalize( light1 - marchP), shadowP, shadowT)*0.95; + c *= 0.15+ smoothstep(0.0, 0.15,shadowMarch.x); + shadow = 0.05+ smoothstep(0.0, 0.15,shadowMarch.x); + // Reflection + vec3 ref = reflect( rd, n); + vec3 refP = marchP; + float refT = 0.0; + vec3 refR = march( marchP+n*0.1, ref, refP, refT); + if(refR.y < 0.5) { + // sky + + } + else if(refR.y < 1.5) + { + // Ground + n = normal(refP); + mapUv = refP; + mapUv.xz = rot2d( ffti*0.7 + length(mapUv.xz)*0.25, mapUv.xz); + vec3 rc = vec3(0.0);//vec3(1.0) * textureMap(mapUv, n) * diffuse( refP, light1, n); + + if(refR.y < 1.25){ + rc = vec3(1.0) * textureMap(mapUv, n) * diffuse( refP, light1, n); + rc = palette( length(rc), vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,1.0),vec3(0.3,0.20,0.20)); + } + else rc = vec3(1.0) * textureMap2(mapUv, n) * diffuse( refP, light1, n); + // Shadows + shadowP = refP; + shadowT = 0.0; + shadowMarch = march( refP+n*0.1, normalize( light1 - refP), shadowP, shadowT)*0.95; + rc *= 0.0+ smoothstep(0.0, 0.15,shadowMarch.x); + + c = mix(c, rc, 0.05); + } + } + + c = mix( c, vec3(0.4, 0.2, 0.1), smoothstep(2.0, 20.0, marchT)); + c += glow*0.08*palette( length(c), vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,1.0),vec3(0.3,0.20,0.20))*shadow; + //c += inercia(uv * vec2(1.0, 1.0+ ffts) + iTime*vec2(0.2,0.0)); + + if(bm < 1.0) c.rgb = c.grb; + else if(bm < 2.0) c.rgb = c.brg; + else if(bm < 3.0) c.rgb = c.rbg; + else if(bm < 4.0) c.rgb = c.gbr; + + ouv -= 0.5; + ouv *= 0.99; + ouv += 0.5; + vec3 prev = texture(texPreviousFrame, ouv).rgb; + c = mix( c, c+prev*0.75, ffts); + + out_color = vec4(c, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Kamoshika.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Kamoshika.glsl new file mode 100644 index 000000000..4cdcde73c --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_Kamoshika.glsl @@ -0,0 +1,239 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime + +#define hash(x) fract(sin(x) * 5e3) + +const float PI = acos(-1.); +const float PI2 = acos(-1.) * 2.; +const float BPM = 135.; +const float EPS = 0.0001; +float T = time * BPM / 60.; +const float lightSize = 0.2; +vec3 lightPos; + +float hash12(vec2 p) { + return fract(sin(dot(p, vec2(23, 11))) * 4e3); +} + +float sphIntersect(vec3 ro, vec3 rd, vec3 ce, float ra) { + vec3 oc = ro - ce; + float b = dot(oc, rd); + float c = dot(oc, oc) - ra * ra; + float h = b * b - c; + if(h < 0.) { + return -1.; + } + return -b - sqrt(h); +} + +float castRay(vec3 ro, vec3 rd, out vec3 normal) { + float t = 1e5; + + float a = 1.0 - rd.z * rd.z; + float b = dot(ro.xy, rd.xy); + float co = dot(ro.xy, ro.xy); + float rc = sqrt(co); + + const int N = 10; + const float delta = 1. / float(N); + for(int i = 0; i < N * 2; i++) { + float n = float(N - i); + float s = 1.; + if(i >= N) { + n = float(i - N + 1); + s = -1.; + } + float ra = n * delta; + + if(b > ra) { + break; + } + + if(i == 0 && rc < ra) { + int nc = int(rc / delta); + if(b < 0) { + i = N - nc - 1; + } else { + i = N + nc - 1; + } + continue; + } + + float c = co - ra * ra; + float h = b * b - a * c; + if(h < 0.) { + if(i < N) { + i = N * 2 - i - 1; + } + continue; + } + + float tc = (-b - s * sqrt(h)) / a; + if(tc < 1e-5) { + continue; + } + + vec3 rp = ro + tc * rd; + float theta = atan(rp.y, rp.x) + time * sin(n) * .5; + theta = mod(theta, PI2); + + rp.z -= time * .5; + rp.z = fract(rp.z / 500.) * 500.; + vec2 p = vec2(theta, rp.z * 2.) / PI2 * 6.; + for(int j = 0; j < 5; j++) { + if(hash12(floor(p)) < 0.5) { + break; + } + p *= 2.; + } + + if(hash12(floor(p) + n * 500. * PI) < 0.1) { + t = tc; + normal = normalize(vec3(s * rp.xy, 0)); + break; + } + + } + + float ts = sphIntersect(ro, rd, lightPos, lightSize); + if(ts > 0. && ts < t) { + t = ts; + normal = normalize(ro + t * rd - lightPos); + } + + vec2 srd = sign(rd.xy); + vec2 v = (srd * vec2(4, 1.6) - ro.xy) / rd.xy; + float tw = min(v.x, v.y); + if(tw < t) { + t = tw; + normal = v.x < v.y ? vec3(-srd.x, 0, 0) : vec3(0, -srd.y, 0); + } + + return t; +} + +float fs(float f0, float cosTheta) { + return f0 + (1. - f0) * pow(1. - cosTheta, 5.); +} + +vec3 reflCol(inout vec3 ro, inout vec3 rd, inout vec3 refAtt) { + vec3 col = vec3(0); + + vec3 normal; + float t = castRay(ro, rd, normal); + vec3 rp = ro + t * rd; + + vec3 lv = lightPos - rp; + float L = length(lv); + float amp = pow(sin(fract(T) * PI2) * .5 + .5, 2.); + if(L < lightSize + EPS) { + col = vec3(10); + } + + vec3 ld = lv / L; + + vec3 albedo = vec3(.9); + float po = (.02 + amp) * 30. / dot(lv, lv); + float diff= max(dot(normal, ld), 0.); + float spec = pow(max(dot(reflect(ld, normal), rd), 0.), 20.); + float sh= 1.; + vec3 normal0 = normal; + if(castRay(rp + normal * EPS * 0.5, ld, normal) < L - lightSize - EPS) { + sh = 0.5; + } + float m = 0.8; + col += albedo * (diff * (1. - m) + spec * m) * po * sh; + vec3 ref = reflect(rd, normal0); + + //float invFog = exp(-t * t * .00); + //col *= invFog; + + //refAtt *= albedo * fs(0.8, dot(ref, normal0)) * invFog; + refAtt *= albedo * fs(0.8, dot(ref, normal0)); + + ro = rp + normal0 * EPS; + rd = ref; + + return col * refAtt; +} + +float stepNoise(float x, float n) { + float i = floor(x); + float s = .2; + float u = smoothstep(.5 - s, .5 + s, fract(x)); + float res = mix(floor(hash(i) * n), floor(hash(i + 1.) * n), u); + res /= (n - 1.) * .5; + return res - 1.; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1) * 0.5; + vec3 col = vec3(0); + + vec3 ro = vec3(0, 0, 0); + ro.x += stepNoise(T * .5, 5.) * 1.5; + ro.y += stepNoise(T * .5 - 500., 5.) * 1.5; + + float a = stepNoise(T * .5 - 1000., 2.) * .5 + .5; + a = .1 + a * .8; + vec3 ta = vec3(0, 0, ro.z - tan(a * PI * .5)); + + vec3 dir = normalize(ta - ro); + vec3 side = normalize(cross(dir, vec3(0, 1, 0))); + vec3 up = cross(side, dir); + + float fov = 60.; + fov += stepNoise(T * .5 - 1500., 2.) * 20.; + vec3 rd = normalize(uv.x * side + uv.y * up + dir / tan(fov / 360. * PI)); + + lightPos.xy = sin(vec2(8, 9) * time * 0.2) * .8; + lightPos.z = ro.z - 2. + sin(time); + + + /* + vec2 p = uv * 5.; + for(int i = 0; i < 5; i++) { + if(hash12(floor(p) + floor(time) * PI) < 0.5) { + break; + } + p *= 2.; + } + + if(hash12(floor(p) * 1.3 + floor(time) * 1.6343) < 0.5) { + col += .5; + }*/ + + vec3 refAtt = vec3(1); + for(int i = 0; i < 4; i++) { + col += reflCol(ro, rd, refAtt); + } + + col = pow(col, vec3(1. / 2.2)); + //col = mix(col, texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy).rgb, 0.6); + + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_NuSan.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_NuSan.glsl new file mode 100644 index 000000000..5d026b0ee --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_NuSan.glsl @@ -0,0 +1,183 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time=0; +float pul=0; + +vec3 read(ivec2 iuv) { + return vec3(imageLoad(computeTexBack[0], iuv).x + ,imageLoad(computeTexBack[1], iuv).x + ,imageLoad(computeTexBack[2], iuv).x) * 0.001; +} + +void add(ivec2 uv, vec3 col) { + ivec3 qcol=ivec3(col*1000); + imageAtomicAdd(computeTex[0], uv, qcol.x); + imageAtomicAdd(computeTex[1], uv, qcol.y); + imageAtomicAdd(computeTex[2], uv, qcol.z); +} + + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + + +float rnd(float t) { + return fract(sin(t*542.412)*935.624); +} + +vec2 rnd(vec2 t) { + return fract(sin(t*542.412+t.yx*437.544)*935.624); +} + +vec3 rnd(vec3 t) { + return fract(sin(t*542.412+t.yzx*437.544+t.zxy*274.814)*935.624); +} + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1), pow(smoothstep(0,1,fract(t)),10)); +} + +float pulse(float t, float d) { + t/=d; + return mix(floor(t)+rnd(floor(t)), floor(t)+1+rnd(floor(t)+1), pow(smoothstep(0,1,fract(t)),10))*d; +} + +void circ(vec3 p, float r, vec3 col) { + + p.xz *= rot(time*0.3); + p.yz *= rot(sin(time*.23)*0.5-0.6); + + + float per=pow(max(abs(p.z)-0.5,0),0.5); + p.z += 10.0; + if(p.z<0) return; + p.xy*=0.3+rnd(pul)*1.3; + + p.xy/=abs(p.z)+0.001; + + //if(p1.z<=0.0 && p2.z<=0.0) return; + + vec2 pos=vec2(p.xy*v2Resolution.y+v2Resolution.xy*0.5); + float ratio=v2Resolution.y/v2Resolution.x; + int sizey=int(clamp(20*per,3,50)*v2Resolution.y/1080.0); + float mu=50.0/pow(float(sizey),1.8); + vec2 dir=normalize(p.xy); + for(int j=-sizey; j<=sizey; ++j) { + float lj=j/float(sizey); + int sizex = int(ceil(sqrt(1-lj*lj)*sizey)); + for(int i=-sizex; i<=sizex; ++i) { + vec2 pc=pos + vec2(i,j); + float l=length(ivec2(pc)-pos)/sizey; + float fac=smoothstep(1.0,0.7,l)*(0.5+0.5*smoothstep(0.0,0.7,l)); + add(ivec2(pc), max(col + vec3(0,0,-1)*0.54*dot(dir,normalize(vec2(i,j))),0)*fac*mu); + } + } + +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + time = mod(fGlobalTime, 300); + pul = rnd(floor(fGlobalTime/2))*300; + pul += rnd(floor(fGlobalTime/5)+.1)*300; + time += pul; + + vec3 col=vec3(0); + + int dsize=40; + if(gl_FragCoord.x0.7) fuv.x = abs(fuv.x-v2Resolution.x*0.5)+v2Resolution.x*0.5; + if(rnd(pul+0.3)>0.7) fuv.y = abs(fuv.y-v2Resolution.y*0.5)+v2Resolution.y*0.5; + col += read(ivec2(fuv)); + + /* + int bs=10; + vec3 blur=vec3(0); + for(int i=-bs;i<=bs;++i) { + for(int j=-bs;j<=bs;++j) { + float l=length(ivec2(i,j))/bs; + blur += read(ivec2(gl_FragCoord.xy + ivec2(i,j))) * smoothstep(1,0,l); + } + } + col += smoothstep(0,1,pow(blur/(bs*bs),vec3(2)))*1; + */ + + + float t2 = time*0.1 + uv.x; + col.xz *= rot(t2); + col.yz *= rot(t2*1.3); + col=abs(col); + + col += max(col.yzx-1,0)*0.25; + col += max(col.zxy-1,0)*0.25; + + col *= 1.0 * (1.2-length(uv)); + + col = smoothstep(0,1,col); + col = pow(col, vec3(0.4545)); + + col = mix(col, texture(texPreviousFrame, gl_FragCoord.xy/v2Resolution.xy).xyz, 0.5); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_aldroid.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_aldroid.glsl new file mode 100644 index 000000000..b21deb212 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_aldroid.glsl @@ -0,0 +1,108 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +// HELLO TO INERCIA 2005 + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float tm; + +// from iq +vec3 palette( in float t, in vec3 a, in vec3 b, in vec3 c, in vec3 d ) +{ + return a + b*cos( 6.28318*(c*t+d) ); +} + +vec3 mypal(float t) { + return palette( t, vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,1.0),vec3(0.0,0.33,0.67) ); +} + +mat2 rot(float p) { + return mat2(cos(p),-sin(p),sin(p),cos(p)); +} + +vec2 min2(vec2 a,vec2 b) { + return a.x=x) return vec4(0,0,0,-1); + + vec3 norm = normalize(step(0.001, abs(a-o)) - step(0.001, abs(b-o))) * sign(d); + return vec4(norm, o); +} + +float check(vec2 p, float scale, vec2 offset) { + ivec2 t = ivec2(p*scale+offset + 100.); + return float((t.x%2+t.y%2)%2); +} + +float fb(vec2 p, vec2 a, bool inv) { + p = fract(btime) < 0.5 ? abs(p) : p; + float fb = //fract(btime / 4) < 0.25 > + // texture(texInerciaBW, fract(p * a * (16./9.) * .5 + .5)).a;// : + texture(texPreviousFrame, fract(p * a * (16./9.) * .5 + .5)).a; + //fb += check(p, 1.03, vec2(0))*.2; + fb += hash(p.xyy).x * .2-.1; + fb = inv ? 1-fb : fb; + fb = (fb - .5) * 1.03 + .5; + return fract(fb); +} + +float df(vec2 p) { + p = fract(btime)<.25 ? abs(p)-.25 : p; + r2d(p,time); + p = fract(btime*3)<.25 ? abs(p*2)-.5 : p; + r2d(p,-time); + p = fract(btime*5)<.25 ? abs(p)-.25 : p; + + float d = length(p) - bass2*8.; + p = abs(p)-.25; + d = min(d, length(p) - bass*8.); + + p = abs(p)-bass2*12.; + d = mod(btime, 1.) < 0.5 ? d : max(p.x, p.y); + //return d; + d = abs(d) - 0.005; + d = smoothstep(0., .01, d); + return d;//abs(d)-.01; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + vec2 aspect = vec2(v2Resolution.y / v2Resolution.x, 1); + uv /= aspect; + + float tmp = sin(btime*4.); + // tmp = pow(abs(tmp), 5.) * sign(tmp); + float zoom = 1.1 + tmp*.04; + vec3 p = vec3(sin(time*.524)*0.01,sin(time*.4743)*0.01,-zoom); + vec3 d = normalize(vec3(uv, 1)); + + r2d(d.xy, sin(btime)*0.02); + float dist = pdist(p, d, vec4(0,0,-1,0)); + p += d * dist; + //out_color = vec4(fract(p), 1); + //return; + dist = df(p.xy); + float fb = fb(p.xy, aspect, dist<0.5); + //if (fract(btime)<0.2) fb = texture(texInercia, uv*.5+.5).a; + p = vec3(0,0,-2); + tmp = sin(btime)*1. + 2.; + d = normalize(vec3(fract(uv*tmp)*2.-1, sin(btime*3.)*.5 + 1.)); + + tmp = time;//sin(time/3)/8.; + out_color = vec4(0); + r2d(p.xz,tmp); + r2d(p.xy,tmp); + r2d(d.xz,tmp); + r2d(d.xy,tmp); + vec4 cube = cdist(p,d); + + if (cube.w > 0.) { + //r2d(cube.xz,-tmp); + //r2d(cube.xy, -tmp); + //r2d(p.xy,-tmp); + p += d * cube.w; + float l = max(0., -dot(cube.xyz, d)); + d = reflect(d,cube.xyz); + + //out_color.rgb += pow(l * (1-texture(texInercia, d.xy * .5 + .5).rgb), vec3(1.8)); + //out_color.a = fb; + // return; +// dist = fract(p.x); + } +//out_color = vec4(vec3(dist+fb), fb + dist); + out_color += vec4(pow(vec3(mix(vec3(fb), vec3(1-dist,dist,dist), vec3(fb))), vec3(1.8)), fb); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alien.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alien.glsl new file mode 100644 index 000000000..a17dc2635 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_alien.glsl @@ -0,0 +1,111 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame + +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; + +uniform float fMidiKnob; +#define iTime fGlobalTime +#define bpm 135 +#define one_bpm bpm/60. +#define beat(a) fract(one_bpm*iTime*a) + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +// Hello from the infodesk team :) +mat2 rot(float a) {return mat2(cos(a), sin(a), -cos(a), sin(a));}; +void main(void) +{ + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv2 = uv; + uv2.y = 1.-uv2.y; + + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 uv3 = uv; + + vec4 color = vec4(fract(uv.x * 50.0 + beat(0.4))); + vec2 uu = uv; + uu *= 2.5; + uu.y = 1.-uu.y; + + + if(beat(0.25) < 0.5) { + + if(beat(0.5) < 0.5) { + uu *= rot(0.5); + uu.y += sin( 4000* uv.y) ; + } + if(beat(0.75) < 0.5) { + uu *= rot(0.5); + uu.y += sin( 4000* uv.x) ; + } + + uu.y += sin( 4000* uv.x) ; + } + else if(beat(0.5) < 0.5) { + + for (int i = 0; i <6 ; i++) { + uu *= rot(0.29); + uu.x *= color.x*2.0; + uu.x+=float(i*beat(2.0)); + } + uu.x += iTime; + } + vec4 ine = texture(texInercia, uu ) ; + + if(beat(0.5+fract(uv.x)) < 0.5) { + ine = texture(texInerciaBW, uu ) ; + } + + color = mix(ine, color, sin(iTime*ine)); + + + if(beat(0.5) < 0.5) { + color *= texture(texInercia, uv2+uu); + } + color += texture(texInercia,uv2+beat(uv.x+uu.y)).xxxx*0.3; + + uv3 = fract(uv3*20.0+ beat(0.5)); + uv3 -= 0.5; + + vec2 uvv = uv2; + + + + + + vec4 ttt = texture(texInercia, uvv); + + uv2 *= rot(beat(0.5)); + uv2.y += beat(0.75)*0.5; + + + + vec4 tt = texture(texInercia, uv2); + float s = length(uv3) + 0.5 + 0.1*beat(1.0)*uv2.x; + + float ss = smoothstep(0.98, 1.0, s) ; + + color += mix(tt, color, ss) ; + + + float s1 = length(uv3) + 0.5 + 0.1*beat(1.0)*uv2.x; + float ss2 = smoothstep(0.98, 1.0, s1) ; + color += mix(ttt, color, ss2); + + out_color = vec4(color); + + + +// out_color = texture(texInercia, uv); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_byt3_m3chanic.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_byt3_m3chanic.glsl new file mode 100644 index 000000000..6561534a9 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_byt3_m3chanic.glsl @@ -0,0 +1,205 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define R v2Resolution +#define T fGlobalTime +#define mindist 1e-3 +#define maxdist 25. +#define PI 3.141592 +#define PI2 6.283185 +#define SCALE .75 + +float hash21(vec2 p) { + return fract(sin(dot(p,vec2(27.03,57.3)))*43.3); +} +mat2 r2(float a) { + return mat2(cos(a),sin(a),-sin(a),cos(a)); +} +float box(vec3 p, vec3 b, float r) { + vec3 q = abs(p)-b; + return length(max(q,0.))+min(max(q.x,max(q.y,q.z)),0.)-r; +} +float trs(vec3 p, vec2 t){ + vec2 q=vec2(length(p.xy)-t.x,p.z); + return length(q)-t.y; +} + +vec3 shp,fhp; +vec2 sip,bid; +float thsh; + +const float sz = 1./SCALE; +const float hf = sz/2.; + +vec2 mq(vec2 q) { + return mod(q+hf,sz)-hf; +} + +vec2 map(vec3 p) { + vec2 res = vec2(1e5,0.); + + p.z += 5.; + p.x -= T*.83; + + vec2 qid = floor((p.xy+hf)/sz); + vec3 qm = vec3(mq(p.xy),p.z); + + float hs = hash21(qid); + if(hs>.5) qm.x=-qm.x; + + vec2 q = length(qm.xy-hf).8) res = vec2(nx,3.); + + return res; +} + +vec3 normal(vec3 p, float t){ + t*=mindist; + float d = map(p).x; + vec2 e = vec2(t,0); + vec3 n = d - vec3( + map(p-e.xyy).x, + map(p-e.yxy).x, + map(p-e.yyx).x + ); + return normalize(n); +} + +vec2 marcher(vec3 ro, vec3 rd,int steps) { + float d = 0., m = 0.; + for(int i=0;imaxdist) break; + } + return vec2(d,m); + +} + +vec3 hue(float a){ + return .45 + .45 * cos(PI2* a * vec3(1.,.15,.25)); +} + +float diff(vec3 p,vec3 n, vec3 lpos){ + vec3 l = normalize(lpos-p); + float dif = clamp(dot(n,l),.1 , 1.); + float shdw = 1.; + for( float t=.01;t<12.; ) { + float h = map(p + l*t).x; + if( h1. ) break; + } + dif = mix(dif,dif*shdw,.35); + return dif; +} +vec3 thp,ghp; +vec2 tip,fid; +float hsh; + +vec3 color(float m, vec3 p, vec3 n) { + vec3 h = vec3(.5); + if(m==1.) { + thp/=1./SCALE; + float dir = mod(tip.x + tip.y,2.) * 2. - 1.; + + vec2 cUv = thp.xy-sign(thp.x+thp.y+.001)*.5; + float angle = atan(cUv.x, cUv.y); + float a = sin( dir * angle * 6. + T * 2.25); + a = abs(a)-.45;a = abs(a)-.35; + vec3 nz = hue((p.x+(T*.12))*.25); + h = mix(nz, vec3(1), smoothstep(.01, .02, a)); + } + if(m==2.) h=hue(hash21(tip)); + if(m==3.) h=hue(hash21(tip)); + return h; +} + +void main(void) +{ + vec2 uv = (2.*gl_FragCoord.xy-R.xy) /max(R.x,R.y); + vec3 ro = vec3(0,0,-1); + vec3 rd = normalize(vec3(uv,-1)); + + mat2 rx = r2(.058*sin(T*.3)),ry = r2(.18*sin(T*.2)); + ro.zy*=rx;ro.xz*=ry; + rd.zy*=rx;rd.xz*=ry; + + vec3 C = vec3(0.); + vec3 FC =vec3(.03); + + vec2 r = marcher(ro,rd,90); + thp = shp; + tip = sip; + hsh = thsh; + + if(r.x> 16;x *= 0x7feb352dU;x ^= x >> 15;x *= 0x846ca68bU;x ^= x >> 16; + return x; +} + +#define hash_f_s(s) ( float( hashi(uint(s)) ) / float( 0xffffffffU ) ) +#define hash_f() ( float( seed = hashi(seed) ) / float( 0xffffffffU ) ) +#define hash_v2() vec2(hash_f(),hash_f()) +#define hash_v3() vec3(hash_f(),hash_f(),hash_f()) +#define hash_v4() vec3(hash_f(),hash_f(),hash_f(),hash_f()) + +vec2 sample_disk(){ + vec2 r = hash_v2(); + return vec2(sin(r.x*tau),cos(r.x*tau))*sqrt(r.y); +} + +// point projection +ivec2 proj_p(vec3 p, float t){ + // arbitrary camera stuff + float tt = t*2; + p += sin(vec3(1.1,0.78,0.6)*tt*0.3)*0.1; + p += sin(vec3(1.1,0.78,0.6)*tt*1.)*0.1; + p.xz *= rot(tt*0.25 + sin(tt*0.25)); + p.xy *= rot(sin(tt*0.3)*0.2); + p.z -= -4.; + + // perspective proj + p.xy /= p.z*0.8; + + // depth of field + //p.xy += sample_disk() * abs(p.z - 5. + sin(T))*0.01; + + // convert point to ivec2. From 0 to resolution.xy + ivec2 q = ivec2((p.xy + vec2(R.x/R.y,1)*0.5)*vec2(R.y/R.x,1)*R); + if(any(greaterThan(q, ivec2(R))) || any(lessThan(q, ivec2(0)))){ + q = ivec2(-1); + } + return q; +} + + +void store_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + // no clue why it wants ivec4() here... + imageStore(computeTex[0], px_coord, ivec4(quant_col.x)); + imageStore(computeTex[1], px_coord, ivec4(quant_col.y)); + imageStore(computeTex[2], px_coord, ivec4(quant_col.z)); +} + +void add_to_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + imageAtomicAdd(computeTex[0], px_coord, quant_col.x); + imageAtomicAdd(computeTex[1], px_coord, quant_col.y); + imageAtomicAdd(computeTex[2], px_coord, quant_col.z); +} + +vec3 read_pixel(ivec2 px_coord){ + return 0.001*vec3( + imageLoad(computeTexBack[0],px_coord).x, + imageLoad(computeTexBack[1],px_coord).x, + imageLoad(computeTexBack[2],px_coord).x + ); +} + +float sd_box(vec3 p, vec3 s){ + p = abs(p) - s; + return max(p.x,max(p.y,p.z)); +} + +float map(vec3 p){ + float d = 1000; + + for(float i = 0; i < 5; i++){ + p = abs(p) - 0.2; + p.xz *= rot(0.25); + p.yz *= rot(0.5 + T*0.); + } + d = sd_box(p, vec3(0.2)); + return d; +} +vec3 get_normal(vec3 p){ + vec2 t = vec2(0.01,0); + return normalize(vec3( + map(p + t.xyy) - map(p - t.xyy), + map(p + t.yxy) - map(p - t.yxy), + map(p + t.yyx) - map(p - t.yyx) + )); +} + +vec3 hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +vec3 rgb2hsv(vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} +void main(void){ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + // Init hash + seed = 215125125; + seed += hashi(uint(U.x)) + hashi(uint(U.y)*125); + + + vec3 col = vec3(0); + + // choose random hue + float hue = hash_f(); + vec3 att = hsv2rgb(vec3(hue*1,1,1)); + + // time envelopes + float t = T*1.4; + float env_a = floor(t) + pow(fract(t),14); + t*=1.2; + float env_b = floor(t) + pow(fract(t),14); + + // Only run for the first 100 horizontal pixels + if(gl_FragCoord.x < 200){ + // light pos + vec3 p = vec3(1); + p = normalize(sin(vec3(3.4,2.2,1.2)*(env_a)*0.5)); + + if(gl_FragCoord.x < 50){ + p = normalize(sin(vec3(3.1,2.1,1.5)*(env_b)*0.4)); + } + if(gl_FragCoord.y < R.y*0.5){ + p = -p; + } + + p*=0.1; + if(hash_f() < 1.0){ + p *= 15.; + } + // aim towards middle of screen + vec3 rd = normalize((hash_v3()-0.5)*(0.01 + 3. * float(gl_FragCoord.y<30 || gl_FragCoord.y > R.y - 30)) - p); + + // side is 1 outside and -1 inside + float side = sign(map(p)); + + const float max_bounces = 17; + float dith = hash_f(); + + // raymarch/refract + for(float bnc = 0; bnc < max_bounces; bnc++){ + p += rd * 0.06*dith; + bool hit = false; + float d = 0; + for(float i = 0.; i < 100; i++){ + p += rd * min(d,0.01); + + d = map(p) * side; + + if(d < 0.001){ + hit = true; + break; + } else if(i == 99){ + break; + } + // draw + ivec2 q = proj_p(p, T); + add_to_pixel(q, att); + } + if(hit){ + // refraction/reflection logic + att *= 0.7; + vec3 n = get_normal(p) * side; + float ior = 1.5; + ior = mix(ior,1.7,hue); + + vec3 prev_rd = rd; + if(side > 0){ + rd = refract(rd,n,ior); + } else { + rd = refract(rd,n,1/ior); + } + // total internal reflection + if(rd == vec3(0)){ + rd = reflect(prev_rd,n); + p += n*0.002; + } else{ + p -= n * 0.02; + side *= -1.; + } + } else { + break; + } + } + + } + + + // display prev frame's image + vec3 s = read_pixel(ivec2(gl_FragCoord.xy))*0.01; + + // tonemap stuff + s = s/(1+s*1.); + s = mix(s,smoothstep(0.,1.,s),0.); + col = max(s,0.); + col = pow(col,vec3(.45454)); + + + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_cosamentale.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_cosamentale.glsl new file mode 100644 index 000000000..e55f8390a --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_cosamentale.glsl @@ -0,0 +1,149 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float rs = 1.; +//float t1 = texture(texFFTSmoothed,0.2).x*10.; +//float t2 = texture(texFFTIntegrated,0.2).x*10.; +float rd(float t){ return fract(sin(dot(floor(t),45.236))*7854.236);} +float no(float t){ return mix(rd(t), rd(t+1.),smoothstep(0.,1.,fract(t)));} +float hs(vec2 t){ return fract(sin(dot(t,vec2(45.236,98.26)))*7854.236)-0.5;} +float time= fGlobalTime; +float t1 = rd(rd(fGlobalTime)); +float t2 = fGlobalTime+no(time)+no(time*3.+98.9)*0.4; +float n1 = no(t2*2.)+no(t2*4.)*0.5; +float n2 = no(t2*1.8); +mat2 rot(float t){float s = sin(t); float c = cos(t); return mat2(c,-s,s,c);} + +float map(vec3 p){ + vec3 pn = p; + p += 1.; + for(float i = 0 ; i < 7 ; i++){ + p-= 0.5+n1; + p.xz *= rot(t2); + p.xy *= rot(t2*0.9); + p = abs(p); + } + float d1 = max(length(p.xz)-1.5-t1*10.,length(pn)-18.); + float d2 = length(p)-2.-t1*10.; + return mix(d1,d2,smoothstep(0.3,0.7,n2));} + vec3 nor (vec3 p){ vec2 e = vec2(0.01,0.); return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx)));} + float gl(vec2 uv){vec2 s = 6.28/v2Resolution;float r= 0.; + for(int i = 0 ; i < 25 ; i++){ + float p = 6.28*(1./25.)*i; + r += texture(texPreviousFrame,uv+vec2(cos(p),sin(p))*s).a; + }return r /=25.;} + float b (vec2 p, vec2 b){vec2 q =abs(p)-b; + return length(max(q,vec2(0.)))+min(0.,max(q.x,q.y));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv.x = uv.x+hs(uv)*no(t2*4.3+98.4)*0.05*pow(length((uv.y-0.5)*2.),2.); + vec2 uc = uv; + uv -= 0.5; + uv *= 2.; + + vec2 fac = vec2(v2Resolution.y / v2Resolution.x, 1); + uv /= fac; + uv.x = mix(uv.x,abs(uv.x),step(0.8,rd(no(t2*5.2+98.236)))); + float ca = mix(10.,80.,no(t2*3.8+985.)); + vec2 ul = fract(uv*ca); + vec2 ul2 = fract(uv*rot(3.14*0.25)*ca); + uv = floor(uv*ca)/ca; + vec3 p = vec3(0.,0.,-20.); + vec3 r = normalize(vec3(uv,1.)); + float dd; + for(int i = 0 ; i < 15 ; i++){ + float d= map(p); + if(d<0.01){break;} + + p += r*d; + dd += d; + } + float d1 = pow(t1*300.,2.)*0.5; + float r1 = floor(smoothstep(20.,0.,dd)*16.)/16.; + float m = step(dd,20.); + vec3 n = nor(p); + float ml= clamp(mix(n.x,n.y,step(0.5,rd(t2*5.)))*mix(-1.,1.,step(0.5,(t2*2.5+985.))),0.,1.); + float n3 = no(t2*3.5+453.)*0.5; + float ia = mix(0.5+n3,0.5-n3,ml); + float l1 = step(ia,ul.x); + float l2 = step(ia,ul.y); + float l3 = step(ia,ul2.x); + float l4 = step(ia,ul2.y); + float l5 = mix(mix(l3,l4,step(n.x,0.)), mix(l4,l3,step(n.x,0.)),step(0.,n.y)); + float l6 = mix(l1,l5,step(0.35,abs(n.x))); + float l7 = mix(l2,l5,step(0.35,abs(n.y))); + float l8 = step(abs(n.z),0.9); + float lf= mix(step(0.1,ml),mix(l6,l7,step(0.35,abs(n.x))),mix(l8,1.-l8,step(0.75,rd(t2*4.6*6.3)))); + + float li = sin(gl(uc)*no(t2*4.65+69.25)*8.)-0.5+(r1)*5.; + vec2 un =300.*fac.yx; + float li2 = texture(texPreviousFrame,floor(uc*un)/(un)).a; + vec3 c2 =( 3.*abs(1.-2.*fract(li2*5.+r1*5.+t2*5.+vec3(0.,-1./3.,1./3.)))-1.)*li2; + vec3 c1 =( 3.*abs(1.-2.*fract(r1*5.+t2*5.+vec3(0.,-1./3.,1./3.)))-1.)*mix(lf,1.,step(0.95,rd(t2*7.+8.87))); + vec3 r2 = mix(step(0.4+no(t2*5.)*0.5,texture(texPreviousFrame,uc+(floor(uv*4.)/4.)*-0.005).xyz),c1,m); + vec3 r3 = mix(r2,1.-r2,step(0.95,rd(t2*6.+89.58))); + vec3 r4 = mix(r2,c2,step(0.5,rd(t2*3.8+914.55))); + uv += n.xy*0.01; + uv.x +=1.4; + uv.y += sin(uv.x*4.+time*5.)*0.1; + float i1 = b(uv,vec2(0.05,0.2)); + uv.x -=0.25; + i1 = min(i1,b(uv,vec2(0.05,0.2))); + i1 = min(i1,b((uv-vec2(0.1,0.))*rot(-0.5),vec2(0.05,0.2))); + uv.x -=0.25; + i1 = min(i1,b(uv,vec2(0.05,0.2))); + uv.x -=0.25; + i1 = min(i1,b(uv,vec2(0.05,0.2))); + uv.x -=0.15; + i1 = min(i1,b(uv+vec2(0.,0.15),vec2(0.1,0.05))); + i1 = min(i1,b(uv-vec2(0.,0.15),vec2(0.1,0.05))); + i1 = min(i1,b(uv,vec2(0.1,0.05))); + uv.x -=0.25; + i1 = min(i1,b(uv,vec2(0.05,0.2))); + uv.x -=0.15; + i1 = min(i1,b(uv-vec2(0.,0.15),vec2(0.1,0.05))); + i1 = min(i1,b(uv,vec2(0.1,0.05))); + i1 = min(i1,b((uv+vec2(-0.05,0.1))*rot(-0.5),vec2(0.05,0.11))); + uv.x -=0.05; + uv.x -=0.25; + i1 = min(i1,b(uv,vec2(0.05,0.2))); + uv.x -=0.15; + i1 = min(i1,b(uv+vec2(0.,0.15),vec2(0.1,0.05))); + i1 = min(i1,b(uv-vec2(0.,0.15),vec2(0.1,0.05))); + i1 = min(i1,b(uv,vec2(0.1,0.05))); + uv.x -=0.25; + i1 = min(i1,b(uv,vec2(0.05,0.2))); + uv.x -=0.15; + i1 = min(i1,b(uv+vec2(0.,0.15),vec2(0.1,0.05))); + i1 = min(i1,b(uv-vec2(0.,0.15),vec2(0.1,0.05))); + // i1 = min(i1,b(uv,vec2(0.1,0.05))); + uv.x -=0.3; + i1 = min(i1,b(uv,vec2(0.05,0.2))); + uv.x -=0.25; + i1 = min(i1,b(uv,vec2(0.05,0.2))); + uv.x -=0.15; + i1 = min(i1,b(uv-vec2(0.,0.15),vec2(0.1,0.05))); + i1 = min(i1,b(uv,vec2(0.1,0.05))); + uv.x -=0.1; + i1 = min(i1,b(uv,vec2(0.05,0.2))); + float il = max(step(0.,i1),step(0.5,no(t2*6.25+95.65))); + vec3 r5 = mix(1.-r4,r4,il); + out_color = vec4(r5,li); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_dok.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_dok.glsl new file mode 100644 index 000000000..08b66f359 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_dok.glsl @@ -0,0 +1,99 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define texI texInerciaBW +#define texF texFFTSmoothed +#define time fGlobalTime +#define gain 5.5 + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rot2(float a) {return mat2(cos(a), sin(a), -sin(a), cos(a));} +#if 1 +vec3 s2(vec2 uv) { + uv -= 0.5; +uv *= rot2(time); + uv+=0.5; + uv = abs(uv - 0.5) * 2.0; + + uv = 1.0-uv; + uv.x = max( + step(0.2, uv.x) * step(0.95, uv.y), + step(0.2, uv.y) * step(0.95, uv.x)) + ; + return vec3(uv,0); +} +#endif +vec3 s1(vec2 uv,float w){ + uv = abs(uv - 0.5); + uv = step(mix(0.1,0.8,w), uv); + uv *= uv.x * uv.y; + return vec3(uv,0); +} +#if 1 +float s3(vec2 uv) { + uv.x += (tan(uv.y) / 3.1416)*abs(uv.y)*sin(time/4.0)*11.0; + uv *= rot2(time * 0.1); + uv *= 4.0; + uv = floor(uv*32.0)/32.0; +// uv = fract(uv); + uv *= 3.0; + uv *= rot2(mix(0.4, 1.8, 0.5+0.5*sin(time/10.)));uv=abs(uv); + uv.x += 0.5; + uv *= rot2(mix(1.3, -2.5, 0.5+0.5*sin(time/7.0)));uv=abs(uv); + uv.x += 4; + //uv *= rot2(mix(0.1, 0.4, sin(time)));uv=abs(uv); + uv.y += 1; + uv *= rot2(mix(1.7, 0.2, 0.5+0.5*sin(time/3.0)));uv=abs(uv); + uv.x -= time * (120./60.0); + + return step(0.8, fract(uv.x)); +} +#endif +#if 1 +vec2 sI(vec2 uv) { + float r = mix(64.0,1024.0,sin(time/10.0)); + uv = floor(uv*r)/r; + uv.y = -uv.y; + uv.x += time*0.1; + uv.y += sin(uv.x*4-time) / 10.0; + return texture(texI, uv.xy).ra; +} +#endif +void main(void) +{ + vec2 UV = vec2(gl_FragCoord.xy - 0.5 * v2Resolution) / v2Resolution.y; + vec3 col = vec3(0); +// UV = fract((fract(UV * 10) -0.5)* rot2(0.3+sin(time))); + + col.rg = s1(fract((fract(UV*8)-0.5)*rot2(0.3+sin(time))), texture(texF,0.01).r*gain).rg; + + col.r = mix(col.r, 1.0-col.r, s2(fract(UV*8.0)).r); + //col.r = mix(col.r, 1.0-col.r, s3(UV)); + col.r = max(col.r, s3(UV)); + col.rbg = col.rrr; + //float i = sI(UV / mix(1,1.4,texture(texF, 0.01).r*gain)).r; + vec2 t = sI(UV+0.5); + col.rgb = mix(col.rgb, t.rrr, smoothstep(0.0,0.001,t.r)); + //float j = sI(UV).r; + //col.rgb *= mix(1.0-j, 1.0,smoothstep(0.0, 0.001,i)); + //col.rg = s2(UV).r; + //col.r = s3(UV); + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_gam0022.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_gam0022.glsl new file mode 100644 index 000000000..a0363ef18 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_gam0022.glsl @@ -0,0 +1,135 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +#define time fGlobalTime +#define PI acos(-1) +#define TAU (2 * PI) +#define VOL 0 +#define SOL 1 +#define saturate(x) clamp(x, 0, 1) + +float beat, beatTau; +vec3 pos; +float scene; + +vec3 pal(float h) { + vec3 col = vec3(0.5) + 0.5 * cos(TAU * (vec3(0, 0.33, 0.67) + h)); + return mix(col, vec3(1), 0.1 * floor(h)); +} + +float sdBox(vec3 p, vec3 b) { + vec3 q = abs(p)-b; + return length(max(q, 0)) + min(0, max(q.x, max(q.y, q.z))); +} + +void rot(inout vec2 p, float a) { + p *= mat2(cos(a), sin(a), -sin(a), cos(a)); +} + +void U(inout vec4 m, float d, float a, float b, float c) { + if (d < m.x) m = vec4(d, a, b, c); +} + +vec4 map(vec3 p) { + pos = p; + + + float a = 16; + vec4 m = vec4(1); + vec3 of1 = vec3(6.26, 2.7, 1.5); + p = mod(p, a) - 0.5 * a; + p -= of1; + + for (int i = 0; i < 1 + scene; i++) { + p = abs(p + of1) - of1; + rot(p.xz, TAU * (0.05 + scene * 0)); + rot(p.zy, TAU * 0.35); + rot(p.xy, TAU * -0.05); + } + + vec3 p2 = p; + p2.y = mod(p2.y, 0.4) - 0.5 * 0.4; + + vec3 p3 = p; + p3.y = mod(p3.y, 4) - 0.5 * 4; + U(m, sdBox(p2, vec3(1, 0.05, 1)), SOL, 0.1, 1); + U(m, sdBox(p, vec3(0.5, 20, 0.5)), VOL, saturate(cos(beatTau / 2 + p.y * TAU / 4)), 2.8 + 0.1 * scene + ((scene == 3) ? (fract(p.y * 2.3) - 2) : 0)); + U(m, sdBox(p3, vec3(1, 0.2, 1)), VOL, saturate(cos(beatTau / 2 + TAU / 32 * pos.z / 16)), 2.4 + 0.1 * scene); + + + return m; +} + +vec3 render(vec3 ro, vec3 rd) { + vec3 col = vec3(0); + float t = 0; + for(int i = 0; i < 100; i++) { + vec3 p = ro + rd * t; + vec4 m = map(p); + float d = m.x; + + if (m.y == SOL) { + t += d; + if (d < t * 0.001) { + col += float(i) / 50 * pal(m.w) * m.z; + t += d; + break; + } + } else { + t += abs(d) + 0.1; + col += 0.2 * pal(m.w) * m.z * exp(d); + } + } + col = mix(vec3(0), col, exp(-0.001 * t)); + return col; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + beat = time * 120 / 60; + beatTau = beat * TAU; + scene = floor(beat / 4); + scene += saturate(pow(fract(beat / 4), 1) - abs(uv.y)); + // vec2 up = vec2(0, 1); + // rot(up, TAU * pow(fract(beat / 4), 3)); + // scene += dot(uv, up) > 0 ? 1 : 0; + scene = mod(floor(scene + 0.5), 6); + + + vec3 ro = vec3(0, 0, 4 * time); + vec3 rd = vec3(uv, 1); + rd = normalize(rd); + vec3 col = render(ro, rd); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_inercia_chill.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_inercia_chill.glsl new file mode 100644 index 000000000..9fa489d70 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_inercia_chill.glsl @@ -0,0 +1,120 @@ +#version 410 core + +/**** +Radio bonzo + +Credit: + grabber_shaderroyale_blackle_2020.glsl +****/ + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 erot(vec3 p, vec3 ax, float ro) { + return mix(dot(ax,p)*ax,p,cos(ro))+sin(ro)*cross(ax,p); +} + +float box(vec2 p, vec2 d) { + p = abs(p)-d; + return length(max(p,0.)) + min(0,max(p.x,p.y)); +} + +vec3 tree(vec3 p) { + for (int i = 0; i < 8; i++) { + //p.y -= 1.; + p.x = abs(p.x); + vec2 roter = normalize(vec2(.4,1.)); + p.xz -= roter*max(dot(p.xz,roter),0.)*2.; + p.z += .25; + p = erot(p,vec3(0,0,1),fGlobalTime); + } + return p; +} + +float pillar; +float scene(vec3 p) { + vec3 p2 = vec3(asin(sin(p.xy)*.5),p.z); + vec3 p3 = vec3(p.xy,p.z-1.25); + vec2 id = floor(p.xy/4.)*4.+2; + p3.xy -= id; + p3 = erot(p3, vec3(0,0,1),id.x); + p3=tree(p3); + vec2 crds = vec2(length(p3.xy),p3.z); + pillar = box(crds, vec2(.02,.25))-.01; + float ball = length(p2)-1; + return min(pillar,ball); +} + +vec3 norm(vec3 p) { + mat3 k = mat3(p,p,p)-mat3(.001); + return normalize(scene(p) - vec3( scene(k[0]),scene(k[1]),scene(k[2]) )); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + //uv *= 20.; + + //out_color.xyz = sin(vec3(box(tree(uv), vec2(0.,1.)))*20)*.5+.5; + + float t = cos(fGlobalTime)*.3; + float yrt = sin(t)*.2+.5; + vec3 cam = normalize(vec3(1,uv)); + vec3 init = vec3(-8,0,0); + + init = erot(init,vec3(0,1,0), yrt); + cam = erot(cam ,vec3(0,1,0), yrt); + init = erot(init,vec3(0,0,1), t); + cam = erot(cam, vec3(0,0,1), t); + init.x += asin(sin(fGlobalTime*.1))/.05; + vec3 p = init; + bool hit = false; + float dist; + for (int i = 0; i < 200 && !hit; i++) { + dist = scene(p); + hit = dist*dist < 1e-6; + p += dist*cam*.7; + } + bool pl = pillar == dist; + float fog = smoothstep(40.,10.,distance(p,init)); + vec3 n = norm(p); + vec3 r = reflect(cam,n); +#define AO(p, d, s) smoothstep(-s,s,scene(p+d*s)) + float ao = AO(p,n,.1)*AO(p,n,.3)*AO(p,n,.5); + float ro = AO(p,r,.1)*AO(p,r,.3); + + vec3 ldir = normalize(vec3(1)); + + vec3 p2 = p+ldir*.1; + float mdd = 100.; + for (int i = 0; i < 50; i++) { + float dd = scene(p2); + mdd = min(abs(dd),mdd); + p2 += dd*ldir; + } + float diff = length(sin(n*2.)*.4+.6)/sqrt(3.); + float spec = length(sin(r*5.)*.4+.6)/sqrt(3.); + float fres = 1.-abs(dot(cam,n))*.98; + float specpow = .2; + vec3 diffcol = vec3(.05,.05,.05); + if (pl) { + diffcol = vec3(.7,.05,.05); + specpow = 1.5; + ao *= smoothstep(-1.,1.,dot(ldir,n)); + ro *= smoothstep(-1.,0.,dot(ldir,n)); + } else { + ao *= smoothstep(0.,0.1,mdd); + } + + vec3 col = diffcol*diff*ao + pow(spec,10.)*fres*specpow*ro; + vec3 fogcol = vec3(.3,.4,.6); + out_color.xyz = sqrt(hit ? mix(fogcol,col,fog) : fogcol); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_inercia_historia.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_inercia_historia.glsl new file mode 100644 index 000000000..fd52bc6c4 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_inercia_historia.glsl @@ -0,0 +1,154 @@ +#version 410 core + +/**** +Radio bonzo + +Credit: + grabber_inerciaroyale_rimina.glsl +****/ + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.5).r; + +const float E = 0.01; +const float FAR = 100.0; +const int STEPS = 60; + +vec3 glow = vec3(0.0); +float M = 0.0; + +vec3 COL1 = vec3(0.5, 0.3, 0.1); +vec3 COL2 = vec3(0.8, 0.1, 0.8); + +float box(vec3 p, vec3 b){ + vec3 d = abs(p) - b; + return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0); +} + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +float scene(vec3 p){ + vec3 pp = p; + + float safe = sphere(p, 10.0); + + + float orb = sphere(pp-vec3(0.0, 0.0, -8.0), 6.0+fract(fft*10.0)*2.5); + + rot(pp.xy, time); + rot(pp.xz, time*0.5); + rot(pp.yz, time*0.25); + + for(int i = 0; i < 5; ++i){ + pp = abs(pp)-vec3(0.5, 1.2, 1.0); + rot(pp.xz, time*0.5 + fft*5.0); + rot(pp.xy, time*0.5); + rot(pp.yz, time+fft*5.0); + } + + float a = box(pp, vec3(1.0)); + //a = max(a, -safe); + + vec3 g = vec3(1.0, 0.2, 0.1) * 0.08 / (abs(a)+0.01); + g += COL2 *0.05 / (abs(orb)+0.01); + g *= 0.5; + + glow += g; + + orb = max(abs(orb), 0.1); + a = max(abs(a), 0.2); + + return min(a, orb); +} + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + + for(int i = 0; i < STEPS; ++i){ + float d = scene(p); + t += d; + p = ro + rd * t; + + if(d < E || t > FAR){ + break; + } + } + return t; +} + +vec3 normals(vec3 p){ + vec3 e = vec3(E, 0.0, 0.0); + return normalize(vec3( + scene(p+e.xyy) - scene(p-e.xyy), + scene(p+e.yxy) - scene(p-e.yxy), + scene(p+e.yyx) - scene(p-e.yyx) + )); +} + +vec3 shade(vec3 p, vec3 rd, vec3 ld){ + vec3 n = normals(p); + float l = max(dot(n, ld), 0.0); + float a = max(dot(reflect(n, ld), rd), 0.0); + float s = pow(a, 20.0); + + return COL1 * l * 0.25 + COL2 * s * 0.75; + +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 q = -1.0 + uv*2.0; + q.x *= v2Resolution.x/v2Resolution.y; + + vec3 ro = vec3(0.0, 0.0, 10.0+fract(time+fft)); + vec3 rt = vec3(0.0, 0.0, -1.0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0.0, 1.0, 0.0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z) * vec3(q, 1.0/radians(50.0))); + vec3 col = vec3(0.01, 0.02, 0.03); + + float t = march(ro, rd); + vec3 p = ro + rd * t; + + if(t < FAR){ + col += shade(p, rd, -z) + (1.0/t); + } + + col *= glow; + + vec3 prev = texture(texPreviousFrame, uv).rgb; + + col = mix(col, prev, 0.8); + + + out_color = vec4(col, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_inercia_punchy.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_inercia_punchy.glsl new file mode 100644 index 000000000..c36b4d036 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_inercia_punchy.glsl @@ -0,0 +1,116 @@ +#version 410 core + +/**** +Radio bonzo + +Credit: + grabber_inerciaroyale_cosamentale_2021.glsl +****/ + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float time= fGlobalTime*1.5; +mat2 rot(float t){ float c = cos(t); float s = sin(t); return mat2(c,-s,s,c);} +float zl; +float box(vec3 p ,vec3 b){ vec3 q = abs(p)-b; + return length(max(q,vec3(0.)))-min(0.,max(q.x,max(q.y,q.z)));} +float map(vec3 p,vec4 ta){ + + float t1 = ta.z; + float d4 = length(p*vec3(0.1,5.,0.1)+vec3(0.,-10.-step(0.1,fract(time))*100.,0.))-2.; + float d1 = 100.; + vec3 rr = vec3(3.,0.,0.); + vec3 pv = p; + vec3 rv = vec3(5.,0.,5.); + vec3 pl = mod(p,rr)-0.5*rr; + if(step(0.5,fract(time*0.25))>0.){ + d1 = max(length(p+vec3(0.,2.,0.)+vec3(ta.x,0.,ta.y))-t1*5.,-(length(p.y+sin(time*5.)*5.)-2.)); + } + else{ d1 = length(pl.xz+ta.xy)-0.5;} + float d2 = p.y+1.5+texture(texNoise,p.xz*0.1).x*3.+sin(length((p.xz+ta.xy)*2.)-time*10.)*t1*0.25; + vec3 pr = p; + pr.xz *= rot(p.y); + float d3 = distance(p.y,0.2)-texture(texNoise,pr.xz*0.2).x+0.225; + zl = min(d4,d1); + return min(min(d1,min(d3,d2)),d4);} + float rm(vec3 p,vec3 r,vec4 ta){ + float dd = 0.; + for(int i =0 ; i <64 ; i++){ + float d = map(p,ta); + if(dd>20.){dd=20.; break;} + if(d<0.01){break;} + p += r*d; + dd += d; + } + return dd; + } + vec3 nor(vec3 p,vec4 ta){vec2 e = vec2(0.01,0.); return normalize(map(p,ta)-vec3(map(p-e.xyy,ta),map(p-e.yxy,ta),map(p-e.yyx,ta)));} + float rd(float t){ return fract(sin(dot(floor(t),45.))*7845.26);} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uc = uv; + uv -= 0.5; + uv *= 2.; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float tm = smoothstep(0.1,0.,fract(time)); + vec2 pm = (vec2(texture(texNoise,vec2(0.5,time*5.)).x,texture(texNoise,vec2(0.25,time*5.)).x)-0.5)*0.1; + float l2 =step(0.75,fract(time*0.5)); + float l1 = mix(0.,step(0.5,uc.y),l2); + float mmv= pow(texture(texNoise,vec2(time,0.3)).x,0.5); + vec3 p = vec3(0.,0.,-2.*mmv-4.); + + //float t2 = texture(texNoise,vec2(0.5,floor(time))).x*2.; + vec3 r = normalize(vec3(uv+vec2(0.,-mix(0.5,mix(-0.2,0.5,l1),l2))+tm*pm,rd(time)*2.)); + float tt = mix(time,-time,l1); + r.xz *= rot(tt); + p.xz *= rot(tt); + + float tx = fract(floor(time)*0.1)*10.; + vec2 px = (vec2(texture(texNoise,vec2(0.5,tx)).x,texture(texNoise,vec2(0.25,tx)).x)-0.5)*5.; + vec4 ta = vec4(px,pow(fract(time*0.7),3.),0.); + + //float r1 = smoothstep(10.,0.,rm(p,r)); + float r2 = 0.; + float se = fract(sin(uv.x*v2Resolution.y+uv.y)*7845.236); + float se2 = se*6.28; + float a = sqrt(1.-se*se); + vec3 rn = vec3(a*cos(se2),a*sin(se2),(se-0.5)*2.); + rn *= sqrt(se); + for(int i = 0 ; i < 2 ; i++){ + float d = rm(p,r,ta); + if(step(0.1,zl)>0.2){ + vec3 pp = p+ r*d; + vec3 n = nor(pp,ta); + r = n*rn; + p = pp+r*0.1; + } + else{r2=1.;break;} + } + float b = sqrt(32.); + float c = 0.; + float d = pow(length(uv.y),1.5)*texture(texNoise, vec2(0.75,time)).x*0.02; + for(float i = -0.5*b; i<= 0.5*b ; i +=1.) + for(float j = -0.5*b ; j<=0.5*b ; j +=1.){ + c += texture(texPreviousFrame,uc+vec2(i,j)*d).a; + } + c /= 5.; + float c2 = c+r2; + vec3 c3 = mix(vec3(1.),3.*abs(1.-2.*fract(c2*0.3+0.5+vec3(0.,-1./3.,1./3.)))-1.,0.2)*c2; + out_color = vec4(c3,r2); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_ivan_dianov.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_ivan_dianov.glsl new file mode 100644 index 000000000..8f30ffe18 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_ivan_dianov.glsl @@ -0,0 +1,80 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +layout(location = 0) out vec4 o; // out_color must be written in order to see anything + +#define time fGlobalTime +#define tx texPreviousFrame +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) +#define B (noise(time)) +#define BB (noise(time*8)) +#define rnd(x) fract(1.1e4*sin(mod(111.1*(x),3.14)+.1)) + +float noise(vec3 p) { + vec3 ip=floor(p),s=vec3(7,157,113); p-=ip; p=smoothstep(0.,1.,p); + vec4 h=vec4(0,s.yz,s.y+s.z)+dot(ip,s); + h=mix(fract(sin(h)*43758.5), fract(sin(h+s.x)*43758.5),p.x); + h.xy=mix(h.xz,h.yw,p.y); + return mix(h.x,h.y,p.z); +} + +float noise(float x){ + return noise(vec3(x)); +} + + +void main(void) +{ + o=vec4(0); + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 uvI=uv; + + vec2 uvT = gl_FragCoord.xy/v2Resolution; + uvT-=.5; + uvT*=.93; + uvT.x+=(rnd(time*33)-.5)*.01; + uvT.y+=(noise(time*44+99.)-.5)*.01; + uvT*=rot((rnd(time*8)*.1-.05)*.1); + uvT+=.5; + o=texelFetch(tx,ivec2(uvT*v2Resolution),0); + + + + uv*=rot(rnd(time*8+length(uv)*8)-.5); + uv=abs(uv); + if(rnd(time*88)<.1){ + if(uv.x<.01&&uv.y<.1){ + o=vec4(int(o.a)^1); + } + } + + float i=0,d=0,e=1.; + uv = uvI; + vec3 p,gl=vec3(0); + for(;i++<50.&&e>1e-3;){ + p=normalize(vec3(uv,1))*d; + p.xz*=rot(time*sign(o.a-.5)); + p.z-=4.-time*2*sign(o.a-.5); + p = abs(fract(p*.5)*2.-1.)-.5; + p.xz*=rot(B*8); + p.yz*=rot(B*8*.618); + if(o.a>.5){ + p=abs(p); + p-=B*.3; + p.zx=(p.zp.x)?p.xy:p.yx; + d+=e=length(p.xz)-B*.01; + } + else{ + d+=e=length(p)-B*.4; + } + } + o.rgb=mix(o.rgb,vec3(9./i),.4)+gl; + o.rb=((o.rb)*rot(time+o.a*3.14))*.5+.5; + o.rb+=(9./i); + //o.r=o.a; +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jb.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jb.glsl new file mode 100644 index 000000000..117ec91eb --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jb.glsl @@ -0,0 +1,376 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; + +layout( r32ui ) uniform coherent restrict uimage2D[3] computeTex; +layout( r32ui ) uniform coherent restrict uimage2D[3] computeTexBack; + +layout( location = 0 ) out vec4 out_color; // out_color must be written in order to see anything + +#define U gl_FragCoord.xy +#define R vec2(v2Resolution.xy) +#define T fGlobalTime +#define pi acos( -1.0f ) +#define tau ( acos( -1.0f ) * 2.0f ) + +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + +// referencing a pixel, for an extended ASCII character in Code Page 37 +// expected ranges of char are 0-255 +// expected ranges of offset are within the 8x16 neighborhood +// inverting on either axis will let you orient as desired +const uint data[ 1024 ] = uint[](0u, 0u, 4278255360u, 0u, 0u, 0u, 4278255360u, 0u, 0u, 0u, 4278255360u, 0u, 8289792u, 1579008u, +4278255390u, 1010794240u, 8519532u, 272382976u, 4278255374u, 1714643736u, 10869758u, 943488512u, 4282172186u, 1715437336u, 8519678u, +2095578904u, 3882260786u, 1714447323u, 8519678u, 4276617020u, 3275931000u, 1714447164u, 12436478u, 2095545916u, 3275931084u, +1009804263u, 10086268u, 941103128u, 3882260940u, 405824316u, 8519480u, 270014464u, 4282172364u, 2121295835u, 8519440u, 3947520u, +4278255564u, 418440984u, 8289792u, 0u, 4278255480u, 417392152u, 0u, 0u, 4278255360u, 49152u, 0u, 0u, 4278255360u, 0u, 0u, 0u, +4278255360u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 2147614720u, 8126464u, 0u, 0u, 3221624934u, 2143682584u, 404226048u, 0u, 3759029350u, +3680501820u, 1008205824u, 0u, 4028530278u, 3677880446u, 2115502080u, 4350u, 4164819046u, 3681288216u, 404232240u, 2636030u, 4278065254u, +2076573720u, 404229216u, 3228317820u, 4164819046u, 465960984u, 404291326u, 3237903484u, 4028530278u, 460127870u, 404229216u, +3228335160u, 3759029248u, 456719932u, 410916912u, 4264099384u, 3221624934u, 453836312u, 406585344u, 65040u, 2147614822u, 466026110u, +404226048u, 0u, 0u, 8126464u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 402653184u, 0u, 0u, 26112u, 402653232u, 0u, +0u, 1598976u, 2080389168u, 204472320u, 0u, 3958380u, 3321916464u, 404226048u, 0u, 3941484u, 3267521632u, 806092800u, 2u, 3932414u, +3234215936u, 806118936u, 6u, 1572972u, 2081191424u, 806108184u, 12u, 1572972u, 102292480u, 806158206u, 16646168u, 1572972u, 103861248u, +806108184u, 48u, 254u, 2254490624u, 806118936u, 402653280u, 1572972u, 3334917120u, 404226048u, 402659520u, 1572972u, 2089186816u, +204472320u, 402659456u, 0u, 402653184u, 0u, 805306368u, 0u, 402653184u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, +0u, 0u, 941128828u, 217987326u, 2088501248u, 124u, 1815660230u, 482369734u, 3334864896u, 100688070u, 3329754630u, 1019265030u, +3334871064u, 201339078u, 3323464710u, 1824571398u, 3334871064u, 410916876u, 3591903292u, 3439131660u, 2088632320u, 805309464u, +3591909382u, 4261856792u, 3322281984u, 1610614296u, 3323486214u, 201770544u, 3322281984u, 813567000u, 3323510790u, 201770544u, +3322288152u, 402659328u, 1813563078u, 214353456u, 3322681368u, 201338904u, 947846780u, 511474736u, 2088239152u, 100687896u, 0u, 0u, 0u, +0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1113148u, 4177460796u, 3325828838u, 4039558780u, +2084071014u, 1818650214u, 3323464806u, 1626269382u, 3328992962u, 1717723842u, 3323464806u, 1627322054u, 3334891200u, 1718118592u, +3323464812u, 1627324102u, 3737550016u, 1719171264u, 4262988920u, 1624694470u, 3741214400u, 1718118622u, 3323464824u, 1623641798u, +3737544384u, 1717592262u, 3323513964u, 1623639750u, 3703989954u, 1717723334u, 3323513958u, 1657194182u, 3234227814u, 1818648678u, +3323513958u, 1724303046u, 2093415484u, 4177457210u, 3325851878u, 4274439804u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, +0u, 0u, 0u, 0u, 0u, 4096u, 0u, 0u, 0u, 14336u, 4236049532u, 2126956230u, 3328638524u, 3959808u, 1724278470u, 2126956230u, 3328624176u, +2148320768u, 1724278470u, 1522976454u, 1818658352u, 3222011904u, 1724278368u, 415680198u, 2087062576u, 3758882816u, 2093382712u, +415680214u, 943462448u, 1879834624u, 1623616524u, 415680214u, 941109296u, 940310528u, 1623614982u, 415680214u, 2081972272u, 470548480u, +1624663750u, 415657214u, 1813561904u, 235667456u, 1625188038u, 415643886u, 3323512368u, 101449728u, 4034717308u, 1014763628u, +3325886012u, 37486592u, 786432u, 0u, 0u, 0u, 917504u, 0u, 0u, 255u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 805306368u, 0u, 0u, 0u, 805306368u, +0u, 0u, 0u, 402710528u, 469776384u, 3759671008u, 939524096u, 24576u, 201354240u, 1612187232u, 402653184u, 24576u, 201352192u, +1610612832u, 402653184u, 7895164u, 1014784118u, 1815613030u, 418176124u, 814278u, 1824977100u, 1981285996u, 419325638u, 8152768u, +3439222988u, 1712850552u, 416704198u, 13395648u, 3435159756u, 1712850552u, 416704198u, 13395648u, 3435159756u, 1712850540u, 416704198u, +13395654u, 3435552972u, 1712850534u, 416704198u, 7765116u, 1987899516u, 3862693606u, 1019635324u, 0u, 12u, 26112u, 0u, 0u, 204u, 26112u, +0u, 0u, 120u, 15360u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 268435456u, 7u, 205011712u, 0u, 805306368u, 12u, +202141184u, 0u, 805306368u, 12u, 202113032u, 3698777212u, 4234556259u, 1667464972u, 202113052u, 1724675782u, 812004195u, 912483896u, +458806u, 1724671584u, 812004203u, 476253196u, 202113123u, 1724670008u, 812004203u, 476256268u, 202113123u, 1724669964u, 812004203u, +476262412u, 202113123u, 1724670150u, 912662143u, 912483084u, 202113151u, 2088562812u, 473631798u, 1665105671u, 204996608u, 1611399168u, +0u, 196608u, 0u, 1611399168u, 0u, 393216u, 0u, 4028497920u, 0u, 8126464u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 56u, 3088u, 6305792u, +268460032u, 408995436u, 1020008504u, 3425725440u, 952512614u, 1009778744u, 1711288428u, 1587200u, 1811945472u, 1712852992u, 3254779904u, +60u, 0u, 14392u, 3234626680u, 2021161062u, 2088533048u, 943221868u, 3234645516u, 202116192u, 3334915608u, 404276934u, 3234659964u, +2088533088u, 4278124056u, 404276934u, 3268198604u, 3435973734u, 3233857560u, 404291326u, 1724694732u, 3435973692u, 3233857560u, +404276934u, 1020053196u, 3435973644u, 3334915608u, 404276934u, 209091702u, 1987474950u, 2088533052u, 1010616006u, 100663296u, 60u, 0u, +0u, 2080374784u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 402653184u, 0u, 0u, 0u, 805306384u, 6303840u, 13026840u, 939587598u, +1610628664u, 3325065264u, 3321888792u, 1818676251u, 27756u, 1625112u, 8177212u, 1684458520u, 4261465088u, 0u, 13026918u, 1614608408u, +1724697724u, 2088553676u, 3334915680u, 4028154904u, 1618411206u, 3334917324u, 3334915680u, 1618922622u, 2083966150u, 3334917324u, +3334915680u, 1612242456u, 1618922694u, 3334917324u, 3334915686u, 1618922520u, 1624820934u, 3334917324u, 3334915644u, 1612237848u, +1725484230u, 3334917324u, 3334915608u, 3860384792u, 4268674684u, 2088531574u, 2122087448u, 4229482008u, 0u, 0u, 100663296u, 216u, 0u, +0u, 201326592u, 112u, 0u, 0u, 2013265920u, 0u, 0u, 0u, 0u, 0u, 0u, 7733248u, 0u, 0u, 403445784u, 14433336u, 192u, 3221225472u, +806891568u, 1979739244u, 805306560u, 3222798336u, 1613783136u, 3703991404u, 805306562u, 3256352768u, 0u, 15089208u, 198u, 3321888768u, +2016967884u, 3707109376u, 805306572u, 3424138968u, 202950348u, 1727954556u, 822017560u, 404253804u, 2081998540u, 1725825024u, +1623197232u, 806934582u, 3424175820u, 1724776448u, 3233810016u, 1715235948u, 3424175820u, 1724252160u, 3334473436u, 3460052696u, +3424175820u, 1724252160u, 3334473350u, 2654732288u, 1983675510u, 1724252160u, 2080374796u, 1041760256u, 0u, 0u, 24u, 100663296u, +0u, 0u, 62u, 100663296u, 0u, 0u, 0u, 0u, 290839832u, 404239872u, 3552768u, 909514752u, 1152022296u, 404239872u, 3552768u, 909514752u, +290839832u, 404239872u, 3552768u, 909514752u, 1152022296u, 404239872u, 3552768u, 909514752u, 290839832u, 404239872u, 3552768u, +909514752u, 1152022296u, 418919936u, 4176885502u, 4130797568u, 290839832u, 404239872u, 403060230u, 104208384u, 1152022296u, 4177065726u, +4176885494u, 4278122744u, 290839832u, 404239926u, 406206006u, 24u, 1152022296u, 404239926u, 406206006u, 24u, 290839832u, 404239926u, +406206006u, 24u, 1152022296u, 404239926u, 406206006u, 24u, 290839832u, 404239926u, 406206006u, 24u, 1152022296u, 404239926u, 406206006u, +24u, 290839832u, 404239926u, 406206006u, 24u, 1152022296u, 404239926u, 406206006u, 24u, 404226072u, 1579062u, 905983488u, 905983512u, +404226072u, 1579062u, 905983488u, 905983512u, 404226072u, 1579062u, 905983488u, 905983512u, 404226072u, 1579062u, 905983488u, +905983512u, 404226072u, 1579062u, 905983488u, 905983512u, 404226072u, 1580854u, 926939135u, 939522047u, 404226072u, 1579062u, +808452096u, 805306368u, 536870687u, 4294909751u, 1060634615u, 939522047u, 6168u, 1579062u, 3538998u, 905983488u, 6168u, 1579062u, +3538998u, 905983488u, 6168u, 1579062u, 3538998u, 905983488u, 6168u, 1579062u, 3538998u, 905983488u, 6168u, 1579062u, 3538998u, +905983488u, 6168u, 1579062u, 3538998u, 905983488u, 6168u, 1579062u, 3538998u, 905983488u, 6168u, 1579062u, 3538998u, 905983488u, +905969718u, 402653238u, 404226303u, 15732735u, 905969718u, 402653238u, 404226303u, 15732735u, 905969718u, 402653238u, 404226303u, +15732735u, 905969718u, 402653238u, 404226303u, 15732735u, 905969718u, 402653238u, 404226303u, 15732735u, 922681398u, 522125366u, +4279763199u, 15732735u, 905969718u, 404226102u, 404226303u, 15732735u, 4294967103u, 522141695u, 4294451199u, 4293922560u, 1586688u, +1586742u, 402659583u, 4293922560u, 1586688u, 1586742u, 402659583u, 4293922560u, 1586688u, 1586742u, 402659583u, 4293922560u, 1586688u, +1586742u, 402659583u, 4293922560u, 1586688u, 1586742u, 402659583u, 4293922560u, 1586688u, 1586742u, 402659583u, 4293922560u, 1586688u, +1586742u, 402659583u, 4293922560u, 1586688u, 1586742u, 402659583u, 4293922560u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, +7929344u, 0u, 14366u, 7168u, 13420032u, 4261412864u, 2117626928u, 209020u, 13420286u, 3321914998u, 409781784u, 417990u, 1993130092u, +1618896604u, 1019659788u, 2122211526u, 3705192556u, 819488280u, 1724302910u, 3688594630u, 3637297260u, 416835096u, 1727949926u, +3688587462u, 3636904044u, 819488280u, 1724279910u, 3690160326u, 3636904044u, 1624800280u, 1019636838u, 2122211526u, 3704012908u, +3336069144u, 409758822u, 6303942u, 1993130092u, 4268777496u, 2117660220u, 12590278u, 0u, 49152u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, +0u, 1572864u, 0u, 0u, 0u, 1572864u, 0u, 0u, 0u, 1572864u, 939524111u, 3631218688u, 0u, 236453888u, 1811939340u, 1826095104u, 12300u, +454557696u, 1811939340u, 1815085056u, 4262991896u, 454563840u, 939524108u, 1818262528u, 1575984u, 404232310u, 12u, 1825078272u, +8259168u, 404226268u, 12u, 1828224000u, 4262988848u, 404258304u, 1573100u, 31744u, 1579032u, 416809078u, 1579116u, 31744u, 12300u, +416815324u, 108u, 31744u, 4261412864u, 416815104u, 60u, 31744u, 16744062u, 409993216u, 28u, 0u, 0u, 402653184u, 0u, 0u, 0u, 402653184u, +0u, 0u, 0u, 402653184u, 0u, 0u ); + +int fontRef ( in uint c, in ivec2 offset, in bvec2 invert ) { + if ( invert.x ) offset.x = 7 - offset.x; + if ( invert.y ) offset.y = 15 - offset.y; + bool offsetOOB = any( lessThan( offset, ivec2( 0, 0 ) ) ) || + any( greaterThanEqual( offset, ivec2( 8, 16 ) ) ); + bool charOOB = bool( clamp( c, 0u, 255u ) != c ); + if ( offsetOOB || charOOB ) return -1; // oob + uvec2 sampleLoc = uvec2( c % 16u, c / 16u ) * uvec2( 8u, 16u ) + uvec2( offset ); + uint idx = ( sampleLoc.x + sampleLoc.y * 128u ) / 32u; + uint packedData = data[ idx ]; + uint bitMask = 1u << ( 31u - sampleLoc.x % 32u ); + return int( ( packedData & bitMask ) != 0u ); +} + +int fontRef ( uint c, ivec2 offset ) { + return fontRef( c, offset, bvec2( false, true ) ); +} + +vec2 curvedSurface ( vec2 uv, float r ) { + // https://www.shadertoy.com/view/XdtfzX + return r * uv / sqrt( r * r - dot( uv, uv ) ); +} + +// weyl sequence https://www.shadertoy.com/view/4dtBWH +vec2 NthWeyl ( int n ) { + const vec2 p0 = vec2( 0.0f ); + //return fract(p0 + float(n)*vec2(0.754877669, 0.569840296)); + return fract( p0 + vec2( n * 12664745, n * 9560333 ) / exp2( 24.0f ) ); // integer mul to avoid round-off +} + + +// hashes +uint seed = 12512; +uint hashi ( uint x ) { + x ^= x >> 16; x *= 0x7feb352dU; + x ^= x >> 15; x *= 0x846ca68bU; + x ^= x >> 16; + return x; +} + +#define hash_s(s) ( float( hashi( uint( s ) ) ) / float( 0xffffffffU ) ) +#define hash() ( float( seed = hashi( seed ) ) / float( 0xffffffffU ) ) +#define hash2() vec2( hash(), hash() ) +#define hash3() vec3( hash(), hash(), hash() ) +#define hash4() vec3( hash(), hash(), hash(), hash() ) + +vec2 sampleDisk () { + vec2 r = hash2(); + return vec2( sin( r.x * tau ), cos( r.x * tau ) ) * sqrt( r.y ); +} + +void storePixel ( ivec2 p, vec3 color ) { + // colour quantized to integer. + ivec3 quantized = ivec3( color * 10000 ); + imageStore( computeTex[ 0 ], p, ivec4( quantized.x ) ); + imageStore( computeTex[ 1 ], p, ivec4( quantized.y ) ); + imageStore( computeTex[ 2 ], p, ivec4( quantized.z ) ); +} + +void addToPixel ( ivec2 p, vec3 color ) { + // colour quantized to integer. + ivec3 quantized = ivec3( color * 10000 ); + imageAtomicAdd( computeTex[ 0 ], p, quantized.x ); + imageAtomicAdd( computeTex[ 1 ], p, quantized.y ); + imageAtomicAdd( computeTex[ 2 ], p, quantized.z ); +} + +vec3 readPixel ( ivec2 p ) { + return 0.0001f * vec3( + imageLoad( computeTexBack[ 0 ], p ).x, + imageLoad( computeTexBack[ 1 ], p ).x, + imageLoad( computeTexBack[ 2 ], p ).x + ); +} + +vec3 palette ( float i ) { + return vec3( + sin( i * ( pi / 2.0f ) ), + sin( i * pi ), + cos( i * ( pi / 2.0f ) ) + ); +} + +// support funcs for line drawing +float RemapRange ( in float value, in float iMin, in float iMax, in float oMin, in float oMax ) { + return ( oMin + ( ( oMax - oMin ) / ( iMax - iMin ) ) * ( value - iMin ) ); +} + +void swap ( inout int a, inout int b ) { + int temp; + temp = a; + a = b; + b = temp; +} + +void swap ( inout float a, inout float b ) { + float temp; + temp = a; + a = b; + b = temp; +} + +// draw line +#define ADDITIVE 0 +#define REPLACE 1 +void drawLine ( vec3 p0, vec3 p1, vec3 color, int mode ) { + vec2 dims = textureSize( texPreviousFrame, 0 ).xy; + float scale = dims.x / dims.y; + p0.y *= scale; + p1.y *= scale; + int x0 = int( RemapRange( p0.x, -1.0f, 1.0f, 0.0f, float( dims.x ) - 1.0f ) ); + int y0 = int( RemapRange( p0.y, -1.0f, 1.0f, 0.0f, float( dims.y ) - 1.0f ) ); + int x1 = int( RemapRange( p1.x, -1.0f, 1.0f, 0.0f, float( dims.x ) - 1.0f ) ); + int y1 = int( RemapRange( p1.y, -1.0f, 1.0f, 0.0f, float( dims.y ) - 1.0f ) ); + float z0 = p0.z; float z1 = p1.z; bool steep = false; + if ( abs( x0 - x1 ) < abs( y0 - y1 ) ) { + swap( x0, y0 ); swap( x1, y1 ); steep = true; + } + if ( x0 > x1 ) { + swap( x0, x1 ); swap( y0, y1 ); swap( z0, z1 ); + } + int dx = x1 - x0; int dy = y1 - y0; + int derror2 = abs( dy ) * 2; + int error2 = 0; + int y = y0; + for ( int x = x0; x <= x1; x++ ) { + // interpolated depth value + float depth = RemapRange( float( x ), float( x0 ), float( x1 ), z0, z1 ); + int yTemp = y; + int xTemp = x; + if ( steep ) { + swap( y, x ); + } + // float depthSample = uintBitsToFloat( imageLoad( computeTexBack[ 2 ], ivec2( x, y ) ).r ); + float depthSample = 100000.0f; + if ( depth < depthSample ) { + if ( mode == ADDITIVE ) { + addToPixel( ivec2( x, y ), color.xyz ); + } else { // REPLACE + storePixel( ivec2( x, y ), color.xyz ); + } + } + y = yTemp; + x = xTemp; + error2 += derror2; + if ( error2 > dx ) { + y += ( y1 > y0 ? 1 : -1 ); + error2 -= dx * 2; + } + } +} + +// disk: center c, normal n, radius r +float diskIntersect ( in vec3 ro, in vec3 rd, vec3 c, vec3 n, float r ) { + vec3 o = ro - c; + float t = -dot( n, o ) / dot( rd, n ); + vec3 q = o + rd * t; + return ( dot( q, q ) < r * r ) ? t : -1.0f; +} + +// return rgb color, distance in .a +vec4 compositePlaneResult ( in vec3 ro, in vec3 rd ) { + const int iterations = 20; + for ( int i = 0; i < iterations; i++ ) { + // ray-disk + float fi = float( i ); + vec3 centerPoint = vec3( 0.0f+ 0.031f * fi, 0.0f - 0.01f * fi, 0.0f + 0.1f * fi ); + vec3 planeNormal = vec3( 0.0f, 0.0f, 1.0f ); + float radius = 0.65f; + float rayHit = diskIntersect( ro, rd, centerPoint, planeNormal, radius ); + if ( rayHit > 0.0f ) { + vec3 color = vec3( 0.0f ); + + vec3 hitPoint = ro + rd * rayHit; + float vignette = smoothstep( distance( centerPoint, hitPoint ), 1.1f * radius, 0.95f * radius ); + float distanceFade = RemapRange( fi, 0.0f, float( iterations ) / 1.6f, 1.5f, 0.4f ); + hitPoint.xy = rot( fi * 1.2f + ( T * fi ) / 50.0f ) * hitPoint.xy; + + ivec3 p = ivec3( floor( hitPoint * 250.0f ) ); + ivec2 bin = ivec2( floor( p.xy / vec2( 8.0f, 16.0f ) ) ); + ivec2 offset = ivec2( p ) % ivec2( 8, 16 ); + float glyphValNoMod = ( hash_s( bin.x * bin.y ) + T / 4.0f + float( i ) * 10000 ) / 1.0f; + float glyphVal = mod( glyphValNoMod, hash_s( bin.x * bin.y + 600 ) ); + bool negative = any( lessThanEqual( bin.xy, ivec2( 0 ) ) ); + + // picking from tex + uint pick = imageLoad( computeTexBack[ 0 ], bin.xy + ivec2( 0, i ) ).r & 0xFF; + + int onGlyph = fontRef( pick, offset ); + if ( onGlyph != 0 && !negative ) { + vec3 color = palette( sin( glyphVal.x + cos( T / 50.0f ) ) ); + if ( bin.x == 1 ) { + color = vec3( 1.0f ); + } + return vec4( color * distanceFade * vignette, rayHit ); + } + } + } + #if 0 + return vec4( background( ro.xy ) * 0.2f, -1.0f ); + #else + return vec4( 0.0f, 0.0f, 0.0f, -1.0f ); + #endif +} + +void main ( void ) { + // Init hash + seed = 42069; + seed += hashi( uint( U.x ) ) + hashi( uint( U.y ) * 125 ); + + ivec2 bSize = ivec2( 96, 64 ); + bvec4 boundsChecks = bvec4( U.x < bSize.x, U.y < bSize.y, + U.x > ( textureSize( texPreviousFrame, 0 ).x - bSize.x ), + U.y > ( textureSize( texPreviousFrame, 0 ).y - bSize.y ) + ); + + // low ranges, update values + if ( boundsChecks.x ) { + uint value = uint( hash_s( T * 1.0f + U.x * 100 + U.y * 256 ) * 255.0f ) & 0xFF; + imageStore( computeTex[ 0 ], ivec2( U.xy ), uvec4( value ) ); + out_color = vec4( vec3( float( value ) / 255.0f ), 1.0f ); + } + + // high ranges, draw some lines + if ( boundsChecks.y ) { + float value = uint( hash() * 255.0f ); + // drawLine( ) + } + + vec3 baseCamPos = vec3( 0.0f ); + baseCamPos.x += sin( T / float( hashi( 69 ) % 20 ) ) * 0.1618f; + baseCamPos.y += cos( T / float( hashi( 619 ) % 24 ) ) * 0.1618f; + + vec3 color = vec3( 0.0f ); + float distSum = 0.0f; + vec3 prevColor = texelFetch( texPreviousFrame, ivec2( U.xy ), 0 ).xyz; + vec2 txSize = textureSize( texPreviousFrame, 0 ).xy; + int xIters = 2; + int yIters = 2; + int normalizeFactor = xIters * yIters; + for ( int x = 0; x < xIters; x++ ) + for ( int y = 0; y < yIters; y++ ) { + vec2 subPxLoc = 2.0f * ( ( U.xy + NthWeyl( x + xIters * y ) ) / txSize - vec2( 0.5f ) ); + subPxLoc.y *= ( txSize.y / txSize.x ); + + subPxLoc.xy = curvedSurface( subPxLoc.xy, 1.5f ); + + vec3 rayOrigin = vec3( subPxLoc, -1.0f ) + baseCamPos; + vec3 rayDirection = vec3( 0.0f, 0.0f, 1.0f ); + vec4 v = compositePlaneResult( rayOrigin, rayDirection ); + color += v.rgb / float( normalizeFactor ); + } + + vec3 color_prev = vec3( + texture( texPreviousFrame, vec2( ( U.xy + 0.5f ) / txSize ) ).r, + texture( texPreviousFrame, vec2( ( U.xy + 1.5f ) / txSize ) ).g, + texture( texPreviousFrame, vec2( ( U.xy + 2.5f ) / txSize ) ).b + ); + bool useRandomized = ( int( floor( T / 11.0f ) ) % 5 == 0 ); + float mixFactor = ( color == vec3( 0.0f ) ) ? ( useRandomized ? 1.0f + 0.05f * sin( hash() ) : 0.93f ) : 0.5f; + out_color = vec4( pow( mix( color, color_prev, mixFactor ), vec3( 2.2f ) ), 1.0f ); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jtruk.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jtruk.glsl new file mode 100644 index 000000000..00b099467 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_jtruk.glsl @@ -0,0 +1,24 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= vec2(0.5+sin(fGlobalTime*1.2)*.2,0.5+sin(fGlobalTime*1.5)*.2); + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float f=sin(fGlobalTime); + float d=length(uv); + float a=atan(uv.x,uv.y); + float r=sin(d*20+a-fGlobalTime*3); + float g=sin(d*12+a+fGlobalTime*7); + float b=sin(d*15+a-fGlobalTime*8); + r=(g+b)/d; + g=(b+r)/(d+sin(fGlobalTime)); + b=(r+g)/f; + out_color=vec4(r,g,b,0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_klos.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_klos.glsl new file mode 100644 index 000000000..e65aeca13 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_klos.glsl @@ -0,0 +1,197 @@ +#version 420 core + +// cheers from klos / k2 + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define f float +#define v3 vec3 +#define v2 vec2 +#define T fGlobalTime +#define N normalize +#define B_0 8.4 +#define B (texture(texFFT, .0).x) +#define BI (texture(texFFTIntegrated, 0.).x) +// #define BS (texture(texFFTSmoothed, 0.).x) +#define BS ( smoothstep(0.5, 1., fract(T/(.5))) ) + +f gB = 10e8; + +v3 colA = v3(0.2, 0.5, 1.4); + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +f noise(v3 p) { + return plas(p.xy, p.z).x; +} + +mat2 rot(f a) { return mat2(cos(a), -sin(a), sin(a), cos(a)); } + +f box(v3 p, v3 b) { + v3 q = abs(p) -b; + return length( max(q, v3(0.))) + min( max(max(q.x, q.y), q.z), 0.); +} + +float map(vec3 p) { + p.z -= 8.; + float s = p.y +0.2*plas(0.05*p.xz, T).x +0.1*plas(0.2*p.xz, 2.*T).x; + + + v3 p4 = p; + p4.z -= 8.; + f s2 = box(p4, vec3(0.05, 100, .05)); + s = min( s, s2 ); + gB = min(gB, s2 ); + + p.y -= .5; + + v3 p1 = p; + p1.z += 20.*T; + + v3 p3 = p1; + if (p.z < 1.) { + p3.x -= 0.5*T; + v3 p3f = fract(p3); + v3 p3i = p3 - p3f; + p3 = mod(p3 + .5, 1.0) -.5; + p3 += 0.5*noise(p3i); + s = min(s, length(p3) - .01); + } + + p1.x = abs(p1.x); + p1.x -= 1.5; + p1.z = mod(p1.z + 2.0, 4.0) -2.0; + p1.xy *= rot(0.8); + s = min(s, box(p1, vec3(0.2, 10, .1)) ); + + p.z -= 5 + 5.*sin(5.*T); + + v3 p2 = p; + p2.y -= 1.; + p2.y -= BS * 1.; + for (float i = 0; i < 4; i += 1) { + p2 -= vec3(0.2, 0.33, 1.); + + p2.xy *= rot(.1 * BS + 1.*T); + p2.zy *= rot(-0.1 * B + 5. * T); + p2 = abs(p2); + + s = min(s, length(p2) - .1); + if (i > 2.) { + f s1 = box(p2, vec3(0.01, 100, .01)); + s = min( s, s1 ); + gB = min(gB, s1 ); + } + } + + return s; +} + +vec3 render(v2 p, f T) { + v3 c = v3(0.); + + v3 ro = v3(1.2*sin(T), 1.0, 0.); + ro.y += 1.*BS; + v3 rd = N(v3(p, 2.)); + rd.xy *= rot( 0.2*sin(2.0*T) ); + f t = 0.2; + + f tt = 10e8; + for (f bi = 0.; bi < 4.; ++bi) { + for (f i = 0.; i < 64.; ++i) { + f d = map(ro + rd * t); + if (d < 0.0001 || t > 40.) break; + t += d; + } + tt = bi == 0. ? t : tt; + if (t > 0.1 && t < 40.0) { + v3 p = ro + rd * t; + f str0 = smoothstep(.5, .51, fract(.33*p.x)); + f str1 = smoothstep(.5, .51, fract(1.*p.x)); + + v2 e = 0.002 * v2(1., -1); + v3 n = N(e.xyy * map(p + e.xyy) + + e.yyx * map(p + e.yyx) + + e.yxy * map(p + e.yxy) + + e.xxx * map(p + e.xxx)); + + // c = n; + f fre = pow(dot(rd, n) + 1., 6.); + c += colA.zyx * (0.5+0.5*fre) * (str0+str1); + + rd = N(reflect(rd, n) + 0.01 * fract(sin(100.0*p) * 43758.5453)); + ro = p; + } + } + + + // c = v3(1.0 - (t / 32.)); + // c *= colA; + + c = mix(c, 0.01*colA, 1.0 - exp(-0.005 *tt*tt)); + + // v3 g = colA.yxz * 10. * B; + v3 g = v3( smoothstep(0.9, 1.0, BS) ); + g += colA.yxz * exp(gB * -20.0); + g += colA.yxz * exp(gB * -10.0); + g += colA.yxz * exp(gB * -5.0); + g += colA.yxz * exp(gB * -1.0); + c += g; + + return c; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 p = uv; + + // out_color.xyz = vec3(uv, 0.); + // out_color.xyz = vec3(p, 0.); + // out_color.xyz = rd; + + v3 c = v3(0.); + out_color.xyz = c; + if (abs(p.y) > 0.45) { + // c = v3(1) * plas(uv, T).x; + out_color.xyz = c; + return; + }; + + + f shift = BS; + v3 cr = render(p *v2(mix(1.,-0.995, shift), 1.), T) * v3(1,0.2,0); + v3 cb = render(p *v2(mix(1., 0.995, shift), 1.), T) * v3(0,0.2,1); + + c = cr + cb; + + c = c / (1. + c); + c = pow(c, v3(0.4545)); + + out_color.xyz = c; +} diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_kostik.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_kostik.glsl new file mode 100644 index 000000000..464a296df --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_kostik.glsl @@ -0,0 +1,127 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform float fMidiKnob; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define BPM 130. +#define INF (1./0.) +#define time fGlobalTime +#define beat (time*BPM/60.) +#define PI 3.1415926536 +#define rep(p,s) (mod(p,s)-s/2.) +#define rep2(p,s) (abs(rep(p,2.*s))-s/2.) + +float hash(float t) {return fract(sin(t)*35628.54654);} +float hash(vec2 t) {return hash(dot(t, vec2(12.6456, 32.63456345)));} +float hash(vec3 t) {return hash(dot(t, vec3(12.6456, 32.63456345, 48.546984)));} + +vec3 back(vec2 uv){return texture(texPreviousFrame, uv).rgb;} +float ffts(float t) {return texture(texFFTSmoothed, t).r;} + +vec3 ct(vec3 p) { + if(p.x0.? length(p): m; +} + +mat2 mr(float t) {float c=cos(t),s=sin(t); return mat2(c,s,-s,c);} + +float beatstep(float t, float a) {return floor(t) + smoothstep(0., a, fract(t));} + +vec2 polar(vec2 p, float n) { + p = vec2(length(p), atan(p.y, p.x)); + p.y = rep(p.y, PI/n); + return p.x * vec2(cos(p.y), sin(p.y)); +} + +#define quant(t,s) (floor(t/s)*s) + +void main(void) +{ + vec2 uv = gl_FragCoord.xy / v2Resolution.xy - .5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 c = vec3(0.); + vec3 O=vec3(0.,0.,-1.); + vec3 D = vec3(uv, 1.); + D.z *= 1.-length(D.xy); + D=normalize(D); + float I=64.; + for(float i=0.; i> 4)) * 0x27d4eb2b; + x = (x ^ (x >> 15)); + return x; +} + +float hash() { + uint x = uhash(seed); + seed = x; + return float(x) / float(0xffffffffu); +} + +mat2 rot(float a) { + return mat2(cos(a), -sin(a), sin(a), cos(a)); +} + +vec2 box(vec3 ro, vec3 rd) { + vec3 m = 1./rd; + vec3 n = m * ro; + vec3 t1 = -n - abs(m); + vec3 t2 = -n + abs(m); + float tN = max(t1.x, max(t1.y, t1.z)); + float tF = min(t2.x, min(t2.y, t2.z)); + if(tN > tF || tF < 0) return vec2(-1); + return vec2(tN, tF); +} + +vec3 environment(vec3 rd) { + float beat = 2 * texture(texFFTSmoothed, 0).x; + float off = texture(texFFTSmoothed, atan(rd.x, rd.z) * 2).x; + float gyroid = dot(sin(rd.xyz), cos(rd.yzx)); + float k = max(sqrt(sin(20 * (rd.y + gyroid + .2 * fGlobalTime))), 0); + vec2 uv = (gl_FragCoord.xy - .5 * v2Resolution.xy) / v2Resolution.x; + k *= max(pow(length(uv)*5, 4), 1); + return mix(vec3(.08,.02,.08), vec3(.7,.4,.2), k) * (2 * beat + .1); +} + +float density(ivec3 p) { + float beat = texture(texFFTSmoothed, 0).x; + float t = mod(fGlobalTime, 20); + float k; + k = length(p) < beat * 10 + 3 ? .5 : 0; + return max(k, .03); +} + +float regular_tracking(vec3 ro, vec3 rd, vec3 c) { + float z = hash(); + float T = 0; + + // branchless DDA by fb39ca4 on shadertoy + vec3 p = ro * scale; + ivec3 p_int = ivec3(floor(p)); + vec3 delta = abs(vec3(length(rd)) / rd); + vec3 dist = (sign(rd) * (vec3(p_int) - p) + sign(rd) * .5 + .5) * delta; + bvec3 mask; + + float d = 0; + for(int i = 0; i < steps; ++i) { + vec3 api = abs(p_int); + if(api.x > scale + 1 || api.y > scale + 1 || api.z > scale + 1) break; + + float d_diff = min(dist.x, min(dist.y, dist.z)); + float u = dot(c, ot) * density(p_int); + float T_diff = d_diff * u; + if(exp(-(T + T_diff)) < z) { + return (d + ((-log(z) - T) / u)) / scale; + } + d += d_diff; + T += T_diff; + + mask = lessThanEqual(dist.xyz, min(dist.yzx, dist.zxy)); + dist += vec3(mask) * delta; + p_int += ivec3(vec3(mask)) * ivec3(sign(rd)); + } + return -1; +} + +void main(void) +{ + vec2 uv = 2 * (gl_FragCoord.xy - .5 * v2Resolution.xy) / v2Resolution.x; + seed = uhash(uint(gl_FragCoord.x)) + uhash(uint(gl_FragCoord.y)) + uhash(uint(fGlobalTime * 100)); + + // ====== // + + vec3 L = vec3(0); + + for(int s = 0; s < samples; ++s) { + + float e = hash(); + vec3 c = e < .3333 ? vec3(1, 0, 0) : e < .667 ? vec3(0,1,0) : vec3(0,0,1); + + vec3 ro = vec3(0, 0, -3); + vec3 rd = normalize(vec3(uv, 1)); + vec3 light = normalize(vec3(1,1,-1)); + + ro.xz *= rot(fGlobalTime); + rd.xz *= rot(fGlobalTime); + + vec3 att = vec3(1); + + vec2 t0 = box(ro, rd); + + if(t0.x > 0 && t0.y > 0) { + vec3 p = ro + t0.x * rd; + + for(int i = 0; i < bounces; ++i) { + float t = regular_tracking(p, rd, c); + if(t == -1) { + L += c * environment(rd); + break; + } + p += t * rd; + if(hash() < dot(oa, c) / dot(ot, c)) { + break; + } + if(regular_tracking(p, light, c) < 0) { + L += att * c * dot(os, c) / dot(ot, c); + } + rd = normalize(tan(vec3(hash(), hash(), hash()))); + } + } else { + L += c * environment(rd); + } + } + L *= 5. / samples; + vec2 texcoord = gl_FragCoord.xy / v2Resolution.xy; + vec4 last = texture(texPreviousFrame, texcoord); + out_color = mix(vec4(L, 1), last, .5); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_provod.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_provod.glsl new file mode 100644 index 000000000..77ea54641 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_provod.glsl @@ -0,0 +1,139 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float t=fGlobalTime; +float tt=t*140./60.; +const vec3 e=vec3(0.,1.,.001); +float ha(float f){return fract(sin(f)*26374.236);} +float ha(vec2 v){return ha(dot(v,vec2(17.5326,57.3224)));} +float no(vec2 v){vec2 V=floor(v);v-=V;v*=v*(3.-2.*v); + return mix( + mix(ha(V+e.xx), ha(V+e.xy), v.y), + mix(ha(V+e.yx), ha(V+e.yy), v.y), v.x); +} +#define rm(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +float vmax(vec2 v){return max(v.x,v.y);} +#define box(p,s) vmax(abs(p)-(s)) +#define PT(t,p) (floor(t)+pow(fract(t),p)) +#define PTN(t,p) (floor(t)+1.-pow(1.-fract(t),p)) + +float h(vec2 p){ + //float ht= + float d = + sin(6.28*no(p)+PT(tt/4.,2.))*.4; + d -= .5*no(p*.45-2.*e.yx*PTN(tt/2.,2.)); + return d; +} + +float smin(float a,float b,float k){ + float h=max(0.,1.-abs(b-a)/k); + return min(a,b)-h*h*k/4.; +} + +float w(vec3 p) { + float d = abs(p.y - h(p.xz)) - .02; + d*=.5; + //d = min(d, length(p)-1.); + + float sc=1.; + vec2 C=floor(p.xz*sc),cc=fract(p.xz*sc)-.5; + vec3 pc=vec3(cc,p.y).xzy; + float r=.05+.2*ha(C); + float pt=PT(tt,3.); + pc.y-=.5-.3*sin(ha(C+.2)*6.283+pt); + pc.x+=.6*(ha(C+.3)-.5); + pc.z+=.6*(ha(C+.4)-.5); + d=smin(d,(length(pc)-r)*.2,.3); + d=max(d,box(p.xz,4.)); + return d; +} +vec3 no(vec3 p){ + return normalize(w(p)-vec3( + w(p-e.zxx), + w(p-e.xzx), + w(p-e.xxz) + )); +} + +float tr(vec3 ro,vec3 rd,float l,float L){ + for(float i=0.;i<100.;++i){ + float d=w(ro+rd*l);l+=d; + if(dL)break; + } + return l; +} + + +// LOL COPYPASTE THANKS IQ!!11cos(0.) +vec3 palette( in float t, in vec3 a, in vec3 b, in vec3 c, in vec3 d ) +{ + return a + b*cos( 6.28318*(c*t+d) ); +} +vec3 pal(float t){ + return palette(t, + vec3(.5), + vec3(.5), + vec3(2.,.8,.3), + vec3(.5,.25,.2)); +} + +float ao(vec3 p,vec3 n,float N,float L){ + float k=0.; + for (float i=0.;i cMin ) { + float cDelta = cMax - cMin; + //s = l < .05 ? cDelta / ( cMax + cMin ) : cDelta / ( 2.0 - ( cMax + cMin ) ); Original + s = l < .0 ? cDelta / ( cMax + cMin ) : cDelta / ( 2.0 - ( cMax + cMin ) ); + if ( r == cMax ) { + h = ( g - b ) / cDelta; + } else if ( g == cMax ) { + h = 2.0 + ( b - r ) / cDelta; + } else { + h = 4.0 + ( r - g ) / cDelta; + } + if ( h < 0.0) { + h += 6.0; + } + h = h / 6.0; + } + return vec3( h, s, l ); +} +float sdHeart( in vec2 p ) +{ + p.x = abs(p.x); + if( p.y+p.x>1.0 ) + return sqrt(dot2(p-vec2(0.25,0.75))) - sqrt(2.0)/4.0; + return sqrt(min(dot2(p-vec2(0.00,1.00)), + dot2(p-0.5*max(p.x+p.y,0.0)))) * sign(p.x-p.y); +} +float sdHex( in vec2 p, in float r ) +{ + const vec3 k = vec3(-0.866025404,0.5,0.577350269); + p = abs(p); + p -= 2.0*min(dot(k.xy,p),0.0)*k.xy; + p -= vec2(clamp(p.x, -k.z*r, k.z*r), r); + return length(p)*sign(p.y); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv=floor(uv/.003)*.003; + vec2 uv_=uv; + vec2 pruv=uv; + uv_*=vec2(1,-1); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float bd = texture( texFFTSmoothed, .01 ).r * 8; + float intg = texture( texFFTIntegrated, .005 ).r*40; + float gt = fGlobalTime; + vec4 ine = texture( texInercia, uv*vec2(1,-1)*4+vec2(gt*.2,-.5))*pow(bd,4)*1; + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFTSmoothed, pow(abs(m.x)*.3,1.8) ).r*10; + pruv-=vec2(.5); + pruv*=.98; + pruv+=vec2(.5); + vec4 prev = texture( texPreviousFrame, pruv); + + //m.x += sin( fGlobalTime ) * 0.1; + //m.y += fGlobalTime * 0.25; + + vec4 t = vec4(pow(bd,2)*1*f,pow(bd,2)*f+.05,pow(bd,1.5)*1*f,1)*(-step(sdHeart(uv*2+vec2(0,.5)),0)+step(sdHeart(uv*(2-bd*.3)+vec2(0,.5)),0)); + t+=.4*getBorder(uv_*10,pow(intg*.0002,4))*(1-step(sdHeart(uv*2+vec2(0,.5)),f*.2)); + t+=-step(sdHeart(uv*2.2+vec2(0,.5)),f*.2)+step(sdHeart(uv*2+vec2(0,.5)),f*.2); + + t+=ine*vec4(1.8,1.8,1.2,1)*(step(sdHeart(uv*2+vec2(0,.5)),0)); + t*=1; + t*=vec4(.8,.2,.8,1); + t = clamp( t, 0.0, 1.0 ); + out_color = ( t )+prev*.8; +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_sp4ghet.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_sp4ghet.glsl new file mode 100644 index 000000000..f2441b4b5 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_sp4ghet.glsl @@ -0,0 +1,152 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float PI = acos(-1); +float TAU = PI*2; +float time = fGlobalTime; +vec3 up = vec3(0,1,0); +mat2 r2d(float t){ + float s = sin(t), c = cos(t); + return mat2(c,s,-s,c); +} + +float sdb(vec3 p, float radius, float roundness, float height){ + vec2 d = vec2(length(p.xz) - 2*radius + roundness, abs(p.y) - height); + return min(max(d.x,d.y), 0.0) + length(max(d,0.0)) - roundness; +} + +vec4 mapp(vec3 q){ + vec3 p = q; + float d = 100000; + vec3 mat = vec3(1); + + float sp = sdb(p, 0.05, 0.02, 1.); + mat2 rot = r2d(PI * .15); + p.xy *= rot; + vec3 upslant = up; + upslant.xy *= rot; + float sub = sdb(p-upslant*.7, 0.1, 0.01, 0.15); + sp = max(sp, -sub); + d = min(sp, d); + + p = q; + float bl = sdb(p-up*.7, 0.04, 0.02, 0.25); + vec3 blk = vec3(0.01); + if(abs(dot(normalize(p.xz), vec2(0,1))) > 0.9 && abs(p.y - .7) < .14){ + blk = vec3(.8, .8, .01); + } + mat = bl < d ? blk : mat; + d = min(d,bl); + + return vec4(d, mat); +} + +vec4 mapt(vec3 p){ + float x = length(p.xz) - .25; + float y = p.y; + float th = atan(y,x); + float ph = atan(p.z, p.x); + float r = length(vec2(x,y)) - 1.5; + p = vec3(r, th, ph); + p = p.yzx; + p.y = mod(p.y, 2.) - 1; + p.x = mod(p.x, .25) - .125; + + return mapp(p); +} + +vec4 map(vec3 q){ + vec3 p = q; + float t = fract(time * .03); + p -= vec3(-.1, 0., -.2); + p.xy *= r2d(TAU * .1); + + for(int i=0; i<10; i++){ + p.zy *= r2d(TAU * t + .01); + p.xz *= r2d(-TAU * .5 * t); + p.z -= .1; + p = abs(p); + } + float bpm = 135.; + float beat = time * bpm / 60.; + + if(mod(floor(beat * .5),3) < 1){ + return mapt(q); + } + if(mod(floor(beat * .5),3) < 2){ + return mapp(q); + } + + return mapp(p); +} + +vec3 normal(vec3 p){ + vec2 d = vec2(0.001, 0); + return normalize(vec3( + map(p + d.xyy).x - map(p-d.xyy).x, + map(p + d.yxy).x - map(p-d.yxy).x, + map(p + d.yyx).x - map(p-d.yyx).x + )); +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 pt = uv - 0.5; + pt /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 f = vec3(0); + f = uv.y < 1./3. ? vec3(1) : f; + f = uv.y > 2./3. ? vec3(0,114./255., 206./255.) : f; + + vec3 c = vec3(uv,0); + + vec3 ro = vec3(0,1,-4); + ro.xz *= r2d(time); + vec3 fo = vec3(0); + vec3 rov = normalize(fo-ro); + vec3 cu = normalize(cross(rov,up)); + vec3 cv = cross(cu,rov); + vec3 rd = mat3(cu,cv,rov) * normalize(vec3(pt,1)); + vec3 p = ro; + vec4 d = vec4(0); + float t = 0; + float th = 0.001; + for(int i=0; i<128; i++){ + p = ro + rd*t; + d = map(p); + t += d.x * .7; + if(abs(d.x) < th){break;} + } + + vec3 l = normalize(vec3(1,1,1)); + vec3 l2 = normalize(vec3(1,1,-1)); + if(abs(d.x) < th) { + vec3 n = normal(p); + c = d.gba * max(dot(n,l),0.01); + c += d.gba * max(dot(n,l2),0.01); + c = pow(c, vec3(.4545)); + }else{ + c = f; + } + + + out_color = vec4(c,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_superogue.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_superogue.glsl new file mode 100644 index 000000000..838147349 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_superogue.glsl @@ -0,0 +1,83 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texInerciaBW; +uniform sampler2D texInercia; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time,f,fm; + +float box(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);} +vec3 rnd(vec3 t) {return fract(sin(t*847.627+t.yzx*463.994+t.zxy*690.238)*492.094);} +mat2 R(float a) {return mat2(cos(a),-sin(a),sin(a),cos(a));} + +float S(vec3 p) +{ + vec3 fp=floor(p); + p=mod(p,4)-2; + return box(p,vec3(rnd(fp/16)))-.5; +} + + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uvOriginal = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + f = texture( texFFTIntegrated ,.1).r * 8; + fm = clamp(texture( texFFTSmoothed , .3 ).r * 8 + 0.1,0,1); + time = f+fGlobalTime; + + + uv *= fract(pow(length(uv),.1)-(time/16)); + + vec4 cLogo=texture(texInercia,vec2(uvOriginal.x,1-uvOriginal.y)); + + float fov=smoothstep(.4,.8,cos(fGlobalTime/4)); + vec3 ro=vec3(0,0,-8); + vec3 n,p,r=normalize(vec3(uv,fov+.5)); + r.xz*=R(time/32+fov); + r.xy*=R(time/28); + r.yz*=R(time/27); + + float d,t=0,td=0; + float c=0; + for (int i=0;i<99;i++) { + p=ro+r*t; + d=S(p); + t+=d/2; + td+=d/2; + if (abs(d)<.01 || d>99) { + n=normalize(S(p)-vec3(S(p-vec2(.01,0).xyy),S(p-vec2(.01,0).yxy),S(p-vec2(.01,0).yyx))); + r=reflect(r,normalize(n+.01*rnd(vec3(uv,td+i)))); + c+=max(.1,pow(1+dot(r,n),7)); + t=.1; + } + } + float pulse=smoothstep(0.49,0.5,length(fract(-p.y+p.z*0.1+time/2)-.5)); + + vec3 mat=mix(vec3(.5,.4,.3),vec3(.3,.6,.8),clamp((uv.x*uv.y)*4,0,1)+uv.y); + vec3 ll=mat*c/64*clamp(1-td/64,0,1); + float ca=length(uv*uv)*.1; + vec4 chroma=vec4(texture(texPreviousFrame,vec2(uvOriginal.x-ca,uvOriginal.y)).r,texture(texPreviousFrame,vec2(uvOriginal.x,uvOriginal.y)).g,texture(texPreviousFrame,vec2(uvOriginal.x+ca/2,uvOriginal.y)).b,1); + + + float sc = sin(uvOriginal.x*2920)*.2+.8; + out_color = mix(vec4(ll,1)*sc*(1-length(uv)/2),chroma,.3) + cLogo;// vec4(sin(f)*.3,0,sin(abs(uv.y)*32+time)/4+.3,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_totetmatt.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_totetmatt.glsl new file mode 100644 index 000000000..dfee125bd --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_totetmatt.glsl @@ -0,0 +1,83 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInerciaBW; +uniform sampler2D texInercia; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const vec2 sz = vec2(1.,1.73),hs = sz*.5; + +vec2 hexgrid(inout vec2 p){ + vec2 pa= mod(p,sz)-hs,pb=mod(p-hs,sz)-hs,pc=dot(pa,pa) < dot(pb,pb) ? pa : pb; + vec2 n = (p-pc+hs)/sz; + // ^--- This is used to have the "id" of the hexcell + p = pc; + return round(n*2.)*.5; + // Returning the cell id, but p is 'inout' and beeing modified /!\ to + // makes p having local cell coordinate + + } + vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} + vec3 pal(float t){return .5+.5*cos(6.28*(-1*t+vec3(.0,.3,.7)));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 uuv=uv; + if(abs(uv.y)>.35) uv/=2.; + vec3 col=vec3(0.); + + vec3 ro=vec3(1.,1.,-5.),rt=vec3(0); + float time = fGlobalTime; + float rnd = fract(77.9*sin(45.5*dot(uv,vec2(3453.353,103.35))))*.1; + float bpm = tanh(sin(fGlobalTime+rnd)*5.)*2; + ro=erot(ro,vec3(0.,1.,0.),bpm); + ro.z +=fGlobalTime*4+smoothstep(-1.,1.,cos(fGlobalTime)); + ro.y +=2+5*sin(floor(bpm*1.5)); + rt.z +=fGlobalTime*4+smoothstep(-1.,1.,sin(fGlobalTime)); + vec3 z = normalize(rt-ro),x=normalize(cross(z,vec3(0.,-1.,0.))),y=cross(z,x); + + vec3 rd=mat3(x,y,z)*normalize(vec3(uv,1.-.8*sqrt(length(uv)))); + vec3 p; + float i=0,e=0,g=0; + for(;i++<40.;){ + + p=ro+rd*g; + vec3 pp=p; + vec2 id = hexgrid(pp.xz); + float gy=dot(sin(p*.5),cos(p.zyx*.3))*.5; + float gy2 = dot(sin(fGlobalTime*130/60+id),cos(id.yx*id)); + float h=dot(p,vec3(0.,1.,0.))+.1-gy; + float dx = sqrt(texture(texFFTSmoothed,dot(sin(id*.4),cos(id.yx*.2))).r)*.5; + h=min(h,max((abs(p.y)-0.14-min(1.,dx*30)),max(dot(abs(pp.xz),sz*.5),pp.x)-.45)); + g+=e=max(.001,h); + col+=vec3(gy2>0. ? 1.-exp(-3*fract(fGlobalTime*130/60*.5+.5)):exp(-3*fract(fGlobalTime*130/60*.5))*.5)*.0425/exp(.5*i*i*e); + } + + float tt =dot(floor(sin(uv.yx*80))/70,floor(cos(uv*10))/100); + float txt = fract(fGlobalTime);sqrt(texture(texFFTSmoothed,floor((tt+fGlobalTime)*100.)*.01).r)*1; + + + + if(abs(uuv.y)>.35) col =pow(col,clamp(pal((uuv.y <0 ? -.5: 0.)+fGlobalTime+i*.1),vec3(.1),vec3(.9))); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_visy.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_visy.glsl new file mode 100644 index 000000000..8b3a77b74 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_visy.glsl @@ -0,0 +1,55 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = 0.0; + +float rect(vec2 uv, vec2 scale) +{ + vec2 s = vec2(0.5) - scale * 0.5; + vec2 shape = vec2(step(scale.x, uv.x), step(scale.y, uv.y)); + shape *= vec2(step(scale.x, 0.5 - uv.x), step(scale.y, 1.0 - uv.y)); + return shape.x * shape.y; +} + +void main(void) +{ + time = fGlobalTime; + vec2 uv = gl_FragCoord.xy / v2Resolution.xy; + vec4 c = vec4(0.0); + if (uv.x < 0.5) { + uv.x = 1.0-uv.x; + } + if (uv.y < 0.5) { + uv.y = 1.0-uv.y; + } + vec4 p = texture(texPreviousFrame,uv); + for(float i = 0.0; i < 5.0; i++) + { + float of = 0.3*cos(time*0.1+i)+0.3*cos(i*0.6+time*0.2); + float r = rect(uv*(0.8+cos(time*1.1-of*0.01)*0.01),vec2(of+p.r*0.1,-of+p.g*0.4)); + vec3 clogo = texture(texInercia,vec2(1.0+sin(i*0.1+time*0.1)*0.1,cos(time*0.1)*cos(i*0.4*r))+uv*0.8).rgb; + c += r*3.1-cos(uv.y+time*0.0002*cos(time*0.001)+of)-vec4(vec3(r*clogo.r,r*0.5+clogo.g,r*0.7*clogo.b),1.0)*0.4+cos(uv.y*r+of)*cos(of+time*0.5+of*1)*1.; + } + out_color = c; +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_vjpyree.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_vjpyree.glsl new file mode 100644 index 000000000..5fc380e98 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_vjpyree.glsl @@ -0,0 +1,81 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 rgb2hsv(vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +vec3 hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uva = uv / vec2(v2Resolution.y / v2Resolution.x, 1); + + // FFTSamples + float fftBass = texture(texFFTSmoothed, 0.001+uva.x*0.005).x; + float fftBassInt = texture(texFFTIntegrated, 0.001).x; + + // Prev sample + vec4 prevPure = texture(texPreviousFrame, uv); + vec3 prevHSV = rgb2hsv(prevPure.rgb); + float offsetAngle = prevHSV.r*3.14159 * 2. * 10; + vec2 prevOffset = vec2(cos(offsetAngle),sin(offsetAngle)); + vec4 prev = texture(texPreviousFrame, uv + prevOffset*(0.001 + fftBass*0.005)); + //out_color = prev*0.4; + + // Inercia logo + vec2 iuv = (uv*2-fGlobalTime*0.2+sin(uva.x+fGlobalTime)*0.15)*vec2(1,-1); + iuv += + vec2(0, fftBass); + iuv.y = mod(iuv.y, 0.4)+0.25; + vec4 inerciaLogo = texture(texInercia, iuv); + float inerciaLogoMask = smoothstep(0.0, 0.3, texture(texInerciaBW, iuv).x); + + // Hue shift inercia logo + vec3 logoHSV = rgb2hsv(inerciaLogo.rgb); + vec3 logoShifted = hsv2rgb(logoHSV + vec3(fftBassInt*0.05 - fGlobalTime*0.1 + uv.x, 0,0)); + + // Out + //out_color = mix(vec4(logoShifted*10, 0.), prev*0.999, inerciaLogoMask); + out_color = mix(vec4(logoShifted*2, 0.), prev*0.9, 1-inerciaLogoMask); + //out_color = vec4(inerciaLogoMask); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wbcbz7.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wbcbz7.glsl new file mode 100644 index 000000000..7a64a22b1 --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wbcbz7.glsl @@ -0,0 +1,157 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +// we'll start with simple atmta stuff just to fill the screen time =) + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float hash(vec2 uv) { return fract(sin(dot(vec2(32.5, 32.), uv) * 2300.0));} + +float time = fGlobalTime; +float tt = mod(fGlobalTime + 0.001*hash(gl_FragCoord.xy/v2Resolution), 180.0); + +vec3 mapLogo(vec2 uv) { + return texture(texNoise, uv).rgb; +} + +vec3 triplanar(vec3 p) { + return (mapLogo(p.xy) + mapLogo(p.xz) + mapLogo(p.yz)); +} + +vec3 mod(vec3 p, vec3 s, vec3 l) { + vec3 q = p - s*clamp(round(p/s),-1,1); + return q; +} + +mat2 rot2(float a) {return mat2(cos(a), sin(a), -sin(a), cos(a)); } + +float sphere(vec3 p, float r) { + return length(p) - r - (0.7)*triplanar(p).r; +} + +float map(vec3 p) { + p = abs(p - vec3(0.4)); + p.xy *= rot2(0.3*time); + p = abs(p - vec3(0.76)); + p.yz *= rot2(0.5*time); + return sphere(mod(p, vec3(12.0), vec3(2.0)), 1.0+1.3*texture(texFFT, 0.01).r); +} + +vec3 norm(vec3 p) { + vec2 b = vec2(0., 0.01); + float a = map(p); + return normalize(vec3( + -a+map(p+b.yxx), + -a+map(p+b.xyx), + -a+map(p+b.xxy) + )); +} + + +float trace(vec3 o, vec3 d) { + float t = 0.; + for (int i = 0; i < 256; i++) { + vec3 p = o + t*d; + float ct = map(p); + if ((abs(ct) < 0.001) || (t > 128.)) break; + t += ct; + } + + return t; +} + +mat3 la(vec3 o, vec3 t, float r) { + vec3 rr = vec3(sin(r), cos(r), 0.0); + vec3 ww = normalize(t - o); + vec3 uu = normalize(cross(ww, rr)); + vec3 vv = normalize(cross(uu, ww)); + + return mat3(uu, vv, ww); +} + +// DXM COLORS LOL + +void main(void) +{ + vec2 src_uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv = src_uv - vec2(0.5); + + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv += 0.1*hash(vec2(time, time)); + + vec3 color = vec3(0.0); + + uv.x += 0.02*fract(sin(fGlobalTime*4.6)*67.5*(round(uv.y*32 + 15)/32)) * sqrt(texture(texFFT, 0.02).r); + uv.y += 0.02*fract(sin(fGlobalTime*4.6)*47.5*(round(uv.y*32 + 15)/32)) * sqrt(texture(texFFT, 0.02).r); + + // rotator + vec2 uuvv = uv; + uuvv *= rot2(time*0.9)*1.2; + uuvv += 0.2*sin(time*0.01); + uuvv = abs(uuvv); + uuvv *= rot2(time*0.8); + uuvv = abs(uuvv) - 0.4; + uuvv *= rot2(time*0.6); + uuvv += vec2(time)*0.2; + + color += mix(texture(texInercia, uuvv).rgb, pow(textureLod(texPreviousFrame, uuvv, 2).rgb, vec3(2)), 0.3); + color += sqrt(texture(texFFT, pow(length(uv), 2.6)).rrr); + color = mix(color, pow(textureLod(texPreviousFrame, src_uv, 1).rgb, vec3(2)), 0.3 + 0.4*sin(time*0.2)); + + // some logical stuff + ivec2 iuv = ivec2(uv * vec2(320, 180)); + if ((((iuv.x ^ iuv.y ^ int(time*70)) & ((iuv.x * iuv.y)>>1) & ((iuv.x ^ iuv.y ^ int(time * 6)) >> (int(time*7) % 9))) & 1) == 0) { + color = color * 0.4*mix(vec3(1), color, 0.1); + } + + // trace something + float fov = 0.3; + float sp = 7.60; + float ap = fov * 3.14159*2; + float f = 1.0/ap; + float r = length(uv); + float phi = atan(uv.y, uv.x); + float theta = atan(r/((1.+sp)*f))*(1+sp); + vec3 ray = vec3(sin(theta)*cos(phi), sin(theta)*sin(phi), cos(theta)); + vec3 o = vec3(-12 * cos(0.1*time), -12 * cos(1*time), -12 * sin(1*time)); + vec3 e = vec3(0, 0, 0); + + ray *= la(o, e, 1.0); + ray.xy *= rot2(time*0.6); + + + float t = trace(o, ray); + vec3 p = o+t*ray; + + p = mix(p, norm(p), 0.5); + if (!((t == 0.0) || (t > 128.0))) { + color = 0.1* color + 0.8*vec3(cos(p.x), sin(p.y), sin(p.x)*cos(p.y)); + } + + color = pow(color, vec3(0.5)); + + if ((int(time) % 3) > 1) { + color = vec3(ivec3(color * vec3(5))/vec3(3)); + } + + out_color = vec4(color, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wrighter.glsl b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wrighter.glsl new file mode 100644 index 000000000..bb3ae65bb --- /dev/null +++ b/shader_file_sources/2023_12_01_shader_jam_inercia/grabber_inerciaroyale_wrighter.glsl @@ -0,0 +1,46 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_03_byte_jam_inercia/drsoft.lua b/shader_file_sources/2023_12_03_byte_jam_inercia/drsoft.lua new file mode 100644 index 000000000..f9f2fa2c8 --- /dev/null +++ b/shader_file_sources/2023_12_03_byte_jam_inercia/drsoft.lua @@ -0,0 +1,63 @@ +-- +-- Hello Inercia! +-- +-- Greetz to: +-- gasman, jtruk, mantronic, suule +-- nusan, superogue and tobach! +-- + +m=math +s=m.sin +f=m.floor +r=m.random + +function text(txt,x,y) + local t=time()//64 + + local width=print(txt,0,0,15) + for test_x=0,width do + for test_y=0,7 do + if pix(test_x,test_y)==15 then + sine=s(-t/33+y/3+math.pi*1/100*test_x+-t/3+y/4+math.pi*1/200*test_y) + size=3+sine*3 + x_pos=(x-f(size/2))+6*test_x + y_pos=(y-f(size/2))+6*test_y + + rect(x_pos,y_pos,size,size,15) + end + end + end + rect(0,0,width,7,0) +end + +function TIC() + local t=time()//32 + + red=7+4*s(time()/128) + green=7+4*s(time()/128+math.pi*2/3) + blue=7+4*s(time()/128+math.pi*4/3) + for i=1,14 do + poke(0x3fc0+(i*3),i*red) + poke(0x3fc0+(i*3)+1,i*green) + poke(0x3fc0+(i*3)+2,i*blue) + end + + poke(0x3fc0+(15*3),250) + poke(0x3fc0+(15*3)+1,250) + poke(0x3fc0+(15*3)+2,250) + + vbank(0) + for y=0,136 do + offset=10+f(s(y/30+math.pi*4/3)*20*s(t/23)) + for x=0,240 do + offset2=5+f(s(x/5)*10*s(t/40+math.pi*2/3)) + pix(x,y,1+(x+(offset+offset2)>>3)%14) + end + end + + vbank(1) + cls() + text('Hello',30,10) + text('Inercia',10,55) + text('!!!',100,100) +end \ No newline at end of file diff --git a/shader_file_sources/2023_12_03_byte_jam_inercia/gasman.lua b/shader_file_sources/2023_12_03_byte_jam_inercia/gasman.lua new file mode 100644 index 000000000..a0bf99712 --- /dev/null +++ b/shader_file_sources/2023_12_03_byte_jam_inercia/gasman.lua @@ -0,0 +1,56 @@ +-- good morning inercia! +-- gasman wishes you a happy party +-- and greets jtruk,^mantratronic, +-- drsoft, suule, tobach, nusan, +-- superogue, jeenio, aldroid and +-- everyone at inercia and on stream! + +function TIC() + t=time() + + for i=1,15 do + tc=(t-i*32)/1834 + hue={ + 4+4*math.sin(tc-math.pi), + 4+4*math.sin(tc+math.pi*0.1), + 4+4*math.sin(tc+math.pi*0.3) + } + poke(16320+i*3,i*hue[1]) + poke(16321+i*3,i*hue[2]) + poke(16322+i*3,i*hue[3]) + end + + + cls() + for ri=1,15 do + r=ri*3+16 + tr=t-ri*50 + + ra=tr/1234 + --rb=6*math.sin(tr/2345) + rb=tr/2345 + + for a=0.05,math.pi,0.2 do --rings + rstp=(1-math.sin(a))*0.6+0.2 + for b=0,math.pi*2,rstp do -- ring step + y0=math.cos(a) + x0=math.sin(a)*math.cos(b) + z0=math.sin(a)*math.sin(b) + + x1=x0 + y1=y0*math.cos(ra)+z0*math.sin(ra) + z1=z0*math.cos(ra)-y0*math.sin(ra) + + x=x1*math.cos(rb)+y1*math.sin(rb) + y=y1*math.cos(rb)-x1*math.sin(rb) + z=z1 + --who needs z-sorting anyway + if (z>-0.05) then + --size=(z+1)/2+(15-ri)/15+1 + size=(15-ri)/4+.5 + circ(x*r+120,y*r+68,size,ri) + end + end + end + end +end diff --git a/shader_file_sources/2023_12_03_byte_jam_inercia/jtruk.lua b/shader_file_sources/2023_12_03_byte_jam_inercia/jtruk.lua new file mode 100644 index 000000000..34c2b42fc --- /dev/null +++ b/shader_file_sources/2023_12_03_byte_jam_inercia/jtruk.lua @@ -0,0 +1,90 @@ +-- Inercia 23 / jtruk +-- Greetz: Aldroid, Jeenio +-- Gasman, Mantratronic, Dr Soft +-- Suule, Nusan, Superogue, Tobach +-- and U <3 + +T=0 +PI=math.pi +TAU=PI*2 +SIN=math.sin +COS=math.cos + +function BDR(y) + for vb=0,1 do + vbank(vb) + for i=0,15 do + local o=y*.01+T*.01+i*.04+vb*2 + local a=16320+i*3 + local r=128+SIN(o)*128 + local g=128+SIN(o*1.2)*128 + local b=128+SIN(o*1.4)*128 + poke(a,r) + poke(a+1,g) + poke(a+2,b) + end + end +end + +function TIC() + nSnakes=10 + nTris=15 + baseT=T*.05 + for vb=0,1 do + vbank(vb) + cls() + for s=1,nSnakes do + for i=1,nTris do + local t=baseT+i*.02+s*2+vb*8 + local x=SIN(t*.7)*15 + local y=SIN(t)*8 + c=1+(i%15) + drawTri(x,y,t,c) + end + end + end + + local sz=3 + for vb=0,1 do + vbank(vb) + local tx="INERCIA23" + local w=print(tx,0,150,0,false,sz) + for i=0,10 do + local o=i*.1+T*.1+vb*4 + local x=120-w/2+SIN(o)*10 + local y=60+COS(o*.8)*10 + print(tx,x,y,1+((i*4)%15),false,sz) + end + end + + T=T+1 +end + +function drawTri(x,y,t,c) + d=7 + a1=t + a2=t+TAU*.33 + a3=t+TAU*.66 + z1=6+SIN(t)*2 + z2=6+SIN(t+.1)*2 + z3=6+SIN(t+.2)*2 + x1,y1=getP(x,y,d,a1) + x2,y2=getP(x,y,d,a2) + x3,y3=getP(x,y,d,a3) + p1=proj(x1,y1,z1) + p2=proj(x2,y2,z2) + p3=proj(x3,y3,z3) + tri(p1.x,p1.y, p2.x,p2.y, p3.x,p3.y, c) +end + +function getP(x,y,d,a) + return x+COS(a)*d,y+SIN(a)*d +end + +function proj(x,y,z) + local zT=z-7 + zT=(zT==0) and .0001 or zT + local zF=1/zT + local xm,ym=5,5 + return {x=120+xm*x/zF,y=32+ym*y/zF,z=z/zF} +end \ No newline at end of file diff --git a/shader_file_sources/2023_12_03_byte_jam_inercia/mantratronic.lua b/shader_file_sources/2023_12_03_byte_jam_inercia/mantratronic.lua new file mode 100644 index 000000000..8da49a9f7 --- /dev/null +++ b/shader_file_sources/2023_12_03_byte_jam_inercia/mantratronic.lua @@ -0,0 +1,113 @@ +-- mantratronic here +-- greetz to all coders, orgas +-- and partygoers - except ps. +-- its ok, he wont read this anyway ;) + +m=math +s=m.sin +c=m.cos + +function clamp(x,a,b) + return m.max(a,m.min(x,b)) +end + +function BDR(y) +vbank(0) +for i=0,8 do + poke(0x3fc0+i*3, 217*(i/8)) + poke(0x3fc0+i*3+1, 168*(i/8)) + poke(0x3fc0+i*3+2, 143*(i/8)) +end +for i=9,15 do + poke(0x3fc0+i*3, clamp(217+50*((i-8)/8),0,255)) + poke(0x3fc0+i*3+1, 168+90*((i-8)/8)) + poke(0x3fc0+i*3+2, 143+110*((i-8)/8)) +end +vbank(1) +for i=0,8 do + poke(0x3fc0+i*3, 217*(i/8)) + poke(0x3fc0+i*3+1, 168*(i/8)) + poke(0x3fc0+i*3+2, 143*(i/8)) +end +for i=9,15 do + poke(0x3fc0+i*3, clamp(217+50*((i-8)/8),0,255)) + poke(0x3fc0+i*3+1, 168+90*((i-8)/8)) + poke(0x3fc0+i*3+2, 143+110*((i-8)/8)) +end +end + +first = true + +tex={"ALL", "THAT", "JAZZ","<3",""} + +function TIC()t=time()/300 + +if first then + for y=0,136 do for x=0,240 do + pix(x,y,(x+y+fft(5)*50)//1>>3) + end end + vbank(0) + cls(8) +-- rectb(100,48,40,40,0) +memcpy(0x8000,0,120*136) + cls(8) + first=false +end +--vbank(0) +vbank(0) +cls(8) + memcpy(0,0x8000,120*136) +--cls(0) +-- rectb(100,48,40,40,4) + +d=200 +dd=0 +a=0--t/300 +ad=1/87--fft(20)*100 + +cx=120 +cy=68 + +x1=cx+d*s(0 + a) +y1=cy+d*c(0 + a) +x2=cx+d*s(m.pi*2/3 + a) +y2=cy+d*c(m.pi*2/3 + a) +x3=cx+d*s(m.pi*4/3 + a) +y3=cy+d*c(m.pi*4/3 + a) + +--d = d + dd +a = a + ad +cx=cx + .1*s(t/100) +cy=cy + 2*c(t/100) +u1=cx+d*s(0 + a) +v1=cy+d*c(0 + a) +u2=cx+d*s(m.pi*2/3 + a) +v2=cy+d*c(m.pi*2/3 + a) +u3=cx+d*s(m.pi*4/3 + a) +v3=cy+d*c(m.pi*4/3 + a) + +vbank(1) +ttri(x1,y1,x2,y2,x3,y3, + u1,v1,u2,v2,y3,v3,2) +--rectb(100+t/50,48,40,40,4) +x=m.random(240) +y=m.random(136) +line(x,y-5,x,y+5,m.random(15)) + +for i=0,1000 do + x=m.random(240) + y=m.random(136) + circb(x,y,2+m.random(2),pix(x,y)) +end + +text=tex[1+((t/10)%#tex)//1] +len = print(text,0,-100,14,true,3) +if (t/4)%1 < .3 then +print(text,120-len/2,60,t,true,3) +memcpy(0x8000,0,120*136) +else +memcpy(0x8000,0,120*136) +print(text,120-len/2,60,t,true,3) +end + +end diff --git a/shader_file_sources/2023_12_03_byte_jam_inercia/nusan.lua b/shader_file_sources/2023_12_03_byte_jam_inercia/nusan.lua new file mode 100644 index 000000000..f5c8b849a --- /dev/null +++ b/shader_file_sources/2023_12_03_byte_jam_inercia/nusan.lua @@ -0,0 +1,42 @@ +-- nusan here +-- gg aldroid! <3 +r,s,abs,max=math.random,math.sin,math.abs,math.max +function fft(i) -- not realy + return (s(i+t)+max(0,s(i*1.3+t*.7))+max(0,s(i*7.3+t*.3))+max(0,s(i*0.7+t*.3)))*.1 +end +function av(c) +for j=0,20 do + ts=10+30*math.min(1,fft(j+5)*5) + t2=0.3+0.45*s(j+t*.3)+0.35*s(j*2+t*.2) + b=j+t*.2+s(t*.1+j)+s(t*.07+j*.3)*2+fft(j)*4 + z,w=120+s(b+j*.13+t*.15)*70,68+s(b*.7+j*.2+t*.27)*40 + z,w=z+s(b*.3)*30,w+s(b*.4)*20 + z,w=z+s(b*1.2+j)*10,w+s(b*0.9+j)*10 + for i=-ts,ts do + a=i/ts*2*3.1415+t+fft(j+3)*100 + x,y=z+abs(i),w+s(a)*ts*0.2 + line(x,y-ts*t2,x,y+ts*t2,max(c,((a/2)%4+j)%15+1)) + end +end +end +function TIC()t=time()/500 +for x=0,1999 do + a,b=r(240)-1,r(136)-1 + pix(a,b,pix(a,b)*.7) +end +print("INERCIA",r(240),r(136),15) +av(15) +end + +function SCN(y) +for k=0,47 do + poke(16320+k,k/3*15*(s(y/20+t*.2+k%3*.7)*.3+.7)) +end +end + +function OVR() +for k=0,47 do + poke(16320+k,(1+k/3)*15*(s(k%3+t*.1+fft(k)*3)*.3+.7)) +end +av(-15) +end diff --git a/shader_file_sources/2023_12_03_byte_jam_inercia/superogue.lua b/shader_file_sources/2023_12_03_byte_jam_inercia/superogue.lua new file mode 100644 index 000000000..bfe784707 --- /dev/null +++ b/shader_file_sources/2023_12_03_byte_jam_inercia/superogue.lua @@ -0,0 +1,59 @@ +-- Superogue here +-- Greetings to everyone at inercia +-- (and fuckings to ps obviously...) + +function SCN(l) +ThreeFutureCrewZero=0x3fc0 +for i=0,9 do +c=i*25 +poke(ThreeFutureCrewZero+i*3,c) +poke(ThreeFutureCrewZero+i*3+1,c) +poke(ThreeFutureCrewZero+i*3+2,c) +end +c=l*32 +poke(ThreeFutureCrewZero+45,l<67 and 255-c or c*2) +poke(ThreeFutureCrewZero+46,l<68 and c or 255-c) +poke(ThreeFutureCrewZero+42,255) +poke(ThreeFutureCrewZero+43,32) +poke(ThreeFutureCrewZero+44,96) +end + +S=math.sin +function TIC() +f=(fft(0))*128 +t=time()/500+f +cls(1) +for y=0,136 do for x=0,240 do +xx=x-120yy=y+32.1 +z=(xx*xx+yy*yy)/999 +c=math.abs((x)/z+time()/99)//1 & (y/z)//1 +pix(x,y,c%3) +end end +for y=0,136,2 do line(0,y,240,y,0)end + +s=math.sin(t/9) +c=math.cos(t/9) +for y=-99,99,4 do +for x=-99,32,4 do + z=S(x/27+t)-S(y/15+t)+S(x/19-t) + X=x*c-y*s + Y=x*s+y*c + print('"',120+X,Y*2/z-z,(Y+y/4)%4+1) + print('"',120-X,Y*2/z-z,(Y+y/4)%4+1) +end end + +logo(100,66,0) +logo(98,64,15) +print("and don't forget to leave inercia",56,129,14,1,1,1) +end + +function logo(lx,ly,lc) +print(":/|/@|2( [/|",lx,ly,lc) +print("[/|/@| ( :/|",lx+1,ly,lc) +print("_",lx+33,ly-4,lc) +print("_",lx+31,ly,lc) +print(".",lx,ly-math.abs(math.sin(time()/99)*3)-5,lc-1) +print(".",lx+46,ly+math.abs(math.sin(time()/99)*3)+3,lc-1) +end + + diff --git a/shader_file_sources/2023_12_03_byte_jam_inercia/suule.lua b/shader_file_sources/2023_12_03_byte_jam_inercia/suule.lua new file mode 100644 index 000000000..c86b6bbcc --- /dev/null +++ b/shader_file_sources/2023_12_03_byte_jam_inercia/suule.lua @@ -0,0 +1,452 @@ +-- Greetz to all people at Inercia! +-- Hi to aldroid, gasman, jtruk, mantratronic +-- nusan, superogue and tobach! +-- Let's do something wicked today + +sin=math.sin +cos=math.cos +pi=math.pi +abs=math.abs +ins=table.insert +rem=table.remove +l=line + +-- Some functions I tend to use a lot... + +function clmp(par,r1,r2) + if par < p1 then return p1 end + if par > p2 then return p2 else return par end +end + +-- Quads rule and so should you + +function q(x1,y1,x2,y2,x3,y3,x4,y4,col) + tri(x1,y1,x2,y2,x3,y3,col) + tri(x2,y2,x3,y3,x4,y4,col) +end + +-- Hey have you seen this hack? I can't +-- use the sprite editor, but let's get +-- some sprites going, shall we? :) + +sprite1={ +8,0, +8,0, +8,0, +8,0, +8,0, +7,0,1,12, +6,0,2,12, +4,0,1,13,2,12,1,13} +sprite2={ +8,0, +8,0, +5,0,3,12, +1,0,7,12, +8,12, +8,12, +1,13,7,12, +8,12} +sprite3={ +8,0, +1,0,5,12,2,0, +7,12,1,0, +8,12, +8,12, +7,12,1,13, +6,12,2,13, +6,12,1,13,1,0} +sprite16={ +4,0,1,13,1,12,1,13,1,12, +3,0,1,13,1,12,2,13,1,12, +2,0,1,13,1,14,1,13,3,12, +1,0,1,13,1,14,2,13,2,12,1,13, +1,13,2,14,1,13,3,12,1,13, +2,14,1,13,3,12,1,13,1,0, +2,14,1,13,2,12,3,0, +1,0,2,13,1,12,1,13,3,0} +sprite17={ +3,12,5,13, +2,12,3,13,3,0, +2,13,5,0,1,13, +5,0,2,13,1,12, +5,0,1,13,2,12, +4,0,1,13,3,12, +4,0,1,13,1,12,2,13, +4,0,3,13,1,0} +sprite18={ +6,12,1,13,1,0, +1,13,4,12,1,13,2,0, +3,12,2,13,3,0, +3,12,1,13,4,0, +2,12,1,13,5,0, +2,13,6,0, +8,0, +8,0 +} + +-- Well well well, now what if we just +-- put those arrays into memory? + +function readsprite(sprarr,id) + local con=0 + for i=0,#sprarr//2-1 do + local rep=sprarr[i*2+1] + local col=sprarr[i*2+2] + for j=1,rep do + poke4(0x8000+con+id*64,col) + con=con+1 + end + end +end + +function BOOT() + readsprite(sprite1,0) + readsprite(sprite2,1) + readsprite(sprite3,2) + readsprite(sprite16,16) + readsprite(sprite17,17) + readsprite(sprite18,18) +end + +-- Excuse the 10k of pre-calculated code +-- I just wanted something cool to show +-- off for the good folks at Inercia! + +function goathead(ax,ay) + -- Horns + q(176+ax,14+ay,177+ax,16+ay,163+ax,24+ay,167+ax,26+ay,4) + q(177+ax,16+ay,178+ax,17+ay,167+ax,26+ay,169+ax,27+ay,3) + q(176+ax,14+ay,189+ax, 9+ay,177+ax,16+ay,188+ax,10+ay,4) + q(177+ax,16+ay,188+ax,10+ay,178+ax,17+ay,186+ax,12+ay,3) + q(165+ax,12+ay,167+ax,13+ay,160+ax,19+ay,162+ax,21+ay,4) + q(167+ax,13+ay,169+ax,14+ay,162+ax,21+ay,164+ax,23+ay,3) + q(176+ax, 4+ay,176+ax, 4+ay,165+ax,12+ay,167+ax,13+ay,4) + q(167+ax,13+ay,176+ax, 4+ay,169+ax,14+ay,176+ax, 4+ay,3) + -- Deep shadow + q(159+ax,49+ay,166+ax,47+ay,155+ax,53+ay,159+ax,51+ay,14) + q(163+ax,46+ay,169+ax,45+ay,159+ax,49+ay,166+ax,47+ay,14) + q(169+ax,45+ay,173+ax,43+ay,163+ax,46+ay,172+ax,46+ay,14) + -- Shadow + q(141+ax,50+ay,147+ax,53+ay,147+ax,55+ay,152+ax,55+ay,13) + q(147+ax,53+ay,152+ax,52+ay,152+ax,55+ay,155+ax,53+ay,13) + q(152+ax,52+ay,157+ax,47+ay,155+ax,53+ay,159+ax,49+ay,13) + q(157+ax,47+ay,162+ax,43+ay,159+ax,49+ay,163+ax,46+ay,13) + q(162+ax,43+ay,169+ax,42+ay,163+ax,46+ay,169+ax,45+ay,13) + q(169+ax,42+ay,174+ax,34+ay,169+ax,45+ay,173+ax,43+ay,13) + q(149+ax,28+ay,151+ax,27+ay,150+ax,30+ay,156+ax,27+ay,13) + -- Head proper + q(139+ax,44+ay,152+ax,52+ay,141+ax,50+ay,147+ax,53+ay,12) + q(139+ax,44+ay,143+ax,39+ay,152+ax,52+ay,157+ax,47+ay,12) + q(143+ax,39+ay,159+ax,40+ay,157+ax,47+ay,162+ax,43+ay,12) + q(148+ax,33+ay,153+ax,34+ay,143+ax,39+ay,159+ax,40+ay,12) + q(150+ax,30+ay,153+ax,31+ay,148+ax,33+ay,153+ax,34+ay,12) + q(150+ax,30+ay,156+ax,27+ay,153+ax,31+ay,157+ax,29+ay,12) + q(159+ax,40+ay,162+ax,40+ay,162+ax,43+ay,169+ax,42+ay,12) + q(164+ax,38+ay,174+ax,34+ay,162+ax,40+ay,169+ax,42+ay,12) + q(164+ax,33+ay,172+ax,27+ay,164+ax,38+ay,174+ax,34+ay,12) + q(161+ax,30+ay,167+ax,24+ay,164+ax,33+ay,172+ax,27+ay,12) + q(164+ax,21+ay,167+ax,24+ay,157+ax,29+ay,161+ax,30+ay,12) + q(156+ax,27+ay,164+ax,21+ay,157+ax,29+ay,167+ax,24+ay,12) + q(158+ax,21+ay,164+ax,21+ay,156+ax,27+ay,157+ax,29+ay,12) + q(151+ax,21+ay,158+ax,21+ay,151+ax,27+ay,156+ax,27+ay,12) + q(147+ax,23+ay,151+ax,21+ay,149+ax,28+ay,151+ax,27+ay,12) + q(147+ax,23+ay,151+ax,21+ay,149+ax,28+ay,151+ax,27+ay,12) + q(157+ax,17+ay,161+ax,18+ay,158+ax,21+ay,164+ax,21+ay,12) + -- End of hair + q(144+ax,27+ay,147+ax,23+ay,142+ax,31+ay,149+ax,28+ay,12) + q(149+ax,17+ay,157+ax,17+ay,155+ax,19+ay,158+ax,21+ay,12) + -- Eye + q(153+ax,34+ay,164+ax,38+ay,159+ax,40+ay,162+ax,40+ay,15) + q(153+ax,31+ay,164+ax,33+ay,153+ax,34+ay,164+ax,38+ay,15) + q(157+ax,29+ay,161+ax,30+ay,153+ax,31+ay,164+ax,33+ay,15) + l(156+ax,34+ay,159+ax,34+ay,12) + l(159+ax,34+ay,160+ax,35+ay,12) + -- Nose + l(139+ax,44+ay,142+ax,47+ay,14) + l(142+ax,45+ay,142+ax,47+ay,15) + l(142+ax,45+ay,145+ax,42+ay,14) + l(145+ax,42+ay,147+ax,42+ay,14) + l(142+ax,47+ay,144+ax,50+ay,14) + l(144+ax,50+ay,147+ax,50+ay,14) + l(147+ax,50+ay,151+ax,46+ay,14) + l(151+ax,45+ay,151+ax,46+ay,14) +end + +function headphones(ax,ay) + q(176+ax,28+ay,179+ax,28+ay,175+ax,30+ay,180+ax,30+ay,15) + q(178+ax,28+ay,179+ax,28+ay,177+ax,30+ay,180+ax,30+ay,14) + q(177+ax,30+ay,180+ax,30+ay,175+ax,31+ay,175+ax,35+ay,14) + circ(170+ax,36+ay,5,15) + circ(172+ax,35+ay,5,14) + circb(173+ax,35+ay,3,15) +end + +function floppyears(ax,ay,bx,by) + q(164+ax,29+ay,173+ax,29+ay,165+ax,33+ay,174+ax,33+ay,12) + q(165+ax,33+ay,174+ax,33+ay,167+ax,37+ay,174+ax,37+ay,12) + q(167+ax,37+ay,174+ax,37+ay,167+ax+bx/2,48+ay,176+ax+bx/2,44+ay,12) + q(174+ax,33+ay,175+ax,33+ay,174+ax,37+ay,176+ax,37+ay,13) + q(174+ax,37+ay,176+ax,37+ay,176+ax+bx/2,44+ay,179+ax+bx/2,48+ay,13) + q(167+ax+bx/2,48+ay,176+ax+bx/2,44+ay,171+ax+bx,55+ay+by,176+ax+bx,56+ay+by,14) + q(176+ax+bx/2,44+ay,179+ax+bx/2,48+ay,176+ax+bx,56+ay+by,179+ax+bx,53+ay+by,14) + l(167+ax,37+ay,167+ax+bx/2,48+ay,13) + l(165+ax,33+ay,167+ax,37+ay,13) +end + +function necc(ax,ay,bx,by) + q(159+ax,51+ay,166+ax,47+ay,160+ax,53+ay,165+ax,52+ay,14) + q(160+ax,53+ay,165+ax,52+ay,157+bx,57+by,163+bx,56+by,13) + q(166+ax,47+ay,172+ax,46+ay,165+ax,52+ay,172+ax,51+ay,12) + q(165+ax,52+ay,172+ax,51+ay,163+bx,56+by,174+bx,55+by,12) + q(158+ax,53+ay,159+ax,51+ay,157+bx,57+by,160+ax,53+ay,12) +end + +function r_hand(ax,ay,bx,by) + q(147+ax,62+ay,152+ax,63+ay,143+bx,85+by,148+bx,92+by,12) + q(152+ax,63+ay,156+ax,66+ay,148+bx,92+by,151+bx,95+by,13) + q(129+bx,102+by,143+bx,85+by,133+bx,105+by,148+bx,92+by,12) + q(133+bx,105+by,148+bx,92+by,133+bx,107+by,151+bx,95+by,13) + spr(0,110+bx,101+by,0,1,0,0,3,2) +end + +function l_hand(ax,ay,bx,by) +-- Fur + q(166+bx,23+by,168+bx,23+by,169+bx,35+by,174+bx,32+by,12) + q(169+bx,35+by,174+bx,32+by,169+bx,39+by,175+bx,38+by,12) + q(169+bx,39+by,175+bx,38+by,169+bx,41+by,174+bx,43+by,12) + q(169+bx,41+by,174+bx,43+by,159+bx,61+by,172+bx,61+by,12) + q(159+bx,61+by,172+bx,61+by,161+bx,64+by,168+bx,64+by,12) + q(174+bx,32+by,174+bx,29+by,175+bx,38+by,180+bx,38+by,12) + q(175+bx,38+by,180+bx,38+by,174+bx,43+by,175+bx,43+by,12) + q(174+bx,58+by,185+bx,64+by,168+bx,64+by,183+bx,70+by,12) + q(161+bx,64+by,168+bx,64+by,173+bx,72+by,183+bx,70+by,12) +-- Shade + q(174+bx,43+by,175+bx,43+by,172+bx,61+by,174+bx,58+by,13) + q(173+bx,72+by,183+bx,70+by,178+ax,76+by,182+ax,75+by,13) + q(183+bx,70+by,188+bx,69+by,180+bx,75+by,186+bx,73+by,13) + q(185+bx,64+by,188+bx,65+by,183+bx,70+by,188+bx,69+by,13) + q(185+bx,61+by,187+bx,63+by,185+bx,64+by,188+bx,65+by,13) + q(182+ax,59+ay,185+bx,61+by,182+ax,62+ay,185+bx,64+by,13) +-- Accent + l(161+bx,64+by,173+bx,72+by,13) + l(173+bx,58+by,168+bx,63+by,13) + l(173+bx,58+by,185+bx,64+by,13) + l(175+bx,32+by,170+bx,23+by,13) + l(174+bx,32+by,169+bx,23+by,12) + l(168+bx,23+by,172+bx,32+by,13) + l(166+bx,25+by,168+bx,35+by,13) + l(169+bx,35+by,169+bx,40+by,13) + l(169+bx,41+by,171+bx,42+by,13) + l(169+bx,41+by,159+bx,61+by,13) + l(159+bx,61+by,161+bx,64+by,13) +end + +function body(ax,ay) +-- Fur + q(150+ax,59+ay,157+ax,57+ay,147+ax,62+ay,157+ax,62+ay,12) + q(157+ax,57+ay,163+ax,56+ay,157+ax,62+ay,164+ax,62+ay,12) + q(163+ax,56+ay,174+ax,55+ay,164+ax,62+ay,174+ax,62+ay,12) + q(174+ax,55+ay,178+ax,57+ay,174+ax,62+ay,181+ax,62+ay,12) +-- + q(147+ax,62+ay,157+ax,62+ay,145+ax,69+ay,157+ax,70+ay,12) + q(157+ax,62+ay,164+ax,62+ay,157+ax,70+ay,165+ax,71+ay,12) + q(164+ax,62+ay,174+ax,62+ay,165+ax,71+ay,174+ax,67+ay,12) + q(174+ax,62+ay,181+ax,62+ay,174+ax,67+ay,182+ax,67+ay,12) +-- + q(145+ax,69+ay,157+ax,70+ay,144+ax,77+ay,157+ax,78+ay,12) + q(157+ax,70+ay,165+ax,71+ay,157+ax,78+ay,165+ax,79+ay,12) + q(165+ax,71+ay,174+ax,67+ay,165+ax,79+ay,176+ax,76+ay,12) + q(174+ax,67+ay,182+ax,67+ay,176+ax,76+ay,180+ax,73+ay,12) +-- + q(144+ax,77+ay,157+ax,78+ay,146+ax,89+ay,156+ax,90+ay,12) + q(157+ax,78+ay,165+ax,79+ay,156+ax,90+ay,165+ax,90+ay,12) + q(165+ax,79+ay,176+ax,76+ay,165+ax,90+ay,173+ax,93+ay,12) +-- + q(146+ax,89+ay,156+ax,90+ay,149+ax,97+ay,157+ax,99+ay,12) + q(156+ax,90+ay,165+ax,90+ay,157+ax,99+ay,165+ax,100+ay,12) + q(165+ax,90+ay,173+ax,93+ay,165+ax,100+ay,175+ax,99+ay,12) +-- + q(149+ax,97+ay,157+ax,99+ay,149+ax,109+ay,157+ax,110+ay,12) + q(157+ax,99+ay,165+ax,100+ay,157+ax,110+ay,165+ax,111+ay,12) + q(165+ax,100+ay,175+ax,99+ay,165+ax,111+ay,174+ax,108+ay,12) +-- + q(149+ax,109+ay,157+ax,110+ay,148+ax,114+ay,155+ax,119+ay,12) + q(157+ax,110+ay,165+ax,111+ay,155+ax,119+ay,162+ax,120+ay,12) + q(165+ax,111+ay,174+ax,108+ay,162+ax,120+ay,175+ax,115+ay,12) +-- + q(155+ax,119+ay,162+ax,120+ay,157+ax,125+ay,164+ax,126+ay,12) +-- Shade + q(178+ax,57+ay,182+ax,59+ay,181+ax,62+ay,183+ax,62+ay,13) + q(181+ax,62+ay,183+ax,62+ay,182+ax,67+ay,183+ax,67+ay,13) + q(182+ax,67+ay,183+ax,67+ay,180+ax,73+ay,183+ax,73+ay,13) + q(180+ax,73+ay,183+ax,73+ay,176+ax,76+ay,181+ax,82+ay,13) + q(176+ax,76+ay,181+ax,82+ay,173+ax,93+ay,177+ax,91+ay,13) + q(173+ax,93+ay,177+ax,91+ay,175+ax,99+ay,178+ax,99+ay,13) + q(175+ax,99+ay,178+ax,99+ay,174+ax,108+ay,180+ax,106+ay,13) + q(174+ax,108+ay,180+ax,106+ay,175+ax,115+ay,183+ax,110+ay,13) +-- Accent + l(150+ax,59+ay,147+ax,62+ay,13) + l(147+ax,62+ay,145+ax,69+ay,13) + l(145+ax,69+ay,144+ax,77+ay,13) + l(144+ax,77+ay,146+ax,89+ay,13) + l(146+ax,89+ay,149+ax,97+ay,13) + l(149+ax,97+ay,149+ax,109+ay,13) + l(149+ax,109+ay,148+ax,114+ay,13) +-- Tone + l(152+ax,60+ay,155+ax,61+ay,13) + l(159+ax,61+ay,170+ax,57+ay,13) + l(156+ax,63+ay,153+ax,70+ay,13) + l(153+ax,70+ay,152+ax,75+ay,13) + l(153+ax,77+ay,156+ax,80+ay,13) + l(156+ax,80+ay,163+ax,80+ay,13) + l(163+ax,80+ay,169+ax,77+ay,13) + l(169+ax,77+ay,172+ax,74+ay,13) + l(149+ax,79+ay,151+ax,77+ay,13) + l(149+ax,79+ay,151+ax,77+ay,13) + l(145+ax,79+ay,149+ax,79+ay,13) + l(146+ax,89+ay,151+ax,86+ay,13) + l(155+ax,86+ay,164+ax,90+ay,13) + l(153+ax,91+ay,156+ax,104+ay,13) + l(156+ax,104+ay,157+ax,114+ay,13) +end + +function shirt(ax,ay,bx,by) + q(153+ax,57+ay,157+ax,56+ay,149+ax,62+ay,155+ax,62+ay,2) + q(170+ax,55+ay,174+ax,55+ay,161+ax,62+ay,169+ax,63+ay,2) + + q(149+ax,62+ay,155+ax,62+ay,144+ax,71+ay,155+ax,71+ay,2) + q(155+ax,62+ay,161+ax,62+ay,155+ax,71+ay,161+ax,71+ay,2) + q(161+ax,62+ay,169+ax,63+ay,161+ax,71+ay,167+ax,71+ay,2) + + q(144+ax,71+ay,155+ax,71+ay,143+ax,79+ay,155+ax,79+ay,2) + q(155+ax,71+ay,161+ax,71+ay,155+ax,79+ay,161+ax,79+ay,2) + q(161+ax,71+ay,167+ax,71+ay,161+ax,79+ay,171+ax,79+ay,2) + + q(143+ax,79+ay,155+ax,79+ay,145+ax,92+ay,155+ax,92+ay,2) + q(155+ax,79+ay,161+ax,79+ay,155+ax,92+ay,161+ax,92+ay,2) + q(161+ax,79+ay,171+ax,79+ay,161+ax,92+ay,172+ax,92+ay,2) + + q(145+ax,92+ay,155+ax,92+ay,145+ax,101+ay,155+ax,101+ay,2) + q(155+ax,92+ay,161+ax,92+ay,155+ax,101+ay,161+ax,101+ay,2) + q(161+ax,92+ay,172+ax,92+ay,161+ax,101+ay,171+ax,101+ay,2) + + q(145+ax,101+ay,155+ax,101+ay,142+ax,110+ay,155+ax,114+ay,2) + q(155+ax,101+ay,161+ax,101+ay,155+ax,114+ay,161+ax,114+ay,2) + q(161+ax,101+ay,171+ax,101+ay,161+ax,114+ay,168+ax,112+ay,2) + + q(182+ax,73+ay,183+ax,71+ay,178+ax,79+ay,183+ax,79+ay,1) + q(171+ax,79+ay,178+ax,79+ay,172+ax,92+ay,178+ax,92+ay,1) + q(178+ax,79+ay,183+ax,79+ay,178+ax,92+ay,180+ax,92+ay,1) + + q(172+ax,92+ay,178+ax,92+ay,171+ax,101+ay,177+ax,101+ay,1) + q(178+ax,92+ay,180+ax,92+ay,177+ax,101+ay,179+ax,101+ay,1) + + q(171+ax,101+ay,177+ax,101+ay,168+ax,112+ay,177+ax,109+ay,1) + q(177+ax,101+ay,179+ax,101+ay,177+ax,109+ay,184+ax,104+ay,1) +end + +function pants(ax,ay) + q(149+ax,105+ay,155+ax,106+ay,143+ax,119+ay,155+ax,123+ay,10) + q(155+ax,106+ay,161+ax,106+ay,155+ax,123+ay,161+ax,124+ay,10) + q(161+ax,106+ay,173+ax,103+ay,161+ax,124+ay,177+ax,114+ay,10) + + q(143+ax,119+ay,155+ax,123+ay,143+ax,128+ay,155+ax,128+ay,10) + q(155+ax,123+ay,161+ax,124+ay,155+ax,128+ay,161+ax,128+ay,9) + q(161+ax,124+ay,177+ax,114+ay,161+ax,128+ay,178+ax,128+ay,10) + + q(143+ax,128+ay,155+ax,128+ay,142+ax,136,156+ax,136,10) + q(155+ax,128+ay,161+ax,128+ay,156+ax,136,161+ax,136,9) + q(161+ax,128+ay,178+ax,128+ay,161+ax,136,178+ax,136,10) + + q(173+ax,103+ay,179+ax,102+ay,177+ax,114+ay,185+ax,113+ay,9) + q(177+ax,114+ay,185+ax,113+ay,178+ax,128+ay,187+ax,129+ay,9) + q(178+ax,128+ay,187+ax,129+ay,178+ax,136,187+ax,136,9) + l(155+ax,123+ay,148+ax,118+ay,9) + l(164+ax,118+ay,174+ax,114+ay,9) +end + +function piano() + q(83,100,115,100,89,136,135,136,14) + q(82,109,83,100,82,136,89,136,15) + q(99,105,117,105,110,136,135,136,12) + l(99,105,116,105,15) + l(100,107,118,107,13) + l(100,107,110,107,15) + l(100,109,119,109,13) + l(100,109,111,109,15) + l(101,111,120,111,13) + l(101,111,112,111,15) + l(102,113,121,113,13) + l(102,115,123,115,13) + l(102,115,114,115,15) + l(103,117,124,117,13) + l(103,117,115,117,15) + l(104,119,125,119,13) + l(105,121,126,121,13) + l(105,121,117,121,15) + l(105,123,127,123,13) + l(105,123,118,123,15) + l(106,125,128,125,13) + l(106,125,119,125,15) + l(107,127,129,127,13) + l(108,129,131,129,13) + l(108,129,121,129,15) + l(108,131,132,131,13) + l(108,131,122,131,15) + l(109,133,133,133,13) + l(110,135,134,135,13) + l(110,135,124,135,15) +end + +function effect1() + for i=0,240 do + pix(i,68+64*sin(t+i),i) + pix(i,68+64*cos(t+i),i) + end + circ(t%260-20,30+40*sin(t/40),abs(5*sin(t/3)),1+(t/20)%3) + circ((t+60)%260-20,50+40*sin((t+30)/40),abs(5*sin(t/3)),1+(t/20)%3) + circ((t+145)%260-20,60+40*sin((t-20)/40),abs(5*sin(t/3)),3+(t/20)%3) + circ((t-20)%260-20,80+40*sin((t+40)/40),abs(5*sin(t/3)),9+(t/20)%3) + circ((t+20)%260-20,50+40*sin(t/40),abs(5*sin(t/3)),1+(t/20)%3) + circ((t+90)%260-20,30+40*sin((t+30)/40),abs(5*sin(t/3)),9+(t/20)%3) + circ((t+125)%260-20,65+40*sin((t-20)/40),abs(5*sin(t/3)),1+(t/20)%3) + circ((t-50)%260-20,80+40*sin((t+40)/40),abs(5*sin(t/3)),6+(t/20)%3) + circ((t+70)%260-20,70+40*sin(t/40),abs(5*sin(t/3)),8+(t/20)%3) + circ((t+110)%260-20,40+40*sin((t+30)/40),abs(5*sin(t/3)),1+(t/20)%3) + circ((t+145)%260-20,60+40*sin((t-20)/40),abs(5*sin(t/3)),6+(t/20)%3) + circ((t-40)%260-20,20+40*sin((t+40)/40),abs(5*sin(t/3)),3+(t/20)%3) + circ(t%260-20,30+40*cos(t/40),abs(5*cos(t/3)),1+(t/20)%3) + circ((t+60)%260-20,50+40*cos((t+30)/40),abs(5*cos(t/3)),1+(t/20)%3) + circ((t+145)%260-20,60+40*cos((t-20)/40),abs(5*cos(t/3)),3+(t/20)%3) + circ((t-20)%260-20,80+40*cos((t+40)/40),abs(5*cos(t/3)),9+(t/20)%3) + circ((t+20)%260-20,50+40*cos(t/40),abs(5*sin(t/3)),1+(t/20)%3) + circ((t+90)%260-20,30+40*cos((t+30)/40),abs(5*cos(t/3)),9+(t/20)%3) + circ((t+125)%260-20,65+40*cos((t-20)/40),abs(5*cos(t/3)),1+(t/20)%3) + circ((t-50)%260-20,80+40*cos((t+40)/40),abs(5*cos(t/3)),6+(t/20)%3) + circ((t+70)%260-20,70+40*cos(t/40),abs(5*cos(t/3)),8+(t/20)%3) + circ((t+110)%260-20,40+40*cos((t+30)/40),abs(5*cos(t/3)),1+(t/20)%3) + circ((t+145)%260-20,60+40*cos((t-20)/40),abs(5*cos(t/3)),6+(t/20)%3) + circ((t-40)%260-20,20+40*cos((t+40)/40),abs(5*cos(t/3)),3+(t/20)%3) + +end + + +function TIC() + t=time()//60 + vbank(0) + cls(0) + effect1() + vbank(1) + cls(0) + piano() + r_hand(0,0,6*sin(t/10),6*sin(t/10)+abs(2*sin(t/2))) + necc(2*sin(t/50),0,0,0) + body(0,0,0,0) + pants(0,0) + shirt(0,0) + goathead(2*sin(t/50),0) + headphones(2*sin(t/50),0) + floppyears(2*sin(t/50),0,4*sin(t/50),0) + l_hand(0,0,2*sin(t/50),0) +end diff --git a/shader_file_sources/2023_12_03_byte_jam_inercia/tobach.lua b/shader_file_sources/2023_12_03_byte_jam_inercia/tobach.lua new file mode 100644 index 000000000..b9a9371f9 --- /dev/null +++ b/shader_file_sources/2023_12_03_byte_jam_inercia/tobach.lua @@ -0,0 +1,91 @@ +--helloooo!!! +-- ^ +--tobach here, live at inercia!!! +--greetz to gasman jtruk mantra dr soft +--suule nusan superogue violet and aldroid +--<3 + +sin=math.sin + +function TIC() + cls(11) + t=time()/100 + + for j=0,8 do + for i=0,16 do + circ((j*64)-t*8%128,98-i*4,6,1) + end + for i=0,7 do + circ((j*64)-t*8%128,58-i*4,15,5) + end + end + + rect(0,100,240,40,13) + + circ(56,104,8,15) + circ(86,104,8,15) + + circ(156,104,8,15) + circ(186,104,8,15) + rect(56,106,30,4,14) + rect(156,106,30,4,14) + + --toniiiight toniiiight + --its all in motion.... + + line(0,108,240,108,14) + + tram(0,-1+sin(t/2)) + line(0,113,240,113,14) + + line(0,8,240,8,14) + line(0,7,240,7,14) + + --what a CHOON + + for j=0,3 do + for i=0,50 do + rect(0+i*5-t*8%5,116+j*5,4,4,14) + end + end + +end + +function tram(x,y) + rect(30+x,80+y,190,30,4) + rect(30+x,50+y,190,30,12) + for i=0,7 do + rect(31+i*24+x,51+y,20,28,10) + end + tri(224+x,80+y,220+x,110+y//1,230+x,110+y//1,4) + rect(220+x,50+y,5,30,12) + rect(220+x,80+y,5,30,4) + rect(221+x,51+y,3,28,10) + rect(197+x,51+y,22,50,4) + rectb(197+x,51+y,22,50,15) + rect(199+x,53+y,8,22,10) + rect(209+x,53+y,8,22,10) + rect(199+x,77+y,8,22,10) + rect(209+x,77+y,8,22,10) + + rect(197-166+x,51+y,22,50,4) + rectb(197-166+x,51+y,22,50,15) + rect(199-166+x,53+y,8,22,10) + rect(209-166+x,53+y,8,22,10) + rect(199-166+x,77+y,8,22,10) + rect(209-166+x,77+y,8,22,10) + + + rect(32+x,46+y,190,4,12) + rect(36+x,42+y,182,4,14) + + rect(197+x,101+y,22,5,14) + rect(31+x,101+y,22,5,14) + + for i=0,3 do + line(160+i+x//1,41+y//1,130+i+x//1,20+y//1,15) + line(160+i+x//1,10+y//1,130+i+x//1,20+y//1,15) + end + print(" Inercia\nExpress 2005",54,82+y,12,true,2) + +end \ No newline at end of file diff --git a/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/alia.lua b/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/alia.lua new file mode 100644 index 000000000..08ff644ed --- /dev/null +++ b/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/alia.lua @@ -0,0 +1,134 @@ +sin=math.sin +cos=math.cos +rand=math.random +abs=math.abs + +t=0 +p={} +for i=1,256 do + p[i]={x=rand()*4-2,y=rand()*4-2,z=rand()*4-2} +end + +function BOOT() + cls(0) + circ(8,8,7,12) + for y=0,16 do + for x=0,16 do + if pix(x,y)==12 then + pix(x,y,(y/16)*3+5) + end + end + end + + circ(8+32,8,7,12) + for y=0,16 do + for x=32,48 do + if pix(x,y)==12 then + pix(x,y,5-(y/16)*3) + end + end + end + + circ(24,8,1,12) + circ(28,8,1,12) + circ(20,8,1,12) + circ(24,4,1,12) + circ(24,12,1,12) + rect(24,4,1,8,12) + rect(20,8,8,1,12) +end + +function bob(x,y,z,id) + local x=x*68+120 + local y=y*68+68 + local r=(z*4+5)/3 + local z=-z*.5+1 + local u=id*16 + local v=(id+1)*16 + ttri( + x-r,y-r, + x+r,y-r, + x-r,y+r, + u,0, + v,0, + u,16, + 2,0, + z,z,z + ) + ttri( + x+r,y-r, + x-r,y+r, + x+r,y+r, + v,0, + u,16, + v,16, + 2,0, + z,z,z + ) +end + +function TIC() + vbank(1) + clip(0,0,240,100) + cls(8) + clip(0,100,240,136) + cls(6) + clip() + + rect(80,105,15,20,2) + rect(105,103,12,15,3) + rect(90,110,17,15,4) + rect(80+40,105,15,20,2) + rect(105+40,103,12,15,3) + rect(90+40,110,17,15,4) + + elli(200,110,20,10,3) + local f=fft(150)*100 + local y=99-f + local x=sin(t/2)^7*4 + elli(210-5+x,y-5,2,4,4) + elli(210+5+x,y-5,2,4,4) + elli(210+x,y+2,9,6,1) + elli(210+x,y,9,6,3) + + elli(210-4+x,y-2,2,2,12) + elli(210+4+x,y-2,2,2,12) + elli(210-4+x+sin(t)*1.1,y-2,1,2,15) + elli(210+4+x+sin(t)*1.1,y-2,1,2,15) + + for i=0,15 do + local y=math.max(0,sin(t*4+i/4))*f*i/4 + circ(185+i*2,110+7-y,3,3+i%2) + end + + for i=0,24 do + for j=0,8 do + local x=sin(t/8+i/4)*j/12 + local y=cos(t/8+i/4)*j/32+j/8-.75 + local z=cos(t/8+i/4)*j/8 + local s=.05 + local id=(i*8+j)%19==0 and 2 or 0 + bob(x+s,y,z,id) + bob(x-s,y,z,id) + bob(x,y+s,z+.001,id) + bob(x,y-s,z-.001,id) + end + end + + for i=1,#p do + bob(p[i].x,p[i].y,p[i].z,1) + p[i].x=p[i].x+sin(t/3+i)/100*(p[i].z*.25+.5) + p[i].z=p[i].z+sin(t/4+i)/100 + p[i].y=p[i].y+.01 + p[i].y=p[i].y>2 and -2 or p[i].y + end + + local y=fft(100)*200 + --print("tiny cat christmas",10,90,15,0,2) + if t//8%2==0 then + print("tiny cat christmas",10,10-y,12,0,2) + else + print("tiny code christmas",7,10-y,12,0,2) + end + t=t+.1 +end diff --git a/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/gigabates.lua b/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/gigabates.lua new file mode 100644 index 000000000..6afa1a0f5 --- /dev/null +++ b/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/gigabates.lua @@ -0,0 +1,149 @@ +t=0 +rand=math.random +s=math.sin +c=math.cos + +buildings={} +for i=1,100 do + x=rand(-400,400) + z=rand(-400,400) + y=-rand(10,70) + r=rand(12,20) + buildings[i]={ + {x-r,z-r}, + {x+r,z-r}, + {x+r,z+r}, + {x-r,z+r}, + y, + 40 + } +end + +scale=400 + +function TIC() + t=t+1 + cls(1) +end + +cols={ + { + {0x66,0x55,0xaa}, + {0xff,0x66,0x44}, + {0xff,0xee,0x88}, + }, + { + {0xcc,0xee,0xff}, + {0xcc,0xbb,0xaa}, + {0xff,0xee,0x88}, + }, + { + {0x66,0x55,0xaa}, + {0xff,0x66,0x44}, + {0xff,0xee,0x88}, + }, +} + +sp=200 + +function SCN(y) + p=(t%sp)/sp + i=(t//sp)%(#cols-1)+1 + scol={ + lerpRGB(cols[i][1],cols[i+1][1],p), + lerpRGB(cols[i][2],cols[i+1][2],p), + lerpRGB(cols[i][3],cols[i+1][3],p), + } + if y<34 then + col=lerpRGB(scol[1],scol[2],y/34) + setRGB(1,col) + elseif y<68 then + col=lerpRGB(scol[2],scol[3],(y-34)/34) + setRGB(1,col) + else + col=lerpRGB({50,50,50},{0,0,0},(y-68)/68) + setRGB(1,col) + end +end + +function setRGB(i,c) + local addr=0x3fc0+i*3 + poke(addr,c[1]) + poke(addr+1,c[2]) + poke(addr+2,c[3]) +end + +function lerpRGB(c1,c2,i) + return { + c1[1]+(c2[1]-c1[1])*i, + c1[2]+(c2[2]-c1[2])*i, + c1[3]+(c2[3]-c1[3])*i, + } +end + +function OVR() + for i=0,15 do + setRGB(i,lerpRGB({0,0,0},{100,100,130},i/15)) + end + a=s(t/300)*3 + C=c(a) + S=s(a) + + dist=800+s(t/80)*300 + + transformed={} + for i=1,#buildings do + b=buildings[i] + tr={} + y1=b[5] + y2=b[6] + for j=1,4 do + x=b[j][1]*C+b[j][2]*S + z=(b[j][2]*C-b[j][1]*S+dist)/scale + tr[j]={ + x/z, + y1/z, + y2/z, + z, + } + end + if tr[1][4]>0 then + table.insert(transformed,tr) + end + end + + table.sort(transformed,function(a,b) + return a[1][4]>b[1][4] + end) + + for i=1,#transformed do + tr=transformed[i] + l=tr[4] + d=tr[1][4] + for j=1,4 do + p=tr[j] + dot=(l[1]-p[1])*(l[2]-p[2])- + (l[1]-p[1])*(l[3]-p[2]) + if dot>0 then + col=j+d*3 + tri( + 120+l[1], + 68+l[2], + 120+p[1], + 68+p[2], + 120+p[1], + 68+p[3], + col) + tri( + 120+p[1], + 68+p[3], + 120+l[1], + 68+l[3], + 120+l[1], + 68+l[2], + col) + end + l=p + end + end +end diff --git a/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/pellicus.lua b/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/pellicus.lua new file mode 100644 index 000000000..b7356dfa4 --- /dev/null +++ b/shader_file_sources/2023_12_11_byte_jam_monday_night_bytes/pellicus.lua @@ -0,0 +1,134 @@ +-- pos: 21,51 +-- Pellicus is activated :D +-- hello everyone!!! +sin=math.sin +cos=math.cos + +function palette(sinx,n, S , E) + local d,i=n-1,sinx*3 + for j=0,d do + poke(16320+i+j*3+0, S[1]+j*(E[1]-S[1])/d) + poke(16320+i+j*3+1, S[2]+j*(E[2]-S[2])/d) + poke(16320+i+j*3+2, S[3]+j*(E[3]-S[3])/d) + end +end + +-- some math +function normalize(x,y,z) + local m = 1/(x^2+y^2+z^2)^.5 + return x*m,y*m,z*m +end +function cross(ax,ay,az,bx,by,bz) + return ay*bz-az*by, + az*bx-ax*bz, + ax*by-ay*bx +end + +rx,ry,rz,ox,oy,oz=0,0,0,0,0,0 + +function TIC() +t=time()/1000 +palette(0,8,{0,0,0},{255,0,0}) +palette(8,8,{0,0,0},{255,255,255}) + +-- some camera... +local Ox,Oy,Oz = sin(t/4)*20, + 8+sin(t/7)*4, 10+cos(t/4)*8+(10+sin(t/5)*5) +-- target camera +local Tx,Ty,Tz = 0,0,0 +-- now a matrix.. + -- forward vector + local Fx,Fy,Fz=normalize(Tx-Ox,Ty-Oy,Tz-Oz) + -- right vector + local Rx,Ry,Rz=cross(Fx,Fy,Fz,0,1,0) + -- up vector + local Ux,Uy,Uz=cross(Fx,Fy,Fz,Rx,Ry,Rz) + + -- Light Position + local Lx,Ly,Lz = 0,8,0 + + -- bouncing Sphere position and radius + Sx,Sy,Sz,Sr=-5,math.abs(sin(t)*4,0),3,2 + Sy=Sy+Sr + + local ix,iy,iz,nx,ny,nz + local shdz,ooW,o=0,1/240,0 + local minz,obj,col + + for y=0,135 do for x=0,239 do + ox,oy,oz=Ox,Oy,Oz + ix,iy,iz = (x-120)*ooW,(y-70)*ooW,1 + + rx,ry,rz= Fx+Rx*ix + Ux*iy, + Fy+Ry*ix + Uy*iy, + Fz+Rz*ix + Uz*iy + rx,ry,rz=normalize(rx,ry,rz) + + shd=1 + minz,obj,col, + ix,iy,iz,nx,ny,nz=scene(false) + + if minz<80 then -- some lighting + local lx,ly,lz=normalize(Lx-ix,Ly-iy,Lz-iz) + -- floor receiving shadows + if obj==1 then + ox,oy,oz=ix,iy,iz + rx,ry,rz=lx,ly,lz + shd=scene(true) + end + + local lit = nx*lx+ny*ly+nz*lz + lit = lit>1 and 1 or (lit<0 and 0 or lit) + col =col+ lit*shd*7 + o^2.5%1 + + end +-- pix(x,y,(x+y+t)>>3) + poke4(o,col) + o=o+1 + +end end + + +end + +function isph(px,py,pz,r) + local cx,cy,cz=ox-px,oy-py,oz-pz + local b=cx*rx+cy*ry+cz*rz + local c= cx^2+cy^2+cz^2 -r^2 + if c>0 and b>0 then return 80 end + c=b^2-c + if c<0 then return 80 end + return -b - c^.5 +end + +function scene(shd) + local ix,iy,iz,nx,ny,nz + local col,minz,obj=8,80,0 + + dz= isph(Sx,Sy,Sz,Sr) + if dzsnowcovermax[j] then + snowcover[j]=snowcover[j]-1 + end + else + pix(j,a,0)pix(j,a+1,pcol) + end + end + end + end + vbank(0) +end + +-- TIME FOR FUN PART!S! +-- YOU KNOW WHAT QUADS MEAN! + +function q(x1,y1,x2,y2,x3,y3,x4,y4,c) + tri(x1,y1,x2,y2,x3,y3,c) + tri(x2,y2,x3,y3,x4,y4,c) +end + +function mane(ax,ay,bx,by) +-- Horn 1 + q(157+ax,0,165+ax,0,149+ax,8+by,155+ax,10+by,13) + q(165+ax,0,170+ax,0,155+ax,10+by,160+ax,11+by,14) + q(149+ax,8+by,155+ax,10+by,142+ax,24+ay,148+ax,22+ay,13) + q(155+ax,10+by,160+ax,11+by,148+ax,22+ay,155+ax,20+ay,14) +-- Mane + q(133+ax,25+ay,138+ax,15+ay,134+ax,33+ay,139+ax,28+ay,7) + q(134+ax,33+ay,139+ax,28+ay,135+ax,40+ay,145+ax,36+ay,7) + q(143+ax,18+ay,152+ax,17+ay,139+ax,28+ay,165+ax,19+ay,7) + q(139+ax,28+ay,165+ax,19+ay,145+ax,36+ay,168+ax,24+ay,7) + q(145+ax,36+ay,168+ax,24+ay,147+ax,41+ay,168+ax,30+ay,7) + q(164+ax+bx,6+ay+by,166+ax,11+ay,152+ax,17+ay,165+ax,19+ay,7) + q(166+ax,11+ay,180+ax+bx,2+ay+by,165+ax,19+ay,176+ax,14+ay,7) + q(165+ax,19+ay,176+ax,14+ay,168+ax,24+ay,178+ax,19+ay,7) + q(168+ax,24+ay,178+ax,19+ay,168+ax,30+ay,187+ax,28+ay,7) + q(168+ax,30+ay,187+ax,28+ay,178+ax,38+ay,196+ax,40+ay,7) + q(178+ax,38+ay,196+ax,40+ay,181+ax,47+ay,201+ax,53+ay,7) + q(181+ax,47+ay,201+ax,53+ay,183+ax,59+ay,188+ax,63+ay,7) + q(177+ax,51+ay,181+ax,47+ay,177+ax,56+ay,183+ax,59+ay,7) + q(176+ax,14+ay,198+ax,13+ay,178+ax,19+ay,193+ax,17+ay,7) + q(178+ax,19+ay,193+ax,17+ay,187+ax,28+ay,199+ax,30+ay,7) + q(187+ax,28+ay,199+ax,30+ay,196+ax,40+ay,206+ax,42+ay,7) + q(196+ax,40+ay,206+ax,42+ay,201+ax,53+ay,220+ax,62+ay,7) + q(201+ax,53+ay,220+ax,62+ay,188+ax,63+ay,229+ax,78+ay,7) + q(198+ax,13+ay,210+ax+bx,17+ay+by,193+ax,17+ay,214+ax+bx,20+ay+by,7) + q(193+ax,17+ay,213+ax+bx,25+ay+by,199+ax,30+ay,223+ax+bx,32+ay+by,7) + q(199+ax,30+ay,230+ax+bx,39+ay+by,206+ax,42+ay,217+ax+bx,42+ay+by,7) + q(206+ax,42+ay,224+ax+bx,48+ay+by,220+ax,62+ay,239+ax+bx,56+ay+by,7) + q(188+ax,63+ay,229+ax,78+ay,181+ax,78+ay,233+ax,91+ay,7) + q(181+ax,78+ay,233+ax,91+ay,173+ax,85+ay,240,101+ay,7) + q(173+ax,85+ay,240,101+ay,160+ax,92+ay,240,116+ay,7) + q(160+ax,92+ay,240,116+ay,147+ax,104+ay,240,126+ay,7) + q(147+ax,104+ay,240,126+ay,145+ax,119+ay,240,136,7) + q(142+ax,127+ay,145+ax,119+ay,144+ax,136,240,136,7) + q(132+ax,106+ay,147+ax,104+ay,131+ax,116+ay,145+ax,119+ay,7) + q(131+ax,116+ay,145+ax,119+ay,126+ax,126+ay,142+ax,127+ay,7) + q(126+ax,126+ay,142+ax,127+ay,129+ax,136,144+ax,136,7) + q(126+ax,126+ay,142+ax,127+ay,129+ax,136,144+ax,136,7) + q(125+ax+bx,110+ay+by,132+ax,106+ay,120+ax+bx,115+ay+ay,131+ax,116+ay,7) + q(119+ax+bx,120+ay+by,131+ax,116+ay,111+ax+bx,129+ay+ay,126+ax,126+ay,7) + q(114+ax+bx,131+ay+by,126+ax,126+ay,110+ax+bx,136,129+ax,136,7) +-- Horn 2 + q(197+ax,0,208+ax,0,189+ax,5+ay,195+ax,8+ay,13) + q(208+ax,0,215+ax,0,195+ax,8+ay,197+ax,14+ay,14) + q(189+ax,5+ay,195+ax,8+ay,182+ax,14+ay,189+ax,14+ay,13) + q(195+ax,8+ay,197+ax,14+ay,189+ax,14+ay,194+ax,19+ay,14) + q(182+ax,14+ay,189+ax,14+ay,176+ax,23+ay,180+ax,27+ay,13) + q(189+ax,14+ay,194+ax,19+ay,180+ax,27+ay,186+ax,30+ay,14) +end + +function earr(ax,ay,bx,by) + q(129+ax+bx,30+ay+by,139+ax,32+ay,128+ax+bx,34+ax+by,137+ax,41+ay,6) +end + +function earl(ax,ay,bx,by) + q(184+ax,41+ay,195+ax+bx/2,37+ay+by/2,185+ax,45+ay,198+ax+bx/2,41+ay+by/2,5) + q(185+ax,45+ay,198+ax+bx/2,41+ay+by/2,191+ax,50+ay,203+ax+bx/2,46+ay+by/2,6) + q(195+ax+bx/2,37+ay+by/2,212+ax+bx,34+ay+by,198+ax+bx/2,41+ay+by/2,212+ax+bx,35+ay+by,5) + q(198+ax+bx/2,41+ay+by/2,212+ax+bx,35+ay+by,203+ax+bx/2,46+ay+by/2,213+ax+bx,38+ay+by,6) +end + +function face(ax,ay) + --dark skin + q(123+ax,97+ay,126+ax,97+ay,132+ax,106+ay,132+ax,101+ay,6) + q(132+ax,101+ay,146+ax,99+ay,132+ax,106+ay,147+ax,104+ay,6) + q(146+ax,99+ay,159+ax,89+ay,147+ax,104+ay,160+ax,92+ay,6) + q(159+ax,89+ay,171+ax,81+ay,160+ax,92+ay,173+ax,85+ay,6) + q(171+ax,81+ay,175+ax,74+ay,173+ax,85+ay,181+ax,78+ay,6) + q(175+ax,74+ay,183+ax,59+ay,181+ax,78+ay,188+ax,63+ay,6) + -- light skin + q(135+ax,40+ay,145+ax,36+ay,133+ax,47+ay,147+ax,41+ay,5) + q(168+ax,30+ay,178+ax,38+ay,147+ax,41+ay,181+ax,47+ay,5) + q(147+ax,41+ay,181+ax,47+ay,133+ax,47+ay,177+ax,51+ay,5) + q(133+ax,47+ay,177+ax,51+ay,134+ax,49+ay,177+ax,56+ay,5) + q(134+ax,49+ay,177+ax,56+ay,131+ax,56+ay,183+ax,59+ay,5) + q(131+ax,56+ay,183+ax,59+ay,126+ax,63+ay,175+ax,74+ay,5) + q(126+ax,63+ay,175+ax,74+ay,155+ax,78+ay,171+ax,81+ay,5) + q(120+ax,67+ay,126+ax,63+ay,149+ax,83+ay,157+ax,78+ay,5) + q(149+ax,83+ay,157+ax,78+ay,159+ax,89+ay,171+ax,81+ay,5) + q(120+ax,67+ay,149+ax,83+ay,126+ax,97+ay,159+ax,89+ay,5) + q(116+ax,71+ay,120+ax,67+ay,123+ax,97+ay,126+ax,97+ay,5) + q(126+ax,97+ay,159+ax,89+ay,132+ax,101+ay,146+ax,99+ay,5) + q(114+ax,77+ay,116+ax,71+ay,114+ax,86+ay,123+ax,97+ay,5) + --eyes + q(155+ax,54+ay,175+ax,51+ay,159+ax,60+ay,165+ax,60+ay,6) + q(152+ax,55+ay,155+ax,54+ay,149+ax,60+ay,155+ax,57+ay,6) + q(155+ax,45+ay,158+ax,45+ay,152+ax,55+ay,155+ax,54+ay,6) + q(158+ax,45+ay,170+ax,48+ay,155+ax,54+ay,175+ax,51+ay,6) + q(158+ax,45+ay,170+ax,44+ay,170+ax,48+ay,175+ay,47+ay,6) + q(156+ax,54+ay,172+ax,51+ay,159+ax,57+ay,170+ax,55+ay,2) + q(159+ax,57+ay,170+ax,55+ay,161+ax,59+ay,163+ax,59+ay,2) + tri(162+ax,52+ay,165+ax,52+ay,164+ax,59+ay,0) + line(156+ax,54+ay,172+ax,51+ay,7) + line(156+ax,54+ay,157+ax,49+ay,7) + line(169+ax,47+ay,157+ax,49+ay,7) + line(169+ax,47+ay,172+ax,51+ay,7) + + q(133+ax,44+ay,142+ax,46+ay,133+ax,47+ay,142+ax,47+ay,6) + q(133+ax,47+ay,142+ax,47+ay,134+ax,49+ay,142+ax,48+ay,6) + q(134+ax,49+ay,142+ax,48+ay,131+ax,56+ay,139+ax,53+ay,6) + q(131+ax,56+ay,139+ax,53+ay,126+ax,63+ay,138+ax,57+ay,6) + q(133+ax,52+ay,139+ax,52+ay,133+ax,56+ay,138+ax,58+ay,2) + tri(136+ax,52+ay,138+ax,52+ay,136+ax,57+ay,0) + line(133+ax,52+ay,139+ax,52+ay,7) + line(134+ax,48+ay,133+ax,52+ay,7) + line(134+ax,48+ay,140+ax,50+ay,7) + +-- Highlights + q(154+ax,61+ay,165+ax,61+ay,167+ax,68+ay,174+ax,55+ay,4) + q(120+ax,93+ay,114+ax,86+ay,117+ax,84+ay,114+ax,77+ay,4) + q(116+ax,71+ay,118+ax,79+ay,114+ax,77+ay,117+ax,84+ay,4) + q(116+ax,71+ay,120+ax,67+ay,118+ax,79+ay,123+ax,73+ay,4) + q(118+ax,79+ay,123+ax,73+ay,120+ax,82+ay,123+ax,80+ay,4) + q(120+ax,82+ay,123+ax,80+ay,125+ax,92+ay,127+ax,92+ay,4) + q(120+ax,67+ay,126+ax,63+ay,123+ax,73+ay,127+ax,67+ay,4) + q(123+ax,73+ay,127+ax,67+ay,123+ax,80+ay,133+ax,73+ay,4) + q(126+ax,63+ay,135+ax,59+ay,127+ax,67+ay,136+ax,60+ay,4) + q(135+ax,59+ay,139+ax,53+ay,136+ax,60+ay,144+ax,59+ay,4) + q(141+ax,48+ay,143+ax,52+ay,139+ax,53+ay,144+ax,59+ay,4) + q(141+ax,48+ay,143+ax,52+ay,141+ax,45+ay,144+ax,48+ay,4) + q(145+ax,41+ay,147+ax,42+ay,141+ax,45+ay,144+ax,48+ay,4) + q(149+ax,41+ay,155+ax,43+ay,150+ax,45+ay,155+ax,45+ay,4) +-- Brow + q(154+ax,41+ay,169+ax,36+ay,157+ax,46+ay,174+ax,39+ay,7) + q(135+ax,38+ay,139+ax,39+ay,134+ax,42+ay,136+ax,45+ay,7) + q(139+ax,39+ay,143+ax,42+ay,136+ax,45+ay,141+ax,45+ay,7) + +-- That smile + q(151+ax,82+ay,160+ax,72+ay,159+ax,84+ay,153+ax,88+ay,6) + q(151+ax,82+ay,160+ax,72+ay,159+ax,84+ay,153+ax,88+ay,6) + q(145+ax,86+ay,151+ax,82+ay,146+ax,93+ay,159+ax,84+ay,6) + q(134+ax,91+ay,145+ax,86+ay,138+ax,96+ay,146+ax,93+ay,6) + q(120+ax,91+ay,134+ax,91+ay,123+ax,96+ay,138+ax,96+ay,6) + q(119+ax,92+ay,134+ax,92+ay,123+ax,96+ay,138+ax,96+ay,12) + q(134+ax,92+ay,145+ax,87+ay,138+ax,96+ay,146+ax,92+ay,12) + q(145+ax,87+ay,151+ax,83+ay,146+ax,92+ay,153+ax,86+ay,12) + q(151+ax,83+ay,158+ax,76+ay,153+ax,86+ay,157+ax,84+ay,12) + q(119+ax,92+ay,134+ax,92+ay,123+ax,94+ay,138+ax,94+ay,13) + q(134+ax,92+ay,145+ax,87+ay,138+ax,94+ay,146+ax,89+ay,13) + q(145+ax,87+ay,151+ax,83+ay,146+ax,89+ay,153+ax,83+ay,13) + q(151+ax,83+ay,158+ax,76+ay,153+ax,83+ay,156+ax,79+ay,13) + line(158+ax,69+ay,161+ax,67+ay,6) + line(163+ax,70+ay,161+ax,67+ay,6) +-- Can someone do a spline() please?) + line(115+ax,75+ay,117+ax,77+ay,6) + line(117+ax,77+ay,121+ax,80+ay,7) + line(121+ax,80+ay,128+ax,77+ay,7) + line(128+ax,77+ay,130+ax,75+ay,6) + line(121+ax,80+ay,122+ax,84+ay,7) + line(122+ax,84+ay,123+ax,88+ay,7) + line(123+ax,88+ay,124+ax,90+ay,7) +end + +function armb(ax,ay) + circ(126+ax,114+ay,22,6) + circ(123+ax,118+ay,22,6) + circ(124+ax,118+ay,22,5) +end + +function armf(ax,ay) + circ(224+ax,112+ay,22,4) + circ(229+ax,112+ay,22,6) + circ(227+ax,113+ay,22,5) + circ(228+ax,115+ay,22,5) + circ(229+ax,117+ay,22,5) + circ(230+ax,119+ay,22,5) + circ(231+ax,121+ay,22,5) + circ(217+ax,102+ay,9,4) + circ(219+ax,105+ay,10,5) +end + +function background() + for i=0,30 do + rect(-12+homes[2*i],100+homes[2*i+1],38,50,0) + rect(-14+homes[2*i],90+homes[2*i+1],42,15,10) + rect(-14+homes[2*i],90+homes[2*i+1],42,12,11) + --rect(2+homes[2*i],95+homes[2*i+1],6,8,0) + rect(-6+homes[2*i],108+homes[2*i+1],6,8,2) +-- rect(16+homes[2*i],118+homes[2*i+1],6,8,2) + rect(16+homes[2*i],108+homes[2*i+1],6,8,2) + end +end + +function TIC() + t=time()//60 + cls(8) + vbank(0) + background() + print("Good boys and girls",5,9,0) + print("Good boys and girls",4,8,2) + print("shouldn't use GOTO in",5,17,0) + print("shouldn't use GOTO in",4,16,2) + print("their code, or else",5,25,0) + print("their code, or else",4,24,2) + print("the Krampus will pay",5,33,0) + print("the Krampus will pay",4,32,2) + print("them a visit!",5,41,0) + print("them a visit!",4,40,2) + armb(0,15-abs(2*sin(t/20))) + earr(0,-abs(2*sin(t/20)),sin(t/5),sin(t/5)) + mane(0,-abs(2*sin(t/20)),3*cos(t/20),3*cos(t/20)) + armf(0,15-abs(2*sin(t/20))) + earl(0,-abs(2*sin(t/20)),sin(t/5),sin(t/5)) + face(0,-abs(2*sin(t/20))) + if t%2==0 then createsnow() end + movesnow() +end + diff --git a/shader_file_sources/2023_12_17_shader_jam_private_birthday/birthday-jam_riminapumpuli.glsl b/shader_file_sources/2023_12_17_shader_jam_private_birthday/birthday-jam_riminapumpuli.glsl new file mode 100644 index 000000000..4ec21dab0 --- /dev/null +++ b/shader_file_sources/2023_12_17_shader_jam_private_birthday/birthday-jam_riminapumpuli.glsl @@ -0,0 +1,198 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texKolmio; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float E = 0.001; +const float FAR = 100.0; +const int STEPS = 128; + +float time = fGlobalTime; +float fft = texture(texFFTIntegrated, 0.2).r; +float fft2 = texture(texFFTSmoothed, 0.2).r; +vec3 glow = vec3(0); + + +float sphere(vec3 p, float r){ + return length(p)-r; +} + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d, 0.0))+min(max(d.x, max(d.y, d.z)), 0.0); +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(-p.y, p.x); +} + +float scene(vec3 p, vec3 ro, vec3 rd){ + vec3 pp = p; + float fpp= texture(texFFT,pow(abs(p.z*.09),1.5)).r; + float keski = sphere(pp,.8*(.5+fpp*3)); + float pallo = box((pp-ro)*rd,vec3(1)); + rot(pp.xy, time*0.1); + rot(pp.yz, time*0.05); + for(int i = 0; i < 7; ++i){ + pp = abs(pp)-vec3(0.8, 0.3, 0.8); + rot(pp.xy, time*0.05+fft*0.1); + rot(pp.yz, time*0.01+fft*0.1); + pp = abs(pp)-vec3(0.1*i, 0.3, 0.1*i); + } + + + float d = distance(p, pp); + float sp = box(pp, vec3(d*0.05, d*0.04, d*0.02)*(vec3(1+fft2*40))); + + vec3 g = vec3(.1)*0.01 / (abs(sp)+0.05); + glow += g; + + sp = abs(sp*0.5); + + return max(min(sp,keski),-pallo); +} + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + for(int i = 0; i < STEPS; ++i){ + float d = scene(p,ro,rd); + t += d; + p = ro + rd * t; + if(d <= E || t >= FAR){ + break; + } + } + return t; +} + +vec3 hsl2rgb( in vec3 c ) +{ + vec3 rgb = clamp( abs(mod(c.x*6.0+vec3(0.0,4.0,2.0),6.0)-3.0)-1.0, 0.0, 1.0 ); + return c.z + c.y * (rgb-0.5)*(1.0-abs(2.0*c.z-1.0)); +} + +vec3 HueShift (in vec3 Color, in float Shift) +{ + vec3 P = vec3(0.55735)*dot(vec3(0.55735),Color); + vec3 U = Color-P; + vec3 V = cross(vec3(0.55735),U); + Color = U*cos(Shift*6.2832) + V*sin(Shift*6.2832) + P; + return vec3(Color); +} + +vec3 rgb2hsl( in vec3 c ){ + float h = 0.0; + float s = 0.0; + float l = 0.0; + float r = c.r; + float g = c.g; + float b = c.b; + float cMin = min( r, min( g, b ) ); + float cMax = max( r, max( g, b ) ); + l = ( cMax + cMin ) / 2.0; + if ( cMax > cMin ) { + float cDelta = cMax - cMin; + //s = l < .05 ? cDelta / ( cMax + cMin ) : cDelta / ( 2.0 - ( cMax + cMin ) ); Original + s = l < .0 ? cDelta / ( cMax + cMin ) : cDelta / ( 2.0 - ( cMax + cMin ) ); + if ( r == cMax ) { + h = ( g - b ) / cDelta; + } else if ( g == cMax ) { + h = 2.0 + ( b - r ) / cDelta; + } else { + h = 4.0 + ( r - g ) / cDelta; + } + if ( h < 0.0) { + h += 6.0; + } + h = h / 6.0; + } + return vec3( h, s, l ); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 zom = uv; + vec2 kzom = uv; + //uv=floor(uv/(sin(time*.2)*.02))*(sin(time*.2)*.02); + + vec2 q = uv -0.5; + q /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(2+sin(time*.05)*4, 0, cos(time*.05)*4); + vec3 rt = vec3(0, 0, 0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0, 1, 0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z) * vec3(q, 1/radians(90.0))); + + float t = march(ro, rd); + vec3 p = ro+rd*t; + float dis = distance(ro,p); + + float fy = texture(texFFTSmoothed, pow(abs(p.y*.4),3)*.2).r*20; + float fx = texture(texFFTSmoothed, pow(abs(p.x*.4),3)*.2).r*20; + float fz = texture(texFFTSmoothed, 0.08).r*10; + + + zom-=vec2(.5); + zom*=vec2(1-fz*2); + zom+=vec2(.5); + + kzom-=vec2(.75); + kzom*=vec2(1-fz*8); + kzom+=vec2(.75); + + + vec3 col = vec3(0.,0.,0.02); + if(t < FAR){ + col = vec3(0.1); + } + + glow*=vec3(abs(rd.x*2+.5*sign(rd.y*4+5)),0.2, (rd.y*4+2)+0.6); + + col += dis*0.02; + col += glow*(.4+(fy*fx)*4); + + vec3 hs = rgb2hsl(col); + + hs.x+=time*.02+dis*.04; + hs.y=0.5; + hs.z-=dis*.1; + hs.z=clamp(hs.z,0,1); + + col = hsl2rgb(hs); + + col = smoothstep(-0.1, 1.2, col); + + vec3 prev = texture(texPreviousFrame, zom).rgb; + + col = mix(col, prev, 0.2)+prev*.2; + //col *= vec3(kolmio); + + out_color =vec4(col, 1); + +} \ No newline at end of file diff --git a/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..37a5c846e --- /dev/null +++ b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,97 @@ +-- aldroid here! +-- happy holidays everyone, not plannin +-- anything festive visually but <3 +-- hope you are all feeling good +-- love to my fellow coders, to violet +-- for hosting, and YOU + +-- let's start with tcc extra day 8 + +n,m,r = 40,200,0.3 +x,v,t=0,0,0,0 +S,C=math.sin,math.cos +vbank(0) +for i=0,15 do +poke(0x3fc0+i*3,i*255/15) +poke(0x3fc1+i*3,i*255/15) +poke(0x3fc2+i*3,math.max(0,i-6)*255/10) +end +poke(0x03FF8,0) +vbank(1) +poke(0x3fC0,0) +poke(0x3fC1,0) +poke(0x3fC2,0) +cls() + +snoz={} + +for i=1,30 do + snoz[i]={math.random(0,240),math.random(0,136)} +end + +function TIC() + vbank(1) + cls(0) + + + + for i=1,#snoz do + circ(snoz[i][1],snoz[i][2],1,12) + snoz[i][2]=(snoz[i][2]+2) + snoz[i][1]=snoz[i][1]+math.sin(i/2+t) + if snoz[i][2] > 136 then + snoz[i] = {math.random(0,240),-2} + end + end + + circ(120,50,11,13) + circ(120,50,10,12) + elli(120,80,18,21,13) + elli(120,80,17,20,12) + circ(120,56,1,15) + circ(117,55,1,15) + circ(123,55,1,15) + + circ(120,70,1,15) + circ(120,75,1,15) + circ(120,80,1,15) + + tri(118,50,122,50,120,54,3) + + circ(117,48,1,15) + circ(123,48,1,15) + + rect(113,40,14,2,15) + rect(116,32,8,8,15) + + arof=time()//200 % 2 == 0 and 10 or -10 + line(110,71,100,71+arof,1) + line(110,70,100,70+arof,1) + line(130,71,140,71-arof,1) + line(130,70,140,70-arof,1) + + vbank(0) + for x1=2,238 do for y1=2,133 do + dx,dy=x1-120,y1-68 + mg=math.abs(dx)+math.abs(dy) + dx=dx/mg + dy=dy/mg + x,y=x1-2*dx,y1-2*dy + pix(x1,y1,( + pix(x-1,y-1) + pix(x,y-1) + pix(x+1,y-1) + + pix(x-1,y) + pix(x,y) + pix(x+1,y) + + pix(x-1,y+1) + pix(x,y+1) + pix(x+1,y+1) + )/9) + end end + + for i=0,n do for j=0,m do + a,b=i+v,r*i+x + u=S(a)+S(b) + v=C(a)+C(b) + x=u+t + fp = math.atan2(u,v) + rd=35 +fft(10*fp)*50 + pix(120+u*rd,68+v*rd,1+i%15+j/36+fft(10*fp)*10) + end end + t = t+.025 +end diff --git a/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..386b7d1b8 --- /dev/null +++ b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,111 @@ +-- gasman is cooking some pasta because +-- he didn't time this very well + +-- greetings to my fellow bytejammers +-- suule, aldroid, jtruk, nico and^ +-- tobach +-- and of course raccoonviolet! + +for i=1,8 do + poke(16320+i*3,128+16*i) + poke(16321+i*3,32+16*i) + poke(16322+i*3,32+16*i) +end +i=9 + poke(16320+i*3,244) + poke(16321+i*3,244) + poke(16322+i*3,124) +i=10 + poke(16320+i*3,0) + poke(16321+i*3,184) + poke(16322+i*3,24) + +function BDR(y) + poke(16320,y*0.5) + poke(16321,y*0.7) + poke(16322,y) +end + +zoom=70 + +snow={} +for i=0,100 do + snow[i]={ + math.random(),math.random(), + math.random() + } +end + +function TIC() + cls() + t=time() + rx=0.3 + rz=0.7 + for f=0,2 do + tr=t/2678+f*math.pi*2/3 + for k=0,1,0.05 do + for i=0,2*math.pi,0.02 do + r=math.sin(i*6)*k + a=i + x0=r*math.sin(a) + z0=r*math.cos(a) + y0=-math.sin(a/10+0.2+math.abs(r)*2)*0.7 + x1=x0*math.cos(rz)+y0*math.sin(rz)-1 + y1=y0*math.cos(rz)-x0*math.sin(rz) + + x=x1*math.cos(tr)+z0*math.sin(tr) + z=z0*math.cos(tr)-x1*math.sin(tr) + y=y1*math.cos(rx)+z*math.sin(rx) + pix(120+zoom*x,100+zoom*y,k*7+1) + + end + end + + for k=0,1,0.1 do + for i=0,2*math.pi,0.2 do + + r=k*0.3 + a=i + x0=r*math.sin(a) + z0=r*math.cos(a) + y0=-0.6-math.cos(k*math.pi/2)/5 + x1=x0*math.cos(rz)+y0*math.sin(rz)-1 + y1=y0*math.cos(rz)-x0*math.sin(rz) + + x=x1*math.cos(tr)+z0*math.sin(tr) + z=z0*math.cos(tr)-x1*math.sin(tr) + y=y1*math.cos(rx)+z*math.sin(rx) + pix(120+zoom*x,100+zoom*y,9) + end + end + + for k=0,1,0.04 do + r=0 + a=0 + x0=0 + z0=0 + y0=-math.sin(0.2)*0.7 + x1=(x0*math.cos(rz)+y0*math.sin(rz)-1)*k + y1=y0*math.cos(rz)-x0*math.sin(rz)+(1-math.sqrt(k))/2 + + x=x1*math.cos(tr)+z0*math.sin(tr) + z=z0*math.cos(tr)-x1*math.sin(tr) + y=y1*math.cos(rx)+z*math.sin(rx) + pix(120+zoom*x,100+zoom*y,10) + + end + + end + + for i=0,100 do + s=snow[i] + x1=(s[1]-0.5)*5 + z0=(s[2]-0.5)*5 + y1=((s[3]+t/1234)%1)-1 + x=x1*math.cos(tr)+z0*math.sin(tr) + z=z0*math.cos(tr)-x1*math.sin(tr) + y=y1*math.cos(rx)+z*math.sin(rx) + pix(120+zoom*x,100+zoom*y,13) + end + +end diff --git a/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..893e2c685 --- /dev/null +++ b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,163 @@ +-- ~~~ Tinsel Greets ~~~ +-- Violet (thanks for running) +-- Aldroid, ^ Suule, Nico +-- gasman, ToBach, Mantratronic :) + +T=0 +S=math.sin +C=math.cos +R=math.random +A=math.abs +PI=math.pi +Z=0 +TREES={} +Y=0 +BLINK=0 +MAX_BLINK=30 + +function BDR(y) + vbank(0) + local r,g,b=25,40+y*2,255 + if y>72-Y*2 then + local f=.9+((y-72)/68)*.1 + r,g,b=230*f,230*f,255*f + end + setRGB(15,r,g,b) +end + +function setRGB(i,r,g,b) + poke(16320+i*3,r) + poke(16320+i*3+1,g) + poke(16320+i*3+2,b) +end + +function BOOT() + vbank(0) + setRGB(0,0,0,0) + vbank(1) + setRGB(1,0,0,0) +end + +function TIC() + vbank(0) + cls(15) + + drawTrees() + + if (T%2==0) then + local x=R(-30,30) + if x<-.05 or x>.05 then + -- don't make a crashable tree! + addTree(x,0,Z+1) + end + end + + local tDeer=T/10 + drawDeer(120-40,85,1,false,tDeer) + drawDeer(120+40,85,-1,true,tDeer+PI/2) + + -- Beard time + for i=-5,5 do + local x=120+i*30 + local y=100+C(i/5)*40 + circ(x,y,30,12) + local y=24-C(i/5)*40 + circ(x,y+10,30,12) + end + for i=-5,5 do + local x=120+i*30 + local y=28-C(i/5)*40 + circ(x,y,30,2) + end + + Y=-5+S(T/100)*5 + + T=T+1 + Z=Z+.005 + + vbank(1) + cls(1) + if BLINK>0 then + BLINK=BLINK-1 + elseif R(200)==1 then + BLINK=MAX_BLINK + end + + local h=60*(MAX_BLINK-BLINK)/MAX_BLINK + elli(120-40,68,100,h,0) + elli(120+40,68,100,h,0) + elli(120,160,60,60,1) +end + +function drawTrees() + for i=1,#TREES do + local t=TREES[i] + if t.alive then + drawTree(t) + end + end +end + +function addTree(x,y,z) + TREES[getNextTreeI()]={ + x=x,y=y,z=z,alive=true + } +end + +function getNextTreeI() + for i=1,#TREES do + if not TREES[i].alive then + return i + end + end + return #TREES+1 +end + +function drawTree(t) + local hu,hd,w=2.5,1,.8 + local xt,yt,zt=P(t.x,t.y-hu,t.z) + local xbl,ybl,zbl=P(t.x-w,t.y+hd,t.z) + local xbr,ybr,zbl=P(t.x+w,t.y+hd,t.z) + + -- cull the tree :( + if zt<=0 or xbr<0 or xbl>240 then + t.alive=false + return + end + + local ys=2 + tri(xt,yt-ys,xbl,ybl-ys,xbr,ybr-ys,12) + tri(xt,yt,xbl,ybl,xbr,ybr,6) +end + +function drawDeer(x,yc,fl,rn,m) + local y=yc-A(S(m))*10 + -- shnozz + local yb=S(m+.6)*5 + elli(x+15*fl,y-15+yb,3,3,rn and 2 or 3) + -- head + elli(x+5*fl,y-15+yb,10,20,3) + -- antlers?? + tri(x+5*fl,y-35+yb,x-20*fl,y-40+yb,x-15*fl,y-45+yb,7) + tri(x+5*fl,y-35+yb,x+20*fl,y-40+yb,x+15*fl,y-45+yb,7) + -- body + local yb=S(m+.9)*10 + elli(x,y+yb,10,30,3) + -- tail + tri(x-3*fl,y-20+yb,x-3*fl-5,y-30+yb,x-3*fl+5,y-30+yb,12) + -- front legs + local yb=S(m+.6)*10 + rect(x+4*fl-4,y+2+yb,3,20,3) + local yb=S(m+1.2)*10 + rect(x+4*fl+4,y+2+yb,3,20,3) + -- back legs + local yb=S(m+1.8)*10 + rect(x-5,y+13+yb,3,30,3) + local yb=S(m+2.4)*10 + rect(x+5,y+13+yb,3,30,3) +end + +function P(x,y,z) + local zF=(z-Z)/3 + return 120+x/zF,68+(y-Y)/zF,zF +end \ No newline at end of file diff --git a/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..630412096 --- /dev/null +++ b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,35 @@ +-- hello! + +m=math +cls() +t=0 + +function C(x,a,b) +return m.max(a,m.min(x,b)) +end + +function BOOT() +for i=0,15 do +poke(0x3fc0 +i*3,i*16) +poke(0x3fc0 +i*3 +1,i*8) +poke(0x3fc0 +i*3 +2,i*4) +end +end + +function TIC() +for x=0,239 do +line(x,135,x,134,fft((x+t*5)%255)*10000) +end + +for x=0,239 do +for y=1,134 do +dx=1.1*(135-y)/135*m.sin(time()/100+y/20) +c=pix(x,y-1)+ +pix(x-1,y)+pix(x+1,y)+ +pix(x-1,y+1)+pix(x,y+1)+pix(x+1,y+1) +c=C(c/5.75,0,15) +pix(x+dx,y-1,c) +end +end +t=t+fft(5) +end diff --git a/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/nico.lua b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/nico.lua new file mode 100644 index 000000000..fb421097a --- /dev/null +++ b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/nico.lua @@ -0,0 +1,32 @@ +-- "Spirals" by Nico +-- I have spirals on my mind +-- I have spirals in my mind +-- Be careful not to stare too long +-- you might get spirals too + +-- greets to everybody in the demoscene and beyond +-- also to mesmer apparently + +function TIC()t=time()/200 +cx = 240/2 +cy = 138/2 +m = math + +for y=0,136 do for x=0,240 do + x2 = x-cx + y2 = y-cy + distance = m.sqrt(m.pow(x2,2)+m.pow(y2,2)) + angle = m.atan(x2,y2) + col = m.sin(0.5 * distance + angle + t) + rev = m.sin(-0.5 * distance + angle + t) + c = 0 + if rev > 0.4 then + c = 7 + elseif col > 0.4 then + c = 4 + elseif rev*col > 0.8 then + c = 12 + end + + pix(x,y,c) +end end end \ No newline at end of file diff --git a/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/suule.lua b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/suule.lua new file mode 100644 index 000000000..cd945544f --- /dev/null +++ b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/suule.lua @@ -0,0 +1,259 @@ +-- HEEEEEEEEEEY +-- I'm having a bit of a cold so nothing +-- Too fancy today! +-- Greetz to Gasman, Aldroid, Jtruk, +-- Nico and Tobach! And to you +-- Our deer.. I mean dear viewers ;) + +-- First, let's create some sprites... +-- Because otherwise it won't work! + +sin=math.sin +cos=math.cos +pi=math.pi +abs=math.abs +flr=math.floor +cil=math.ceiling +ran=math.random + +snowdata1={} +snowdata2={} +homedata={} + +sprite0={ +8,0, +8,0, +8,0, +8,0, +8,0, +8,0, +4,0,1,1,3,0, +3,0,3,1,1,0,1,1} +sprite1={ +8,0, +8,0, +8,0, +2,2,6,0, +1,0,3,2,1,12,3,0, +1,0,2,2,1,12,2,4,2,0, +2,0,1,2,2,12,1,4,2,0, +3,0,3,12,2,0} +sprite16={ +2,0,6,1, +8,1, +8,1, +8,1, +8,1, +8,1, +2,0,2,1,4,0, +8,1 } +sprite17={ +1,0,3,2,2,12,2,0, +2,1,4,2,1,12,1,0, +3,1,1,15,2,2,2,0, +6,1,1,2,1,0, +6,1,1,2,1,0, +6,1,1,2,1,15, +1,0,2,1,3,0,1,15,1,1, +7,1,1,0} +sprite2={ +8,0, +7,0,1,1, +8,0, +8,0, +8,0, +8,0, +8,0, +3,0,1,1,4,0 +} +sprite3={ +8,0, +8,0, +1,1,2,0,1,1,4,0, +1,0,2,1,5,0, +2,0,3,1,3,0, +2,0,5,1,1,0, +1,0,5,1,2,0, +4,1,4,0 +} +sprite5={ +8,0, +8,0, +1,1,2,0,1,1,4,0, +1,0,2,1,5,0, +2,0,3,1,2,0,1,2, +2,0,5,1,1,0, +1,0,5,1,2,0, +4,1,4,0 +} +sprite18={ +4,0,4,1, +4,0,4,1, +3,0,5,1, +3,0,3,1,2,0, +2,0,4,1,2,0, +1,0,2,1,1,0,1,1,3,0, +2,1,1,0,1,1,4,0, +8,0 +} +sprite19={ +5,1,3,0, +6,1,2,0, +2,1,1,0,2,1,1,0,1,1,1,0, +4,0,1,1,2,0,1,1, +3,0,1,1,4,0, +8,0, +8,0, +8,0 +} +sprite32={ +8,0, +8,0, +8,0, +8,0, +2,0,1,5,1,0,1,7,3,0, +1,0,1,3,1,2,1,6,1,2,1,1,2,0, +1,0,1,5,3,6,1,7,2,0, +1,0,1,2,1,1,1,7,2,1,2,0 +} + +-- There! All sprites gotten by power +-- of precalc :D + +function clamp(a1,l1,l2) + if a1 < l1 then return l1 end + if a1 > l2 then return l2 else return a1 end +end + +function readsprite(sprarr,id) + local con=0 + for i=0,#sprarr//2-1 do + local rep=sprarr[i*2+1] + local col=sprarr[i*2+2] + for j=1,rep do + poke4(0x8000+con+id*64,col) + con=con+1 + end + end +end + +function BOOT() + readsprite(sprite0,0) + readsprite(sprite1,1) + readsprite(sprite16,16) + readsprite(sprite17,17) + readsprite(sprite2,2) + readsprite(sprite2,4) + readsprite(sprite3,3) + readsprite(sprite5,5) + readsprite(sprite18,18) + readsprite(sprite19,19) + readsprite(sprite18,20) + readsprite(sprite19,21) + readsprite(sprite32,32) + for i=1,2 do + snowdata1[i]={} + snowdata2[i]={} + end + for i=0,120 do + snowdata1[1][i]=i*2 + snowdata1[2][i]=ran(160)-40 + snowdata2[1][i]=i*2+1 + snowdata2[2][i]=ran(160)-20 + end + for i=1,5 do + homedata[i]={} + end + homedata[1][1]=ran(30) + homedata[2][1]=100+0.5+2*sin(homedata[1][1]/20) + homedata[3][1]=30+ran(10) + homedata[4][1]=25+ran(10) + homedata[5][1]=4+ran(5) + for i=2,8 do + homedata[1][i]=homedata[1][i-1]+homedata[3][i-1]+5+ran(10) + homedata[2][i]=100+0.5+2*sin(homedata[1][i]/20) + homedata[3][i]=30+ran(10) + homedata[4][i]=25+ran(10) + homedata[5][i]=4+ran(5) + end +end + +function home(x,y,width,height,chim) + rect(x+2,y,width-4,height,1) + rect(x+6,y+3*height/5,4,height/4,0) + rect(x+width-10,y+3*height/5,4,height/4,0) + rect(x+width/2-2,y+3*height/5,4,height/4,0) + for i=0,width do + if i==0 or i==width then ypop=1 else ypop=0 end + line(x+i,y+ypop,x+i,y+height/2+2*sin(i),13) + line(x+i,y+ypop,x+i,y+height/3+2*sin(i),12) + end +end + +function drawhomes(tim) + for i=0,240 do + line(i,100+10*sin((tim*3+i)/20),i,136,14) + line(i,110+10*sin((tim*3+i)/40),i,136,13) + end + for i=1,8 do + home(homedata[1][i],homedata[2][i],homedata[3][i],homedata[4][i],homedata[5][i]) + if homedata[1][i]>-100 then + homedata[1][i]=homedata[1][i]-2 + else + homedata[1][i]=350 + end + end +end +-- And done again :) Now we can code + +function bob(tim,dil,ran,sht) + return(flr(0.5+ran*sin((tim+sht)*pi/dil))) +end + +function snow() + for i=0,120 do + pix(snowdata1[1][i],snowdata1[2][i],13) + if snowdata1[2][i]<150 then + snowdata1[2][i]=snowdata1[2][i]+2 + else + snowdata1[2][i]=-5 + end + if snowdata1[1][i]>-5 then + snowdata1[1][i]=snowdata1[1][i]-5 + else + snowdata1[1][i]=245 + end + end + for i=0,120 do + pix(snowdata2[1][i],snowdata2[2][i],12) + if snowdata2[2][i]<150 then + snowdata2[2][i]=snowdata2[2][i]+2 + else + snowdata2[2][i]=-5 + end + if snowdata2[1][i]>-5 then + snowdata2[1][i]=snowdata2[1][i]-4 + else + snowdata2[1][i]=245 + end + end +end + +function TIC() + t=time()//30 + vbank(0) + cls(0) + spr(0,50,56+bob(t,60,4,0),0,1,0,0,2,2) + spr(2,68,58+bob(t,60,4,0),0,1,0,0,2,2) + spr(2,84,57+bob(t,60,4,12),0,1,0,0,2,2) + spr(2,100,56+bob(t,60,4,3),0,1,0,0,2,2) + spr(2,116,55+bob(t,60,4,-6),0,1,0,0,2,2) + spr(4,132,54+bob(t,60,4,3),0,1,0,0,2,2) + vbank(1) + cls(0) + drawhomes(t) + snow() + for i=0,240 do + line(i,130+5*sin((t*3+i)/60),i,136,12) + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..274d2fad3 --- /dev/null +++ b/shader_file_sources/2023_12_18_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,76 @@ +--greetingz!! crimbo jam time +--greetz to gasman, nico, alia +--aldroid, suule and violet :3 + +snow={} +sin=math.sin +cos=math.cos +flr=math.floor +for i=1,200 do + snow[i]={math.random()*120,math.random()*120} +end +function TIC() + cls() + t=time()/100 + + rect(64,90,120,64,12) + for i=-16,16 do + elli(120+i*4,88+sin(i/3+1)*sin(i/7)*8,6,5+sin(i/3)*4+8,12) + end + + rect(107,68,8,11,1) + for i=0,4 do + tri(95+i*2,68-i*8,109,50-i*8,124-i*2,68-i*8,7) + end + for i=0,20 do + circ(110+sin(i)*i/2,25+i*2,1,t+i) + end + circ(109,17,1,4) + + for i=0,2 do + circ(90,78-i*10,9-i*2,12) + circb(90,78-i*10,9-i*2,13) + end + rect(85,52,11,2,15) + rect(87,44,7,8,15) + line(87,50,93,50,2) + line(90,58,93,59,3) + line(82,67,78,60,1) + line(98,67,102,60,1) + + for i=0,38 do + line(114+i,56,124+i,40,i%4) + end + rect(124,48,44,30,1) + rect(124,44,16,34,2) + for i=0,38 do + line(134+i,56,124+i,40,i%4) + end + rect(128,66,6,12,1) + + for i=1,200 do + pix((snow[i][1]+sin(t/4+i))%120+60,(snow[i][2]+t*(i/2+1)/32)%120,12) + end + cols={7,2,12,2} + text="MERRY XMAS" + for i=0,132 do + circb(120,58,190-i,cols[flr(i/8+t/8)%4+1]) + circb(120+1,58,190-i,cols[flr(i/8+t/8)%4+1]) + end + --bugger it i'll figure out the base + --later on :) + for i=-46,46 do + line(120+i,102+sin(i/23+1.6)*16,120+i,130+sin(i/22+1.6)*4,1) + end + for i=1,#text do + c=text:sub(i,i) + print(c,84+i*6,115+sin(i/4+0.2)*8,4) + end + for i=0,2 do + circb(120,58,58-i,13) + circb(120-1,58,58-i,13) + end + for i=2,9 do + circ(100+40-sin(i/8-1.6)*24,82-40-cos(i/8-1.6)*24,2,12) + end +end \ No newline at end of file diff --git a/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..b8260e3f7 --- /dev/null +++ b/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,102 @@ +-- merry solstice everyone! gasman here +-- Greetings to mantratronic, aldroid, +-- the tic-80 massive and livecoders +-- everywhere! + +w=0.3 +function rv() + return math.random()*.1-.05 +end + +function BDR(y) + poke(16320,32+64+y/2) + poke(16321,y) + poke(16322,0) +end + +stone1={ + {-1,-w+rv()-1,-w+rv()}, + {-1,-w+rv()-1,w+rv()}, + {-1,w+rv()-1,w+rv()}, + {-1,w+rv()-1,-w+rv()}, + {0,-w+rv()-1,-w+rv()}, + {0,-w+rv()-1,w+rv()}, + {0,w+rv()-1,w+rv()}, + {0,w+rv()-1,-w+rv()}, + {1,-w+rv()-1,-w+rv()}, + {1,-w+rv()-1,w+rv()}, + {1,w+rv()-1,w+rv()}, + {1,w+rv()-1,-w+rv()} +} + +-- TIL lua doesn't support unary plus. +-- wtf?!?!? +stone2={ + {-1-w,-1,-w}, + {-1-w,-1,w}, + {-1+w,-1,w}, + {-1+w,-1,-w}, + {-1-w,0,-w}, + {-1-w,0,w}, + {-1+w,0,w}, + {-1+w,0,-w}, + {-1-w,1.5,-w}, + {-1-w,1.5,w}, + {-1+w,1.5,w}, + {-1+w,1.5,-w} +} + +stone3={ + {1-w,-1,-w}, + {1-w,-1,w}, + {1+w,-1,w}, + {1+w,-1,-w}, + {1-w,0,-w}, + {1-w,0,w}, + {1+w,0,w}, + {1+w,0,-w}, + {1-w,1.5,-w}, + {1-w,1.5,w}, + {1+w,1.5,w}, + {1+w,1.5,-w} +} + +function drawstone(v0,vlen,rx,ry,c) + v1={} + for i=1,vlen do + v=v0[i] + v1a={ + v[1]*math.cos(ry)+v[3]*math.sin(ry), + v[2], + v[3]*math.cos(ry)-v[1]*math.sin(ry) + } + v1[i]={ + v1a[1], + v1a[2]*math.cos(rx)+v1a[3]*math.sin(rx), + v1a[3]*math.cos(rx)-v1a[2]*math.sin(rx) + } + end + for i=1,vlen-1 do + for j=i,vlen do + a=v1[i] + b=v1[j] + line( + 120+40*a[1],68+40*a[2], + 120+40*b[1],68+40*b[2], + c + ) + end + end +end + +function TIC() + t=time() + cls() + circ(120,68,60,4) + rect(0,80,240,100,5) + ry=math.sin(t/1234) + rx=math.sin(t/1345)/4+0.5 + drawstone(stone1,12,rx,ry,8) + drawstone(stone2,12,rx,ry,9) + drawstone(stone3,12,rx,ry,10) +end diff --git a/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..9ad2ac793 --- /dev/null +++ b/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,95 @@ +M=math +S=M.sin +C=M.cos +PI=M.pi +TAU=M.pi*2 +T=0 +facc=0 + +function BDR(y) + vbank(0) + for i=1,15 do + local a=16320+i*3 + local r=i/15 + local g=.5+S(T*.012)*.5 + local b=.5+S(y*.01+T*.05)*.5 + poke(a,r*255) + poke(a+1,g*255) + poke(a+2,b*255) + end + vbank(1) + for i=1,15 do + local a=16320+i*3 + local o=(((y+T*2)//20)%2==0)and 0 or 1 + local r=1 + local g=o + local b=o + poke(a,r*255) + poke(a+1,g*255) + poke(a+2,b*255) + end +end + +function TIC() + vbank(0) + local f=fft(0) + facc=facc+f + + for y=0,136 do + for x=0,240 do + c=S(((x+(S(y)*2)//1)~(y+(S(x)*2)//1)+(S(T*.05)*20)//1)*.05)*(S(T*.02)*15) + cd=((120-x)^2+(68-y)^2)^.5 + cd=S(cd*.05)*3 + pix(x,y,1+(c+cd)%15) + end + end + local y=30 + local txts={"Team","Monday","Night","Bytes"} + local s=3 + local sh=1 + for i,txt in ipairs(txts) do + w=print(txt,0,140,0,false,s) + local x=120-w/2+S(i+T*.04)*10 + print(txt,x+sh,y+sh,0,false,s) + print(txt,x,y,12,false,s) + y=y+24 + end + facc=facc*.95 + + vbank(1) + cls(1) + local ps=5 + local io=.1 + for i=-1,1,io do + local w=math.abs(1+(i*10)) + a={} + local o=T*.1+i + for p=0,ps do + a[p]=S(o+p) + end + + for p=0,ps do + local zs=S(T*.1+i) + local po=(p+1)%ps + if a[po]>a[p] then + x1,y1,z1=P(a[p]*w,i,zs) + x2,y2,z2=P(a[po]*w,i+io,zs) + rect(x1,y1,(x2-x1),y2-y1,p%2) + end + end + end + + for y=0,135 do + if math.random()<.1 then + rect(0,y,240,3,0) + end + end + + T=T+1 +end + +function P(x,y,z) + local zF=1/(5+z) + local m=10 + return 120+m*x/zF,68+m*y/zF,zF +end \ No newline at end of file diff --git a/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..d98bfd963 --- /dev/null +++ b/shader_file_sources/2023_12_22_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,131 @@ +-- mt testing 1...2..37..68 +m=math +s=m.sin +function SCN(y) + vbank(0) + if (t/5)%1 < .5 then + poke(0x3ff9, 10*fftn[(y+t)//1%255+1]) + poke(0x3ffa, 3*s(y+t)*fftn[20]) + end + rs=s(t/100 + y/130)+1 + gs=s(t/100+m.pi*2/3 + y/130)+1 + bs=s(t/100+m.pi*4/3 + y/130)+1 + for i=0,15 do + if (t/50)%1 < .5 then + j=15-i + else + j=i + end + poke(0x3fc0+i*3,128*j/15*rs) + poke(0x3fc0+i*3+1,128*j/15*gs) + poke(0x3fc0+i*3+2,128*j/15*bs) + end + vbank(1) + poke(0x3ff9, 10*fftn[(y+t)//1%255+1]) + --poke(0x3ffa, 3*s(y+t)) +end + +fftm={} +fftn={} +ffts={} + +function BOOT() +for i=0,255 do +fftm[i]=0 +fftn[i]=0 +ffts[i]=0 +end +end + +function TIC()t=time()/500 +for i=0,255 do +if fft(i)>fftm[i] then +fftm[i]=fft(i) +end +fftn[i]=fft(i)/fftm[i] +ffts[i]=ffts[i]+fft(i) +end + +vbank(0) +--[[ +for y=0,136 do for x=0,240 do +pix(x,y,(x+y)>>3) +end +end +--]] +if fftn[5]>.5 then +cls() +else +--vbank(0) +for i=1,2000 do +x=m.random(240)-1 +y=m.random(136)-1 +c=pix(x,y) +if c == 0 then +else +nx=x-120 +ny=y-68 +d=(nx^2+ny^2)^.5-1 +a=m.atan2(nx,ny) +pix(120+d*m.sin(a),68+d*m.cos(a),c-1) +pix(x,y,0) +end +end + +end + +X,Y={},{} +cx=120 +cy=68 +n=250 +for i=1,n do +d=i/3+30+6*s(t+i/25) +X[i]=cx+d*s(i+t/9) +Y[i]=cy+d*s(i+11+t/9) +circb(X[i],Y[i],2,8) +end +for i=1,n do +for j=1,n do +if i~=j and ((X[j]-X[i])^2+(Y[j]-Y[i])^2)^.5<20*fftn[50]+3*s(t/3+i/5)then +line(X[i],Y[i],X[j],Y[j],i%4+11)end +end +end + + +vbank(1) +for i=1,2000 do +x=m.random(240)-1 +y=m.random(136)-1 +c=pix(x,y) +if c == 0 then +else +dx=4*m.sin(t) +dc=1.2*m.sin(t/2) +pix(x+dx,y+1,c+1) +pix(x,y,0) +end +end +vbank(1) +if (t/15)%1 < .25 then + tex="MNB" +elseif (t/15)%1 < .5 then + tex="TOPLAP" +elseif (t/15)%1 < .75 then + tex="SOLSTICE" +else +tex="" +end +l=print(tex,0,140,15,true,4) +print(tex,120-l/2,(60-m.sin(ffts[20])*40)%136,12,true,4) +end + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2023_12_29_byte_jam_tillage/gasman.lua b/shader_file_sources/2023_12_29_byte_jam_tillage/gasman.lua new file mode 100644 index 000000000..97c829834 --- /dev/null +++ b/shader_file_sources/2023_12_29_byte_jam_tillage/gasman.lua @@ -0,0 +1,136 @@ +-- merry tillagemas everyone!!!!!! +-- gasman here! +-- greetings to all tillage people + +poke(16323,0) +poke(16324,64) +poke(16325,0) + +for i=2,5 do + poke(16320+i*3,8*i) + poke(16321+i*3,128+16*i) + poke(16322+i*3,8*i) +end + +for i=6,9 do + v=i-6 + poke(16320+i*3,128+32*v) + poke(16321+i*3,128+32*v) + poke(16322+i*3,0+16*v) +end + +for i=10,14 do + poke(16320+i*3,128+128*math.sin(i+2)) + poke(16321+i*3,128+128*math.sin(i+3)) + poke(16322+i*3,128+128*math.sin(i+4)) +end + +coords={ + {0,0.4,0}, + {0,-0.4,0}, +} + +for i=0,4 do + a=math.pi*2*i/5 + coords[i+3]={ + math.cos(a)*2,-0.4,math.sin(a)*2 + } +end + +for i=0,4 do + b=math.pi*2*(i/5+1/10) + coords[i+8]={ + math.cos(b),0,math.sin(b) + } +end + +function vline(v1,v2,c) + line( + 120+25*v1[1],68+25*v1[2], + 120+25*v2[1],68+25*v2[2], + c + ) +end + +function vcirc(v1,c) + circ( + 120+25*v1[1],68+25*v1[2], + 3, + c + ) +end + +function vtri(v1,v2,v3,c) + tri( + 120+25*v1[1],68+25*v1[2], + 120+25*v2[1],68+25*v2[2], + 120+25*v3[1],68+25*v3[2], + c + ) +end + +function star(a,b,c,dy,s,k) + v={} + for i=1,12 do + v0=coords[i] + x0=v0[1]*s + y0=v0[2]*s+dy + z0=v0[3]*s + x1=x0*math.cos(c)+z0*math.sin(c) + y1=y0 + z1=z0*math.cos(c)-x0*math.sin(c) + x2=x1 + y2=y1*math.cos(a)+z1*math.sin(a) + z2=z1*math.cos(a)-y1*math.sin(a) + x3=x2*math.cos(b)+z2*math.sin(b) + z3=z2*math.cos(b)-x2*math.sin(b) + y3=y2 + p=1+z3/5 + v[i]={x3*p,y3*p} + end + for i=0,4 do + vtri(v[1],v[i+3],v[i+8],2+k) + vtri(v[2],v[i+3],v[i+8],3+k) + vtri(v[1],v[(i+1)%5+3],v[i+8],4+k) + vtri(v[2],v[(i+1)%5+3],v[i+8],5+k) + end + + if k==0 then + for i=3,12 do + vline(v[1],v[i],1+k) + vline(v[2],v[i],1+k) + end + for i=0,4 do + vline(v[i+3],v[i+8],1) + vline(v[i+8],v[(i+1)%5+3],1) + end + + for i=3,7 do + vcirc(v[i],dy+12) + end + + end +end + +function TIC() + cls() + t=time() + a=t/1234 + b=t/2345 + for i=-2,2 do + if i==2 then + k=4 + else + k=0 + end + star(a,b,4*math.sin((t+i*150)/945),i,0.866-i/3,k) + end +end + +function SCN(y) + y1=y+time()/300 + y2=y+time()/360 + poke(16320,48+32*math.sin(y1/4)) + poke(16321,0) + poke(16322,48+32*math.sin(y2/4)) +end diff --git a/shader_file_sources/2023_12_29_byte_jam_tillage/jtruk.lua b/shader_file_sources/2023_12_29_byte_jam_tillage/jtruk.lua new file mode 100644 index 000000000..4b9643fbc --- /dev/null +++ b/shader_file_sources/2023_12_29_byte_jam_tillage/jtruk.lua @@ -0,0 +1,198 @@ +-- Greets: +-- MrsBeanbag, gasman, Suule +-- Polynomial +-- Crypt, Reality +-- All tillers! + +M=math +R,PI,S,C,A,MIN,MAX=M.random,M.pi,M.sin,M.cos,M.abs,M.min,M.max +TAU=2*PI +SEGS=20 +TURNCHANCE=.05 +ADDCHANCE=.05 +TURN=.05 +WORMS={} +cls() + +PATT={} + +function BOOT() + for i=1,15 do + local f=i/15 + local r=160*f + local g=82*f + local b=45*f + setRGB(i,r,g,b) + end + + vbank(1) + for i=1,15 do + local f=i/15*.25+.75 + local r=255*f + local g=204*f + local b=255*f + setRGB(i,r,g,b) + end + + vbank(0) + cls(1) + for i=0,10 do + print("TILLAGE-FX",6+R(120),3+i*12,3,false,2) + end + for y=0,135 do + for x=0,239 do + PATT[y*240+x]=pix(x,y) + end + end + + cls() + drawMud() +end + +T=0 +function TIC() + if R()0 then + w.a=w.a-aDiff*TURN + end + + local si=1+(w.t%#w.s) + local sl=1+((w.t-1)%#w.s) + local d=A(S(w.t*.2))*2.5 + local seg={ + a=w.a, + x=w.s[sl].x+S(w.a)*d, + y=w.s[sl].y+C(w.a)*d, + } + if (seg.x<-40 or seg.x>280 or seg.y<-40 or seg.y>176) then + w.alive=false + end + + w.s[si]=seg + end +end + +function drawWorms() + for i=1,#WORMS do + local w=WORMS[i] + + local iSegs=MIN(#w.s,w.t) + for i=1,iSegs do + local seg=w.s[i] + local c=1+((i-w.t)%#w.s)%15 + circ(seg.x,seg.y,3+S(i)*1,c) + end + + local ish=1+(w.t%#w.s) + circ(w.s[ish].x,w.s[ish].y,4,1) + end +end + +function munchWorms() + for i=1,#WORMS do + local w=WORMS[i] + local si=1+((w.t-1)%#w.s) + local s=w.s[si] + local width=1.5 + + for i=-width,width do + local digx=(s.x+C(w.a)*i)//1 + local digy=(s.y-S(w.a)*i)//1 + if digx>=0 and digx<=239 and digy>=0 and digy<=135 then + local a=PATT[digx+digy*240] + pix(digx,digy,MAX(pix(digx,digy)-a,a)) + end + end + end +end + +function getNextWorm() + for i=1,#WORMS do + if not WORMS[i].alive then + return i + end + end + + return #WORMS+1 +end + +function setRGB(i,r,g,b) + poke(16320+i*3,r) + poke(16321+i*3,g) + poke(16322+i*3,b) +end \ No newline at end of file diff --git a/shader_file_sources/2023_12_29_byte_jam_tillage/mrsbeanbag.lua b/shader_file_sources/2023_12_29_byte_jam_tillage/mrsbeanbag.lua new file mode 100644 index 000000000..132e92eec --- /dev/null +++ b/shader_file_sources/2023_12_29_byte_jam_tillage/mrsbeanbag.lua @@ -0,0 +1,51 @@ +-- Mrs Beanbag +q=0 +e=0 +t=0 +function fft(x) +return math.random()/x +end +function TIC() +c=(time()//1000)*73 +for i=-40,239 do +k=(i//20)&1 +line(i,0,i+40,134,k~=0 and 12 or c) +end +elli(100,50,20,30,0) +elli(140,50,20,30,0) +elli(100,50,15,25,12) +elli(140,50,15,25,12) +e=e*.9+fft(1) +circ(105,60-e,8,0) +circ(135,60-e,8,0) +q=q*.8+fft(20)*.2 +for i=80,160 do + y=1-((i-120)/40)^2 + y1=85+y*30*(1-q*16) + y2=90+y*30 + line(i,y1,i,y2,0) + if y1+5 <= y2-5 then + line(i,y1+5,i,y2-5,2) + end +end +s=114+math.sin(time()/320)*10 +rect(104,s,32,6,13) +rectb(104,s,32,6,0) +rect(100,s+5,40,80,4) +rectb(100,s+5,40,80,0) +for i=-1,1 do +for j=-1,1 do +print("T",108+i,12+j+s,1,1,4) +end +end +print("T",108,12+s,3,1,4) +n=.7t=t+1 +cx=math.sin(t*.1)*8 +cy=math.cos(t*.1)*8 +for i=1,729 do +m=n +n=n*73%136-68 +w=(i-t)/99%1 +circ((m+cx)/w+120,(n+cy)/w+68,2,c-4*w) +end +end \ No newline at end of file diff --git a/shader_file_sources/2023_12_29_byte_jam_tillage/suule.lua b/shader_file_sources/2023_12_29_byte_jam_tillage/suule.lua new file mode 100644 index 000000000..03a94e1b2 --- /dev/null +++ b/shader_file_sources/2023_12_29_byte_jam_tillage/suule.lua @@ -0,0 +1,354 @@ +-- HELLO EVERYBODY!!!! +-- I have something fun to show today +-- Mind you I went overboard with code +-- again and the pre-prepared code is +-- 10kb :D, the rest I will finish +-- during the jam! + +-- Greetz to the people in chat and +-- co-participants - MrsBeanbag, +-- Gasman and JTruk! + +sin=math.sin +cos=math.cos +abs=math.abs +pi=math.pi +ins=table.insert +rem=table.remove +l=line + +circles={} +circlec={} + +function BOOT() + for i=1,22 do + circles[i]=i*20 + circlec[i]=1+i%4 + end +end + +-- Let's start with simple stuff + +function q(x1,y1,x2,y2,x3,y3,x4,y4,c) + tri(x1,y1,x2,y2,x3,y3,c) + tri(x2,y2,x3,y3,x4,y4,c) +end + +function clmp(var,lrng,hrng) + if var < lrng then + return lrng + else + if var > hrng then + return hrng + else + return var + end + end +end + +-- And follow with the monster! + +function head(x,y,ax,ay,m,st) + ox=x+ax + oy=y+ay + if st == 0 then + q(ox+m*3,oy-11, ox+m*10,oy-9, ox+m*-3,oy+10, ox+m*17,oy+5, 13) + q(ox+m*-3,oy+10, ox+m*17,oy+5,ox+m*-4+ax*0.5,oy+20, ox+m*14+ax*0.5,oy+20, 14) + q(ox+m*-11,oy+8, ox+m*-3,oy+10, ox+m-17+ax*0.25,oy+20, ox+m*-4+ax*0.5,oy+20, 14) + q(ox+m*-10,oy-10,ox+m*-8,oy-14, ox+m-9,oy-8, ox+m*-4,oy-9, 13) + q(ox+m-15,oy-9, ox+m*-8,oy-14, ox+m*-15,oy-7,ox+m*-10,oy-10, 13) + q(ox+m*-3, oy+10, ox+m*17, oy+5, ox+m*-4+ax*0.5, oy+20, ox+m*14+ax*0.5,oy+20, 14) + q(ox+m*-11, oy+8, ox+m*-3, oy+10, ox+m-17+ax*0.25,oy+20, ox+m*-4+ax*0.5,oy+20, 14) + q(ox+m*-4+ax*0.5, oy+20, ox+m*14+ax*0.5,oy+20, ox+m*-4+ax*0.5, oy+30, ox+m*10+ax*0.5,oy+25, 14) + q(ox+m-17+ax*0.25,oy+20, ox+m*-4+ax*0.5,oy+20, ox+m*-11+ax*0.5,oy+28, ox+m*-4+ax*0.5,oy+30, 14) + elli(ox+m*0,oy,10,11,13) + elli(ox+m*-1,oy-1,9,11,12) + q(ox+m*-11,oy-3, ox+m*-1,oy-3, ox+m*-11,oy+8, ox+m*-1,oy+9,12) + q(ox+m*-22,oy-3, ox+m*-1,oy-3, ox+m*-22,oy+4, ox+m*-8,oy+9,13) + q(ox+m*-22,oy-3, ox+m*-1,oy-3, ox+m*-22,oy+4, ox+m*-7,oy+8,12) + q(ox+m*-27,oy-3,ox+m*-22,oy-3, ox+m*-25,oy+3, ox+m*-22,oy+4,12) + q(ox+m*-27,oy-3,ox+m*-23,oy-3, ox+m*-27,oy+1, ox+m*-23,oy, 15) + -- hair + q(ox+m*-4,oy-14, ox+m*3,oy-12, ox+m*-7,oy-8,ox+m*4,oy-10, 12) + q(ox+m*-8,oy-10, ox+m*-4,oy-14,ox+m*-15,oy-11,ox+m*-7,oy-8, 12) + -- ear + q(ox+m*1,oy-9, ox+m*6,oy-11, ox+m*6,oy-4, ox+m*9,oy-6, 13) + q(ox+m*6,oy-11, ox+m*11,oy-12,ox+m*9,oy-6, ox+m*14,oy-7,12) + q(ox+m*9,oy-6, ox+m*14,oy-7, ox+m*10,oy-4,ox+m*12,oy-4,12) + -- face + l(ox+m*-11,oy-4,ox+m*-10,oy-4,14) + l(ox+m*-13,oy+6,ox+m*-10,oy+6,14) + l(ox+m*-10,oy+6,ox+m*-8,oy+4,14) + l(ox+m*-5,oy-3,ox+m,oy-4,14) + end +end + +function upperbody(ax,ay,bx,by) +-- neck + q(115+ax,45+ay, 117+ax,45+ay, 113+ax,49+ay, 117+ax,50+ay, 13) + q(117+ax,45+ay, 122+ax,45+ay, 117+ax,50+ay, 122+ax,50+ay, 13) + q(122+ax,45+ay, 124+ax,45+ay, 122+ax,50+ay, 126+ax,49+ay, 13) +-- top + elli(105+ax,59+ay,6,6,13) + elli(135+ax,59+ay,6,6,13) + q(106+ax,52+ay, 113+ax,49+ay, 108+ax,56+ay, 114+ax,53+ay, 2) + q(113+ax,49+ay, 117+ax,50+ay, 114+ax,53+ay, 117+ax,54+ay, 12) + q(117+ax,50+ay, 122+ax,50+ay, 117+ax,54+ay, 122+ax,54+ay, 12) + q(122+ax,50+ay, 126+ax,49+ay, 122+ax,54+ay, 125+ax,53+ay, 12) + q(126+ax,49+ay, 133+ax,52+ay, 125+ax,53+ay, 131+ax,56+ay, 2) + + q(108+ax,56+ay, 114+ax,53+ay, 108+ax,60+ay, 114+ax,62+ay, 2) + q(114+ax,53+ay, 117+ax,54+ay, 114+ax,62+ay, 118+ax,63+ay, 2) + q(117+ax,54+ay, 122+ax,54+ay, 118+ax,63+ay, 121+ax,63+ay, 2) + q(122+ax,54+ay, 125+ax,53+ay, 121+ax,63+ay, 125+ax,62+ay, 2) + q(125+ax,53+ay, 131+ax,56+ay, 125+ax,62+ay, 131+ax,60+ay, 2) + + q(102+ax,66+ay, 108+ax,60+ay, 106+ax,74+ay, 110+ax,72+ay, 1) + q(108+ax,60+ay, 114+ax,62+ay, 110+ax,72+ay, 114+ax,71+ay, 1) + q(114+ax,62+ay, 118+ax,63+ay, 114+ax,71+ay, 118+ax,70+ay, 1) + q(118+ax,63+ay, 121+ax,63+ay, 118+ax,70+ay, 121+ax,70+ay, 1) + q(121+ax,63+ay, 125+ax,62+ay, 121+ax,70+ay, 125+ax,71+ay, 1) + q(125+ax,62+ay, 131+ax,60+ay, 125+ax,71+ay, 129+ax,72+ay, 1) + q(131+ax,60+ay, 137+ax,66+ay, 129+ax,72+ay, 133+ax,74+ay, 1) +-- body + q(106+ax,74+ay, 110+ax,72+ay, 109+ax+bx/2,81+ay+by/2, 112+ax+bx/2,77+ay+by/2, 13) + q(110+ax,72+ay, 114+ax,71+ay, 112+ax+bx/2,77+ay+by/2, 115+ax+bx/2,75+ay+by/2, 13) + q(114+ax,71+ay, 118+ax,70+ay, 115+ax+bx/2,75+ay+by/2, 118+ax+bx/2,74+ay+by/2, 13) + q(118+ax,70+ay, 121+ax,70+ay, 118+ax+bx/2,74+ay+by/2, 121+ax+bx/2,74+ay+by/2, 13) + q(121+ax,70+ay, 125+ax,71+ay, 121+ax+bx/2,74+ay+by/2, 124+ax+bx/2,74+ay+by/2, 13) + q(125+ax,71+ay, 129+ax,72+ay, 124+ax+bx/2,74+ay+by/2, 127+ax+bx/2,77+ay+by/2, 13) + q(129+ax,72+ay, 133+ax,74+ay, 127+ax+bx/2,77+ay+by/2, 130+ax+bx/2,81+ay+by/2, 13) + + q(109+ax+bx/2,81+ay+by/2, 112+ax+bx/2,77+ay+by/2, 108+ax+bx,88+ay+by, 111+ax+bx,87+ay+by, 13) + q(112+ax+bx/2,77+ay+by/2, 115+ax+bx/2,75+ay+by/2, 111+ax+bx,87+ay+by, 115+ax+bx,86+ay+by, 12) + q(115+ax+bx/2,75+ay+by/2, 118+ax+bx/2,74+ay+by/2, 115+ax+bx,86+ay+by, 118+ax+bx,86+ay+by, 12) + q(118+ax+bx/2,74+ay+by/2, 121+ax+bx/2,74+ay+by/2, 118+ax+bx,86+ay+by, 121+ax+bx,86+ay+by, 12) + q(121+ax+bx/2,74+ay+by/2, 124+ax+bx/2,74+ay+by/2, 121+ax+bx,86+ay+by, 124+ax+bx,86+ay+by, 12) + q(124+ax+bx/2,74+ay+by/2, 127+ax+bx/2,77+ay+by/2, 124+ax+bx,86+ay+by, 129+ax+bx,87+ay+by, 12) + q(127+ax+bx/2,77+ay+by/2, 130+ax+bx/2,81+ay+by/2, 129+ax+bx,87+ay+by, 132+ax+bx,88+ay+by, 13) +end + +function lowerbody(ax,ay,bx,by) +-- panties + q(108+ax,88+ay, 111+ax,87+ay, 105+ax*1.1,91+ay, 110+ax*1.1,94+ay, 2) + q(111+ax,87+ay, 115+ax,86+ay, 110+ax*1.1,94+ay, 114+ax*1.1,96+ay, 2) + q(115+ax,86+ay, 118+ax,86+ay, 114+ax*1.1,96+ay, 118+ax*1.1,98+ay, 2) + q(118+ax,86+ay, 121+ax,86+ay, 118+ax*1.1,98+ay, 121+ax*1.1,98+ay, 2) + q(121+ax,86+ay, 124+ax,86+ay, 121+ax*1.1,98+ay, 125+ax*1.1,96+ay, 2) + q(124+ax,86+ay, 129+ax,87+ay, 125+ax*1.1,96+ay, 129+ax*1.1,94+ay, 2) + q(129+ax,87+ay, 132+ax,88+ay, 129+ax*1.1,94+ay, 134+ax*1.1,91+ay, 2) + + q(105+ax*1.1,91+ay, 110+ax*1.1,94+ay, 103+ax*1.1+bx*0.25,95+ay, 109+ax*1.1+bx*0.25,100+ay,1) + q(110+ax*1.1,94+ay, 114+ax*1.1,96+ay, 109+ax*1.1+bx*0.25,100+ay,113+ax*1.1+bx*0.25,103+ay,1) + q(114+ax*1.1,96+ay, 118+ax*1.1,98+ay, 113+ax*1.1+bx*0.25,103+ay,117+ax*1.1+bx*0.25,106+ay,1) + q(118+ax*1.1,98+ay, 121+ax*1.1,98+ay, 117+ax*1.1+bx*0.25,106+ay,122+ax*1.1+bx*0.25,106+ay,1) + q(121+ax*1.1,98+ay, 125+ax*1.1,96+ay, 122+ax*1.1+bx*0.25,106+ay,126+ax*1.1+bx*0.25,103+ay,1) + q(125+ax*1.1,96+ay, 129+ax*1.1,94+ay, 126+ax*1.1+bx*0.25,103+ay,130+ax*1.1+bx*0.25,100+ay,1) + q(129+ax*1.1,94+ay, 134+ax*1.1,91+ay, 130+ax*1.1+bx*0.25,100+ay,136+ax*1.1+bx*0.25,95+ay, 1) +-- legs + q(103+ax*1.1+bx*0.25,95+ay, 109+ax*1.1+bx*0.25,100+ay,98+ax+bx*0.25,106+ay+by, 103+ax+bx*0.25,109+ay+by, 13) + q(109+ax*1.1+bx*0.25,100+ay,113+ax*1.1+bx*0.25,103+ay,103+ax+bx*0.25,109+ay+by, 111+ax+bx*0.25,113+ay+by, 12) + q(113+ax*1.1+bx*0.25,103+ay,117+ax*1.1+bx*0.25,106+ay,111+ax+bx*0.25,113+ay+by, 117+ax+bx*0.25,113+ay+by, 12) + q(98+ax+bx*0.25,106+ay+by, 103+ax+bx*0.25,109+ay+by, 98+ax+bx*0.5,114+ay+by,103+ax+bx*0.5,116+ay+by, 13) + q(103+ax+bx*0.25,109+ay+by, 111+ax+bx*0.25,113+ay+by, 103+ax+bx*0.5,116+ay+by,111+ax+bx*0.5,118+ay+by, 12) + q(111+ax+bx*0.25,113+ay+by, 117+ax+bx*0.25,113+ay+by, 111+ax+bx*0.5,118+ay+by,118+ax+bx*0.5,118+ay+by, 12) + q(98+ax+bx*0.5,114+ay+by, 103+ax+bx*0.5,116+ay+by, 99+ax+bx*0.75,123+ay+by,104+ax+bx*0.75,125+ay+by, 13) + q(103+ax+bx*0.5,116+ay+by,111+ax+bx*0.5,118+ay+by, 104+ax+bx*0.75,125+ay+by,111+ax+bx*0.75,125+ay+by, 12) + q(111+ax+bx*0.5,118+ay+by,118+ax+bx*0.5,118+ay+by, 111+ax+bx*0.75,125+ay+by,118+ax+bx*0.75,125+ay+by, 12) + q( 99+ax+bx*0.75,123+ay+by,104+ax+bx*0.75,125+ay+by, 104+ax+bx,136,107+ax+bx,136, 13) + q(104+ax+bx*0.75,125+ay+by,111+ax+bx*0.75,125+ay+by, 107+ax+bx,136,111+ax+bx,136, 12) + q(111+ax+bx*0.75,125+ay+by,118+ax+bx*0.75,125+ay+by, 111+ax+bx,136,117+ax+bx,136, 12) + + q(136+ax*1.1+bx*0.25,95+ay, 130+ax*1.1+bx*0.25,100+ay,141+ax+bx*0.25,106+ay+by, 136+ax+bx*0.25,109+ay+by, 13) + q(130+ax*1.1+bx*0.25,100+ay,126+ax*1.1+bx*0.25,103+ay,136+ax+bx*0.25,109+ay+by, 128+ax+bx*0.25,113+ay+by, 12) + q(126+ax*1.1+bx*0.25,103+ay,122+ax*1.1+bx*0.25,106+ay,128+ax+bx*0.25,113+ay+by, 122+ax+bx*0.25,113+ay+by, 12) + q(141+ax+bx*0.25,106+ay+by, 136+ax+bx*0.25,109+ay+by, 141+ax+bx*0.5,114+ay+by,136+ax+bx*0.5,116+ay+by, 13) + q(136+ax+bx*0.25,109+ay+by, 128+ax+bx*0.25,113+ay+by, 136+ax+bx*0.5,116+ay+by,128+ax+bx*0.5,118+ay+by, 12) + q(128+ax+bx*0.25,113+ay+by, 122+ax+bx*0.25,113+ay+by, 128+ax+bx*0.5,118+ay+by,121+ax+bx*0.5,118+ay+by, 12) + q(141+ax+bx*0.5,114+ay+by, 136+ax+bx*0.5,116+ay+by, 140+ax+bx*0.75,123+ay+by,135+ax+bx*0.75,125+ay+by, 13) + q(136+ax+bx*0.5,116+ay+by, 128+ax+bx*0.5,118+ay+by, 135+ax+bx*0.75,125+ay+by,128+ax+bx*0.75,125+ay+by, 12) + q(128+ax+bx*0.5,118+ay+by, 121+ax+bx*0.5,118+ay+by, 128+ax+bx*0.75,125+ay+by,121+ax+bx*0.75,125+ay+by, 12) + q(140+ax+bx*0.75,123+ay+by,135+ax+bx*0.75,125+ay+by, 135+ax+bx,136,132+ax+bx,136, 13) + q(135+ax+bx*0.75,125+ay+by,128+ax+bx*0.75,125+ay+by, 132+ax+bx,136,128+ax+bx,136, 12) + q(128+ax+bx*0.75,125+ay+by,121+ax+bx*0.75,125+ay+by, 128+ax+bx,136,122+ax+bx,136, 12) +end + +function drawarm(x,y,ax,ay,rot,m) + ox=x+ax + oy=y+ay + q(ox+-4*m*cos(rot)-2*sin(rot),oy+-4*m*sin(rot)+2*cos(rot), + ox+4*m*cos(rot)-3*sin(rot) ,oy+4*m*sin(rot)+3*cos(rot), + ox-1*m*cos(rot)-5*sin(rot) ,oy-1*m*sin(rot)+5*cos(rot), + ox-2*m*cos(rot)-5*sin(rot) ,oy-2*m*sin(rot)+5*cos(rot),13) + q(ox-5*m*cos(rot)+4*sin(rot) ,oy-5*m*sin(rot)-4*cos(rot), + ox+4*m*cos(rot)-1*sin(rot) ,oy+4*m*sin(rot)+1*cos(rot), + ox-4*m*cos(rot)-2*sin(rot) ,oy-4*m*sin(rot)+2*cos(rot), + ox+4*m*cos(rot)-3*sin(rot) ,oy+4*m*sin(rot)+3*cos(rot),12) + q(ox-4*m*cos(rot)+10*sin(rot),oy-5*m*sin(rot)-10*cos(rot), + ox+4*m*cos(rot)+5*sin(rot) ,oy+4*m*sin(rot)-5*cos(rot), + ox-5*m*cos(rot)+4*sin(rot) ,oy-5*m*sin(rot)-4*cos(rot), + ox+4*m*cos(rot)-1*sin(rot) ,oy+4*m*sin(rot)+1*cos(rot),12) + q(ox+0*m*cos(rot)+23*sin(rot),oy-0*m*sin(rot)-23*cos(rot), + ox+4*m*cos(rot)+21*sin(rot),oy+4*m*sin(rot)-21*cos(rot), + ox-4*m*cos(rot)+10*sin(rot),oy-5*m*sin(rot)-10*cos(rot), + ox+4*m*cos(rot)+5*sin(rot) ,oy+4*m*sin(rot)-5*cos(rot),12) + + q(ox+0*m*cos(rot)+26*sin(rot),oy-0*m*sin(rot)-26*cos(rot), + ox+4*m*cos(rot)+27*sin(rot),oy+4*m*sin(rot)-27*cos(rot), + ox+0*m*cos(rot)+23*sin(rot),oy-0*m*sin(rot)-23*cos(rot), + ox+4*m*cos(rot)+21*sin(rot),oy+4*m*sin(rot)-21*cos(rot),12) + q(ox+4*m*cos(rot)+27*sin(rot),oy+4*m*sin(rot)-27*cos(rot), + ox+6*m*cos(rot)+27*sin(rot),oy+6*m*sin(rot)-27*cos(rot), + ox+4*m*cos(rot)+21*sin(rot),oy+4*m*sin(rot)-21*cos(rot), + ox+8*m*cos(rot)+22*sin(rot),oy+8*m*sin(rot)-22*cos(rot),12) + q(ox+6*m*cos(rot)+27*sin(rot),oy+6*m*sin(rot)-27*cos(rot), + ox+9*m*cos(rot)+27*sin(rot),oy+9*m*sin(rot)-27*cos(rot), + ox+8*m*cos(rot)+22*sin(rot),oy+8*m*sin(rot)-22*cos(rot), + ox+11*m*cos(rot)+24*sin(rot),oy+11*m*sin(rot)-24*cos(rot),12) + + q(ox+0*m*cos(rot)+32*sin(rot),oy-0*m*sin(rot)-32*cos(rot), + ox+4*m*cos(rot)+33*sin(rot),oy+4*m*sin(rot)-33*cos(rot), + ox+0*m*cos(rot)+26*sin(rot),oy-0*m*sin(rot)-26*cos(rot), + ox+4*m*cos(rot)+27*sin(rot),oy+4*m*sin(rot)-27*cos(rot),12) + q(ox+4*m*cos(rot)+33*sin(rot),oy+4*m*sin(rot)-33*cos(rot), + ox+7*m*cos(rot)+32*sin(rot),oy+7*m*sin(rot)-32*cos(rot), + ox+4*m*cos(rot)+27*sin(rot),oy+4*m*sin(rot)-27*cos(rot), + ox+6*m*cos(rot)+27*sin(rot),oy+6*m*sin(rot)-27*cos(rot),12) + q(ox+7*m*cos(rot)+32*sin(rot),oy+7*m*sin(rot)-32*cos(rot), + ox+9*m*cos(rot)+30*sin(rot),oy+9*m*sin(rot)-30*cos(rot), + ox+6*m*cos(rot)+27*sin(rot),oy+6*m*sin(rot)-27*cos(rot), + ox+9*m*cos(rot)+27*sin(rot),oy+9*m*sin(rot)-27*cos(rot),12) + + l(ox+7*m*cos(rot)+32*sin(rot),oy+7*m*sin(rot)-32*cos(rot), + ox+6*m*cos(rot)+27*sin(rot),oy+6*m*sin(rot)-27*cos(rot),13) + l(ox+6*m*cos(rot)+27*sin(rot),oy+6*m*sin(rot)-27*cos(rot), + ox+9*m*cos(rot)+27*sin(rot),oy+9*m*sin(rot)-27*cos(rot),13) + l(ox+4*m*cos(rot)+27*sin(rot),oy+4*m*sin(rot)-27*cos(rot), + ox+6*m*cos(rot)+27*sin(rot),oy+6*m*sin(rot)-27*cos(rot),13) + l(ox+4*m*cos(rot)+27*sin(rot),oy+4*m*sin(rot)-27*cos(rot), + ox+6*m*cos(rot)+27*sin(rot),oy+6*m*sin(rot)-27*cos(rot),13) + l(ox+4*m*cos(rot)+27*sin(rot),oy+4*m*sin(rot)-27*cos(rot), + ox+2*m*cos(rot)+27*sin(rot),oy+2*m*sin(rot)-27*cos(rot),13) + l(ox+4*m*cos(rot)+33*sin(rot),oy+4*m*sin(rot)-33*cos(rot), + ox+2*m*cos(rot)+27*sin(rot),oy+2*m*sin(rot)-27*cos(rot),13) + l(ox+2*m*cos(rot)+27*sin(rot),oy+2*m*sin(rot)-27*cos(rot), + ox+0*m*cos(rot)+26*sin(rot),oy-0*m*sin(rot)-26*cos(rot),13) + l(ox+4*m*cos(rot)+27*sin(rot),oy+4*m*sin(rot)-27*cos(rot), + ox+2*m*cos(rot)+24*sin(rot),oy+2*m*sin(rot)-24*cos(rot),13) + l(ox+3*m*cos(rot)+23*sin(rot),oy+3*m*sin(rot)-23*cos(rot), + ox+2*m*cos(rot)+24*sin(rot),oy+2*m*sin(rot)-24*cos(rot),13) + l(ox+3*m*cos(rot)+23*sin(rot),oy+3*m*sin(rot)-23*cos(rot), + ox+6*m*cos(rot)+24*sin(rot),oy+6*m*sin(rot)-24*cos(rot),13) +end + +function arms(ax,ay,bx,by) +-- elli(103+ax,59+ay,5,5,13) +-- elli(137+ax,59+ay,5,5,13) + elli(90+bx,70+by,4,4,13) + elli(150+bx,70+by,4,4,13) + q(100+ax,54+ay,105+ax,62+ay,89+bx,64+by,95+bx,72+by,13) + q(135+ax,62+ay,140+ax,54+ay,145+bx,72+by,151+bx,64+by,13) +end + +function tail(x,y,ax,ay,rot) + ox=x+ax + oy=y+ay + q(ox-2*cos(rot)-0*sin(rot) ,oy-2*sin(rot)+0*cos(rot), + ox+0*cos(rot)-0*sin(rot) ,oy+0*sin(rot)+0*cos(rot), + ox-7*cos(rot)-10*sin(rot),oy-7*sin(rot)+10*cos(rot), + ox-0*cos(rot)-12*sin(rot),oy-0*sin(rot)+12*cos(rot),13) + q(ox+2*cos(rot)-0*sin(rot) ,oy+2*sin(rot)+0*cos(rot), + ox+0*cos(rot)-0*sin(rot) ,oy+0*sin(rot)+0*cos(rot), + ox+7*cos(rot)-10*sin(rot),oy+7*sin(rot)+10*cos(rot), + ox-0*cos(rot)-12*sin(rot),oy-0*sin(rot)+12*cos(rot),13) + + q(ox-7*cos(rot)-10*sin(rot),oy-7*sin(rot)+10*cos(rot), + ox-0*cos(rot)-12*sin(rot),oy-0*sin(rot)+12*cos(rot), + ox-9*cos(rot)-16*sin(rot),oy-9*sin(rot)+16*cos(rot), + ox+0*cos(rot)-19*sin(rot) ,oy+0*sin(rot)+19*cos(rot),13) + q(ox+7*cos(rot)-10*sin(rot),oy+7*sin(rot)+10*cos(rot), + ox+0*cos(rot)-12*sin(rot),oy+0*sin(rot)+12*cos(rot), + ox+9*cos(rot)-16*sin(rot),oy+9*sin(rot)+16*cos(rot), + ox+0*cos(rot)-19*sin(rot) ,oy+0*sin(rot)+19*cos(rot),13) + + q(ox-9*cos(rot)-16*sin(rot),oy-9*sin(rot)+16*cos(rot), + ox+0*cos(rot)-19*sin(rot) ,oy+0*sin(rot)+19*cos(rot), + ox-10*cos(1.1*rot)-23*sin(1.1*rot),oy-10*sin(1.1*rot)+23*cos(1.1*rot), + ox-0*cos(1.1*rot)-25*sin(1.1*rot),oy-0*sin(1.1*rot)+25*cos(1.1*rot),14) + q(ox+9*cos(rot)-16*sin(rot),oy+9*sin(rot)+16*cos(rot), + ox+0*cos(rot)-19*sin(rot) ,oy+0*sin(rot)+19*cos(rot), + ox+10*cos(1.1*rot)-23*sin(1.1*rot),oy+10*sin(1.1*rot)+23*cos(1.1*rot), + ox+0*cos(1.1*rot)-25*sin(1.1*rot),oy+0*sin(1.1*rot)+25*cos(1.1*rot),14) + + q(ox-10*cos(1.1*rot)-23*sin(1.1*rot),oy-10*sin(1.1*rot)+23*cos(1.1*rot), + ox-0*cos(1.1*rot)-25*sin(1.1*rot),oy-0*sin(1.1*rot)+25*cos(1.1*rot), + ox-9*cos(1.2*rot)-30*sin(1.2*rot),oy-9*sin(1.2*rot)+30*cos(1.2*rot), + ox+0*cos(1.2*rot)-31*sin(1.2*rot),oy+0*sin(1.2*rot)+31*cos(1.2*rot),14) + q(ox+10*cos(1.1*rot)-23*sin(1.1*rot),oy+10*sin(1.1*rot)+23*cos(1.1*rot), + ox+0*cos(1.1*rot)-25*sin(1.1*rot), oy+0*sin(1.1*rot)+25*cos(1.1*rot), + ox+8*cos(1.2*rot)-30*sin(1.2*rot),oy+8*sin(1.2*rot)+30*cos(1.2*rot), + ox+0*cos(1.2*rot)-31*sin(1.2*rot),oy+0*sin(1.2*rot)+31*cos(1.2*rot),14) + + q(ox-8*cos(1.2*rot)-30*sin(1.2*rot),oy-8*sin(1.2*rot)+30*cos(1.2*rot), + ox+0*cos(1.2*rot)-31*sin(1.2*rot),oy+0*sin(1.2*rot)+31*cos(1.2*rot), + ox-6*cos(1.3*rot)-37*sin(1.3*rot),oy-6*sin(1.3*rot)+37*cos(1.3*rot), + ox-0*cos(1.3*rot)-35*sin(1.3*rot),oy-0*sin(1.3*rot)+35*cos(1.3*rot),14) + q(ox+8*cos(1.2*rot)-30*sin(1.2*rot),oy+8*sin(1.2*rot)+30*cos(1.2*rot), + ox+0*cos(1.2*rot)-31*sin(1.2*rot),oy+0*sin(1.2*rot)+31*cos(1.2*rot), + ox+6*cos(1.3*rot)-37*sin(1.3*rot),oy+6*sin(1.3*rot)+37*cos(1.3*rot), + ox+0*cos(1.3*rot)-35*sin(1.3*rot),oy+0*sin(1.3*rot)+35*cos(1.3*rot),14) + + q(ox-6*cos(1.3*rot)-37*sin(1.3*rot),oy-6*sin(1.3*rot)+37*cos(1.3*rot), + ox-0*cos(1.3*rot)-35*sin(1.3*rot),oy-0*sin(1.3*rot)+35*cos(1.3*rot), + ox-4*cos(1.35*rot)-39*sin(1.35*rot),oy-4*sin(1.35*rot)+39*cos(1.35*rot), + ox-0*cos(1.35*rot)-50*sin(1.35*rot),oy-0*sin(1.35*rot)+50*cos(1.35*rot),14) + q(ox+6*cos(1.3*rot)-37*sin(1.3*rot),oy+6*sin(1.3*rot)+37*cos(1.3*rot), + ox+0*cos(1.3*rot)-35*sin(1.3*rot),oy+0*sin(1.3*rot)+35*cos(1.3*rot), + ox+4*cos(1.35*rot)-39*sin(1.35*rot),oy+4*sin(1.35*rot)+39*cos(1.35*rot), + ox+0*cos(1.35*rot)-50*sin(1.35*rot),oy+0*sin(1.35*rot)+50*cos(1.35*rot),14) +end + + +function drawbg() + for i=1,22 do + circles[i]=circles[i]+1 + circ(120,50,circles[22-i],circlec[22-i]) + end + if circles[22] > 440 then + rem(circles,22) + ins(circles,1,0) + col=circlec[22] + rem(circlec,22) + ins(circlec,1,col) + end + for i=1,23 do + circ(i*10,-50+(200-8*((t+6*sin(i*40))%20)),i%4+i//6,i%3+9) + circ(i*5,-50+(200-8*((t+16*sin(i*40))%20)),4*sin(i*50),i%3+9) + end +end + +function TIC() + t=time()//60 + local bncx1=10*sin(t/10) + local bncx2=2*sin(t/10) + local bncx3=bncx1+bncx2 + local bncx4=-4*sin(t/10) + local bncx5=bncx1-4*sin(t/10) + local bncy1=abs(4*sin(t/20)) + local bncy2=5*cos(t/5) + local rot1=clmp(pi*(abs(sin(t/20*pi))*0.8-0.2),0,pi/2) + local rot2=clmp(-pi*(abs(sin((t+10)/20*pi)*0.8)-0.2),-pi/2,0) + local rot3=pi*(0.25*sin(t/10)) + vbank(0) + cls(3) + drawbg() + vbank(1) + cls(0) + tail(120,98,bncx3,bncy1,rot3) + head(120,35,bncx1,bncy1,1,0) + upperbody(bncx1,bncy1,bncx2,0) + lowerbody(bncx3,bncy1,bncx4,0) + arms(bncx1,bncy1,bncx5,bncy2) + drawarm(90,70,bncx5,bncy2,rot1,1) + drawarm(150,70,bncx5,bncy2,rot2,-1) +end diff --git a/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..70a16a6fd --- /dev/null +++ b/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,62 @@ +-- Hi! Can I play and host at the same +-- time? Hope so... Greets all, HNY +-- and glhf to mantra, catnip, and +-- HeNeArXn (welcome!) + +-- hmm no idea what to do + +C=math.cos +S=math.sin + + +for i=0,15 do +poke(0x3fc0+i*3,10+i*35) +poke(0x3fc1+i*3,10+i*35) +poke(0x3fc2+i*3,40+i*25) +end + +function mba(a,ox,oy,c) + +l=10 +for i=0,5 do + x1=-l + x2=l + y1=i-2 + y2=i-2 + line( + ox+C(a)*x1-S(a)*y1, + oy+C(a)*y1+S(a)*x1, + ox+C(a)*x2-S(a)*y2, + oy+C(a)*y2+S(a)*x2,c) +end +end + +cls() +function TIC()t=time()/32 +for x=0,239 do for y=1,134 do + +pix(x,y-1,( + pix(x-1,y-1) + pix(x,y-1) + pix(x+1,y-1)+ + pix(x-1,y) + pix(x,y) + pix(x+1,y)+ + pix(x-1,y+1) + pix(x,y+1) + pix(x+1,y+1) + )/(10-(y/2+1)/2*fft(138-y)) +) +end end +for i=0,7 do +a=(t-i*20)/20 +a=a+C(a*4-2+fft(i)*(1+i))/3.1415 +ox=120 + 55*C(a) +oy=68 + 55*S(a) +mba(a,ox,oy,a*3) +end + +for i=0,60 do +pix(90+i,84-fft(i*2)*(1+i/2)*8,12) +end + +seq={"M","N","B"} +t = t/4 +if t//3%3<1 then +print(seq[t//9%3 +1],110,48,14,false,4) +end +end diff --git a/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/catnip.lua b/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/catnip.lua new file mode 100644 index 000000000..95f480cbb --- /dev/null +++ b/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/catnip.lua @@ -0,0 +1,70 @@ +mf={} +t=0 + +min=math.min +max=math.max +sin=math.sin +cos=math.cos + +function clamp(x,a,b) + return max(a,min(x,b)) +end + +ro={} +go={} +bo={} +for i=0,47 do + ro[i+1]=peek(0x03FC0+i*3) + go[i+1]=peek(0x03FC0+i*3+1) + bo[i+1]=peek(0x03FC0+i*3+2) +end + +h={} + +function TIC() + local f={} + for i=1,240 do + mf[i]=math.max(mf[i] or 0, fft(i)) + f[i]=fft(i)/mf[i] + end + table.insert(h,1,f) + if #h>68 then + table.remove(h,#h) + end + vbank(0) + cls() + print("=^^=",5,30,12,0,10) + vbank(1) + cls() + for i=1,#h,1 do + l=h[i] + trace(i..":"..l[1]) + for x=0,239,4 do + v=l[x+1] + v2=l[x+5]or 0 + line( + x, + i*2-v*16, + x+4, + i*2-v2*16, + (v2+v)*4) + end + end + + t=t+1 +end + +function SCN(y) + vbank(0) + x=h[1][y+1]*8-4 + poke(0x03FF9,x) + poke(0x03FFa,x) + vbank(1) + x=h[1][136-y]*8-4 + poke(0x03FF9,x) + poke(0x03FFa,x) + if y+t%136<1 then + poke(0x03FF0+y%8,(x+4)*8) + end + +end \ No newline at end of file diff --git a/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/henearxn.lua b/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/henearxn.lua new file mode 100644 index 000000000..ae26bc748 --- /dev/null +++ b/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/henearxn.lua @@ -0,0 +1,90 @@ +cos=math.cos +sin=math.sin +rand=math.random +pi2=3.14159*2 + + +function dist(x0,y0,x1,y1) +return math.sqrt((x1-x0)^2+(y1-y0)^2) +end + +function li(x0,y0,x1,y1) +--line(x0,y0,x1,y1,11) +xa=x0 +ya=y0 +a=math.atan2(x1-x0,y1-y0) +s=sin(a) +c=cos(a) +p=0 +color=math.random(4) +repeat +p=p+5 +r=(math.random(2)-1)*3 +x=x0+p*s+r*c +y=y0+p*c-r*s +line(xa,ya,x,y,9+color)--math.random(4)) +xa=x +ya=y +until p>dist(x0,y0,x1,y1)-1 +end +cls(0) +function TIC()t=time()//32 +--Hi from HeNeArXn +--testing this fft thing... +-- ok, only fft later maybe :/ +--cls() + +inr=20+sin(t/33)^5*10+sin(t/33)^4*10 +as=fft(0)+fft(1)+fft(2)+fft(3)+fft(14) +if as*1.5 <4.5 then +for i=0,900 do + x=rand(120-60-15,120+60+15) + y=rand(0,136) + c=pix(x,y) + if c>0 then + if c==10 then c=1 end + pix(x,y,c-1) + end +end +else +cls(0) +end +circ(120,136/2,inr,as/1.8) + +vbank(1) +cls(0) + +for i=0,10 do + x=120+inr*cos(pi2/10*i+(t/10)%(pi2)) + y=136/2+inr*sin(pi2/10*i+(t/10)%(pi2)) + circ(x,y,5,10) +end + +outr=60+sin(t/4)^2*15 +for i=0,10 do + x=120+outr*cos(pi2/10*i-(t/10)%(pi2)) + y=136/2+outr*sin(pi2/10*i-(t/10)%(pi2)) + circ(x,y,5,i) +end +vbank(0) + +for i=0,as*1.5 do + +a=math.random(0,10) +b=a+math.random(-2,2) +x1=120+inr*cos(pi2/10*a+(t/10)%pi2) +y1=136/2+inr*sin(pi2/10*a+(t/10)%pi2) +x0=120+outr*cos(pi2/10*a-(t/10)%pi2) +y0=136/2+outr*sin(pi2/10*a-(t/10)%pi2) +li(x0,y0,x1,y1) +vbank(1) +circ(x1,y1,6,12) +vbank(0) +end +vbank(1) +rect(0,0,as*15,136,as*1.5+0.5) +rect(240-as*15,0,240,136,as*1.5+0.5) +vbank(0) +--print(fft(0)+fft(1)+fft(2)+fft(3)+fft(14)) +end + diff --git a/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/jmantruktronic.lua b/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/jmantruktronic.lua new file mode 100644 index 000000000..7e92dbdaf --- /dev/null +++ b/shader_file_sources/2024_01_08_byte_jam_monday_night_bytes/jmantruktronic.lua @@ -0,0 +1,221 @@ +-- mantratronic + jtruk here +-- greets to HeNeArXn, Aldroid, Catnip + +M=math +S=M.sin +C=M.cos +A=M.abs +function rot(x,y,a) + return {x*C(a)-y*S(a),y*C(a)+x*S(a)} +end +cls(12) + +T=0 +fftm={} +fftn={} +for i=0,255 do + fftm[i]=0 + fftn[i]=0 +end +LA={} +nLA=10 +for i=1,nLA do +LA[i]={x=0.1+i,y=0,z=0,a=10,b=28,c=8/3,dt=0.005} +end + +ARCS={} + +function addArc(s,a,aDelta,c) + ARCS[#ARCS+1]={s=s,a=a,aDelta=aDelta,c=c} +end + +function BOOT() + for i=0,20 do + local s=i*.5 + local aDelta=.05*((math.random(200)/100)-1) + local a=i*.1 + local c=i + addArc(s,a,aDelta,c) + end + + vbank(0) + setRGB(0,0,0,0) + + vbank(1) + setRGB(1,0,0,0) +end + + +function mBDR(y) + vbank(0) + local ry=S(y/200+T/100)*48+48 + local gy=S(y/200+T/100+2)*48+48 + local by=S(y/200+T/100+4)*48+48 + for i=12,15 do + poke(0x3fc0+i*3, (i-12)/2.1*ry) + poke(0x3fc0+i*3+1, (i-12)/2.1*gy) + poke(0x3fc0+i*3+2, (i-12)/2.1*by) + end + for i=1,5 do + poke(0x3fc0+i*3, (i/11+1)*by) + poke(0x3fc0+i*3+1, (i/11+1)*ry) + poke(0x3fc0+i*3+2, (i/11+1)*gy) + end + for i=6,11 do + poke(0x3fc0+i*3, (i/11+1)*gy) + poke(0x3fc0+i*3+1, (i/11+1)*by) + poke(0x3fc0+i*3+2, (i/11+1)*ry) + end +end +function mTIC() + vbank(0) + memcpy(0x8000,0,120*136) + cls(12) + memcpy(120,0x8000,120*135) + for x=0,240 do + pix(x,y,12+fftn[x]*3) + end + + for i=0,99 do + local x=M.random(240)-1 + local y=M.random(136)-1 + local col = pix(x,y) + if col <13 then + circb(x,y,2,col) + end + end + + -- this will take some looking up + for i=1,nLA do + for j=1,fftn[(i/nLA*10)//1]*5+1 do + local xt = LA[i].x + LA[i].dt*LA[i].a*(LA[i].y-LA[i].x) + local yt = LA[i].y + LA[i].dt*(LA[i].x*(LA[i].b-LA[i].z)-LA[i].y) + local zt = LA[i].z + LA[i].dt*(LA[i].x*LA[i].y-LA[i].c*LA[i].z) + LA[i].x=xt + LA[i].y=yt + LA[i].z=zt + local P=rot(LA[i].x,LA[i].y, T/100+i/nLA*2*M.pi) + local sx=P[1]*3 + local sy=P[2]*2.5 + + circ(sx+120,sy+68,1+LA[i].z/50,i+1) + end + end +end + + +function BDR(y) + mBDR(y) + jBDR(y) +end + + +function TIC() + T=time()/100 + for i=0,255 do + fftm[i]=M.max(fftm[i]-0.0001*(1-(i+1)/256)^2,fft(i)) + fftn[i]=(fft(i)/fftm[i])*.2 + fftn[i]*.8 + end + + mTIC() + jTIC() +end + + +function jBDR(y) + vbank(1) + for i=2,15 do + local f=1-(i/15) + local r=(127+S(i*.2+y*.007+T/10)*127)*f + local g=(127+S(1+i*.24+y*.009-T/12)*127)*f + local b=(127+S(2+i*.3+y*.008+T/15)*127)*f + setRGB(i,r,g,b) + end +end + +function jTIC() + updateArcs() + vbank(1) + cls(0) + + for i,arc in ipairs(ARCS) do + drawArc(arc) + end +end + +function updateArcs() + for i,arc in ipairs(ARCS) do + arc.a=arc.a+arc.aDelta + end +end + +function drawArc(arc) + local dMax=40+S(getSeed(arc,8))*30 + local steps=20 + local w,h=30,30 + local arcInc=(6.28-2)/steps + for r=1,12 do + local z=1.03+getSeed(arc,30)*.05 + local d=dMax/r^z + local ps={} + for i=0,steps do + local a=arc.a+i*arcInc+r + local d1=d + local d2=d1+d1*.05 + local x=S(getSeed(arc,10)) + local y=S(getSeed(arc,12)) + local o=S(getSeed(arc,22))*5 + ps[#ps+1]={ + i=getP(x,y,a,d1,o), + o=getP(x,y,a,d2,o) + } + end + + local c=1+r+arc.c + for i=2,#ps do + local ps1=ps[i-1] + local ps2=ps[i] + tri( + 120+ps1.i.x*w,68+ps1.i.y*h, + 120+ps1.o.x*w,68+ps1.o.y*h, + 120+ps2.i.x*w,68+ps2.i.y*h, + c + ) + tri( + 120+ps1.o.x*w,68+ps1.o.y*h, + 120+ps2.i.x*w,68+ps2.i.y*h, + 120+ps2.o.x*w,68+ps2.o.y*h, + c + ) + end + end +end + +function getP(x,y,a,d,o) + p=rot(x,y,o) + return { + x=p[1]+S(a)*d, + y=p[2]+C(a)*d, + } +end + +function getSeed(arc,div) + return (T-arc.s)/div +end + +function setRGB(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..041256a4c --- /dev/null +++ b/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,59 @@ +-- aldroid here! + +-- hey everyone! glhf and love a bit +-- of dnb thank you polynomial! + +-- <3 +cls(0) +s=math.sin +c=math.cos + +function TIC1()t=time()/32 +clip(0,0,240,68) +circb(120,68,60,fft(20)*90) +for x=-120,120 do for y=-68,0 do +a=math.atan2(y,x) +r=(x^2+y^2)^0.5 +pix(x+120,y+68, + pix( + -(r-1)*math.cos(a)+120, + (r-1)*math.sin(a)+68)) + + +end end +pix(120+math.sin(t)*20,40+math.cos(t)*20,12) +clip() +rect(0,69,240,135,0) +for x=-19,19 do for y=0,9 do +Z=y+2-t%2 +X1=x/Z +X2=(x+1)/Z + +ffti1=x+19 +ffti2=x+20 +Y1=fft(x+19)*(1+ffti1)+2/Z +Y2=fft(x+20)*(1+ffti2)+2/Z + +line(120+X1*10,68+Y1*10, + 120+X2*10,68+Y2*10,4) +end end +end + + +function TIC2() +t=time()/230%6.28 +u=time()/400%1+1 +v=time()/1400 +for i =0,200 do + circ(120+20*c(v)+c(i/2+t)*i/2*u, + 68+20*s(v)+s(i/2+t)*i/2*u,2,fft(i)*100) +end +end + +function TIC() +if time()%6000 < 4000 then + TIC1() +else + TIC2() +end +end diff --git a/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/henearxn.lua b/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/henearxn.lua new file mode 100644 index 000000000..26449e11b --- /dev/null +++ b/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/henearxn.lua @@ -0,0 +1,63 @@ +xc=240/2 +yc=136/2 +bai=0 +function TIC() + t=time()//32 + -- hi + ba=0 + for i=60,70 do + ba=ba+fft(i) + end + bai=bai+ba*15 + ycd=136/2+5*math.cos(bai/5) + yc=136/2+5*math.sin(bai/5) + vbank(1) + cls(0) + w=70 + r=15 + h=35 + circ(xc-w,yc-h,r,13) + circ(xc+w,yc-h,r,13) + circ(xc-w,yc+h,r,13) + circ(xc+w,yc+h,r,13) + rect(xc-w,yc-h-r,2*w,2*h+2*r+1,13) + rect(xc-w-r,yc-h,2*w+2*r+1,2*h,13) + + circ(xc-w*0.75,yc-h+10,r,12+ba) + circ(xc+w*0.75,yc-h+10,r,13-ba*ba*300) + + er=3+ba*4 + rect(xc-w*0.75-er,yc-h+10-er,2*er+1,2*er+1,1) + rect(xc-w*0.75-er,yc-h+10-er,2*er,2*er,14) + rect(xc+w*0.75-er,ycd-h+10-er,2*er+1,2*er+1,1) + rect(xc+w*0.75-er,ycd-h+10-er,2*er,2*er,14) + + ml=yc +(90-136/2)+math.cos(bai) + rect(xc-60+15,ml-15,120-28,30,0) + circ(xc-60+15,ml,14,0) + circ(xc+60-15,ml,14,0) + + + + vbank(0) + cls(0) + for x=0,120 do + f=(fft(x)+fft(x+1))*30 + + x=60+x*0.5*(-1)^(x%2) + f=f*1/math.cos(x/50) + if f>10 then + line(xc-60+x,0,xc-60+x,136,14) + end + if f>15 then f=15 end + line(xc-60+x,ml+f,xc-60+x,ml-f,x+t) + end + + line(xc-60,ml-14,xc+60,ml-14,0) + line(xc-60,ml-12,xc+60,ml-12,0) + line(xc-60,ml-10,xc+60,ml-10,0) + line(xc-60,ml+14,xc+60,ml+14,0) + line(xc-60,ml+12,xc+60,ml+12,0) + line(xc-60,ml+10,xc+60,ml+10,0) + +end diff --git a/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..c99a3189d --- /dev/null +++ b/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,190 @@ +-- Hello MNB :) +-- Greetz: Suule, Aldroid, HeNeArXn +-- Reality, Polynomial! +-- And you. Greetz to you. +-- Double Greetz if you're one of +-- those mentioned above! + +T=0 + +NMAGS=500 +NFILINGS=500 + +T=0 +R,S,C=math.random,math.sin,math.cos +MIN,MAX=math.min,math.max + +MAGNET=false + +SCENES={} +SCENE=nil + +FILINGS={} + +function BOOT() + cls() + makeScene1() + SCENES[#SCENES+1]=pluckScene() + cls() + makeScene2() + SCENES[#SCENES+1]=pluckScene() + cls() + makeScene3() + SCENES[#SCENES+1]=pluckScene() + + SCENE=SCENES[1] + + for i=0,NFILINGS do + local x,y=R(239),R(100) + FILINGS[#FILINGS+1]={ + x=x,y=y,aimX=x,aimY=y, + seed=R(1000)/1000 + } + end + + vbank(0) + setRGB(1,250,218,211) + setRGB(15,0,0,0) + + vbank(1) + for i=1,15 do + local f=i/15*255 + setRGB(i,f,f,f) + end +end + +TSWITCH=100 +function TIC() + if (T//TSWITCH)%2==0 then + if T%TSWITCH==0 then + SCENE=SCENES[R(1,#SCENES)] + setFilingAims() + end + MAGNET=true + else + MAGNET=false + end + + vbank(0) + cls() + drawWilly() + + vbank(1) + cls() + doFilings() + drawFilings() + local text="Wooly Willy" + for iy=-1,1 do + for ix=-1,1 do + print(text,63+iy,120+ix,4+ix-iy*3,false,2) + end + end + print(text,63,120,12,false,2) + print("jtruk",208,129,3) + T=T+1 +end + + +function makeScene1() + tri(120,50,150,50,140,70,1) + tri(120,50,150,50,130,70,1) + tri(80,40,170,55,150,60,1) + rect(85,80,70,40,1) + elli(120,100,20,10,0) +end + +function makeScene2() + rect(95,35,20,10,1) + rect(125,35,20,10,1) + circ(80,50,10,1) + circ(160,50,10,1) +end + +function makeScene3() + tri(110,110,130,110,120,130,1) + circ(120,20,10,1) + circ(110,25,10,1) + circ(130,25,10,1) +end + +function pluckScene() + local ps={} + for i=1,10000 do + local x=R(239) + local y=R(135) + if pix(x,y)>0 then + ps[#ps+1]={ + x=x,y=y + } + end + + if #ps==NMAGS then + return ps + end + end + return ps +end + +function doFilings() + for i,f in ipairs(FILINGS) do + if MAGNET then + f.x=f.x+(f.aimX-f.x)*.1 + f.y=f.y+(f.aimY-f.y)*.1 + else + f.y=MIN(f.y+1+f.seed,130) + f.x=MIN(MAX(65,f.x+R(100)/100-.5),175) + end + end +end + +function drawFilings() + for i,f in ipairs(FILINGS) do + local r=(f.x^4+f.y^7) + local x1=f.x+S(r)*2 + local x2=f.y+C(r)*2 + local c=8+S(f.x+f.y+r)*7 + line(f.x,f.y,x1,x2,c) + end +end + +function setFilingAims() + for i,f in ipairs(FILINGS) do + local p=SCENE[R(1,#SCENE)] + + f.aimX,f.aimY=p.x,p.y + end +end + +function drawWilly() + -- ^ No need to worry folks. + -- trust jtruk! + rect(60,5,120,130,4) + elli(120,68,40,50,1) -- face + elli(80,68,6,20,1) -- left ear + elli(160,68,6,20,1) -- right ear + elli(120,95,20,5,12) -- mouth + elli(120,88,20,8,1) -- mouth + drawEye(106,58) + drawEye(134,58) + elli(120,73,20,10,2) --nose + elli(120,69,8,3,12) --nose highlight +end + +function drawEye(x,y) + elli(x,y,10,12,12) + elli(x,y,10,12,12) + elli(x,y+6,6,8,15) + elli(x,y+5,2,2,12) +end + +function setRGB(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end + +function BDR(y) + vbank(0) + setRGB(0,100-y/2,0,y) +end \ No newline at end of file diff --git a/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/suule.lua b/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/suule.lua new file mode 100644 index 000000000..54452485f --- /dev/null +++ b/shader_file_sources/2024_01_15_byte_jam_monday_night_bytes/suule.lua @@ -0,0 +1,73 @@ +-- Let's do something from scratch +-- this time :) +-- Greetz to Aldroid, jtruk & HeNeArXe +-- as well as people in the chat + +--whoops +sin=math.sin +cos=math.cos +pi=math.pi +abs=math.abs + +function BOOT() + t=0 + rotor=0 + rotor2=0 + +end + +function clamp(val,vald,valu) + if val > vald then + if val > valu then return valu else return val end + else + return vald + end +end + +function petal(ox,oy,rot) + tri(ox+0*cos(rot)-0*sin(rot),oy+0*sin(rot)+0*cos(rot), + ox+-8*cos(rot)-40*sin(rot),oy+-8*sin(rot)+-40*cos(rot), + ox+0*cos(rot)-60*sin(rot),oy+0*sin(rot)+-60*cos(rot), 3) + tri(ox+0*cos(rot)-0*sin(rot),oy+0*sin(rot)+0*cos(rot), + ox+8*cos(rot)-40*sin(rot),oy+8*sin(rot)+-40*cos(rot), + ox+0*cos(rot)-60*sin(rot),oy+0*sin(rot)+-60*cos(rot), 3) +end + +function petal2(ox,oy,rot,grth) + tri(ox+0*cos(rot)-0*sin(rot),oy+0*sin(rot)+0*cos(rot), + ox+-8*cos(rot)+(-40-grth)*sin(rot),oy+-8*sin(rot)+(-40-grth)*cos(rot), + ox+0*cos(rot)+(-60-grth)*sin(rot),oy+0*sin(rot)+(-60-grth)*cos(rot), 2) + tri(ox+0*cos(rot)-0*sin(rot),oy+0*sin(rot)+0*cos(rot), + ox+8*cos(rot)+(-40-grth)*sin(rot),oy+8*sin(rot)+(-40-grth)*cos(rot), + ox+0*cos(rot)+(-60-grth)*sin(rot),oy+0*sin(rot)+(-60-grth)*cos(rot), 2) +end + +function circfft(x,y,r,tim,cshft) + for i=0,360 do + circ(x+(90*fft(i%90)+r)*sin((i+tim)/180*pi),y+(90*fft(i%90)+r)*cos((i+tim)/180*pi),1,cshft+i%4) + end +end + +function deg2rad(deg) + return deg*pi/180 +end + +function TIC() + cls(0) + t=time()/60 + rotor=rotor+clamp(3*fft(1),0,9) + rotor2=rotor2+clamp(3*fft(1),0,3) + for xi=0,52 do + for yi=0,48 do + circ(2+xi*5,2+yi*5,1,t+xi+yi-rotor) + end + end + circfft(120,68,30,t,5) + for i=0,11 do + petal2(120,68,deg2rad(30*i+360*sin(t/30)),50*fft(8)) + end + for i=0,11 do + petal(120,68,deg2rad(30*i+rotor)) + end + circ(120,68,12,4) +end diff --git a/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/dave84.lua b/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/dave84.lua new file mode 100644 index 000000000..21b4e8780 --- /dev/null +++ b/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/dave84.lua @@ -0,0 +1,64 @@ +--lets get a grid going... +local GRID_SIZE = 100 +local PARTICLE_COUNT = 1000 +local W,H=240,136 +local vectors = {} +local particles = {} + +function noise(x,y,t) + local n = math.sin(x*fft(5)*10+t) + math.cos(y+t) + return (n+1)/2 +end + +for x=0,W/GRID_SIZE do + vectors[x] = {} + for y=0,H/GRID_SIZE do + --make noise less noisy later + vectors[x][y] = {math.random(),math.random()} + end +end + +--particles do +for i=1,PARTICLE_COUNT do + table.insert(particles, + { + x=math.random(W), + y=math.random(H), + speed = math.random(4) + }) +end + + + +--cls() --team cls() + +function TIC() + t=time()/1000 + cls() + + for x=0,W/GRID_SIZE do + for y=0,H/GRID_SIZE do + --make noise less noisy later + vectors[x][y] = {noise(x,y,t),noise(x,y,t)} + end + end + + --lets update those particles... + for _,p in ipairs(particles) do + local gridX, gridY = math.floor(p.x/GRID_SIZE),math.floor(p.y/GRID_SIZE) + if gridX >= 0 and gridX <= W/GRID_SIZE and gridY >= 0 and gridY <= H/GRID_SIZE then + local vector = vectors[gridX][gridY] + -- p.speed = 1+fft(4+gridX~gridY)*10 + p.x = p.x + vector[1] * p.speed + p.y = p.y + vector[2] * p.speed + end + + if p.x < 0 then p.x = p.x+W elseif p.x > W then p.x=p.x -W end + if p.y < 0 then p.y = p.y+H elseif p.y > H then p.y=p.y -H end + end + + for _,p in ipairs(particles) do + circ(p.x,p.y,0,p.speed) + end + +end diff --git a/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/doop.lua b/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/doop.lua new file mode 100644 index 000000000..2f33ec0ba --- /dev/null +++ b/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/doop.lua @@ -0,0 +1,362 @@ + +-- I got the idea for this after +-- seeing two things in succession: +-- (1) jtruk's "wooly willy" demo +-- (2) a steve mould video involving +-- couscous. +-- +-- Greetings to: Tobach, Suule, dave84, +-- aldroid & reality404 +-- & anyone watching! +silent = true -- set to false to make fft work + -- but set to true if theres no music + + +a0 = 5 +sx = 240 +sy = 136 +nparticles = 10000 +particles={} +pmax=8 +interval_s = 8 + +sin = math.sin +cos = math.cos +pi = math.pi +tau = 2*pi +max=math.max +min=math.min +phase=0 +tprev=0 +glitch=false +gymin = 0 +gymax = 0 +gsize = 64 + + +nsegs = 16 +segs = {} +vx = 0.7 +vy = 0.7 + + +function clamp(x) + return max(0,min(1,x)) +end + +function randint() + local x=0 + local n=10 + while x==0 do + x=math.random(n)-n/2 + end + return x +end + + +nx = randint() +ny = randint() +nxprev = nx +nyprev = ny + +maxhist = {} +nbuckets = 3*60 +fftmax = 0 +basslevel = 0 +myfft = {} +nbass = 8 + +function do_fft() + fftmax=0 + for i=0,255 do + myfft[i] = fft(i) + if myfft[i]>fftmax then fftmax = myfft[i] end + end + table.insert(maxhist,fftmax) + if (#maxhist)>nbuckets then + table.remove(maxhist,1) + end + for i=1,#maxhist do + if maxhist[i]>fftmax then + fftmax = maxhist[i] + end + end + + for i=0,255 do + myfft[i] = myfft[i]/fftmax + end + + basslevel = 0 + for i=1,nbass do + basslevel = basslevel + myfft[1] + end + basslevel = basslevel/nbass + if silent then + basslevel = sin( (time()/1000/0.4)*tau) + end +end + +function hsl2rgb(hsl) + local h,s,l = table.unpack(hsl) + function f(n) + local k = (n+12*h)%12 + local a = s*min(l,1-l) + return l-a*max(-1,min(k-3,9-k,1)) + end + return f(0),f(8),f(4) +end + +function hslpal(n,h,s,l) + local r,g,b = hsl2rgb({h,s,l}) + local adr = 0x3fc0 + n*3 + poke(adr,255*clamp(r)) + poke(adr+1,255*clamp(g)) + poke(adr+2,255*clamp(b)) +end + +function rgbpal(i,r,g,b) + local adr = 0x3fc0 + 3*i + poke(adr,255*clamp(r)) + poke(adr+1,255*clamp(g)) + poke(adr+2,255*clamp(b)) +end + +function vb1pal() + vbank(1) + for i=1,pmax do + local h = (time()/1000/10)%1 + local s = 0.75 + 0.25*(i/pmax) + local l = 2.5*i/8 + if 1==i then + s = 1.0 + l = 0.6 + end + hslpal(i,h,s,l) + end + rgbpal(15,0,0,0) + for i=(pmax+1),14 do + local x = clamp( (i-pmax-1)/(14-pmax-1) ) + local h = x/5 + local s = 0.9 + local l = 0.5 + hslpal(i,h,s,l) + + end + +end + +function vb0pal() + vbank(0) + for i=0,15 do + local h = (0.5 + time()/1000/10)%1 + local s = 0.2 + local l = i/15 * 0.5 * (0.25 + 0.75*basslevel) + hslpal(i,h,s,l) + end +end + +function get_amp(x,y) + return get_amp_core(nx,ny,x,y) +end + +function get_amp_g(x,y) + if glitch then + local a = 1 + if (y>=gymin) and (y<=gymax) then + a=10 + end + if (y1 then + phase = 0 + tprev = time() + nxprev = nx + nyprev = ny + nx = randint() + ny = nx + while (math.abs(nx)==math.abs(ny)) do + ny = randint() + end + end + + if phase<0.1 then + glitch = true + gphase = phase/0.1 + gymax = gphase*(sy+gsize) + gymin = gymax - gsize + else + glitch = false + end + +end + + +function BDR(row) + if glitch then + if (row>gymin) and (row l2 then return l2 else return a1 end +end + +function q(x1,y1,x2,y2,x3,y3,x4,y4,c) + tri(x1,y1,x2,y2,x3,y3,c) + tri(x2,y2,x3,y3,x4,y4,c) +end + +function readsprite(sprarr,id) + local con=0 + for i=0,#sprarr//2-1 do + local rep=sprarr[i*2+1] + local col=sprarr[i*2+2] + for j=1,rep do + poke4(0x8000+con+id*64,col) + con=con+1 + end + end +end + +-- Unpack the goddamn sprites! +function BOOT() + readsprite(sprite0,0) + readsprite(sprite1,1) + readsprite(sprite2,2) + readsprite(sprite3,3) + readsprite(sprite4,4) + readsprite(sprite16,16) + readsprite(sprite17,17) + readsprite(sprite32,32) + readsprite(sprite33,33) + readsprite(sprite48,48) + readsprite(sprite49,49) + readsprite(sprite64,64) + readsprite(sprite65,65) + vbank(1) + poke(0x03FF8,1) + vbank(0) +end + +function suit(ax,ay,bx,by) +for i=0,1 do + c( 127+ax, 87+ay-i, 3, 13-i) + c( 124+ax, 84+ay-i, 3, 13-i) +end +for i=0,1 do + c( 129+ax+i, 82+ay-i, 3, 13-i) + c( 124+ax, 79+ay-i, 3, 13-i) +end + q( 82+bx, 81+by, 83+bx, 80+by, 81+bx, 88+by, 84+bx, 88+by, 8) + q( 83+bx, 80+by, 88+bx, 76+by, 84+bx, 88+by, 91+bx, 88+by, 9) + q( 88+bx, 76+by, 94+bx, 76+by, 91+bx, 88+by, 94+bx, 88+by, 9) + q( 94+bx, 76+by, 97+bx, 77+by, 94+bx, 88+by, 95+bx, 88+by, 9) + q( 97+bx, 77+by, 104+bx, 83+by, 95+bx, 88+by, 104+bx, 88+by,10) + q(104+bx, 83+by, 111+ax, 88+ay, 104+bx, 88+by, 111+ax, 89+ay,10) + q(111+ax, 88+ay, 117+ax, 89+ay, 111+ax, 89+ay, 117+ax, 91+ay,10) + q(117+ax, 89+ay, 122+ax, 88+ay, 117+ax, 91+ay, 123+ax, 92+ay,10) + q(122+ax, 88+ay, 127+ax, 87+ay, 123+ax, 92+ay, 126+ax, 92+ay,10) + + q( 82+bx, 88+by, 84+bx, 88+by, 83+bx, 94+by, 86+bx, 94+by, 8) + q( 84+bx, 88+by, 91+bx, 88+by, 86+bx, 94+by, 91+bx, 94+by, 9) + q( 91+bx, 88+by, 94+bx, 88+by, 91+bx, 94+by, 96+bx, 94+by, 9) + q( 94+bx, 88+by, 95+bx, 88+by, 96+bx, 94+by, 98+bx, 94+by, 8) + q( 95+bx, 88+by, 104+bx, 88+by, 98+bx, 94+by, 102+bx, 94+by, 9) + q(104+bx, 88+by, 111+ax, 89+ay, 102+bx, 94+by, 108+ax, 95+ay,10) + q(111+ax, 89+ay, 117+ax, 91+ay, 108+ax, 95+ay, 114+ax, 98+ay,10) + q(117+ax, 91+ay, 123+ax, 92+ay, 114+ax, 98+ay, 119+ax, 98+ay,10) + q(123+ax, 92+ay, 126+ax, 92+ay, 119+ax, 98+ay, 125+ax, 99+ay,10) + q(123+ax, 92+ay, 126+ax, 92+ay, 119+ax, 98+ay, 125+ax, 99+ay,10) + q(126+ax, 92+ay, 126+ax, 92+ay, 125+ax, 99+ay, 127+ax, 97+ay, 9) + + q( 83+bx, 94+by, 86+bx, 94+by, 84+bx, 98+by, 89+bx, 98+by, 8) + q( 86+bx, 94+by, 91+bx, 94+by, 89+bx, 98+by, 91+bx, 99+by, 9) + q( 91+bx, 94+by, 96+bx, 94+by, 91+bx, 99+by, 95+bx, 98+by, 9) + q( 96+bx, 94+by, 98+bx, 94+by, 95+bx, 98+by, 98+bx, 98+by, 8) + q( 98+bx, 94+by, 102+bx, 94+by, 98+bx, 98+by, 102+bx,100+by, 9) + q(102+bx, 94+by, 108+ax, 95+ay, 102+bx,100+by, 108+ax,101+ay, 9) + q(108+ax, 95+ay, 114+ax, 98+ay, 108+ax,101+ay, 115+ax,105+ay, 9) + q(114+ax, 98+ay, 119+ax, 98+ay, 115+ax,105+ay, 122+ax,107+ay, 9) + q(119+ax, 98+ay, 125+ax, 99+ay, 122+ax,107+ay, 129+ax,107+ay, 9) + q(125+ax, 99+ay, 127+ax, 97+ay, 129+ax,107+ay, 130+ax,104+ay, 9) + + q( 84+bx, 98+by, 89+bx, 98+by, 86+bx,100+by, 88+bx,101+by, 8) + q( 89+bx, 98+by, 91+bx, 99+by, 88+bx,101+by, 91+bx,102+by, 8) + q( 91+bx, 99+by, 95+bx, 98+by, 91+bx,102+by, 95+bx,102+by, 8) + q( 95+bx, 98+by, 98+bx, 98+by, 95+bx,102+by, 98+bx,101+by, 8) + q( 98+bx, 98+by, 102+bx,100+by, 98+bx,101+by, 102+bx,102+by, 8) + q(102+bx,100+by, 108+ax,101+ay, 102+bx,102+by, 108+ax,104+ay, 8) + q(108+ax,101+ay, 115+ax,105+ay, 108+ax,104+ay, 115+ax,107+ay, 8) + q(115+ax,105+ay, 122+ax,107+ay, 115+ax,107+ay, 122+ax,108+ay, 8) + q(122+ax,107+ay, 129+ax,107+ay, 122+ax,108+ay, 131+ax,108+ay, 8) + q(129+ax,107+ay, 130+ax,104+ay, 131+ax,108+ay, 136+ax,108+ay, 8) + +-- Highlights + l(127+ax, 97+ay, 130+ax,104+ay, 8) + l( 82+bx, 81+by, 83+bx, 80+by, 9) + l( 83+bx, 80+by, 88+bx, 76+by, 10) + l( 88+bx, 76+by, 94+bx, 76+by, 10) + l( 94+bx, 76+by, 97+bx, 77+by, 10) + l( 97+bx, 77+by, 104+bx, 83+by, 11) + l(104+bx, 83+by, 111+ax, 88+ay, 11) + l(111+ax, 88+ay, 117+ax, 89+ay, 11) + l(117+ax, 89+ay, 122+ax, 88+ay, 11) + l(122+ax, 88+ay, 127+ax, 87+ay, 11) +end + +function thigh(ax,ay,bx,by) +-- Butt + q(126+ax, 92+ay, 134+ax, 90+ay, 127+ax, 97+ay, 134+ax, 98+ay, 15) + q(134+ax, 89+ay, 139+ax, 92+ay, 134+ax, 98+ay, 139+ax, 96+ay, 15) + q(139+ax, 92+ay, 142+ax, 93+ay, 139+ax, 96+ay, 143+ax, 99+ay, 15) + q(127+ax, 97+ay, 134+ax, 98+ay, 130+ax,104+ay, 135+ax,104+ay, 15) + q(134+ax, 98+ay, 139+ax, 96+ay, 135+ax,104+ay, 139+ax,101+ay, 15) + q(139+ax, 96+ay, 143+ax, 99+ay, 139+ax,101+ay, 142+ax,101+ay, 15) + q(130+ax,104+ay, 135+ax,104+ay, 136+ax,108+ay, 139+ax,108+ay, 15) + q(135+ax,104+ay, 139+ax,101+ay, 139+ax,108+ay, 142+ax,108+ay, 15) + q(139+ax,101+ay, 142+ax,101+ay, 142+ax,108+ay, 147+ax,108+ay, 15) +-- Leg + q(144+ax, 94+ay, 155+ax, 95+ay, 143+ax, 99+ay, 155+ax, 99+ay, 15) + q(143+ax, 99+ay, 155+ax, 99+ay, 142+ax,101+ay, 155+ax,105+ay, 15) + q(142+ax,101+ay, 155+ax,105+ay, 147+ax,108+ay, 155+ax,108+ay, 15) + q(155+ax, 95+ay, 168+bx, 96+by, 155+ax, 99+ay, 170+bx, 98+by, 15) + q(155+ax, 99+ay, 170+bx, 98+by, 155+ax,105+ay, 173+bx,101+by, 15) + q(155+ax,105+ay, 173+bx,101+by, 155+ax,108+ay, 172+bx,106+by, 15) +-- Buttshine + q(127+ax, 87+ay, 134+ax, 87+ay, 126+ax, 92+ay, 134+ax, 90+ay, 14) + q(134+ax, 87+ay, 140+ax, 89+ay, 134+ax, 89+ay, 139+ax, 92+ay, 14) + q(140+ax, 89+ay, 144+ax, 92+ay, 139+ax, 92+ay, 142+ax, 93+ay, 14) + q(142+ax, 93+ay, 144+ax, 92+ay, 143+ax, 99+ay, 144+ax, 94+ay, 14) + q(144+ax, 92+ay, 155+ax, 93+ay, 144+ax, 94+ay, 155+ax, 95+ay, 14) + q(155+ax, 93+ay, 166+bx, 94+by, 155+ax, 95+ay, 168+bx, 96+by, 14) +-- Highlights + l(127+ax, 87+ay, 134+ax, 87+ay,13) + l(134+ax, 87+ay, 140+ax, 89+ay,13) + l(140+ax, 89+ay, 144+ax, 92+ay,13) + l(142+ax, 93+ay, 144+ax, 92+ay,13) + l(144+ax, 92+ay, 155+ax, 93+ay,13) + l(155+ax, 93+ay, 166+bx, 94+by,13) +-- Tail +end + +function leg(ox,oy,rot,rl) +-- joint + e( ox, oy,6,6,15+rl) + +-- shoe + q( ox+( -1*cos(rot))-(-50*sin(rot)),oy+( 0*sin(rot))+(-50*cos(rot)), + ox+( 0*cos(rot))-(-50*sin(rot)),oy+( 0*sin(rot))+(-50*cos(rot)), + ox+( -1*cos(rot))-(-42*sin(rot)),oy+( -1*sin(rot))+(-42*cos(rot)), + ox+( 2*cos(rot))-(-43*sin(rot)),oy+( 2*sin(rot))+(-43*cos(rot)), 9-rl) + q( ox+( -1*cos(rot))-(-42*sin(rot)),oy+( -1*sin(rot))+(-42*cos(rot)), + ox+( 2*cos(rot))-(-43*sin(rot)),oy+( 2*sin(rot))+(-43*cos(rot)), + ox+( 0*cos(rot))-(-36*sin(rot)),oy+( 0*sin(rot))+(-36*cos(rot)), + ox+( 2*cos(rot))-(-38*sin(rot)),oy+( 2*sin(rot))+(-38*cos(rot)), 9-rl) + q( ox+( 2*cos(rot))-(-43*sin(rot)),oy+( 2*sin(rot))+(-43*cos(rot)), + ox+( 6*cos(rot))-(-44*sin(rot)),oy+( 6*sin(rot))+(-44*cos(rot)), + ox+( 2*cos(rot))-(-38*sin(rot)),oy+( 2*sin(rot))+(-38*cos(rot)), + ox+( 5*cos(rot))-(-39*sin(rot)),oy+( 5*sin(rot))+(-39*cos(rot)), 9-rl) + q( ox+( 6*cos(rot))-(-44*sin(rot)),oy+( 6*sin(rot))+(-44*cos(rot)), + ox+( 7*cos(rot))-(-46*sin(rot)),oy+( 7*sin(rot))+(-46*cos(rot)), + ox+( 5*cos(rot))-(-39*sin(rot)),oy+( 5*sin(rot))+(-39*cos(rot)), + ox+( 7*cos(rot))-(-40*sin(rot)),oy+( 7*sin(rot))+(-40*cos(rot)), 9-rl) + q( ox+( 7*cos(rot))-(-46*sin(rot)),oy+( 7*sin(rot))+(-46*cos(rot)), + ox+( 10*cos(rot))-(-50*sin(rot)),oy+( 10*sin(rot))+(-50*cos(rot)), + ox+( 7*cos(rot))-(-40*sin(rot)),oy+( 7*sin(rot))+(-40*cos(rot)), + ox+( 10*cos(rot))-(-42*sin(rot)),oy+( 10*sin(rot))+(-42*cos(rot)), 9-rl) + q( ox+( 10*cos(rot))-(-50*sin(rot)),oy+( 10*sin(rot))+(-50*cos(rot)), + ox+( 15*cos(rot))-(-51*sin(rot)),oy+( 15*sin(rot))+(-51*cos(rot)), + ox+( 10*cos(rot))-(-42*sin(rot)),oy+( 10*sin(rot))+(-42*cos(rot)), + ox+( 15*cos(rot))-(-47*sin(rot)),oy+( 15*sin(rot))+(-47*cos(rot)), 9-rl) + q( ox+( 15*cos(rot))-(-51*sin(rot)),oy+( 15*sin(rot))+(-51*cos(rot)), + ox+( 17*cos(rot))-(-50*sin(rot)),oy+( 17*sin(rot))+(-50*cos(rot)), + ox+( 15*cos(rot))-(-47*sin(rot)),oy+( 15*sin(rot))+(-47*cos(rot)), + ox+( 19*cos(rot))-(-48*sin(rot)),oy+( 19*sin(rot))+(-48*cos(rot)), 9-rl) +-- foot + q( ox+( -1*cos(rot))-(-36*sin(rot)),oy+( -1*sin(rot))+(-36*cos(rot)), + ox+( 2*cos(rot))-(-38*sin(rot)),oy+( 2*sin(rot))+(-38*cos(rot)), + ox+( -1*cos(rot))-(-31*sin(rot)),oy+( -1*sin(rot))+(-31*cos(rot)), + ox+( 1*cos(rot))-(-30*sin(rot)),oy+( 1*sin(rot))+(-30*cos(rot)), 14+rl) + q( ox+( 2*cos(rot))-(-38*sin(rot)),oy+( 2*sin(rot))+(-38*cos(rot)), + ox+( 5*cos(rot))-(-39*sin(rot)),oy+( 5*sin(rot))+(-39*cos(rot)), + ox+( 1*cos(rot))-(-30*sin(rot)),oy+( 1*sin(rot))+(-30*cos(rot)), + ox+( 3*cos(rot))-(-29*sin(rot)),oy+( 3*sin(rot))+(-29*cos(rot)), 15+rl) + q( ox+( 5*cos(rot))-(-39*sin(rot)),oy+( 5*sin(rot))+(-39*cos(rot)), + ox+( 7*cos(rot))-(-40*sin(rot)),oy+( 7*sin(rot))+(-40*cos(rot)), + ox+( 3*cos(rot))-(-29*sin(rot)),oy+( 3*sin(rot))+(-29*cos(rot)), + ox+( 7*cos(rot))-(-29*sin(rot)),oy+( 7*sin(rot))+(-29*cos(rot)), 15+rl) + q( ox+( 7*cos(rot))-(-40*sin(rot)),oy+( 7*sin(rot))+(-40*cos(rot)), + ox+( 10*cos(rot))-(-42*sin(rot)),oy+( 10*sin(rot))+(-42*cos(rot)), + ox+( 7*cos(rot))-(-29*sin(rot)),oy+( 7*sin(rot))+(-29*cos(rot)), + ox+( 12*cos(rot))-(-35*sin(rot)),oy+( 12*sin(rot))+(-35*cos(rot)), 15+rl) + q( ox+( 10*cos(rot))-(-42*sin(rot)),oy+( 10*sin(rot))+(-42*cos(rot)), + ox+( 15*cos(rot))-(-47*sin(rot)),oy+( 15*sin(rot))+(-47*cos(rot)), + ox+( 12*cos(rot))-(-35*sin(rot)),oy+( 12*sin(rot))+(-35*cos(rot)), + ox+( 16*cos(rot))-(-42*sin(rot)),oy+( 16*sin(rot))+(-42*cos(rot)), 15+rl) + q( ox+( 15*cos(rot))-(-47*sin(rot)),oy+( 15*sin(rot))+(-47*cos(rot)), + ox+( 19*cos(rot))-(-48*sin(rot)),oy+( 19*sin(rot))+(-48*cos(rot)), + ox+( 16*cos(rot))-(-42*sin(rot)),oy+( 16*sin(rot))+(-42*cos(rot)), + ox+( 18*cos(rot))-(-43*sin(rot)),oy+( 18*sin(rot))+(-43*cos(rot)), 14+rl) + l( ox+( 2*cos(rot))-(-38*sin(rot)),oy+( 2*sin(rot))+(-38*cos(rot)), + ox+( 5*cos(rot))-(-39*sin(rot)),oy+( 5*sin(rot))+(-39*cos(rot)), 14+rl) + l( ox+( 5*cos(rot))-(-39*sin(rot)),oy+( 5*sin(rot))+(-39*cos(rot)), + ox+( 7*cos(rot))-(-40*sin(rot)),oy+( 7*sin(rot))+(-40*cos(rot)), 14+rl) + l( ox+( 7*cos(rot))-(-40*sin(rot)),oy+( 7*sin(rot))+(-40*cos(rot)), + ox+( 10*cos(rot))-(-42*sin(rot)),oy+( 10*sin(rot))+(-42*cos(rot)), 14+rl) + l( ox+( 10*cos(rot))-(-42*sin(rot)),oy+( 10*sin(rot))+(-42*cos(rot)), + ox+( 15*cos(rot))-(-47*sin(rot)),oy+( 15*sin(rot))+(-47*cos(rot)), 14+rl) + l( ox+( 15*cos(rot))-(-47*sin(rot)),oy+( 15*sin(rot))+(-47*cos(rot)), + ox+( 18*cos(rot))-(-48*sin(rot)),oy+( 18*sin(rot))+(-48*cos(rot)), 13+rl) +-- leg + q( ox+( 3*cos(rot))-(-29*sin(rot)),oy+( 3*sin(rot))+(-29*cos(rot)), + ox+( 7*cos(rot))-(-29*sin(rot)),oy+( 7*sin(rot))+(-29*cos(rot)), + ox+( 0*cos(rot))-(-20*sin(rot)),oy+( 0*sin(rot))+(-20*cos(rot)), + ox+( 7*cos(rot))-(-20*sin(rot)),oy+( 7*sin(rot))+(-20*cos(rot)), 15+rl) + q( ox+( 0*cos(rot))-(-20*sin(rot)),oy+( 0*sin(rot))+(-20*cos(rot)), + ox+( 7*cos(rot))-(-20*sin(rot)),oy+( 7*sin(rot))+(-20*cos(rot)), + ox+( -1*cos(rot))-(-13*sin(rot)),oy+( -1*sin(rot))+(-13*cos(rot)), + ox+( 7*cos(rot))-(-13*sin(rot)),oy+( 7*sin(rot))+(-13*cos(rot)), 15+rl) + q( ox+( -1*cos(rot))-(-13*sin(rot)),oy+( -1*sin(rot))+(-13*cos(rot)), + ox+( 7*cos(rot))-(-13*sin(rot)),oy+( 7*sin(rot))+(-13*cos(rot)), + ox+( -1*cos(rot))-( 2*sin(rot)),oy+( -1*sin(rot))+( -4*cos(rot)), + ox+( 7*cos(rot))-( 1*sin(rot)),oy+( 7*sin(rot))+( 1*cos(rot)), 15+rl) + q( ox+( 1*cos(rot))-(-30*sin(rot)),oy+( 1*sin(rot))+(-30*cos(rot)), + ox+( 3*cos(rot))-(-29*sin(rot)),oy+( 3*sin(rot))+(-29*cos(rot)), + ox+( -2*cos(rot))-(-20*sin(rot)),oy+( -2*sin(rot))+(-20*cos(rot)), + ox+( 0*cos(rot))-(-20*sin(rot)),oy+( 0*sin(rot))+(-20*cos(rot)), 14+rl) + q( ox+( -2*cos(rot))-(-20*sin(rot)),oy+( -2*sin(rot))+(-20*cos(rot)), + ox+( 0*cos(rot))-(-20*sin(rot)),oy+( 0*sin(rot))+(-20*cos(rot)), + ox+( -4*cos(rot))-(-13*sin(rot)),oy+( -4*sin(rot))+(-13*cos(rot)), + ox+( -1*cos(rot))-(-13*sin(rot)),oy+( -1*sin(rot))+(-13*cos(rot)), 14+rl) + q( ox+( -4*cos(rot))-(-13*sin(rot)),oy+( -4*sin(rot))+(-13*cos(rot)), + ox+( -1*cos(rot))-(-13*sin(rot)),oy+( -1*sin(rot))+(-13*cos(rot)), + ox+( -5*cos(rot))-( 2*sin(rot)),oy+( -5*sin(rot))+( 2*cos(rot)), + ox+( -1*cos(rot))-( 2*sin(rot)),oy+( -1*sin(rot))+( -4*cos(rot)), 14+rl) + l( ox+( -1*cos(rot))-(-35*sin(rot)),oy+( -1*sin(rot))+(-35*cos(rot)), + ox+( -1*cos(rot))-(-32*sin(rot)),oy+( -1*sin(rot))+(-32*cos(rot)), 13+rl) + l( ox+( 1*cos(rot))-(-30*sin(rot)),oy+( 1*sin(rot))+(-30*cos(rot)), + ox+( -2*cos(rot))-(-20*sin(rot)),oy+( -2*sin(rot))+(-20*cos(rot)), 13+rl) + l( ox+( -2*cos(rot))-(-20*sin(rot)),oy+( -2*sin(rot))+(-20*cos(rot)), + ox+( -4*cos(rot))-(-13*sin(rot)),oy+( -4*sin(rot))+(-13*cos(rot)), 13+rl) + l( ox+( -4*cos(rot))-(-13*sin(rot)),oy+( -4*sin(rot))+(-13*cos(rot)), + ox+( -5*cos(rot))-( 2*sin(rot)),oy+( -5*sin(rot))+( 2*cos(rot)), 13+rl) + + l( ox+( 1*cos(rot))-(-30*sin(rot)),oy+( 1*sin(rot))+(-30*cos(rot)), + ox+( 7*cos(rot))-(-29*sin(rot)),oy+( 7*sin(rot))+(-29*cos(rot)), 9-rl) + l( ox+( 1*cos(rot))-(-30*sin(rot)),oy+( 1*sin(rot))+(-30*cos(rot)), + ox+( 7*cos(rot))-(-29*sin(rot)),oy+( 7*sin(rot))+(-29*cos(rot)), 9-rl) + l( ox+( 7*cos(rot))-(-40*sin(rot)),oy+( 7*sin(rot))+(-40*cos(rot)), + ox+( 12*cos(rot))-(-35*sin(rot)),oy+( 12*sin(rot))+(-35*cos(rot)), 9-rl) + l( ox+( 10*cos(rot))-(-42*sin(rot)),oy+( 10*sin(rot))+(-42*cos(rot)), + ox+( 16*cos(rot))-(-42*sin(rot)),oy+( 16*sin(rot))+(-42*cos(rot)), 9-rl) + l( ox+( 15*cos(rot))-(-47*sin(rot)),oy+( 15*sin(rot))+(-47*cos(rot)), + ox+( 16*cos(rot))-(-42*sin(rot)),oy+( 16*sin(rot))+(-42*cos(rot)), 9-rl) +end + + +function rarm(ax,ay,bx,by) + q(59+ax,81+ay,63+ax,85+ay,54+ax,86+ay,58+ax,90+ay,0) + c(61+ax,83+ay,4,15) + c(60+ax,82+ay,3,14) + c(59+ax,81+ay,1,13) + q( 61+ax, 94+ay, 74+ax, 95+ay, 55+ax, 98+ay, 76+ax, 96+ay, 15) + q( 85+bx, 78+by, 87+bx, 80+by, 74+ax, 95+ay, 76+ax, 96+ay, 15) + q( 55+ax, 98+ay, 76+ax, 96+ay, 55+ax, 99+ay, 80+ax,106+ay, 0) + q( 87+bx, 80+by, 90+ax, 88+ay, 76+ax, 96+ay, 80+ax,106+ay,15) + spr(16, 48+ax, 84+ay, 1,1, 0,0, 2,2) +end + +function larm(ax,ay,bx,by) + cb(89+bx, 82+by, 5, 14) + c(90+bx, 82+by, 5, 15) + c(79+ax, 102+ay, 5, 15) + q( 84+bx, 81+by, 96+bx, 84+by, 75+ax, 99+ay, 84+ax,106+ay, 15) + q( 56+ax,107+ay, 77+ax,103+ay, 56+ax,108+ay, 81+ax,108+ay, 15) + q( 84+bx, 81+by, 86+bx, 84+by, 75+ax, 99+ay, 77+ax,103+ay, 14) + q( 56+ax, 105+ay, 74+ax,100+ay, 56+ax,107+ay, 77+ax,103+ay, 14) + l( 84+bx, 81+by, 75+ax, 99+ay, 13) + l( 56+ax,105+ay, 74+ax,100+ay, 13) + l( 75+ax,100+ay, 76+ax,103+ay, 13) + spr(2, 42+ax, 100+ay, 1,1, 0,0, 3,1) +end + +function head(ax,ay,bx,by,mth) + for i=0,1 do + c( 66+ax, 62+ay-i, 3, 15-i) + c( 68+ax, 66+ay-i, 3, 15-i) + c( 76+ax, 81+ay-i, 3, 15-i) + c( 73+ax, 85+ay-i, 3, 15-i) + c( 76+ax, 83+ay-i, 3, 15-i) + end + q( 74+ax, 78+ay, 81+ax, 74+ay, 82+bx, 81+by, 85+bx, 78+ay, 0) + q( 81+ax, 74+ay, 88+ax, 68+ay, 85+bx, 78+by, 93+bx, 76+by, 15) + spr(48, 64+ax, 74+ay+mth, 1,1, 0,0, 2,1) +-- c( 76+ax, 75+ay, 3, 15) + c( 77+ax, 64+ay, 11, 15) + c( 77+ax, 65+ay, 11, 15) + q( 68+ax, 64+ay, 72+ax, 64+ay, 62+ax, 70+ay, 72+ax, 70+ay, 15) + q( 62+ax, 70+ay, 72+ax, 70+ay, 61+ax, 72+ay, 72+ax, 72+ay, 15) + q( 61+ax, 72+ay, 72+ax, 72+ay, 61+ax, 74+ay, 72+ax, 74+ay, 15) + q( 61+ax, 74+ay, 72+ax, 74+ay, 63+ax, 78+ay, 71+ax, 78+ay, 15) + q( 72+ax, 74+ay, 76+ax, 74+ay, 71+ax, 78+ay, 76+ax, 76+ay, 15) + l( 62+ax, 72+ay, 64+ax, 74+ay, 13) + l( 65+ax, 74+ay, 67+ax, 72+ay, 13) + l( 65+ax, 74+ay, 67+ax, 78+ay, 13) + l( 64+ax, 78+ay, 70+ax, 78+ay, 13) + +for i=0,1 do + c( 72+ax, 52+ay-i, 3, 13-i) + c( 64+ax, 58+ay-i, 3, 13-i) + c( 67+ax, 55+ay-i, 3, 13-i) + c( 82+ax, 54+ay-i, 3, 13-i) + c( 69+ax, 56+ay-i, 3, 13-i) + c( 71+ax, 58+ay-i, 3, 13-i) + c( 76+ax, 56+ay-i, 3, 13-i) + c( 80+ax, 60+ay-i, 3, 13-i) + c( 83+ax, 64+ay-i, 3, 13-i) + c( 87+ax, 68+ay-i, 4, 13-i) + c( 90+ax, 72+ay-i, 4, 13-i) + c( 90+ax, 72+ay-i, 4, 13-i) + c( 77+ax, 54+ay-i, 3, 13-i) +end +for i=0,1 do + c( 67+ax, 55+ay-i, 3, 13-i) + c( 82+ax, 57+ay-i, 3, 13-i) + c( 87+ax, 56+ay-i, 3, 13-i) + c( 92+ax, 67+ay-i, 3, 13-i) + c( 89+ax, 60+ay-i, 4, 13-i) +end +for i=0,1 do + c( 84+ax, 71+ay-i, 3, 13-i) + c( 82+ax, 54+ay-i, 3, 13-i) + c( 83+ax, 64+ay-i, 3, 13-i) + c( 84+ax, 71+ay-i, 3, 13-i) + c( 82+ax, 80+ay-i, 3, 13-i) +end +for i=0,1 do + c( 87+ax+i, 79+ay-i, 3, 13-i) + c( 92+ax+i, 75+ay-i, 4, 13-i) + c( 95+ax, 77+ay-i, 3, 13-i) + c( 85+ax, 73+ay-i, 3, 13-i) +end + spr(0, 66+ax, 63+ay, 1,1, 0,0, 1,1) + spr(1, 73+ax, 63+ay, 1,1, 0,0, 1,1) + spr(64, 83+ax, 59+ay, 1,1, 0,0, 2,1) +end + +function skirt(ax,ay) + q(120,108, 149,108, 124+ax,125+ay, 147+ax, 125+ay, 10) + q(124+ax,125+ay, 147+ax,125+ay, 126+2*ax,136, 140+2*ax, 136, 10) + l(120,107, 149,107, 11) +end +-- Now for the impressive stuff + +function SCN(ln) + vbank(0) + poke(0x03fc3,ln//4+clmp(20*sin(t/20),0,20)) + poke(0x03fc4,ln//2+clmp(60*sin(t/20),10,60)) + poke(0x03fc5,ln+clmp(120*sin(t/20),20,120)) + vbank(1) +end + +function TIC() +t=time()/60 +vbank(0) +cls(1) +e(120,136,280,130,0) +e(120,136,275,125,1) +e(120,136,210,80,0) +e(120,136,215,75,1) +q(-1,-1,10,-1,50,137,70,137) +q(70,-1,80,-1,90,137,110,137) +q(230,-1,241,-1,170,137,190,137) +q(170,-1,160,-1,150,137,130,137) +e(120,136,160,30,0) +vbank(1) +cls(1) +local brth=sin(t/10) +local sng=sin(t/15) +local osc1=pi/6+sin((t+30)/10)*pi/6 +local osc2=pi/6+sin(t/10)*pi/6 +rectb(20,108,200,30,11) +rect(21,109,199,30,0) +l(50,108,80,108,10) +l(169,108,140,108,10) +l(20,108,50,108,9) +l(219,108,169,108,9) +l(20,108,20,136,8) +l(219,108,219,136,8) +rarm(-sng,2*sng,0,brth) +suit(0,0,0,brth) +leg(173,99+2*sin((t+30)/10),osc1,1) +leg(173,99+2*sin(t/10),osc2,0) +thigh(0,0,0,1.25*brth) +head(0,-abs(2*sng),0,brth, +-- Human speech range +clmp( + fft(17)*3 ++fft(18)*3 ++fft(19)*5 ++fft(20)*6 ++fft(21)*6 ++fft(22)*3 ++fft(23)*6 ++fft(24)*6 +,1,3)) +larm(-2*brth,0,0,brth) +skirt(sng,0,0) +end diff --git a/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..932a90a54 --- /dev/null +++ b/shader_file_sources/2024_01_22_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,89 @@ +--ello!!! +--been a while since i've done a jam +--greetz to dave, suule and doop :) + +sin=math.sin +cos=math.cos +rain={} + +for i=1,200 do +rain[i]={math.random()*256,math.random()*256} +end + +function TIC() + cls(13) + t=time()/100 + for i=-1,5 do + elli(0+(i*64)+t*3%64,20,50,15,12) + end + + for i=0,3 do + house(0+i*71,60) + line(0+i*71,40+60,0+i*71,112+60,1) + end + + for i=1,200 do + for j=0,3 do + pix((rain[i][1]+t*8+j/2)%256,(rain[i][2]+t*48+j)%256,9+j/2) + end + end + + for i=-1,5 do + elli(0+(i*64)+t*4%64,10,50,20,14) + end + for i=-1,5 do + elli(0+(i*64)+t*5%64,5,50,15,15) + end + + for i=0,3 do + print("HOPE YOU PUT YER\n BINS IN",25+sin(t/3+i/2)*4,4+sin(t+i/2)*2,15-i,true,2) + end + + for k=0,3 do + for j=0,8,4 do + for i=(t*48%1700)-600,(t*48%1700)-440,3 do + pix(0+sin(i/32+j/2)*32+i/4+j*8,50+cos(i/32+j/2)*(16+sin(i/32+k)*8)+k*8,12) + pix(0+sin(i/32+j/2)*32+i/4+j*8,50+cos(i/32+j/2)*(16+sin(i/32+k)*8)+k*8+1,14) + end + end + end + + brolly(-150+t*16%280,4+sin(t/2)*8) + bin(-150+t*12%370,0+sin(t/3)*sin(t/7)*32) + +end + +function bin(x,y) + rect(110+x,38+y,30,45,6) + rect(106+x,38+y,36,5,7) + rect(116+x,38-3+y,22,3,6) + rect(110+x,80+y,4,8,6) + circ(136+x,83+y,6,15) +end + +function brolly(x,y) + --stuck with maths here... + for i=-4,4 do + circ(120-sin(i/4)*16+x,68-cos(i/4)*16+y,3,1) + circ(120+x,68+i*3+y,2,15) + end + for i=-1,2 do + circ(113+sin(i/2)*8+x,78+cos(i/2)*8+y,2,15) + end +end + +function house(x,y) + for i=0,72 do + line(0+x,40+i+y,70+x,40+i+y,2+i%2) + end + rect(25+x,93+y,20,20,1) + rect(4+x,46+y,15,25,12) + rect(6+x,48+y,11,21,13) + rect(4+24+x,46+y,15,25,12) + rect(6+24+x,48+y,11,21,13) + rect(4+48+x,46+y,15,25,12) + rect(6+48+x,48+y,11,21,13) + for i=0,10 do + line(0+x,30+i+y,70+x,30+i+y,1+i%2) + end +end \ No newline at end of file diff --git a/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..21041f58a --- /dev/null +++ b/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,96 @@ +-- aldroid here! +-- glhf to tobach + nico, catnip, +-- jtruk and bigups to polynomial +-- thanks again to violet hosting! + +-- no plan, only jam + +S=math.sin +C=math.cos +mags = {} +for i=0,255 do +mags[i]=0 +end +t=0 + +words={ +"eat", +"sleep", +"rave", +"rept", +"drum", +"bass", +"jungl", +"fear" +} + +sewo={} +for i=0,3 do +sewo[i]={12,i+1} +end + +function wore(x,y,i) +clip(x,y,x+120,y+68) +if sewo[i][1]<0 then + sewo[i][2]=math.random(1,#words) + sewo[i][1]=10+math.random()*4 +end +print(words[sewo[i][2]],x+5,y+10,15,false,4) +sewo[i][1]=sewo[i][1]-0.1 +end + +blop=0 + +-- to / from +function rectl(x1,y1,x2,y2,x3,y3) + dy = y1-y3 + for y=y1,y2 do + memcpy(x1//2+y*120,0x4000+x3//2+(y-dy)*120,(x2-x1)//2) + end +end + + + +function TIC() + cls() + + wore(0,0,0) + wore(120,0,1) + wore(0,68,2) + wore(120,68,3) + clip() + + for i=0,240,24 do + rectl((t+i)%240,10,(t+i)%240+10,126,((t+i)+50+t*0.2)%240,10) + end + r=40 + if blop > 0 then + circ(120,68,r-5,15-blop) + blop = blop - 0.03/fft(1) + clip(0,t%136,240,(t+10)%136) + circ(120,68,r-5,0) + + end + clip() + if (fft(5)>0.04) then blop=4 end + + t=t+fft(1)*10 + ti=t//1%256 + tf=t%1 + for i=0,255 do + mags[i]= mags[(i+ti+256)%256]*0.6 + fft((i-ti)%256)*(1+i)/255 + end + for ic=0,255 do + i=(ic+t*2)%256//1 + for j=1,5 do + x1=C(i*2*math.pi/255)*(1+mags[i]*(20-4*j)) + y1=S(i*2*math.pi/255)*(1+mags[i]*(20-4*j)) + x2=C((i+1)*2*math.pi/255)*(1+mags[(i+1)%256]*(20-4*j)) + y2=S((i+1)*2*math.pi/255)*(1+mags[(i+1)%256]*(20-4*j)) + line(120+x1*r,68+y1*r,120+x2*r,68+y2*r,3+j) + end + end + if t%10 < 1 then + memcpy(0x4000,0,120*136) + end +end diff --git a/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..e43b8919f --- /dev/null +++ b/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,140 @@ +-- Greetz: Aldroid, ToBach+Nico +-- Polynomial, RaccoonViolet + +T=0 +P={} +C={} +M=math +SIN,COS,MIN,MAX=M.sin,M.cos,M.min,M.max + +function BDR(y) + vbank(0) + setRGB(0,0,0,0) + + for i=1,7 do + local v=i/7 + local u=.5+SIN(y/20)*.5 + setRGB(i,v*128,u*255,0) + setRGB(i+8,0,v*128,u*255) + end + + vbank(1) + for i=1,7 do + local v=i/7 + local u=.5+SIN(y/20)*.5 + setRGB(i,127+v*127,u*255,0) + setRGB(i+8,0,127+v*127,u*255) + end +end + +function BOOT() + init() + + cls() +end + +function TIC() + decay() + + for x=0,239 do + for y=0,135 do + i=y*240+x + P[i]=P[i]+.1*SIN(T/7*.1+x/20) + +.15*SIN(T/10*.9+y/15) + end + end + + for i=0,20 do + local xd=120+SIN(i+T/35)*100 + local yd=68+COS(i+T/20)*60 + local d=i%2==0 and 1 or -1 + doLump(xd,yd,20,d*(1+fft(0))) + end + + pattern() + cap() + + draw() + T=T+1 +end + +function doLump(xc,yc,r,v) + for yd=-r,r do + for xd=-r,r do + local d=(xd^2+yd^2)^.5 + if d=0 and x<=239 and y>=0 and y<=135 then + local i=y//1*240+x//1 + P[i]=P[i]+v*(d/r) + end + end + end + end +end + +function init() + for i=0,0x7fff do + P[i]=0 + C[i]=0 + end +end + +function decay() + for i=0,0x7fff do + P[i]=P[i]*.95 + end +end + +function pattern() + local i=0 + local xc,yc=120+SIN(T/30)*100,68+SIN(T/20)*100 + local s=5+SIN(T/15)*4.8 + for y=0,135 do + for x=0,239 do + C[i]=((((xc-x)*s)//16+((yc-y)*s)//16))%2==0 and 1 or 0 + i=i+1 + end + end +end + +function cap() + for i=0,0x7fff do + P[i]=MAX(0,MIN(1,P[i])) + end +end + +function draw() + vbank(0) + local i=0 + for y=0,135 do + for x=0,239 do + c=0 + if P[i]<0 then + c=-P[i]*7+C[i]*7+1 + end + pix(x,y,c) + i=i+1 + end + end + + vbank(1) + i=0 + for y=0,135 do + for x=0,239 do + c=0 + if P[i]>=0 then + c=P[i]*7+C[i]*7+1 + end + pix(x,y,c) + i=i+1 + end + end +end + +function setRGB(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end \ No newline at end of file diff --git a/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/nicobach.lua b/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/nicobach.lua new file mode 100644 index 000000000..4466528f6 --- /dev/null +++ b/shader_file_sources/2024_01_29_byte_jam_monday_night_bytes/nicobach.lua @@ -0,0 +1,104 @@ +-- ^ +-- Nico & ToBach Tag Team!! +-- :3 +sin=math.sin +cos=math.cos + +-- we just had an internal discussion +-- over if lovebyte was actually +-- next weekend, it was... we are dim + +-- nico on the keyssss +-- "next weekend" to me reads as +-- "the next weekend that happens" +-- not "the weekend of next week" +-- technically not incorrect though +-- I'll let it slide + +-- I think we're happy with this +-- thanks to everybody for watching +-- ^ +-- and to ToBach for collabbing with +-- me on this entry!! + +-- :3 + + +text={"LOVE","BYTE","NEXT","WKND"} + +function TIC() +t=time()/512 +t2=time()/100 +cls() + -- I give up on pixels + -- let's do crap with shapes + for i=0,200 do + circ( + sin(t-i+sin(t-i/2)/2)*120+120, + sin(t-i/7)*68+68, + sin(t)*10+10, + i%2+14) + end + + for j=-8,8 do + for i=0,20 do + circ(120+sin(t2/8+i/3)*(80+sin(j/2+t2/4)*32),68+cos(i/3+t2/8+j/3)*4+j*8,2,15-j%4) + end + end + + print(text[1+t//1%4],28,45+sin(t2)*8,12,true,8) + + for i=0,20000 do + pix(math.random()*240,math.random()*136,0) + end + --hello its tobach now :))) + + for j=-4,4,2 do + for i=-4,4,2 do + for scale=0,10,2 do + circ( + i*48+j*48/2+sin(t2/11+2)*32+24, + j*48+cos(t2/7+1+i)*32+24, + 10+sin(i+t2/8)*4-scale, + 15-(scale+(t*8))/4%3) + end + + -- haha I cleaned up your code + -- nico + + -- >:( -tobach + + clock( + i*48+j*48/2+sin(t2/11)*32, + j*48+cos(t2/7)*32, + i) + + -- tagging in tobach rn + -- out of ideas + + -- hello tobach again + -- hmmmmmmm + end + end + +end +-- I have been instructed to +-- " do something" +-- so I'm gonna try doing +-- something. +-- - nico +-- PS the clocks weren't my idea! +-- despite what some of you might think + +function clock(x,y,off) + circ(120+x,68+y,22,13) + circ(120+x,68+y,20,12) + for i=0,11 do + --good enuff lol + pix(120+sin(i/2)*16+x,68+cos(i/2)*16+y,15) + end + + line(120+x,68+y,120-sin(t2/4+off)*16+x,68+cos(t2/4+off)*16+y,14) + line(120+x,68+y,120-sin(t2/8+off)*8+x,68+cos(t2/8+off)*8+y,13) + +end \ No newline at end of file diff --git a/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..105562b3d --- /dev/null +++ b/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,62 @@ +-- aldroid here! +-- glhf everyone :) + +-- no plan as usual, no brain cells + +-- this is a total experiment, i'm +-- nervous doing it live but you'll +-- support me i'm sure :) + +cls() +S=math.sin + +function SCN(l) +blif = fft(35)*2000/(l/20+4+S(t)*2) +for i=0,15 do + +poke(0x3fc0+i*3,math.max(i*240/15-blif,0)) +poke(0x3fc1+i*3,math.max(i*240/15-blif,0)) +poke(0x3fc2+i*3,math.min(i*240/15+blif,255)) +end +end + + +worbs = { +"YOU", +"WOULD", +"LOVE", +"A", +"BYTE" +} + +function TIC() +t=time()/100 +worb = worbs[1+t//10%#worbs] +print(worb,20+math.sin(t)*2,30,fft(5)*200,false,8) + + +for y=0,135 do +ox = math.max(0,S(t/200+y/100)*2)*2 + +for x=0,239 do +outerval = 0 +outzone = 9+4*S(t*0.81) +inzone = 5+3*S(t*0.782) +for i=-outzone,outzone,5.5+S(t+x) do for j=-outzone,outzone,4.5+S(t+y) do +outerval = outerval + pix(x+ox+i,y+j) +end end + +innerval = 0 +for i=-inzone,inzone,5.5+S(t+x) do for j=-inzone,inzone,5.5+S(t+y) do +innerval = innerval + pix(x+ox+i,y+j) +end end + +pv = math.max((outerval-innerval)/(26-fft(1)*44),0) + +pix(x,y,pv) + +end end +if fft(5)*200>14 then +print(worb,20+math.sin(t)*2,30,0,false,8) +end +end diff --git a/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/catnip.lua b/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/catnip.lua new file mode 100644 index 000000000..259f8c2a0 --- /dev/null +++ b/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/catnip.lua @@ -0,0 +1,123 @@ +-- Boom bap original cat +-- Greets to violet, vurpo, aldroid, +-- mantratronic and jtruk. AND YOU + + + poke(0x03FC0+6,255) + poke(0x03FC0+7,150) + poke(0x03FC0+8,150) + +cls(1) +elli(120,80,40,40,3) +elli(120-25,15,8,10,3) +elli(120-25,15,6,8,4) +elli(120+25,15,8,10,3) +elli(120+25,15,6,8,4) +elli(120,40,40,30,3) +elli(121,39,38,27,4) +elli(120,60,10,6,3) +elli(121,59,8,5,4) +elli(120-8,60,1,4,12) +elli(120+8,58,1,4,12) +elli(120-10,50,12,8,3) +elli(120+10,50,12,8,3) +elli(120-9,49,10,7,4) +elli(120+11,49,10,7,4) + +elli(120-10,30,6,8,12) +elli(120+10,30,6,8,12) +ellib(120-10,30,6,8,3) +ellib(120+10,30,6,8,3) +circ(120,45,4,2) + +line(120-15,47,120-30,40,12) +line(120-15,50,120-32,50,12) +line(120-15,53,120-30,60,12) +line(120+15,47,120+30,40,12) +line(120+15,50,120+32,50,12) +line(120+15,53,120+30,60,12) + +px=2 py=2 +ppx=120 ppy=68 +lx=ppx ly=ppy +t=0 +sp=15 + +function TIC() + vbank(0) + -- table + rect(0,70,240,66,14) + vbank(1) + cls() + for x=0,2 do + for y=0,2 do + ox=x*60+60 + oy=y*20+80+4 + elli(ox,oy,20,8,15) + if px==x and py==y then + h=sp/4-math.abs(t%sp-sp/2)/2 + elli(ox,oy,18,6,2) + rect(ox-18,oy-h,37,h,2) + elli(ox,oy-h,18,6,2) + line(ox-12,oy+4,ox-12,oy+4-h,12) + line(ox-14,oy+3,ox-14,oy+3-h,12) + end + end + end + + -- eyes + ox=(px-1)*2 + oy=(py)+2 + elli(120-10+ox,30+oy,3,3,15) + elli(120+10+ox,30+oy,3,3,15) + t=t+1 + if t%sp==0 then + lx=px + ly=py + px=math.random()*3//1 + py=math.random()*3//1 + end + + -- bapper + int=(t%sp)/sp + bx=(px*int)+(lx*(1-int)) + bx=bx*60+60 + by=(py*int)+(ly*(1-int)) + by=by*20+74 + by=by-math.abs(math.sin(int*3))*20 + --ox=x*60+60 + --oy=y*20+80+4 + tri( + 120,70, + bx,by, + bx+20,by, + 3 + ) + tri( + 120,70, + 160,70, + bx+20,by, + 3 + ) + tri( + 155,60, + 160,70, + bx+20,by, + 3 + ) + elli(bx,by,20,14,3) + elli(bx+1,by-1,18,12,4) + elli(bx,by+8,10,7,3) + elli(bx+1,by-1+10,8,5,4) + elli(bx-20,by+8,10,7,3) + elli(bx-20+1,by-1+10,8,5,4) + elli(bx+20,by+8,10,7,3) + elli(bx+20+1,by-1+10,8,5,4) + vbank(0) +end + +function SCN(y) + poke(0x03FC0+3,math.sin((t/60+y/40))*128+128) + poke(0x03FC0+4,math.sin((t/60+y/40+2))*128+128) + poke(0x03FC0+5,math.sin((t/60+y/40+4))*128+128) +end \ No newline at end of file diff --git a/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..3e7e8b8cd --- /dev/null +++ b/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,159 @@ +-- Greetz: Violet, Vurpo, Polynomial +-- Aldroid, Mantratronic, Catnip +-- My lovely cute new keyboard +-- and the Bytejam chat crew! :) + +DO_TEETH=false + +local S,C,PI=math.sin,math.cos,math.pi +local ABS=math.abs +local T=0 +local TAU=PI*2 +local RIPPLE=0 +local YTEETH=0 + +function BDR(y) + ripple=0 + rippleD=ABS(y-RIPPLE) + if rippleD<32 then + ripple=1-(rippleD/32) + end + + vbank(0) + for i=1,15 do + local r=127+S(i*.1)*127 + local c=ripple*255 + setRGB(i,r-c,c,c/3) + end + + poke(0x3FF9,S(ripple*PI)*8) + + vbank(1) + for i=1,14 do + local g=127+S(i*.1-y*.017-T*.12)*127 + local b=127+S(i*.1+y*.02+T*.08)*127 + setRGB(i+1,0,g,b) + end + + poke(0x3FF9,S(ripple*PI)*-8) +end + +function BOOT() + vbank(0) + setRGB(0,0,0,0) + vbank(1) + setRGB(1,0,0,0) +end + +function setRGB(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end + +function TIC() + RIPPLE=-T%260 + + vbank(0) + cls() + ps=getPoints(100,T*.01) + for i=0,10 do + local sh=i*.1 + local x=120+S(T*.08+sh)*60 + local y=68+S(T*.06+sh)*20 + local sc=60+S(T*.06+1-sh)*30 + local cSh=S(T*.1+i) +-- drawPoints(ps,x,y,sc,cSh) + drawTris(ps,x,y,sc,8) + drawPoints(ps,x,y,sc,cSh) + end + + vbank(1) + cls(1) + for i=0,10 do + local sh=i*.1 + local x=120+S(T*.03-sh)*60 + local y=68-S(T*.04-sh)*20 + local sc=60+S(T*.1)*40 + local c=8+S(T*.1+i)*6 + ps1=rotAllZ(ps,S(T*.02)*TAU) + drawTris(ps1,x,y,sc,c) + drawPoints(ps1,x,y,sc,c) + end + + local x=5+S(T*.1)*20 + local y=8+S(T*.08)*10 + print("Love",x,y,0,false,10) + local x=5+S(T*.07)*20 + local y=68+S(T*.09)*10 + print("Byte",x,y,0,false,10) + + if DO_TEETH then + local y=ABS(S(T*.1))*30 + for x=0,240,50 do + rect(x,0,40,y,15) + rect(x,136-y,40,y,15) + end + rect(0,0,240,y-20,10) + rect(0,156-y,240,y,10) + end + + local x=30 + local y=130-ABS(S(T*.1))*10 + + text="This weekend, folks (9-11 Feb 24) :)" + print(text,x+1,y+1,1) + print(text,x,y,15) + T=T+1 +end + +function getPoints(nps,aShift) + -- Gonna steal some <3 math + local p={} + for i=0,nps do + local a=i/nps*TAU+aShift + p[i+1]={ + x=(16*S(a)^3)/16, + y=-(13*C(a)-5*C(2*a)-2*C(3*a)-C(4*a))/16-.2, + } + end + + return p +end + +function drawPoints(ps,xc,yc,sc,cSh) + for i,p in ipairs(ps) do + local x=xc+p.x*sc + local y=yc+p.y*sc + local c=1+(i+cSh)%15 + circ(x,y,2,c) + end +end + +function drawTris(ps,xc,yc,sc,c) + local lastX,lastY + for i,p in ipairs(ps) do + local x=xc+p.x*sc + local y=yc+p.y*sc + if i>1 then + tri(xc,yc,x,y,lastX,lastY,c) + end + lastX,lastY=x,y + end +end + +function rotAllZ(ps,a) + local newPs={} + for i,p in ipairs(ps) do + newPs[i]=rotZ(p,a) + end + return newPs +end + +function rotZ(p,a) + return { + x=p.x*C(a)-p.y*S(a), + y=p.x*S(a)+p.y*C(a), + } +end diff --git a/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/mantratronic.lua b/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/mantratronic.lua new file mode 100644 index 000000000..b0afd7933 --- /dev/null +++ b/shader_file_sources/2024_02_05_byte_jam_monday_night_bytes/mantratronic.lua @@ -0,0 +1,116 @@ +-- hi mt here +-- bit slow today, so started early +-- +-- greets to aldroid, catnip, jtruk, +-- raccoonviolet, vurpo, and polynomial + +M=math +S=M.sin +C=M.cos +PI=M.pi + +quads={} + +-- offset x/y, bend x/y, angle main/bend +reeds={} + +function drawQuad(q) +ttri(q[1],q[2],q[3],q[4],q[5],q[6], + 0,0,0,9,99,0,2) +ttri(q[3],q[4],q[7],q[8],q[5],q[6], + 0,9,99,9,99,0,2) +end + +LEN=240 +WID=5 + +function rot(X,Y) +ret={} +ret.d=(X^2+Y^2)^.5 +ret.a=M.atan2(Y,X) +return ret +end + + +function TIC()t=time()/32 +vbank(0) +cls() +rect(0,0,99,1,15) +rect(0,1,99,1,14) +rect(0,2,99,6,6) +rect(0,8,99,1,14) +rect(0,9,99,1,15) + +bt=(t//10)%40 +t=t/10 + +vbank(1) +cls() + +reeds={} + +-- offset x/y, bend x/y, angle main/bend +reeds[1]={ox=0,oy=0, bx=0,by=0, am=t/10, ab=t/10+PI} + +for i=2,bt do +reeds[i]={ox=i*.7,oy=i*.7, bx=-1.5*i,by=-i, am=t/10+(i-2)*PI/2, ab=t/10+(i-2)*PI/2+S(i)/100} +end + +quads={} +qi=1 +for i=1,#reeds do + local X1=reeds[i].ox+LEN/2 + local Y1=reeds[i].oy+WID/2 + local X2=reeds[i].ox+reeds[i].bx + local Y2=reeds[i].oy-WID/2 + local X3=reeds[i].ox+LEN/2 + local Y3=reeds[i].oy-WID/2 + + local p1=rot(X1,Y1) + local p2=rot(X1,Y2) + local p3=rot(X2,Y1) + local p4=rot(X2,Y2) + local p5=rot(X2,Y1) + local p6=rot(X3,Y2) + local p7=rot(X3,Y1) + + quads[i*2-1]={p1.d*S(p1.a+reeds[i].am)+120, + p1.d*C(p1.a+reeds[i].am)+68, + p2.d*S(p2.a+reeds[i].am)+120, + p2.d*C(p2.a+reeds[i].am)+68, + p3.d*S(p3.a+reeds[i].am)+120, + p3.d*C(p3.a+reeds[i].am)+68, + p4.d*S(p4.a+reeds[i].am)+120, + p4.d*C(p4.a+reeds[i].am)+68} + quads[i*2]={p4.d*S(p4.a+reeds[i].am)+120, + p4.d*C(p4.a+reeds[i].am)+68, + p5.d*S(p5.a+reeds[i].am)+120, + p5.d*C(p5.a+reeds[i].am)+68, + p6.d*S(p6.a+reeds[i].ab)+120, + p6.d*C(p6.a+reeds[i].ab)+68, + p7.d*S(p7.a+reeds[i].ab)+120, + p7.d*C(p7.a+reeds[i].ab)+68} +end + +for i=1,#quads do + drawQuad(quads[i]) +end + +vbank(0) +cls() + +-- hmmm. +by=fft(5)*20 + +pl=print("HAPPY",0,140,12,false,6) +print("HAPPY",120-pl/2,10+by,12,false,6) +pl=print("ST.BRIGID'S DAY",0,140,12,false,3) +print("ST.BRIGID'S DAY",120-pl/2,42+by,12,false,3) + + +pl=print("HAPPY",0,140,12,false,6) +print("HAPPY",120-pl/2,60+by,12,false,6) +pl=print("IMBOLC",0,140,12,false,6) +print("IMBOLC",120-pl/2,92+by,12,false,6) + +end diff --git a/shader_file_sources/2024_02_09_byte_jam_lovebyte/gasman.lua b/shader_file_sources/2024_02_09_byte_jam_lovebyte/gasman.lua new file mode 100644 index 000000000..04cf10be8 --- /dev/null +++ b/shader_file_sources/2024_02_09_byte_jam_lovebyte/gasman.lua @@ -0,0 +1,112 @@ +-- hello from gasman +-- and happy lovebyte everyone! + +-- I have no idea what I'm doing. + +tex={} +for y=0,127 do + tex[y]={} + for x=0,127 do + tex[y][x]=math.random(0,2) + end +end + +sprites={} +for i=0,63 do + sprites[i]={math.random(),math.random(),math.random(8,15)} +end + +function iter() + -- so there's a funky cellular + -- automation I saw the other day + -- based on rock paper scissors. + -- each cell changes to the 'winner' + -- state if there are at least THREE + -- neighbours that beat it + -- I'm not sure how neighbours are + -- defined though. Let's find out... + -- okay, maybe diagonals count too + tex1={} + for y=0,127 do + tex1[y]={} + for x=0,127 do + me=tex[y][x] + y0=(y+127)%128 + y2=(y+1)%128 + x0=(x+127)%128 + x2=(x+1)%128 + winner=(me+1)%3 + wc=0 + if tex[y0][x0]==winner then wc=wc+1 end + if tex[y0][x]==winner then wc=wc+1 end + if tex[y0][x2]==winner then wc=wc+1 end + if tex[y][x0]==winner then wc=wc+1 end + if tex[y][x2]==winner then wc=wc+1 end + if tex[y2][x0]==winner then wc=wc+1 end + if tex[y2][x]==winner then wc=wc+1 end + if tex[y2][x2]==winner then wc=wc+1 end + -- eek + if wc>=3 then + tex1[y][x]=winner + else + tex1[y][x]=me + end + end + end + tex=tex1 +end + +pal1=peek(16323) +pal2=peek(16324) +pal3=peek(16325) + +maxf=0 +function TIC() +t=time() +dx=math.sin(t/1234) +dy=math.sin(t/2345) +-- maybe some sphere mapping +-- rather than the weird fisheye thing? +f=fft(0) +if f>maxf then maxf=f end +f=f/maxf +poke(16323,255*f+pal1*(1-f)) +poke(16324,255*f+pal2*(1-f)) +poke(16325,255*f+pal3*(1-f)) +poke(16326,128+127*math.sin(t*math.pi/3000)) +poke(16327,128+127*math.sin((t+1000)*math.pi/3000)) +poke(16328,128+127*math.sin((t+2000)*math.pi/3000)) +for y=0,136 do + sy=(y-68)/68 + for x=0,240 do + sx=(x-120)/68 + r2=sx*sx+sy*sy + if r2>1 then r2=1/r2 end + g=math.atan2(sx,sy) + tx=((r2*math.cos(g)+dx)*32//1)%128 + ty=((r2*math.sin(g)+dy)*32//1)%128 + pix(x,y,tex[ty][tx]) + end +end +for i=0,63 do + sprite=sprites[i] + a=2*math.pi*(sprite[1]+t/13570) + b=2*math.pi*(sprite[2]+t/24680) + x0=1 + y0=0 + z0=0 + x1=x0*math.cos(a)+z0*math.sin(a) + y1=y0 + z1=z0*math.cos(a)-x0*math.sin(a) + x2=x1 + y2=y1*math.cos(b)+z1*math.sin(b) + z2=z1*math.cos(b)-y1*math.sin(b) + if z2>0 then + circ(128+x2*68,68+y2*68,1,sprite[3]) + end +end +for i=0,128 do + tex[math.random(0,127)][math.random(0,127)] = math.random(0,2) +end +iter() +end diff --git a/shader_file_sources/2024_02_09_byte_jam_lovebyte/jtruk.lua b/shader_file_sources/2024_02_09_byte_jam_lovebyte/jtruk.lua new file mode 100644 index 000000000..158b6d570 --- /dev/null +++ b/shader_file_sources/2024_02_09_byte_jam_lovebyte/jtruk.lua @@ -0,0 +1,12 @@ +M,P=math,poke +T,S,C=0,M.sin,M.cos +TIC=cls +function BDR(n) + P(16320,n) + P(16324,n) + sc=(n*.3-T*.03)%10 + for a=0,6.28,.01 do + x=16*S(a)^3+S(n*.6)*20y=n+13*C(a)-5*C(2*a)-2*C(3*a)-C(4*a)+S(n*.9)*20pix(120+x/sc,68-y/sc,1,1) + end + T=T+0.01 +end \ No newline at end of file diff --git a/shader_file_sources/2024_02_09_byte_jam_lovebyte/mantratronic.lua b/shader_file_sources/2024_02_09_byte_jam_lovebyte/mantratronic.lua new file mode 100644 index 000000000..f742468b1 --- /dev/null +++ b/shader_file_sources/2024_02_09_byte_jam_lovebyte/mantratronic.lua @@ -0,0 +1,119 @@ +-- mt here ^ +-- greets to suule,visy,tobach, +-- jtruk,gasman,vurpo,mrsynackster, +-- lovebyte orgas and you + +M=math +S=M.sin +C=M.cos + +tx,ty,dx,dy=0,0,1,1 +yy=0 +function rotate(x,y,z,xa,ya,za) +x1=x +y1=y*C(xa)-z*S(xa) +z1=y*S(xa)+z*C(xa) +x2=x1*C(ya)-z1*S(ya) +y2=y1 +z2=x1*S(ya)+z1*C(ya) +x3=x2*C(za)-y2*S(za) +y3=x2*S(za)+y2*C(za) +z3=z2 +return{x=x3,y=y3,z=z3} +end + +cube={{1,1,1},{1,1,-1},{1,-1,1},{1,-1,-1}, + {-1,1,1},{-1,1,-1},{-1,-1,1},{-1,-1,-1}} +cl={{1,2},{1,3},{2,4},{3,4}, + {5,6},{5,7},{6,8},{7,8}, + {1,5},{2,6},{3,7},{4,8}} +cls() +for x=0,239 do +for y=0,136 do +pix(x,y,(M.random(2)-1)*(x/24+1)) +end +end + +function BDR(y) +vbank(0) +for i=1,15 do +rx=8+4*S(i/10+y/100+t/1000) +rg=8+4*S(i/10+y/100+t/800+M.pi*.6) +rb=8+4*S(i/10+y/100+t/700+M.pi*1.4) +poke(0x3fc0+i*3, rx*16) +poke(0x3fc0+i*3+1, rg*16) +poke(0x3fc0+i*3+2, rb*16) +end +end + +function TIC()t=time() +vbank(1) +cls(0) +cr={} +for i=1,#cube do + cr[i]=rotate(cube[i][1],cube[i][2],cube[i][3], + t/1000,t/1900,t/2900) +end +scale=400*fft(5) + 400 +for i=1,#cl do +p1=cr[cl[i][1]] +z1=p1.z+10 +x1=120+scale*p1.x/z1 +y1=68+scale*p1.y/z1 +p2=cr[cl[i][2]] +z2=p2.z+10 +x2=120+scale*p2.x/z2 +y2=68+scale*p2.y/z2 +--pix(x1,y1,12) +x1=x1//1 +x2=x2//1 +y1=y1//1 +y2=y2//1 +line(x1,y1,x2,y2,12) +width=100*fft(20) +for i=1,width do +line(x1-i,y1,x2-i,y2,12) +line(x1-i,y1-i,x2-i,y2-i,12) +line(x1+i,y1,x2+i,y2,12) +line(x1+i,y1+i,x2+1,y2+i,12) +end +end +--[ +pl=print("LOVEBYTE",0,140,12,true,4) +ph=20 +tx=tx+dx +ty=ty+dy +if tx < 0 then tx=1 dx=1 end +if tx > 239-pl then tx=238-pl dx=-1 end +if ty < 0 then ty=1 dy=1 end +if ty > 135-ph then ty=134-ph dy=-1 end +print("LOVEBYTE",tx,ty,12,true,4) +print("LOVEBYTE",tx+2,ty+2,12,true,4) +print("LOVEBYTE",tx+1,ty+1,0,true,4) +--]] +--[ +for x=0,239 do +for y=0,136 do +vbank(1) +if pix(x,y) > 0 then +vbank(0) +c0=pix(x,y) +if c0 > 0 then pix(x,y,0) else pix(x,y,x/24+1) end +end +end +end +--]] + +vbank(1) +--cls(0) + +yy=yy+fft(100)*100 +yy=yy%235 +rect(0,0,239,yy,0) +rect(0,10+yy,239,135,0) + +pl=print("There is no cube.",0,140) +print("There is no cube.",120-pl/2,124,12) +pl=print("Credit to Chris Long for the cool idea",0,140) +print("Credit to Chris Long for the cool idea",120-pl/2,130,12) +end diff --git a/shader_file_sources/2024_02_09_byte_jam_lovebyte/mrsynackster.lua b/shader_file_sources/2024_02_09_byte_jam_lovebyte/mrsynackster.lua new file mode 100644 index 000000000..3fbd5e63b --- /dev/null +++ b/shader_file_sources/2024_02_09_byte_jam_lovebyte/mrsynackster.lua @@ -0,0 +1,32 @@ +function TIC()t=time()//32 + for y=0,136 do + for x=0,240 do + x1 = x ^ math.sin(t)*2+(t%240) + y = y + math.cos(t)*4 + pix(x1,y,(x+t)>>2) + bl = 50+math.sin(t)*2 + bu = 100+math.cos(t)*2 + if y>bl and y < 100 then + c = pix(x,y) + yz = y+math.sin(t)*4 + pix(x,yz,c+1%3) + end + if y<100 then + c= pix(x,y) + if c==2 then + c=4 + end + end + end + end + rect(0+(t%240),0+math.sin(t)*4,3,30,2) + rect(100+(t%240),0,3,30,4) + rect(30+(t%240),100+math.cos(t),3,30,5) + for qz=0,5 do + for q=0,10 do + circ(5+(t%240)+qz*20,1+q^math.sin(t)*qz+(t%160),5+math.cos(t)*2,4+q+qz) + circ(20+(t%240)+qz*20,1+q^math.cos(t)*qz+(t%160),5+math.sin(t),4+q^qz) + + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2024_02_09_byte_jam_lovebyte/tobach.lua b/shader_file_sources/2024_02_09_byte_jam_lovebyte/tobach.lua new file mode 100644 index 000000000..310009204 --- /dev/null +++ b/shader_file_sources/2024_02_09_byte_jam_lovebyte/tobach.lua @@ -0,0 +1,72 @@ +--hello lovebyte!!!!! +--glad to be taking part in the byte jam +--this year!!! :) + +--greetz to aldroid, gasman, jtruk, mantra +--synackster, suule, visy and you !! + +hearts={} +for i=1,100 do + hearts[i]={math.random()*256,math.random()*320} +end + +sin=math.sin +cos=math.cos + +--surprisingly this is the first time +--i've even messed around with the +--palette and vbank in a jam lol + +--red like the blood of my enemies!!!1 +for i=0,15 do + vbank(1) + a=0x3fc0+(i*3) + poke(a,i*16) + poke(a+1,i*2) + poke(a+2,i*2) +end + +function SCN(ln) + vbank(0) + poke(0x3fc0,255) + poke(0x3fc1,ln) + poke(0x3fc2,ln) +end + +function TIC() + t=time()/100 + fv=fft(0)+fft(1)+fft(2)+fft(3)+fft(4)*8 + vbank(0) + cls((t/4)//1) + vbank(1) + cls(0) + for j=0,32 do + for i=0,32 do + circ(i*16+sin(j+t+i/2)*8,j*16,4+fv+sin(i+t/2)*8,j+6) + circ(i*16+sin(j+t+i/2)*8,j*16,4+fv+sin(i+t/2)*8-2,j+6-2) + end + end + for j=-1,1 do + for i=-1,1 do + print("LOVE\nBYTE",28+i,28+j,1,true,8) + end + end + + print("LOVE\nBYTE",28,28,1+fv*2,true,8) + for i=50,100 do + drawheart((hearts[i][1])+sin(t/3+i)*8-120,(hearts[i][2]-(t*i/8))%256-90,fv/2+i%8+1) + end + --print(fv,0,0,1) +end + +--not sure what to add next +--i think this could be it from this +--this year :3 + +function drawheart(x,y,col) + circ(115+x,68+y,8,col) + circ(125+x,68+y,8,col) + circ(120+x,74+y,8,col) + circ(115+x,68+y,6,col+1) + circ(116+x,69+y,5,col) +end \ No newline at end of file diff --git a/shader_file_sources/2024_02_09_byte_jam_lovebyte/visy.lua b/shader_file_sources/2024_02_09_byte_jam_lovebyte/visy.lua new file mode 100644 index 000000000..ef90c9759 --- /dev/null +++ b/shader_file_sources/2024_02_09_byte_jam_lovebyte/visy.lua @@ -0,0 +1 @@ +q=math.abs s=math.sin c=math.cos f=",.-+_/|!*%#$M"function pal(i,r,g,b)poke(0x3fc0+(i*3)+2,b)poke(0x3fc0+(i*3)+1,g)poke(0x3fc0+(i*3),r)end t=0 function scanline(row)r=c(row*0.01)%64*s(row*0.01+t*0.001)*row pal((row+t+r)%4,r,r*2,r*3)end function TIC()t=time()*0.001 cls(t%5)m=-100+t*0.001g=t*0.001%3 for i=0,t*100%999 do z=c(i)*s(i*0.01+t*2)*t v=t*0.1%0.5 a=c(i*m+t)*q(z-i*v)*s(t+i*g) b=s(i*m+t)*q(z-i*v)*s(-t+i*g/2) x=120+a y=64+b v=(i>>5)+t*10 n=(math.floor(-v)%(#f-1))+1print(string.sub(f,n,n),x,y,v)end end diff --git a/shader_file_sources/2024_02_09_byte_jam_lovebyte/vurpo.lua b/shader_file_sources/2024_02_09_byte_jam_lovebyte/vurpo.lua new file mode 100644 index 000000000..7ba8db964 --- /dev/null +++ b/shader_file_sources/2024_02_09_byte_jam_lovebyte/vurpo.lua @@ -0,0 +1,97 @@ +-- hello lovebyte 2024! +-- - vurpo + +m=math +pi=math.pi +f={} + +s=60 + +for i=0,15 do + poke(16320+3*i,(15-i)*16) + poke(16320+3*i+1,m.max(0,(15-i)*18-128)) + poke(16320+3*i+2,(15-i)*10) +end + +cls(16) +function circle(c,s,r1,r2,f,r,color) + for i=0,s-1 do + tri(c.x,c.y, + c.x+(r1+r2*f[i])*m.sin((i+r)/(s/pi)), + c.y-(r1+r2*f[i])*m.cos((i+r)/(s/pi)), + c.x+(r1+r2*f[i+1])*m.sin((i+1+r)/(s/pi)), + c.y-(r1+r2*f[i+1])*m.cos((i+1+r)/(s/pi)), + color) + tri(c.x,c.y, + c.x-(r1+r2*f[i])*m.sin((i+r)/(s/pi)), + c.y+(r1+r2*f[i])*m.cos((i+r)/(s/pi)), + c.x-(r1+r2*f[i+1])*m.sin((i+1+r)/(s/pi)), + c.y+(r1+r2*f[i+1])*m.cos((i+1+r)/(s/pi)), + color) + end +end + +function TIC() + t=time()//32+m.sin(time()/100)*4 + for y=0,63 do for x=0,119 do + pix( + x, + y, + pix( + ((x-119)*0.9)+120, + ((y-62)*0.95)+63 + )+1 + ) + end + end + for y=136,63,-1 do for x=0,119 do + pix( + x, + y, + pix( + ((x-120)*0.9)+120, + ((y-63)*0.95)+63 + )+1 + ) + end + end for y=0,63 do for x=240,120,-1 do + pix( + x, + y, + pix( + ((x-119)*0.9)+120, + ((y-62)*0.95)+63 + )+1 + ) + end + end + for y=136,63,-1 do for x=240,120,-1 do + pix( + x, + y, + pix( + ((x-120)*0.9)+120, + ((y-63)*0.95)+63 + )+1 + ) + end + end + for i=0,s do + temp=0 + if f[i-3] ~= nil then + temp=temp+f[i-3]*0.2 + end + if f[i-2] ~= nil then + temp=temp+f[i-2]*0.2 + end + if f[i-1] ~= nil then + temp=temp+f[i-1]*0.2 + end + temp=temp+fft((i+3)/2) + f[i]=temp + end + circle({x=120,y=68},s,30,45,f,-t,1) + circle({x=120,y=68},s,20,45,f,-t,4) + circle({x=120,y=68},s,15,45,f,-t,12) + circle({x=120,y=68},s,8,35,f,-t,16) +end diff --git a/shader_file_sources/2024_02_11_zx_spectrum_jam_lovebyte/gasman.asm b/shader_file_sources/2024_02_11_zx_spectrum_jam_lovebyte/gasman.asm new file mode 100644 index 000000000..5f8369bed --- /dev/null +++ b/shader_file_sources/2024_02_11_zx_spectrum_jam_lovebyte/gasman.asm @@ -0,0 +1,135 @@ + org 0x8000 + +sintab equ 0x8200 + + ld de, 0x00fe + ld h, d + ld l, d + ld bc, sintab +sine_loop: + rrc c + sbc a,a + xor h + ld (bc), a + add hl, de + dec de + dec de + rlc c + inc c + jr nz, sine_loop + + ld hl,0x4000 + ld (hl),0x5a + ld de,0x4001 + ld bc,0x0100 + ldir + dec h + inc d + ld bc,0x1600 + ldir + +frame + halt +pctr + ld a,1 + rrca + ld (pctr+1),a + jr nc,no_new_char +textpos + ld hl,text + ld a,(hl) + or a + jr nz,no_wrap + ld hl,text + ld a,(hl) +no_wrap + inc hl + ld (textpos+1),hl + ld l,a + ld h,0 + add hl,hl + add hl,hl + add hl,hl + ld de,0x3c00 + add hl,de + ld de,charbuf + ld b,8 + ldir +no_new_char + ld hl,scrbuf+1 + ld de,scrbuf + ld bc,0x0100 + ldir + + ld b,8 + ld ix,charbuf + ld hl,scrbuf+0x1f +buf2scr + sla (ix) + sbc a,a + and b + add a,a + add a,a + ld (hl),a + ld de,0x0020 + add hl,de + inc ix + djnz buf2scr + +wavepos + ld hl,sintab + ld a,(hl) + srl a + ld (wave+1),a + inc l + inc l + ld (wavepos+1),hl + + ld hl,scrbuf + ld de,0x5800 + ld b,24 +linelp + exx +sinpos + ld hl,sintab + exx + push bc + ld b,32 +charlp + push hl + exx + ld a,(hl) + inc l + add a,a + add a,a + add a,a + and 0xe0 + exx + add a,l + ld l,a + ld a,e +wave + add a,0 + and 0x07 + or (hl) + pop hl + ld (de),a + inc de + inc l + djnz charlp + ld a,(wave+1) + inc a + ld (wave+1),a + pop bc + djnz linelp + + ld a,(sinpos+1) + add a,4 + ld (sinpos+1),a + jp frame + +text + db "lovebyte <3 ",0 + +charbuf equ 0x8800 +scrbuf equ 0x9000 diff --git a/shader_file_sources/2024_02_11_zx_spectrum_jam_lovebyte/superogue.asm b/shader_file_sources/2024_02_11_zx_spectrum_jam_lovebyte/superogue.asm new file mode 100644 index 000000000..d539689e1 --- /dev/null +++ b/shader_file_sources/2024_02_11_zx_spectrum_jam_lovebyte/superogue.asm @@ -0,0 +1,142 @@ + ; superogue here! + ; Are you ready for the first ever zx spectrum live coding + ; matchup using the lovebyte bazematic.demozoo.org ? + + ; - have a great lovebyte! + + org 0x7ffe + +sintab = 0x8200 + + jr hoplite + +fancycolors: ; insert spongebob snobism gif + db 0,1,69,71,69,3,1,8 +hoplite: + + call singen + call copytile +loop + + ; abuse IY (noooo, noooo!) + ld a,ixl + sra a + sra a + sra a + ld iyl,a + + ; update screen + ld de,0x5800 ; COLORRAM (32 x 24) + ld b,24 +yloop: + ld c,32 +xloop: + push bc + push hl + + ; grab sinvalue + ld a,b + add ixl + and iyl + ld h,0x82 + ld l,a + ld a,(hl) + ld l,a + + ; this is where the magic(?) happens + ; okay lets make some magic + ; c=abs(c) + ld a,c + add 112 + jp p,absx + neg +absx: + add l + ld c,a + ld a,c + add ixl + ld h,a + + ld a,c + sub b + add ixl + and h + sra a + sra a + and 3 + + ; grab them fancy colors (spongebob gif again!) + ld h,0x80 + ld l,a + ld a,(hl) + ld (de),a + inc de + + pop hl + pop bc + dec c + jr nz,xloop + djnz yloop + + ; next frame + inc ix + + jr loop + + +; lets load an interesting pattern +copytile: + ld h,0x57 +loop3: + ld de,tiledata + ld b,8 ; 8 height +loop2: + ld a,(de) +loop1: + ld (hl),a + inc l + jr nz,loop1 + dec h + inc e + djnz loop2 + bit 6,h + jr nz,loop3 + ret + +tiledata: + db %11110010 + db %11110110 + db %11110000 + db %00000000 + db %00001111 + db %01101001 + db %01001111 + db %00000000 + + + ; thanks to neon! +singen: + ld de,0x00fe + ld h,d + ld l,d + ld bc,sintab +sloop: + rrc c + sbc a + xor h + ld (bc),a + add hl,de + dec de + dec de + rlc c + inc c + jr nz,sloop + ret + ret + + + + + + + diff --git a/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/catnip.lua b/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/catnip.lua new file mode 100644 index 000000000..f5ae2e02c --- /dev/null +++ b/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/catnip.lua @@ -0,0 +1,101 @@ +-- greets to vurpo, violet, tobach, +-- jtruk, HeNeArXn and u +ot=0 +sin=math.sin +cos=math.cos +abs=math.cos + +function b(x,y,h,t) -- 13-15 + local w=h/2 + --rectb(x-w/2,y-h/2,w,h,12) + -- body + elli(x,y+h/4,w/3,h/4,14) + elli(x,y+h/4-1,w/3-1,h/4-1,13) + -- legs + elli(x-h/8,y+h/2.2,w/10,w/12,14) + elli(x-h/8,y+h/2.2,w/10-1,w/12-1,13) + elli(x+h/8,y+h/2.2,w/10,w/12,14) + elli(x+h/8,y+h/2.2,w/10-1,w/12-1,13) + + + local hx=x+sin(t/10)^3*w/8 + local hy=y-h/12+abs(sin(t/10))*4 + -- ears + elli(hx-w/8,hy-h/6,w/12,h/8,14) + elli(hx+w/8,hy-h/6,w/12,h/8,14) + elli(hx-w/8,hy-h/6,w/12-1,h/8-1,13) + elli(hx+w/8,hy-h/6,w/12-1,h/8-1,13) + --head + elli(hx,hy,w/4,h/8,14) + elli(hx,hy-1,w/4-1,h/8-1,13) + circ(hx-w/8,hy-h/32,h/40,15) + circ(hx+w/8,hy-h/32,h/40,15) + circ(hx-w/8,hy-h/32-1,h/160,12) + circ(hx+w/8,hy-h/32-1,h/160,12) +end + +function bb(x,y,h,t) + local w=h/2 + --rectb(x-w/2,y-h/2,w,h,12) + -- legs + elli(x-h/8,y+h/2.2,w/10,w/12,14) + elli(x-h/8,y+h/2.2,w/10-1,w/12-1,13) + elli(x+h/8,y+h/2.2,w/10,w/12,14) + elli(x+h/8,y+h/2.2,w/10-1,w/12-1,13) + + local hx=x+sin(t/10)^3*w/8 + local hy=y-h/12+abs(sin(t/10))*4 + -- ears + elli(hx-w/8,hy-h/6,w/12,h/8,14) + elli(hx+w/8,hy-h/6,w/12,h/8,14) + elli(hx-w/8,hy-h/6,w/12-1,h/8-1,13) + elli(hx+w/8,hy-h/6,w/12-1,h/8-1,13) + --head + elli(hx,hy,w/4,h/8,14) + elli(hx,hy-1,w/4-1,h/8-1,13) + + -- body + elli(x,y+h/4,w/3,h/4,14) + elli(x,y+h/4-1,w/3-1,h/4-1,13) + local bx=x-sin(t/10)^5*w/18 + local by=y+h/2.6-abs(cos(t/10))*w/32 + elli(bx,by,w/3,h/7,14) + elli(bx,by-1,w/3-1,h/7,13) + + circ(bx,by+h/30,w/8,12) +end + +function TIC() + vbank(0) + cls(10) + + if ot/60%8<4 then + rect(0,100,240,36,6) + for j=0,3 do + local y=40+j*10 + for i=0,5 do + local x=(i*60-ot*2+y*2.5)%360-60 + bb(x,y,120,ot+i*3+j*4) + end + end + else + rect(0,50,240,136-50,6) + for j=0,8 do + local y=0+j*20 + for i=0,9 do + x=(i*30-ot+y/2)%300-30 + b(x,y,60+j*4,ot+i*3+j*4) + end + end + end + + vbank(1) + cls() + for i=1,15 do + print("bnuy multiplier", + 30+sin(ot/20+i/10+sin(ot/37+i/10))*20, + 50+cos(ot/30+i/10+cos(ot/33+i/10))*20, + (i+ot/4)%15+1,0,2) + end + ot=ot+1 +end diff --git a/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/henearxn.lua b/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/henearxn.lua new file mode 100644 index 000000000..b79af5ed3 --- /dev/null +++ b/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/henearxn.lua @@ -0,0 +1,40 @@ +function BDR(y) +vbank(0) +poke(0x3FF9,math.sin(y/30+t/10)*10) +vbank(1) +poke(0x3FF9,math.sin(y/15+t/10)*20) +end + +function TIC() +t=time()//32 +cls(0) +--for y=0,136 do for x=0,240 do +--pix(x,y,(x+y+t)>>3) +--end end +amp=70 + +vbank(0) +for y=-68,67 do + for x=-120,119 do + Y=60000/math.sqrt(x^2+y^(3)) + X=(math.atan2(y,x)/math.pi+1)/2*255 + Y2=60000/math.sqrt(x^2+y^(2)) +-- if Y<0 then Y=Y2 end + ff=fft((X+t)//1%255)*1.005^((X+t)//1%255) + if Y>0 then + pix(x+120,y+68,(ff*amp+Y/100+t*.7)%(5)+8*(t//150%2)) + else + if Y2<5000 then + pix(x+120,y+68,(ff*amp+Y2/100+t*.7)) + end + end + end +end +vbank(1) +for x=0,240 do + +line(x,0,x,fft(x)*amp*4,1+fft(x)*amp+8*((t//150+1)%2)) +line(x,136,x,136-fft(x)*amp*4,1+fft(x)*amp+8*((t//150+1)%2)) +end +vbank(0) +end diff --git a/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..e2e098d54 --- /dev/null +++ b/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,160 @@ +-- Greetz: Vurpo, Lynn +-- HeNeArXn, Catnip, ToeBath +-- AND YOUUUUU + +local T=0 +local M=math +local S,C=M.sin,M.cos +local CAM_Z=-1 + +function BDR(y) + vbank(0) + local r=0 + local g=127+S(y*.01+T*.05)*40 + +((y//4%2)==0 and 20 or 0) + local b=y + setRGB(1,r,g,b) + for i=2,15 do + local r=127+S(i*.3+y*.02-T*.1)*127 + local g=0 + local b=127+S(i*.2+y*.05+T*.08)*127 + setRGB(i,r,g,b) + end +end + +function setRGB(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end + +function TIC() + vbank(1) + for y=0,63 do + for x=0,63 do +-- local c=1+((x+y)>>3)%15 + local dx,dy=x-32,y-32 + local d=(dx^2+dy^2)^.5 + local c=d*.1+T*.07 + pix(x,y,2+(c%14)) + end + end + + vbank(0) + cls(1) + + -- cube + local ps={ + {x=-1,y=-1,z=1}, + {x=1,y=-1,z=1}, + {x=-1,y=1,z=1}, + {x=1,y=1,z=1}, + {x=-1,y=-1,z=-1}, + {x=1,y=-1,z=-1}, + {x=-1,y=1,z=-1}, + {x=1,y=1,z=-1}, + } + + faces={ + {1,2,3,4}, + {5,6,7,8}, + {1,3,5,7}, + {2,4,6,8}, + {1,2,5,6}, + {3,4,7,8}, + } + + CAM_Z=-2.5+S(T*.006)*1 + + for ic=0,10 do + tps={} + for i,p in ipairs(ps) do + p=add(p, + S(ic*.1+T*.06)*5, + S(ic*.1+T*.1)*2, + S(ic*.1+T*.08) + ) + p=rotX(p,ic+T*.01) + p=rotY(p,ic+T*.017) + p=rotZ(p,T*.03) + p=proj(p) + tps[i]=p + end + + for i,p in ipairs(tps) do + circ(p.x,p.y,2,15) + end + + for _,f in ipairs(faces) do + drawTri(tps[f[1]],tps[f[2]],tps[f[3]],false) + drawTri(tps[f[3]],tps[f[2]],tps[f[4]],true) + end + end + + vbank(1) + cls() + print("jtruk",200,124,12) + + T=T+1 +end + +function proj(p) + local zF=CAM_Z-p.z*.2 + local sc=20 + return { + x=120+sc*p.x/zF, + y=68+sc*p.y/zF, + z=p.z/zF, + } +end + +function add(p,x,y,z) + return { + x=p.x+x, + y=p.y+y, + z=p.z+z, + } +end + +function rotX(p,a) + return { + x=p.x, + y=p.y*C(a)-p.z*S(a), + z=p.y*S(a)+p.z*C(a), + } +end + +function rotY(p,a) + return { + x=p.x*C(a)-p.z*S(a), + y=p.y, + z=p.x*S(a)+p.z*C(a), + } +end + +function rotZ(p,a) + return { + x=p.x*C(a)-p.y*S(a), + y=p.x*S(a)+p.y*C(a), + z=p.z, + } +end + +function drawTri(p1,p2,p3,flip) + if flip==false then + t1x,t1y,t2x,t2y,t3x,t3y=0,0,63,0,63,63 + else + t1x,t1y,t2x,t2y,t3x,t3y=63,63,0,63,0,0 + end + + ttri( + p1.x,p1.y, + p2.x,p2.y, + p3.x,p3.y, + t1x,t1y,t2x,t2y,t3x,t3y, + 2, + -1 +-- p1.z,p2.z,p3.z + ) +end \ No newline at end of file diff --git a/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..8c74b80a6 --- /dev/null +++ b/shader_file_sources/2024_02_12_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,148 @@ + +--another bytejam (forgot to do greetz oops) +--greetz to lynn, henearxn, vurpo +--catnip and jlorry :) + +sin=math.sin + +poke(0x3fc0,0) +poke(0x3fc1,0) +poke(0x3fc2,0) + +poke(0x3fc3,255) +poke(0x3fc4,0) +poke(0x3fc5,0) + +poke(0x3fc6,255) +poke(0x3fc7,255) +poke(0x3fc8,0) + +poke(0x3fc9,0) +poke(0x3fca,0) +poke(0x3fcb,255) + +poke(0x3fcc,0) +poke(0x3fcd,255) +poke(0x3fce,0) + +poke(0x3fcf,0) +poke(0x3fd0,255) +poke(0x3fd1,255) + +poke(0x3fd2,255) +poke(0x3fd3,0) +poke(0x3fd4,255) + +poke(0x3fd5,255) +poke(0x3fd6,255) +poke(0x3fd7,255) + + +function TIC() + cls(15) + t=time()//32 + pv=t/96//1%3 + rect(0,0,29,135,14) + rect(211,0,29,135,14) + + rectb(-1,-1,30,137,15) + rectb(211,-1,30,137,15) + + for i=0,16 do + for j=0,3 do + pix(4+j*6,4+i*8+(j*2)%4,15) + end + end + + for i=0,16 do + for j=0,3 do + pix(216+j*6,4+i*8+(j*2)%4,15) + end + end + + rect(29,1,182,134,0) + --pv=2 + +if pv==0 then + print("P100 FFXFAX 1 100 MON 12 FEB",36,2,7,true) + for i=0,2 do + rect(36+i*18,16,17,17,7) + end + print("FFX",37,17,0,true,3) + rect(96,16,106,17,3) + print("MONDAY",97,17,2,false,3) + + print("NEWS",37,40,2,true,1) + print("HOT BYTEJAM\nACTION!!",37,48,7,false,2) + print("P200",156,60,2,true,2) + + rect(36,74,166,4,3) + + print("LOVEBYTE PARTY\nRESULTS",37,84,7,false,2) + print("P300",156,96,2,true,2) + + rect(36,110,166,4,3) + + for i=1,4 do + print("FFX",8+i*40,123,i,true) + end + +elseif pv==1 then + + print("P110 FFXFAX 1 100 MON 12 FEB",36,2,7,true) + for i=0,2 do + rect(36+i*18,16,17,17,7) + end + print("FFX",37,17,0,true,3) + rect(96,16,106,17,3) + print("MONDAY",97,17,2,false,3) + + rect(162,60,40,50,2) + + rect(172,74,4,10,0) + rect(172,84,10,4,0) + + rect(178,94,8,8,0) + if t/16%2<1 then + rect(178,98,8,4,2) + end + + rect(164,66,8,4,0) + rect(184,66,8,4,0) + + rect(152,60,50,4,1) + rect(168,50,30,10,1) + + print("RADICAL JIM\nSAYS:",37,38,7,false,2) + + rect(36,66,120,50,7) + rect(67,94,95,4,7) + + print("WHY DID THE\nCHICKEN\nCROSS THE\nROAD?",37,68,0,false,2) + + print("PRESS 'REVEAL' FOR ANSWER!",46,123,t/16%2,true) + + else if pv==2 then + + print("P120 FFXFAX 1 100 MON 12 FEB",36,2,7,true) + + rect(56,16,127,17,3) + print("WEATHER",57,17,2,true,3) + + rect(140,35,30,20,5) + + rect(150,50,30,60,5) + rect(130,70,20,25,5) + rect(120,110,70,10,5) + + rect(180,80,10,20,5) + + print(" IT IS\n\n BLOODY\n\nMISERABLE",37,49,6,false,2) + + for i=1,4 do + print("FFX",8+i*40,123,i,true) + end + + end + end +end diff --git a/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..2ff23d471 --- /dev/null +++ b/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,22 @@ +-- aldroid here +-- greets to vurpo, HeNeArXn and +-- ToBach + +-- have a great time! +cls(0) +function TIC()t=time() + circ(120,68,15,t//1200) + for i=0,50 do + x=math.random(0,239) + y=math.random(0,135) + + a=math.atan2(y-68,x-120) + r=((x-120)^2+(y-68)^2)^0.5 + + r = r -2 + x1=120+math.cos(a)*r + y1=68-math.sin(a)*r + pc=pix(x1,y1) + circ(x,y,3,pc) + end +end diff --git a/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/henearxn.lua b/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/henearxn.lua new file mode 100644 index 000000000..bee8529f6 --- /dev/null +++ b/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/henearxn.lua @@ -0,0 +1,105 @@ +-- HeNeArXn here +-- not quite sure what to do today, +-- idea I had would be very boring to +-- watch +-- greets to Tobach, vurpo and aldroid! + +amp=60 +cnt=15 +data={} +data2={} +for i=0,cnt do + data[i]={} + data2[i]={} + for x=0,240 do + data[i][x]=0 + data2[i][x]=0 + end +end + +sl=(60*0.5)//1 +datas={} +for i=1,sl do + datas[i]=0 +end + +d=8 + +st=0 + +lc=5 +bc=0 +x=0 +y=0 +xd=1 +yd=1 + + +function TIC() + t=time()//32 +-- st=(t//50+1)%2 + for y=0,136 do + for x=0,240 do +-- pix(x,y,(x+y+t)>>3) + end + end +if st==0 then +-- cls(t/8) +cls(bc) + for i=0,cnt-1 do + for x=0,240 do + data[i][x]=data[i+1][x] + line(x,i*d-data[i][x],x,i*d+data[i][x],i) + end + end + for x=0,240 do + f=fft(x)*1.002^x*amp + data[cnt][x]=f + line(x,cnt*d-f,x,cnt*d+f,5) + end + s=0 + for i=0,7 do + s=s+fft(i) + end + m=0 + for i=1,sl-1 do + datas[i]=datas[i+1] + m=math.max(m,datas[i]) + end + datas[sl]=s + b=5 + if s>m then bc=bc+1 end +-- rect(240-s*10,0,100,136,b) +--else +st=0--st-1 +--if fft(2)*1.002^2*amp/3>15 then +-- cls(15) +--else +-- cls() +--end +end +vbank(1) +if lc==0 then lc=1 end +cls() + x=x+.8*xd + y=y+.8*yd + for i=0,49 do + f=fft(i)*1.002^i*amp/3 + data[cnt][i]=f + line(x+2+i,30-3+y-f,x+2+i,30-3+y+f,lc) + end + rectb(x,y+7,54,40,3) + line(x,y+7, + x+7,y, 3) + line(x+54,y+7, + x+54+7,y, 3) + line(x+54,49-3+y, + x+54+7,42-3+y, 3) + line(x+7,y,x+54+7,y+1,3) + line(x+54+7,42-3+y,x+54+7,y+1,3) + if x+57+7>240 then xd=-1 lc=lc+1 end + if x<1 then xd=1 lc=lc+1 end + if y+42-3>136 then yd=-1 lc=lc+1 end + if y<1 then yd=1 lc=lc+1 end +vbank(0) +end diff --git a/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..f632aaa5f --- /dev/null +++ b/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,104 @@ +--ey up!! +-- ^ +--tobach here!! greetz to vurpo henearxn +--and ofc the lovely aldroid :) + +--hmmmm, what to make this evening... +--i woke up about an hour ago so i +--hope this goes well lol + +rain={} + +for i=1,100 do + rain[i]={math.random()*240,math.random()*136} +end + +sin=math.sin +cos=math.cos +function TIC() + fv=fft(0)+fft(1)+fft(2)+fft(3)+fft(4)+fft(5)*8 + + cls(9+fv/3) + t=time()//32 + + --print(fv) + + if fv>2.5 then + for j=0,1 do + for i=0,3 do + rv=math.random()*32 + line(40+j*120,0,20+rv+j*200,40+rv,12-i) + line(80+j*120,90,20+rv+j*200,40+rv,12-i) + end + end + end + + + for i=-8,8 do + circ(i*32+t%32,0,30,15) + end + + for i=-8,8 do + circ(i*32+t*2%32,0,20,14) + end + + for i=-8,8 do + circ(i*32+t%32,120,50,5) + end + + for i=-8,8 do + circ(i*32+t*2%32,210,80,6) + end + + for j=0,2 do + for i=1,100 do + pix((rain[i][1]+t*8+j)%240,(rain[i][2]+t*4+j)%136,9+j) + end + end + + for i=-8,16 do + circ(i*16+t*3%32,0,10,13) + end + + + snail(10+sin(t/4+fv/4)*8,0) + + --print(fv/2) + +end + +function shell(x,y) + for i=0,90 do + circ(120+sin(i/8)*(i)/4+2+x,68+cos(i/8)*(i)/4+2+y,3+i/8,3) + end + for i=0,90 do + circ(120+sin(i/8)*(i)/4+x,68+cos(i/8)*(i)/4+y,3+i/8,4) + end + for i=0,94 do + circ(120+sin(i/8)*(i)/4+x,68+cos(i/8)*(i)/4+y,1,15) + end +end + +function snail(x,y) + for i=4,47 do + line(0,78+i,240,78+i,sin(i/16)*4) + end + + for i=0,24 do + circ(65+i*4+x,88+sin(i/2+t/4+fv)*2,8,6) + end + + shell(8+x,0+sin(t/4+fv)*2) + + for i=0,8 do + circ(80+sin(i/2+t/4+2+fv)*2+x,80-i*3+sin(t/4),3,7) + circ(64+sin(i/2+t/4+fv)*2+x,80-i*3+sin(t/4),3,7) + end + + circ(80+sin(t/4+fv)*2+x,54,6,12) + circ(64+sin(t/4+2+fv)*2+x,54,6,12) + + circ(78+sin(t/4+fv)*2+x,54,2,15) + circ(62+sin(t/4+2+fv)*2+x,54,2,15) + +end \ No newline at end of file diff --git a/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/vurpo.lua b/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/vurpo.lua new file mode 100644 index 000000000..179d5e5a0 --- /dev/null +++ b/shader_file_sources/2024_02_19_byte_jam_monday_night_bytes/vurpo.lua @@ -0,0 +1,103 @@ +-- hello bytejammers +-- greeting to jammers and watchers +-- vurpo + +m=math +i=m.floor + +xv=0 +yv=0 + +G=0.05 +c={ + {x=70,y=50,xv=1.5,yv=0,r=16,c=12}, + {x=200,y=60,xv=-0.9,yv=0,r=17,c=12}, + {x=20,y=100,xv=0.2,yv=0,r=15,c=12}, + {x=26,y=50,xv=-0.5,yv=0,r=12,c=12}, + {x=50,y=60,xv=1,yv=0,r=22,c=12}, + {x=12,y=20,xv=1.6,yv=0,r=10,c=12}, + {x=130,y=100,xv=1.1,yv=0,r=11,c=12} +} + +function int(c1,c2) + return m.sqrt( + m.pow(c2.x-c1.x,2)+ + m.pow(c2.y-c1.y,2)) + 136-c[i].r then + c[i].yv=-m.abs(c[i].yv) + c[i].y=136-c[i].r + elseif c[i].y<0+c[i].r then + c[i].yv=m.abs(c[i].yv) + c[i].y=0+c[i].r + else + c[i].yv=c[i].yv+G + end + + if c[i].x<0+c[i].r then + c[i].xv=m.abs(c[i].xv) + c[i].x=0+c[i].r + elseif c[i].x>240-c[i].r then + c[i].xv=-m.abs(c[i].xv) + c[i].x=240-c[i].r + end + + c[i].x=c[i].x+c[i].xv-xv + c[i].y=c[i].y+c[i].yv-yv + end +end + +function TIC() + t=time()//8 + f=m.max(0,(fft(1)+fft(2)+fft(3)-1.0)*3.5) + yv=m.cos(t)*f + xv=m.sin(t)*f + cls(16) + + updatec() + drawc() + + --for x=-1,1 do for y=-1,1 do + --print("vurpo",10+x,10+y,12) + --end end + --print("vurpo",10,10,16) +end diff --git a/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..28c68cae3 --- /dev/null +++ b/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,109 @@ +-- aldroid here! +-- thanks to violet and polynomial +-- for hosting +-- glhf to doop, lex and catnip! + +function len3(x,y,z) + return (x^2+y^2+z^2)^0.5 + end + + function SCN(l) + poke(0x3fc2,math.max(0,135-l)) + end + + max = math.max + C=math.cos + S=math.sin + + function rot(x,y,a) + return x*C(a)+y*S(a),y*C(a)-x*S(a) + end + + function cube(x,y,z) + x=math.abs(x)-1 + y=math.abs(y)-1 + z=math.abs(z)-1 + return max(x,max(y,z)) + end + + function m(x,y,z) + x = x + S(time()/900)*2 + y,z=rot(y,z,S(time()/2000)*3) + x,z=rot(x,z,time()/1000) + return cube(x,y,z) + end + + function gn(x,y,z) + e=0.01 + d=m(x,y,z) + dx=d-m(x+e,y,z) + dy=d-m(x,y+e,z) + dz=d-m(x,y,z+e) + nv=len3(dx,dy,dz) + return dx/nv,dy/nv,dz/nv + end + + for i=0,15 do + poke(0x3fc0+3*i+0,255/15*(i)) + poke(0x3fc0+3*i+1,255/15*(i >10 and i or 0)) + poke(0x3fc0+3*i+2,255/15*(i < 4 and i or 0)) + end + + qc=0 + ql=0 + cls(0) + function TIC() + if qc > 0 then + qc = qc - 1 + elseif ql < fft(1) then + qc=500 + cls(15) + else + ql=fft(1) + end + for i=0,240*136 do + px=peek4(i) + px=math.max(px-1,0) + poke4(i,px) + end + lx=3 + ly=-4 + lz=3 + ln=len3(lx,ly,lz) + lx=lx/ln + ly=ly/ln + lz=lz/ln + scaler = 185+fft(1)*200 + for X=0,240,8 do for Y=0,135,8 do + x=(120-X)/scaler + y=(68-Y)/scaler + z=-10 + + lp=len3(x,y,1) + + xd=x/lp + yd=y/lp + zd=1/lp + + x=0 + y=0 + + t=0 + d=0 + while t<20 do + d=m(x+t*xd,y+t*yd,z+t*zd) + if d<0.1 then break end + t = t +d + end + + if t < 20 then + nx,ny,nz=gn(x+t*xd,y+t*yd,z+t*zd) + lm=lx*nx+ly*ny+lz*nz + lm=math.max(0,lm) + -- pix(X,Y,1+lm*10) + circ(X,Y,1+lm*4,2+lm*13) + end + + end end + end + \ No newline at end of file diff --git a/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/catnip.lua b/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/catnip.lua new file mode 100644 index 000000000..7979fbdf7 --- /dev/null +++ b/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/catnip.lua @@ -0,0 +1,182 @@ +sin=math.sin +cos=math.cos +abs=math.abs +rand=math.random +min=math.min +max=math.max + +t=0 + +pointsB={{x=70,y=50},{x=63,y=67},{x=77,y=86},{x=99,y=59},{x=117,y=47},{x=157,y=50},{x=107,y=85},{x=153,y=86},{x=174,y=65},{x=171,y=40},{x=189,y=56},{x=181,y=35},{x=198,y=35},{x=205,y=45},{x=211,y=56},{x=211,y=46},{x=189,y=33},{x=188,y=22},{x=58,y=46},{x=51,y=55},{x=44,y=41},{x=37,y=50},{x=30,y=38},{x=25,y=48},{x=15,y=39},{x=13,y=50},{x=4,y=40},{x=2,y=49},{x=102,y=101},{x=81,y=103},{x=97,y=116},{x=88,y=121},{x=106,y=130},{x=101,y=135},{x=114,y=135},{x=114,y=129},{x=139,y=88},{x=146,y=108},{x=156,y=108},{x=159,y=128},{x=150,y=129},{x=152,y=135},{x=167,y=135},{x=166,y=128},{x=214,y=48}} +points={} +pointsL={} + +idxs={ + -- body 1-9 +{2,1,3},{1,3,4},{4,1,5},{5,4,6},{4,3,7},{7,6,4},{6,7,8},{6,8,9},{8,7,37}, + -- neck 10-11 +{6,9,10},{9,10,11}, + -- head 12-18 +{10,11,12},{12,11,13},{13,11,14},{14,11,15},{14,15,16},{12,13,17},{17,12,18}, + -- tail 19-28 +{1,2,19},{19,2,20},{19,20,21},{21,20,22},{22,21,23},{23,22,24},{24,23,25},{25,24,26},{25,26,27},{27,26,28}, + -- leg b 29-36 +{7,3,29},{3,29,30},{29,30,31},{31,30,32},{31,32,33},{33,32,34},{33,34,35},{35,33,36}, + -- leg f 37-43 +{37,8,38},{38,8,39},{39,38,40},{40,38,41},{41,40,42},{40,42,43},{40,43,44},{16,15,45}} + +body={1,9} +head={10,18} +tail={19,28} +legR={29,36} +legF={37,43} +cat={body,head,tail,legR,legF} + +for j=0,1 do + vbank(j) + for i=0,47 do + poke(16320+i,i*5*(i%3==1 and 1 or .2)) + end +end + +function tx(a,b,c,d,e,f) + local col=10--(a.x+b.x+c.x)/3 + ttri( + a.x,a.y, + b.x,b.y, + c.x,c.y, + d.x,d.y, + e.x,e.y, + f.x,f.y, + 2 + ) +end + +memset(0x4000,0,16320) + +rp={} +for i=1,50 do + rp[i]={x=rand()*240,y=rand()*136} +end + +function update() + -- copy last + for i=1,#pointsB do + pointsL[i]=points[i] or pointsB[i] + end + + local xo=cos(t/15+1)*20 + local yo=sin(t/20)*10 + --cat={body,head,tail,legR,legF} + -- iterate through parts + for j=1,#cat do + -- Iterate through triangles + for i=cat[j][1],cat[j][2] do + + if j==1 then --body + --y=y+sin( + end + + local ids=idxs[i] + for k=1,#ids do + local id=ids[k] + local x=xo + local y=yo + local px=pointsB[id].x + local py=pointsB[id].y + + if j==1 then + --body + --local s=max(0, + --abs(px-120)-40 + --)/20 + --py=py+sin(t/20+px/10)*20 + --py=py+40 + end + if px>160 then + --head + --local s=max((px-160),0)/20 + --py=py+sin(t/20+px/10)*20*s + --py=py-abs(sin(t/20))*5*s + end + if j==3 then + --tail + --local s=max(-(px-70),0)/60 + --py=py+sin(t/40+px/10)*20*s + end + if j==4 then + s=max(0,py-100)/2 + px=px+cos(t/10)*s-s + end + if j==5 then + s=max(0,py-100)/2 + px=px+sin(t/10)*s-s + end + + points[id]={ + x=px+x, + y=py+y-15 + } + end + end + end +end + +function TIC() + cls() + vbank(0) + memcpy(0,0x4000,16320) + + vbank(1) + local ofx=-1--sin(t/146) + local ofy=0--cos(t/149) + tx( + {x=ofx,y=ofy}, + {x=480+ofx,y=ofy}, + {x=ofx,y=272+ofy}, + {x=0,y=0}, + {x=480,y=0}, + {x=0,y=272} + ) + + update() + + for j=1,#cat do + for i=cat[j][1],cat[j][2] do + local ids=idxs[i] + local a=points[ids[1]] + local b=points[ids[2]] + local c=points[ids[3]] + local d=pointsL[ids[1]] + local e=pointsL[ids[2]] + local f=pointsL[ids[3]] + tx(a,b,c,d,e,f) + end + end + + --for i=1,#rp do + --pix(rp[i].x,rp[i].y,i+t/8) + --rp[i].x=(rp[i].x+rand()*2-1)%240 + --rp[i].y=(rp[i].y+1)%136 + + --for i=0,50 do + --elli( + --rand()*240,rand()*136, + --rand()*3,rand()*2, + --rand()*16 + --) + --for y=0,17 do + --for x=0,40 do + for i=0,5 do + local x=rand()*40//1 + local y=rand()*17//1 + print( + string.char(rand(65, 65 + 25)), + x*6,y*8, + rand()*16) + --end + end + + memcpy(0x4000,0,16320) + t=t+1 +end diff --git a/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/doop.lua b/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/doop.lua new file mode 100644 index 000000000..5bd21f3e7 --- /dev/null +++ b/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/doop.lua @@ -0,0 +1,147 @@ +-- greetz to catnip, lex, violet, & you! +sx=240 +sy=136 +fw=4 +fh=6 + +myfft = {} +fm = {} +nbux = 255 +msg=" HELLO :) GREETZ TO: LEX, CATNIP, VIOLET, ALDROID, POLYNOMIAL, AND EVERYONE WATCHING THE STREAM! ALSO APOLOGIES TO PETER SAVILE... " +bl={} +function pal(i,r,g,b) + adr=0x3fc0+3*i + poke(adr,r) + poke(adr+1,g) + poke(adr+2,b) +end + +function init() + for i=1,nbux do + myfft[i]=0 + fm[i]=0 + end + + vbank(0) + cls(0) + cw=sx/fw + nl=math.ceil((#msg)/cw) + for i=0,nl-1 do + s=string.sub(msg,1+i*cw,(i+1)*cw) + print(s,0,i*fh, 1, 1,1, true) + end + vbank(1) + pal(1,0,0,0) + pal(2,255,255,255) +end +init() + + +function dofft() + for i=1,nbux do + f=fft(i) + if f>fm[i] then + fm[i]=f + end + if 0==fm[i] then + myfft[i]=0 + else + myfft[i]=f/fm[i] + end + end +end + +function getheight(cx,cy) + xx = cx*fw + yy = cy*(fh-1) + while xx>sx do + xx=xx-sx + yy=yy+fh + end + vbank(0) + h=pix(xx,yy) + vbank(1) + return h + + + +end + +sin=math.sin +pi=math.pi +function BDR(y) + ph=time()/1000/2*pi + y/64*pi + b=24 + a=255-b + r=a+b*sin(ph) + g=a+b*sin(ph+0.66*pi) + b=a+b*sin(ph+1.33*pi) + vbank(1) + pal(12,r,g,b) +end + +function xpr(s,x0,y0,c,ss) + x=x0 + y=y0 + + for i=1,#s do + ii = math.floor( (i/#s)*#bl ) + if (ii<=0) then ii=1 end + dy = bl[ii]*16*ss + dx = print(string.sub(s,i,i),x,y+dy,c, 2,2) + x=x+dx + end +end + +lines={} +function TIC() + dofft() + vbank(1) + + cls(1) + + l={} + for i=1,64 do + l[i]=myfft[i] + end + table.insert(lines,l) + if ((#lines)>16) then + table.remove(lines,1) + end + + bb=0 + nbb=16 + for i=1,nbb do + bb=bb+l[i] + end + bb=bb/nbb + table.insert(bl,bb) + if (#bl>16) then + table.remove(bl,1) + end + + cps=1 + cpos = ( (time()/1000)*cps )%(#msg) + + xpr("Jam Division",48,0,2,1) + --print("Unknown Bytes",48, 117, 2, 2,2) + xpr("Unknown Bytes",48,117, 2, -1) + for lno=1,#lines do + l=lines[lno] + lwid = 128 + 64*lno/#lines + for i=1,#l do + x=sx/2 -lwid/2 + lwid*(i/#l) + dy_fft = -l[i]*8 + dy_msg = -20*getheight(cpos+(i/#l)*2.5, lno/#lines) + y = 26 + 85*(lno/#lines) + dy_fft + dy_msg + + if (i>1) then + line(xprev,yprev,x,y,12) + end + xprev=x + yprev=y + end + end + +end + diff --git a/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/lexbailey.lua b/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/lexbailey.lua new file mode 100644 index 000000000..daaa2a51f --- /dev/null +++ b/shader_file_sources/2024_02_26_byte_jam_monday_night_bytes/lexbailey.lua @@ -0,0 +1,122 @@ +rects = {} +windows = {} + +num_cols = 8 +colw=45 + +for i=1,num_cols do + rects[i] = 20+(math.random() * 70) + windows[i] = math.floor(math.random()*16) +end +f=0 +t=0 +th=0 +th2=0 + +function draw_house(x,y,i) + rect(x,y,colw-4,200,3) + tri(x,y,x+colw-4,y,x+((colw-4)//2),y-15,1) + local c = math.floor(windows[i]) % 16 + if c == 3 then + c = 4 + end + rect(x+((colw-4)//2)-5,90,10,17, 1) + rect(x+((colw-4)//2)-18,y+10,10,10, c) + rect(x+((colw-4)//2)+8,y+10,10,10, c) +end + +function draw_road(s) + rect(0,105,240,136,0) + for i=0,24 do + rect(i*20-(s % 240),120,15,3,4) + end +end + +function draw_bus(x,y) + local c = math.floor(windows[1]) % 16 + if c == 3 then + c = 4 + end + circ(x,y,5,13) + circ(x+50,y,5,13) + rect(x-6,y-25,64,25,4) + for i=0,4 do + rect(x-2+(i*10),y-20,8,8,c) + end + rect(x+47,y-20,8,16,c) + circ(x+56,y-3,2,12) + circ(x-5,y-3,2,2) + print("FFX-MNB",x,y-10) +end + +function draw_cloud(x,y,s) + circ(x,y,s,12) + circ(x+s+s,y-2,s,12) + circ(x+s,y-s,s-2,12) + circ(x+s,y+4,s-2,12) +end + +function draw_clouds(ct) + for i=0,4 do + draw_cloud(-30+((ct+(70*i))%340),40+(10*math.sin((ct/10)+i)),10) + end +end + +function draw_godzilla(x,y,f) + -- lmao, if I can pull this off, + -- then this will be my fave mnb + -- so far :D + + --other arm/leg + line(x-38,y-10,x-20,y-10+f,5) + line(x-40,y,x-40+f,y+10,5) + + --tail + circ(x-40,y,9,6) + circ(x-43,y,7,6) + circ(x-51,y,5,6) + circ(x-56,y,3,6) + + --torso + circ(x-40,y-4,12,6) + circ(x-40,y-8,14,6) + + --neck/head + circ(x-40,y-25,8,6) + circ(x-40,y-30,10,6) + circ(x-34,y-33,4,0) + --mouth + line(x-38,y-25,x-30,y-25,12) + + --arm/leg + line(x-38,y-10,x-20,y-10-f,5) + line(x-40,y,x-40-f,y+10,5) +end + +function TIC() + cls(10) + t=t+(fft(1)*20) + th=th+(fft(10)*20) + th2=th2+(fft(5)*20) + h = fft(30) + s = (time()//40) % (num_cols*colw) + draw_clouds(s) + for x=1,num_cols+10 do + local i = (x%num_cols)+1 + local y = rects[i] + local rx = (x-1) * colw + windows[i] = (windows[i] + (h*10)) + y = y+ math.sin((t/100)+(x%num_cols))*7 + draw_house(rx-s,106-y,i) + end + draw_road(s) + by = 120 + bx = 70 + bx2 = bx+(math.sin(th2/110)*100) + bx = bx+(math.sin(th2/100)*100) + by2 = by+(math.sin(1+(th/9))*8) + by = by+(math.sin(th/10)*10) + draw_bus(bx,by) + f = f + 0.1 + draw_godzilla(bx2-20,by2,math.sin(f)*10) +end diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Alef.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Alef.glsl new file mode 100644 index 000000000..abdea2c8e --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Alef.glsl @@ -0,0 +1,48 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float t = 0.2*fGlobalTime; + float rad = length(uv)*sin(1.0*fGlobalTime); + + uv = vec2(uv.x*cos(t+rad) + uv.y*sin(t+rad), uv.y*cos(t+rad) - uv.x*sin(t+rad)); + + float s = 25.0+5.0*sin(2.0*fGlobalTime); + uv = round(s*uv)/s; + + float r = 1.0+ abs(uv.x) + abs(uv.y) - sin(0.5*fGlobalTime); + + + + float c = 0.0; + c = sin(20.0*r); + vec3 col = 0.5 + 0.5*sin(15.0*c+vec3(0.0,2.0,4.0)); + + if (c < 0.5){ + col *= 0.0; + } + + out_color = vec4(vec3(col), 1.0);} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BFlorry.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BFlorry.glsl new file mode 100644 index 000000000..9fac16808 --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BFlorry.glsl @@ -0,0 +1,63 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float taikavakio = 0.1; + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return taikavakio * vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +//moi :3 + + + + vec2 m; + m.x = sin(uv.x / uv.y) / 3.14; + m.y = cos(fGlobalTime * texture(texFFTSmoothed, 0).r * 0.05) / length(uv) * .2; + vec2 oldm = m; + float schmoltime = fGlobalTime * 0.2; + float fft = pow(texture(texFFT, 0).r,2) + 0.3; + m.x = (oldm.x * sin(schmoltime) + oldm.y * cos(schmoltime)) * fft; + m.y = (oldm.x * cos(schmoltime) + oldm.y * -sin(schmoltime)) * fft; + float d = m.y * m.x; + + uv -= texture(texNoise, vec2(0,0)).xy * fft; + + //if(uv.x > 0){uv.x = uv.x * fft;} + //else{uv.x -= fft * schmoltime;} + + float f = texture( texFFTSmoothed, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + float taikuus = 64; + m = round(m*taikuus) / taikuus; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t*20; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BadFelix.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BadFelix.glsl new file mode 100644 index 000000000..63b50969c --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_BadFelix.glsl @@ -0,0 +1,69 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +vec4 hsl( float h, float s, float l) { + float rc = cos(h); + float rg = cos(h + 6.283/3); + float rb = cos(h + 6.283/3*2); + float e = exp(l-s); + float f = exp(l+s); + float a = e/(e+1); + float b = f/(f+1); + return vec4(rc*a, rg*a, rb*a, 1.0); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x, gl_FragCoord.y); + float x = (uv.x - v2Resolution.x/2) / v2Resolution.y; + float y = (uv.y - v2Resolution.y/2) / v2Resolution.y; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + float r = pow(x*x + y*y, 0.5); + float li = sin(r*10 + fFrameTime * 100); +// out_color = vec4(li, li, li, 1.0); + float be = texture( texFFT, 0.5 ).r; + float e = texture(texFFT, 0.8).r; + if (sin(x*exp(sin(fGlobalTime * 3)) * 10) < 0) { + out_color = hsl(r + 1, 1.0, be + 1); + } else { + out_color = vec4(texture(texFFT, 0.2).r * 10); + } +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Eslo.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Eslo.glsl new file mode 100644 index 000000000..32443884a --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Eslo.glsl @@ -0,0 +1,64 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float pallo(vec2 v, float p){ + return length(v)-p; + } + + float pallo2(vec2 v, float p){ + return length(vec2(v.x,v.y*2))-p; + } + + vec2 rotate(vec2 v, float r){ + mat2 m = mat2(cos(r), sin(r), -sin(r), cos(r)); + return m * v; + } + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + uv = vec2(mod(uv.x*2,1) - 0.5, abs(sin(uv.y*2)) - 0.5); + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + float p1 = pallo2(rotate(uv, fGlobalTime), 0.01); + uv = vec2(abs(sin(uv.x*1)) - 0.5 , uv.y*3); + float p2 = pallo2(rotate(uv, -fGlobalTime), 0.01); + out_color = vec4(pallo2(rotate(uv, fGlobalTime* f/2),0.01*f)-p1, p2,p1*sin(fGlobalTime*f),0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Stuk.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Stuk.glsl new file mode 100644 index 000000000..4b0c2a56e --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_Stuk.glsl @@ -0,0 +1,46 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + float t = fGlobalTime; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec4 b = vec4(uv.y*sin(t*2), + 0, + 0, + 1); + + vec4 s = vec4(0,0,0,0); + if(abs(uv.x-sin(uv.y*t*0.02)*0.8*t)<0.5) + s+=vec4(1,1,1,1); + + + vec4 pout = b+s; + out_color = clamp(pout, 0, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_gemppu.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_gemppu.glsl new file mode 100644 index 000000000..c98fb66a3 --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_gemppu.glsl @@ -0,0 +1,69 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +vec2 rot(vec2 p, float t) +{ + vec2 r; + r.x = p.x*sin(t)+p.y*cos(t); + r.y = p.x*cos(t)-p.y*sin(t); + return r; +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv = rot(uv, sin(fGlobalTime*.3)*.1 + 3.1416/2); + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float asd = texture(texFFT, 0.01).x*.1; + if(uv.x>0) + { + uv.x = uv.x + asd; + }else{ + uv.x = uv.x*-1. + asd; + } + uv.y += texture(texFFTSmoothed, uv.x+.01).x; + + + float wasd = mod(length(uv),.5); + float bw = 0; + if(wasd<.2) bw = 1; + out_color = vec4(vec3(bw),1.); + return; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_papu.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_papu.glsl new file mode 100644 index 000000000..473812902 --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_papu.glsl @@ -0,0 +1,86 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float sineH(float x) +{ + return .03*sin(x*20 + fGlobalTime) * (1 + texture(texFFTSmoothed, abs(x)*0.01).r * 10); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv.x += sin(fGlobalTime)*uv.x + cos(fGlobalTime)*uv.y; + uv.y += -cos(fGlobalTime)*uv.x + sin(fGlobalTime)*uv.y; + + float b = .25 + abs(sin(fGlobalTime))*.25; + uv += b; + uv = mod(uv, b*2) - b; + uv /= b; + + //vec2 m; + //m.x = atan(uv.x / uv.y) / 3.14; + //m.y = 1 / length(uv) * .2; + //float d = m.y; + + //float f = texture( texFFT, d ).r * 100; + //m.x += sin( fGlobalTime ) * 0.1; + //m.y += fGlobalTime * 0.25; + + //vec4 t = plas( m * 3.14, fGlobalTime ) / d; + //t = clamp( t, 0.0, 1.0 ); + //out_color = f + t; + + vec4 bgc = vec4(1); + + float f = texture(texFFT, 0.05).r * 5.; + vec4 flash = vec4(-vec3(1.)*f, 1.); + + vec4 line = vec4(0.); + line.a = 1.; + vec2 lv = uv; + lv.y += sineH(uv.x); + if (abs(lv.y) < 0.02) { + line.rgb = vec3(-1.); + } + + vec2 pall = vec2(sin(fGlobalTime), 1.); + pall.y = -sineH(pall.x); + + vec4 pallc = vec4(1.); + float pallr = .04 + texture(texFFT, 0.02).r * .2; + float palld = length(uv - pall); + if (palld < pallr) + pallc.rgb = vec3(-1 + palld*5); + else + pallc.rgb = vec3(0); + + out_color = bgc + flash + line + pallc; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_pumpuli.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_pumpuli.glsl new file mode 100644 index 000000000..666080945 --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r1_karsinnat/r1_pumpuli.glsl @@ -0,0 +1,123 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +const float E=0.001; +const float FAR=100; +const int STEPS=128; + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d,0.0))+min(max(d.x, max(d.y, d.z)), 0.0); +} + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float scene(vec3 p, vec3 ro, vec3 rd){ + vec3 pp= p; + + for(int i = 0; i < 40; ++i){ + + pp = abs(pp)-vec3(10,10,10); + + } + + float sp = box(pp,vec3(2)); + return sp; +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p +sin(a)*vec2(-p.y,p.x); +} + + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + for(int i = 0; i < STEPS; ++i){ + float d = scene(p,ro,rd); + t += d; + p = ro+rd*t; + if(d <= E || d >= FAR) { + break; + } + } + return t; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + vec2 zom = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv += 0.5; + + float fft = texture(texFFTIntegrated,.5).r *1; + + uv=floor(uv*(80*fft))/(80*fft); + + float time = fGlobalTime; + vec2 q = uv-.5; + + + vec3 ro= vec3(0,4,10); + ro+=vec3(10,0,10)+vec3(sin(fft*.02)*100,4,2); + rot(ro.xz,time*fft*.002); + ro-=vec3(10,0,10); + vec3 rt= vec3(0,0,0); + + + vec3 z = normalize(ro-rt); + vec3 x = normalize(cross(z,vec3(0,1,0))); + vec3 y = normalize(cross(x,z)); + + vec3 rd = normalize(mat3(x,y,z) * vec3(q, 1/radians(90.0))); + + float t = march(ro,rd); + vec3 p = ro+rd*t; + + + float f = texture( texFFT, 0.05 ).r * 100; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + zom-=vec2(.5); + zom*=vec2(.999)-f*.1; + zom+=vec2(.5); + + vec4 prev = texture(texPreviousFrame,zom)*.99; + + + + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 col = vec4(1-length(p)/FAR)/vec4(abs(p),1);//plas( m * 3.14, fGlobalTime ) / d; + if(t>=FAR-1){ + col=vec4(1)-prev*vec4(.4*sin(time*f),.8*cos(time*.2),.4,1); + } + + col = clamp( col, 0.0, 1.0 ); + col *=vec4(10.4,-10.2*sin(time*4),.5,1); + out_color = col+prev*.5; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Alef.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Alef.glsl new file mode 100644 index 000000000..2d71b06ba --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Alef.glsl @@ -0,0 +1,62 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv = uv + 0.5*cos(2.0*length(uv)+fGlobalTime); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + //float f = texture( texFFT, d ).r * 100; + //m.x += sin( fGlobalTime ) * 0.1; + //m.y += fGlobalTime * 0.25; + + //vec4 t = plas( m * 3.14, fGlobalTime ) / d; + //t = clamp( t, 0.0, 1.0 ); + //out_color = f + t; + + vec3 color = (0.5+0.5*sin(vec3(0.0,2.0,4.0)+fGlobalTime))*exp(-uv.x*uv.x)*20.0*texture(texFFTSmoothed,0.1).r; + + float scale = 1.0+20.0*texture(texFFTSmoothed,0.15).r; + + float f = exp(-length(uv-0.25*vec2(sin(4.0*fGlobalTime),cos(2.43*fGlobalTime)))/0.1/scale); + f += exp(-length(uv-0.25*vec2(sin(2.0*fGlobalTime),cos(3.43*fGlobalTime)))/0.15/scale); + f += exp(-length(uv-0.25*vec2(sin(3.65*fGlobalTime),cos(5.43*fGlobalTime)))/0.15/scale); + if (f > 0.5) + color = (0.5+0.5*cos(vec3(0.0,2.0,4.0)+fGlobalTime))*f; + + color += vec3(1.0,0.0,0.0)*(1-exp(-length(uv)/0.75))*texture(texFFTSmoothed,0.02).r; + + out_color = pow(vec4(color,1.0),vec4(1/2.2)); + } \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_BFlorry.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_BFlorry.glsl new file mode 100644 index 000000000..0cedd0e94 --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_BFlorry.glsl @@ -0,0 +1,68 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv*= texture(texNoise, vec2(0,0)).xy; + vec2 olduv = uv; + if(uv.x > 0){ + //uv.x = uv.x + texture(texFFT, uv.x).r * 0.1; + uv.x = 10 * olduv.y * cos(fGlobalTime) + olduv.x* sin(fGlobalTime) + texture(texFFT, uv.x).r; + uv.x = round(uv.x* 10) / 10; + } + else{ + uv.y += texture(texFFT, 0).r* tan(fGlobalTime) * olduv.x*cos(fGlobalTime) + olduv.y*-sin(fGlobalTime); + uv.x = round(uv.x); + } + olduv = uv; + + uv.x += (olduv.x*cos(fGlobalTime)*sin(fGlobalTime)); + float a = 64; + uv = round(a*uv)/a; + + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + m.x = m.x * sin(fGlobalTime) + m.y * cos(fGlobalTime); + m.y = m.x * cos(fGlobalTime) + m.y * -sin(fGlobalTime); + // :D + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Eslo.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Eslo.glsl new file mode 100644 index 000000000..6c8d31010 --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_Eslo.glsl @@ -0,0 +1,69 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float pallo(vec2 p, float f){ + return length(p)-f; + } + + +float pallo2(vec2 p, float f){ + return length(vec2(p.x, p.y * 4))-f; + } + + vec2 rotate(vec2 p, float r){ + mat2 m = mat2(cos(r), sin(r), -sin(r), cos(r)); + return m * p; + } + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec2 uvA = uv; + + uv = rotate(uv, fGlobalTime); + + uv = vec2(mod(uv.x * sin(fGlobalTime*2)*3, 1) - 0.5, mod(uv.y* 5 - (-f)*0.1 , 1)-0.5); + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + + float y = step(pallo2(rotate(uv, fGlobalTime),0.2), 0.1); + + out_color = vec4(pallo2(uvA, 0.2*f*2)*f*uv.x , pallo(uv,0.1) + y - pallo2(uvA, 0.2*f*2) , pallo2(uvA, 0.2*f*2) , 0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_pumpuli.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_pumpuli.glsl new file mode 100644 index 000000000..6efc6d519 --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r2_semifinals/r2_pumpuli.glsl @@ -0,0 +1,99 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float hex(in vec2 p, in float r) +{ + const vec3 k = vec3(-0.86,0.5,0.57); + p = abs(p); + p -= 2.0*min(dot(k.xy,p),0.0)*k.xy; + p -= vec2(clamp(p.x, -k.z*r, k.z*r), r); + return length(p)*sign(p.y); +} + +void rot(inout vec2 p, float a) { + p = cos(a)*p +sin(a)*vec2(-p.y,p.x); +} + + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + //float gt=fGlobalTime; + float gt=texture(texFFTIntegrated,.02).r*.12; + float bm=texture(texFFT,.05).r*10; + float bms=texture(texFFTSmoothed,.05).r*20; + + vec2 zom=uv+.5; + + uv=round(uv*(bm*700))/(bm*700); + + + zom+=.5; + zom*=vec2(.99); + zom-=.5; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFTSmoothed, pow(abs(m.x),2) ).r * 10; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + + vec3 col = vec3(1); + vec2 pp = uv; + + float uvf = texture( texFFTSmoothed, pow(abs(pp.x/pp.y),2) ).r * 10; + + for(int i=0;i < 4; ++i){ + pp= abs(pp)-vec2(.1,.2)*(1.2-bms*.2); + rot(pp,gt*4+bm*.02); + pp=abs(pp)-vec2(0,bms*.1+.1)*uvf; + } + + vec3 prev=texture(texPreviousFrame,zom).rgb; + + col *= smoothstep(0.0,hex(pp,.1*(1+bm)+f*.02),1.0); + col -= smoothstep(0.0,hex(pp/uvf,.3*(1+bm)+f*.02),1.0); + + if(col.r+col.b+col.g<.1){ + col=prev*.3*vec3(3,.5,1.8); + } + + col=clamp(col,-0.1,1.2); + + out_color = vec4(col*vec3(10,1,4),1)-vec4(prev*vec3(40,2,2),1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r3_final/r3_Eslo.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r3_final/r3_Eslo.glsl new file mode 100644 index 000000000..18982ba07 --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r3_final/r3_Eslo.glsl @@ -0,0 +1,88 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; + +float p(vec2 v, float p){ + return length(v)-p; + } + +float pp(vec2 v, float r){ + return step(p(v, r), 0.1 +( mod(time, 0.1))) - step(p(v, r- 0.05), 0.1); + } + +vec2 rot(vec2 v, float f){ + mat2 m = mat2(cos(f), sin(f), -sin(f), cos(f)); + return m * v; + } + + +float ren(vec2 v, float time){ + float g = 0; + g += p(v, 0.1); + for(float i =0; i<5; i++){ + g += pp( vec2(mod(v.x * 4, 1*i * mod(time,1)) - 0.5, mod(v.y * 4*i, 1*i * mod(time,1)) - 0.5 ), 0.1); + } + return g; + } + + float ren2(vec2 v, float time){ + float g = 0; + g += p(v, 0.1); + for(float i =0; i<4; i++){ + g += p( vec2(mod(v.x * 4, 1*i * abs(sin(time))) - 0.5, mod(v.y * 4*i, 1*i * mod(time,1)) - 0.5 ), 0.2); + } + return g; + } + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp(t, 0.0, 1.0 ); + + //float g = 0; //pp(uv,0.1); + float g = ren2(uv*2, f+0.5)* 10; + float r = ren(uv, time)* 0.4; + float b = ren(rot(uv/5, time)/2, f*2)* 0.6; + b += ren(uv/2, time/2)* 0.4; + b += ren(uv/3, time/1.5)* 0.4; + b += ren(uv/3, time/1.5)* 0.4; + out_color = vec4(r,g,b,0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_02_shader_showdown_instanssi/r3_final/r3_pumpuli.glsl b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r3_final/r3_pumpuli.glsl new file mode 100644 index 000000000..646e9a06b --- /dev/null +++ b/shader_file_sources/2024_03_02_shader_showdown_instanssi/r3_final/r3_pumpuli.glsl @@ -0,0 +1,86 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float pen( in vec2 p, in float r){ + const vec3 k = vec3(0.8,0.58,0.72); + p.x = abs(p.x); + p.y*=-1; + p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y); + p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y); + p -= vec2(clamp(p.x,-r*k.z,4*k.z),r); + return length(p)*sign(p.y); +} + + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +void rot(inout vec2 p, float a){ + p=cos(a)*p+sin(a)*vec2(-p.y,p.x); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float ft=texture(texFFTIntegrated,0.02).r*4; + float gt = fGlobalTime*.02+ft*.01; + float fy = texture(texFFT, pow(abs(uv.x),4)).r*1; + + uv=uv*vec2(1,1.2); + + vec2 pp = uv; + + vec4 prev=texture(texPreviousFrame,uv); + + for(int i=0;i < 50;++i){ + uv=abs(uv)-vec2(.2+abs(sin(gt+pp.x*.2)*.4),0); + rot(uv,pow(ft*.0008,2)); + uv=abs(uv)-vec2(0,fy*.1); + } + prev*=.4-texture(texPreviousFrame,uv); + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.x; + + + float fx = texture(texFFT, pow(abs(m.x),2) ).r *10; + float fz = texture(texFFT, 0.2).r*100; + float f = texture( texFFT, pow(abs(d),2) ).r * 1/(m.y-.8-fx*-.1)*10; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + vec4 col = vec4(abs(f)*.5); + col = clamp( col, 0.0, 1.0 )*vec4(1,5,10,1); + col+= vec4(1,1,1,1); + col*=step(pen(pp,.2+fx*2),.01)+prev*.5; + + if(col.r+col.g+col.b<.0){ + col=vec4(.1+floor(sin(gt*10)*20)*.05,.5,1.8,1); + } + rot(col.xy,prev.x); + rot(col.zy,prev.y); + out_color = (col+prev*.6)*(.1+fy*.9)*12; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_03_byte_jam_instanssi/aldroid.lua b/shader_file_sources/2024_03_03_byte_jam_instanssi/aldroid.lua new file mode 100644 index 000000000..96dd494be --- /dev/null +++ b/shader_file_sources/2024_03_03_byte_jam_instanssi/aldroid.lua @@ -0,0 +1,150 @@ +-- pos: 0,0 +-- aldroid here - hello instanssi! +a=0 +S=math.sin +C=math.cos +P=math.pi +cls() + +function xfft(i) +return ((1+C(t*2.4))/2)^0.5 +end + +cols = {} +for i=0,47 do +cols[i]=peek(0x3fc0+i%4+8) +end + +function SCN(l) +if clr then +for i=0,47 do +poke(0x3fc0+i,cols[i]) +return +end +end +u=l 0.05 then + mg = "INSTANSSI ROCKS" + a=print(mg,120-a/2,64,15) + end + for x=0,240,2 do for y=20,68 do + ox1=math.random(0,2) + ox2=math.random(0,2) + p1=pix(ox1+x,66-y) + pix(ox2+x,68+co-y,p1) + p2=pix(ox1+x,70+y) + pix(ox2+x,68+co+y,p1) + end end +end +b=0 +clr=false + +function TIC2() + + +circ(120,68,60,4) +clip(120,0,240,68) +circb(120,68,40,0) +clip() +circ(92,67,4,0) +circ(116+6*C(fft(1)*10),90+S(fft(1)*10)*6,8,0) + +end +function TIC3() +d=(time()%1200//600)*3-2 +for x=1,238 do +for y=0,135 do +pix(x,y,pix(x+d,y)) +end end +end + +function TIC() +bigtime = time()%9000 +clr = bigtime<3000 + + + +if clr then + +TIC1() +elseif bigtime < 6000 then + circ(120,68,2+fft(12)*550,fft(1)*50) +t=time()//230 +xp=S(t+time())*80 +yp=C(t*t+0.3*time())*80 +rect(120-b/2-xp-2,62+yp,b+4,12,3) +b=print("INSTANSSI ROCKS",120-b/2-xp,64+yp,12) +elseif bigtime < 700 then +TIC2() +else +TIC3() +end +if math.random() < 0.1 then +newcol = {} +for i=0,47 do +newcol[i]=cols[(i+1)%47] +end +cols= newcol +end + + +sqx=120+C(t//3)*120 + +rect(sqx-10,0,20,135,0) + +end diff --git a/shader_file_sources/2024_03_03_byte_jam_instanssi/muffintrap.lua b/shader_file_sources/2024_03_03_byte_jam_instanssi/muffintrap.lua new file mode 100644 index 000000000..af408564b --- /dev/null +++ b/shader_file_sources/2024_03_03_byte_jam_instanssi/muffintrap.lua @@ -0,0 +1,79 @@ +R=math.random + +balls={} + + for b=0, 40 do + balls[b]={x=math.random(240), + y=136+math.random(200), + c=3+R(6), + r=4+R(12), + p=math.pi*R()} + end + +function DrawBalls(cutR) + + for b=0, #balls do + balls[b].y=balls[b].y-1 + balls[b].p=balls[b].p+0.01 + if balls[b].y<-10 then + balls[b].y=140+R(400) + end + B=balls[b] + c=B.c + r=B.r+math.sin(B.p)*6 + if (cutR<0 and r0 and r>cutR) then + x=B.x+math.cos(B.p)*120 + circ(x, balls[b].y,r, c) + circ(x-3, balls[b].y-r*0.3,r*0.6, c-1) + circ(x-5, balls[b].y-r/2,r*0.2, 12) + end + end + +end + +function TIC()t=time()//32 + + -- THANKS FOR THE JAMSSSS + + -- SEE YOU TOMORROW! + + pattern=t + sz=2 + for y=-68,68,sz do + for x=-120,120,sz do + v=math.abs(x)|math.abs(x*y+pattern) + rect(120+x,68+y,sz,sz,8+v>>2) + end + end + + + --[[ + -- LETS TRY FFT??? + for f=0, 136 do + rect(0, f*10, fft()*240, 10, 12) + print(">"..fft(f),2,f*10,12) + end + ]]-- + DrawBalls(-5) + + for l=0, 12 do + rect(math.sin(t/8+l/2)*50+120, + l*10,10,136,12-l) + end + + DrawBalls(5) + + for r=0, 20 do + ux = 10 + math.sin(t/10+r)*10 + print("Untz",ux+1,(t%12)+r*12+1,0) + print("Untz",ux,(t%12)+r*12,12) + end + + + for r=0, 20 do + bx = 200 + math.cos(t*0.5+r/2)*10 + print("Bnys",bx+1,0-(t%12)+r*12+1,0) + print("Bnys",bx,0-(t%12)+r*12,12) + end +end diff --git a/shader_file_sources/2024_03_03_byte_jam_instanssi/pumpuli.lua b/shader_file_sources/2024_03_03_byte_jam_instanssi/pumpuli.lua new file mode 100644 index 000000000..b00048509 --- /dev/null +++ b/shader_file_sources/2024_03_03_byte_jam_instanssi/pumpuli.lua @@ -0,0 +1,70 @@ +-- pos: 0,0 +ADDR = 0x3FC0 +palette = 0 + +function addLight(a) + for i=0, 15 do + for j=0, 2 do + poke(ADDR+(i*3)+j, palette+(1-j)*a) + end + palette = palette + 8 + end +end +addLight(50) +W=240 +H=136 +abs=math.abs +sin=math.sin +cos=math.cos +inst="INSTANSSI" +ti={"I","N","S","T","A","N","S","S","I"} +cls(0) +function TIC() + t=time()//32 + for y=0,H do + for x=0,W do + uv={x/W,y/H} + uv[1]=uv[1]-.5 + uv[2]=uv[2]-.5 + + + uv[1]=uv[1]*10 + uv2=uv + uv[2]=(uv[2]+t*.01)%1 + for i=0,3 do + uv[1]=abs(uv[1])-.8 + uv[2]=abs(uv[2]) + end + uv[1]=(uv[1]+t*.04)%1 + --uv[1] = uv[1]*sin(t*0.1) + uv[2]*cos(t*0.1) + --uv[2] = uv[2]*-sin(t*0.1) + cos(t*0.1)*uv[1] + ff=fft(abs(uv[1]*uv[2]-abs(uv2[2]))*1000)*50 + if ff>1 then + circ(x,y,ff,ff) + end + if x%2==t%2 and y%2==t%2 then + pix(x,y,1) + end + end + end + + rect(0,0,20,6,1) + print(t%16,0,0,15) + if t%16==0 then + addLight(50+t%50) + end + boing=fft(.00)*100 + + w=print("INSTANSSI",0,-8) + for i=1,9 do + c=0 + bPrint(ti[i],sin(t*0.1)*40+(W/2+w/9*i*2+i-w-10),sin(t*0.1)*-sin(t*0.2)*10+(H/2-sin(i)*(4+fft(i+t)*100)),boing) + end + + --bPrint("INSTANSSI",W/2-w,H/2,boing) +end + +function bPrint(t,x,y,b) + print(t,x,y-b+2,15,0,2) + print(t,x,y-b,2,0,2) +end diff --git a/shader_file_sources/2024_03_03_byte_jam_instanssi/suule.lua b/shader_file_sources/2024_03_03_byte_jam_instanssi/suule.lua new file mode 100644 index 000000000..914b003e7 --- /dev/null +++ b/shader_file_sources/2024_03_03_byte_jam_instanssi/suule.lua @@ -0,0 +1,815 @@ +-- pos: 0,0 +-- Hey Instanssi. What's your favourite +-- game? Mine is driving in he desert +-- So let's do that! + +-- Greetz to Aldroid, Muffintrap and +-- of course Violet! + +sin=math.sin +cos=math.cos +abs=math.abs +rand=math.random +pi=math.pi +flr=math.floor + +pal0={} +pal1={26,28,44, + 93,39,93, + 177,62,83, + 244,88,88, + 202,156,118, + 128,89,57, + 60,39,22, + 221,171,86, + 251,210,141, + 59,93,201, + 65,166,246, + 115,239,247, + 244,244,244, + 148,176,194, + 85,108,134, + 51,60,87} + +spr0={ +4,11,2,1,1, 6,1,13, +1,11,3,1,3,2,1,13, +1,12,1,15,1,12,1,10,2,12,2,13, +1,12,2,15,1, 9,1,12,2,13,1,12, +3,13,2,6,1,13,2,12, +8,11, +8,11, +8,11} +spr16={ +8,11, +4,11,4, 5, +2,11,3, 5,2, 4,1,13, +3, 5,3, 4,1,12,1,13, +2, 5,3, 4,3,13, +1, 5,2, 4,4,13,1,12, +2, 4,3,13,3,12, +4,13,4,12} +spr17={ +8, 5, +1, 4,3,12,1, 4,3, 5, +1,12,1,13,3,12,2, 5,1,11, +1,13,4,12,1, 5,2,11, +4,12,1, 5,3,11, +3,12,2, 5,3,11, +2,12,1, 5,5,11, +1,12,1, 5,6,11} +spr32={ +3,13,3,12,2, 5, +1,11,6, 5,1,11, +8,11, +8,11, +8,11, +8,11, +8,11, +8,11} +spr33={ +1, 5,7,11, +8,11, +8,11, +8,11, +8,11, +8,11, +8,11, +8,11} + +rn={} + +function q(x1,y1,x2,y2,x3,y3,x4,y4,col) + tri(x1,y1,x2,y2,x3,y3,col) + tri(x2,y2,x3,y3,x4,y4,col) +end + +function readsprite(sprarr,id) + local con=0 + for i=0,#sprarr//2-1 do + local rep=sprarr[i*2+1] + local col=sprarr[i*2+2] + for j=1,rep do + poke4(0x8000+con+id*64,col) + con=con+1 + end + end +end + +function loadpal(pal) + for i=1,48 do + poke(0x3fc0+i-1,pal[i]) + end +end + +-- Here comes two days of Precal :D +function car(ax,ay) +--back base + q(-5+ax,112+ay,245+ax,112+ay,-5+ax,141+ay,245+ax,141+ay,5) + line(-5+ax,112+ay,245+ax,112+ay,15) + elli(174+ax,98+ay,8,5,4) + elli(174+ax,101+ay,8,5,4) + elli(174+ax,104+ay,8,5,4) + elli(173+ax,107+ay,8,10,4) +-- + q(85+ax,47+ay,93+ax,47+ay, + 83+ax,52+ay,88+ax,52+ay,14) + q(83+ax,52+ay,88+ax,52+ay, + 67+ax,67+ay,70+ax,69+ay,14) + q(67+ax,67+ay,70+ax,69+ay, + 52+ax,80+ay,54+ax,83+ay,14) + q(52+ax,80+ay,54+ax,83+ay, + 42+ax,90+ay,46+ax,93+ay,14) + q(42+ax,90+ay,46+ax,93+ay, + 34+ax,100+ay,39+ax,102+ay,14) + q(34+ax,100+ay,39+ax,102+ay, + 26+ax,112+ay,34+ax,112+ay,14) + +--dashboard + q(22+ax,106+ay,27+ax,106+ay, + 15+ax,108+ay,26+ax,112+ay,6) + q(27+ax,106+ay,36+ax,106+ay, + 26+ax,112+ay,34+ax,112+ay,6) + q(36+ax,106+ay,42+ax,106+ay, + 34+ax,112+ay,39+ax,112+ay,6) + q(42+ax,106+ay,51+ax,107+ay, + 39+ax,112+ay,43+ax,113+ay,6) + q(51+ax,107+ay,59+ax,110+ay, + 43+ax,113+ay,61+ax,115+ay,6) +--base + q(-5+ax,116+ay,245+ax,116+ay,-5+ax,141+ay,245+ax,141+ay,2) +-- reflections + q( 4+ax,110+ay,8+ax,112+ay, + -5+ax,111+ay,-5+ax,120+ay,3) + q( 8+ax,112+ay,25+ax,115+ay, + -5+ax,120+ay,20+ax,120+ay,3) + q( 8+ax,112+ay,25+ax,115+ay, + -5+ax,120+ay,20+ax,120+ay,3) + q(25+ax,115+ay,45+ax,115+ay, + 20+ax,120+ay,52+ax,120+ay,3) + q(45+ax,115+ay,61+ax,116+ay, + 52+ax,120+ay,61+ax,117.5+ay,3) + q(61+ax,116+ay,94+ax,116+ay, + 61+ax,117.5+ay,94+ax,117.5+ay,3) + q(94+ax,116+ay,185+ax,116+ay, + 94+ax,117.5+ay,187+ax,118.5+ay,3) + q(187+ax,116+ay,245+ax,116+ay, + 189+ax,118.5+ay,245+ax,118.5+ay,3) + q(189+ax,125+ay,245.5+ax,125+ay, + 189+ax,127.5+ay,245+ax,127.5+ay,3) + q(-5+ax,122+ay,18+ax,122+ay, + -5+ax,127.5+ay,186+ax,127.5+ay,3) + q(-5+ax,120+ay,20+ax,120+ay, + -5+ax,122+ay,18+ax,122+ay,3) + line(-5+ax,127.5+ay,245+ax,127.5+ay,3) +-- windshield + q(92+ax,53+ay,95+ax,53+ay, + 92+ax,62+ay,95+ax,63+ay,14) + q(95+ax,53+ay,100+ax,53+ay, + 95+ax,63+ay,100+ax,64+ay,13) + q(85+ax,47+ay,89+ax,44+ay, + 91+ax,47+ay,96+ax,43+ay,3) + q(91+ax,47+ay,96+ax,43+ay, + 92+ax,49+ay,102+ax,43+ay,3) + q(92+ax,49+ay,102+ax,43+ay, + 94+ax,49+ay,108+ax,43+ay,3) + q(94+ax,49+ay,108+ax,43+ay, + 96+ax,49+ay,110+ax,45+ay,3) + q(96+ax,49+ay,110+ax,45+ay, + 96+ax,51+ay,110+ax,49+ay,2) + q(96+ax,51+ay,110+ax,49+ay, + 94+ax,53+ay,108+ax,51+ay,2) + q(92+ax,48+ay,94+ax,49+ay, + 68+ax,71+ay,69+ax,74+ay,13) + q(68+ax,71+ay,69+ax,74+ay, + 54+ax,85+ay,57+ax,87+ay,13) + q(54+ax,85+ay,57+ax,87+ay, + 45+ax,96+ay,48+ax,98+ay,13) + q(45+ax,96+ay,48+ax,98+ay, + 39+ax,104+ay,42+ax,106+ay,13) + q(39+ax,104+ay,42+ax,106+ay, + 34+ax,112+ay,39+ax,112+ay,13) + q(94+ax,49+ay,96+ax,49+ay, + 94+ax,53+ay,96+ax,51+ay,14) + q(94+ax,49+ay,94+ax,53+ay, + 69+ax,74+ay,71+ax,76+ay,14) + q(69+ax,74+ay,71+ax,76+ay, + 57+ax,87+ay,59+ax,89+ay,14) + q(57+ax,87+ay,59+ax,89+ay, + 48+ax,98+ay,51+ax,100+ay,14) + q(48+ax,98+ay,51+ax,100+ay, + 42+ax,106+ay,46+ax,108+ay,14) + q(42+ax,106+ay,46+ax,108+ay, + 39+ax,112+ay,43+ax,113+ay,14) + line(92+ax,48+ay,68+ax,71+ay,12) + line(68+ax,71+ay,54+ax,85+ay,12) + line(54+ax,85+ay,45+ax,96+ay,12) + line(45+ax,96+ay,39+ax,104+ay,12) + line(39+ax,104+ay,34+ax,112+ay,12) + line(92+ax,48+ay,102+ax,43+ay,12) + line(102+ax,43+ay,108+ax,43+ay,12) + line(85+ax,47+ay,12+ax,105+ay,12) +-- metal + q(12+ax,105+ay,15+ax,108+ay, + 4+ax,110+ay,8+ax,112+ay,13) + q(15+ax,108+ay,26+ax,112+ay, + 8+ax,112+ay,25+ax,115+ay,13) + q(26+ax,112+ay,34+ax,112+ay, + 25+ax,115+ay,32+ax,115+ay,13) + q(34+ax,112+ay,39+ax,112+ay, + 32+ax,115+ay,38+ax,115+ay,13) + q(39+ax,112+ay,43+ax,113+ay, + 32+ax,115+ay,45+ax,115+ay,13) + q(43+ax,113+ay,61+ax,115+ay, + 45+ax,115+ay,61+ax,116+ay,13) +-- details + line(61+ax,116+ay,245+ax,116+ay,13) + line(23+ax,113+ay,14+ax,122+ay,13) + line(24+ax,113+ay,15+ax,122+ay,1) + line(25+ax,113+ay,16+ax,122+ay,13) + line(14+ax,122+ay,12+ax,126+ay,13) + line(15+ax,122+ay,13+ax,126+ay,1) + line(16+ax,122+ay,14+ax,126+ay,13) + line(12+ax,126+ay,12+ax,145+ay,13) + line(13+ax,126+ay,13+ax,145+ay,1) + line(14+ax,126+ay,14+ax,145+ay,13) + line(184+ax,116+ay,186+ax,118+ay,13) + line(185+ax,116+ay,187+ax,118+ay,1) + line(186+ax,116+ay,188+ax,118+ay,13) + line(186+ax,118+ay,186+ax,145+ay,13) + line(187+ax,118+ay,187+ax,145+ay,1) + line(188+ax,118+ay,188+ax,145+ay,13) + line(1+ax,119+ay,15+ax,119+ay,13) + line(21+ax,120+ay,60+ax,120+ay,12) + line(60+ax,120+ay,72+ax,120+ay,3) + line(72+ax,120+ay,182+ax,120+ay,13) +end + +-- The Oryx + +function rarm(ax,ay,bx,by) + q(141+ax,91+ay,152+ax,91+ay, + 135+ax,97+ay,145+ax,98+ay,5) + q(135+ax,97+ay,145+ax,98+ay, + 122+ax,107+ay,131+ax,111+ay,5) + q(122+ax,107+ay,131+ax,111+ay, + 118+ax,112+ay,122+ax,115.5+ay,5) + q(86+ax+bx,106+ay+by,118+ax,112+ay, + 85+ax+bx,110+ay+by,106+ax,115.5+ay,12) + q(85+ax+bx,110+ay+by,106+ax,115.5+ay, + 84+ax+bx,114+ay+by,92+ax,115.5+ay,13) + + --Hand + q(60+ax,100+ay,62+ax,103+ay, + 55+ax,102+ay,59+ax,105+ay,6) + q(72+ax,97+ay,73+ax,102+ay, + 66+ax,100+ay,68+ax,103+ay,12) + q(72+ax,97+ay,76+ax,98+ay, + 73+ax,102+ay,80+ax,101+ay,12) + q(73+ax,102+ay,80+ax,101+ay, + 79+ax,109+ay,86+ax+bx,106+ay+by,12) + q(79+ax,109+ay,86+ax+bx,106+ay+by, + 81+ax,111+ay,85+ax+bx,110+ay+by,12) + q(81+ax,111+ay,85+ax+bx,110+ay+by, + 83+ax,114+ay,92+ax,115.5+ay,13) + line(81+ax,105+ay,78+ax,107+ay,14) + + q(75+ax,108+ay,78+ax,107+ay, + 75+ax,111+ay,81+ax,111+ay,12) + q(75+ax,111+ay,81+ax,111+ay, + 75+ax,113+ay,83+ax,114+ay,13) + q(68+ax,104+ay,73+ax,102+ay, + 72+ax,115.5+ay,80+ax,115.5+ay,6) + q(76+ax,110+ay,74+ax,106+ay, + 74+ax,115.5+ay,78+ax,115.5+ay,2) + +end + +function larm(ax,ay) + q(164+ax,93+ay,167+ax,94+ay, + 167+ax,97+ay,170+ax,97+ay,5) + q(167+ax,97+ay,170+ax,97+ay, + 170+ax,101+ay,172+ax,101+ay,5) + q(170+ax,101+ay,172+ax,101+ay, + 164+ax,105+ay,177+ax,108+ay,6) + q(164+ax,105+ay,177+ax,108+ay, + 166+ax,112+ay,179+ax,113+ay,6) + q(166+ax,112+ay,179+ax,113+ay, + 164+ax,117+ay,176+ax,117+ay,6) + q(164+ax,117+ay,176+ax,117+ay, + 164+ax,120+ay,170+ax,120+ay,6) + + q(158+ax,94+ay, 164+ax,93+ay, + 161+ax,98+ay, 167+ax,97+ay,4) + q(161+ax,98+ay, 167+ax,97+ay, + 162+ax,101+ay, 170+ax,101+ay,4) + q(153+ax,99+ay,158+ax,94+ay, + 153+ax,102+ay,161+ax,98+ay,4) + q(153+ax,102+ay,161+ax,98+ay, + 156+ax,105+ay,162+ax,101+ay,4) + q(162+ax,101+ay,170+ax,101+ay, + 156+ax,105+ay,164+ax,105+ay,6) + q(156+ax,105+ay,164+ax,105+ay, + 154+ax,110+ay,166+ax,112+ay,12) + q(154+ax,110+ay,166+ax,112+ay, + 154+ax,115+ay,164+ax,117+ay,12) + q(154+ax,115+ay,164+ax,117+ay, + 154+ax,120+ay,164+ax,120+ay,13) + + q(152+ax,100+ay,153+ax,99+ay, + 152+ax,103+ay,153+ax,102+ay,5) + q(152+ax,103+ay,153+ax,102+ay, + 154+ax,105+ay,156+ax,105+ay,5) + q(154+ax,105+ay,156+ax,105+ay, + 151+ax,109+ay,154+ax,110+ay,12) + q(151+ax,109+ay,154+ax,110+ay, + 150+ax,114+ay,154+ax,115+ay,12) + q(150+ax,114+ay,154+ax,115+ay, + 147+ax,119+ay,154+ax,120+ay,13) + + q(130+ax,107+ay,154+ax,105+ay, + 130+ax,109+ay,151+ax,109+ay,12) + q(130+ax,109+ay,151+ax,109+ay, + 130+ax,112+ay,150+ax,114+ay,12) + q(130+ax,112+ay,150+ax,114+ay, + 131+ax,116+ay,147+ax,119+ay,13) + + q(126+ax,107+ay,130+ax,107+ay, + 125+ax,109+ay,130+ax,109+ay,12) + q(125+ax,109+ay,130+ax,109+ay, + 126+ax,112+ay,130+ax,112+ay,12) + q(126+ax,112+ay,130+ax,112+ay, + 130+ax,114+ay,131+ax,116+ay,13) + q(126+ax,112+ay,130+ax,114+ay, + 126+ax,115.5+ay,131+ax,116+ay,14) + + q(122+ax,105+ay,126+ax,107+ay, + 123+ax,109+ay,125+ax,109+ay,13) + q(123+ax,109+ay,125+ax,109+ay, + 122+ax,112+ay,126+ax,112+ay,13) + q(122+ax,112+ay,126+ax,112+ay, + 115+ax,115.5+ay,126+ax,115.5+ay,14) + + q(117+ax,104+ay,122+ax,105+ay, + 119+ax,107+ay,123+ax,109+ay,13) + q(119+ax,107+ay,123+ax,109+ay, + 116+ax,112+ay,121+ax,110+ay,12) + q(121+ax,110+ay,123+ax,109+ay, + 116+ax,112+ay,122+ax,112+ay,13) + q(116+ax,112+ay,122+ax,112+ay, + 109+ax,115.5+ay,115+ax,115.5+ay,13) + + q(110+ax,105+ay,117+ax,104+ay, + 106+ax,107+ay,119+ax,107+ay,12) + q(106+ax,107+ay,119+ax,107+ay, + 101+ax,109+ay,116+ax,112+ay,12) + q(101+ax,109+ay,116+ax,112+ay, + 96+ax,115.5+ay,109+ax,115.5+ay,12) + + line(104+ax,109+ay,98+ax,115+ay,14) + line(104+ax,109+ay,107+ax,108+ay,14) + line(109+ax,110+ay,102+ax,115+ay,14) + line(126+ax,107+ay,130+ax,107+ay,13) + line(130+ax,107+ay,154+ax,105+ay,13) + line(154+ax,105+ay,156+ax,105+ay,13) +end + +function body(ax,ay) + q(162+ax,71+ay,163+ax,66+ay, + 161+ax,74+ay,164+ax,76+ay,5) + + q(144+ax,80+ay,151+ax,79+ay, + 145+ax,83+ay,150+ax,83+ay,6) + q(151+ax,79+ay,156+ax,76+ay, + 150+ax,83+ay,155+ax,82+ay,6) + q(156+ax,76+ay,161+ax,74+ay, + 155+ax,82+ay,160+ax,80+ay,4) + q(161+ax,74+ay,164+ax,76+ay, + 160+ax,80+ay,164+ax,80+ay,5) + + q(145+ax,83+ay,150+ax,83+ay, + 146+ax,85+ay,150+ax,86+ay,5) + q(150+ax,83+ay,155+ax,82+ay, + 150+ax,86+ay,153+ax,86+ay,6) + q(155+ax,82+ay,160+ax,80+ay, + 153+ax,86+ay,161+ax,86+ay,4) + q(160+ax,80+ay,164+ax,80+ay, + 161+ax,86+ay,164+ax,85+ay,5) + + q(146+ax,85+ay,150+ax,86+ay, + 145+ax,89+ay,147+ax,89+ay,5) + q(150+ax,86+ay,153+ax,86+ay, + 147+ax,89+ay,150+ax,89+ay,6) + q(153+ax,86+ay,161+ax,86+ay, + 150+ax,89+ay,158+ax,89+ay,4) + q(161+ax,86+ay,164+ax,85+ay, + 158+ax,89+ay,165+ax,90+ay,5) + + q(145+ax,89+ay,147+ax,89+ay, + 144+ax,90+ay,146+ax,91+ay,6) + q(147+ax,89+ay,150+ax,89+ay, + 146+ax,91+ay,149+ax,91+ay,6) + q(150+ax,89+ay,158+ax,89+ay, + 149+ax,91+ay,154+ax,92+ay,4) + q(158+ax,89+ay,165+ax,90+ay, + 154+ax,92+ay,166+ax,92+ay,5) + + q(144+ax,90+ay,146+ax,91+ay, + 142+ax,92+ay,144+ax,92+ay,15) + q(146+ax,91+ay,149+ax,91+ay, + 144+ax,92+ay,147+ax,93+ay,5) + q(149+ax,91+ay,154+ax,92+ay, + 147+ax,93+ay,151+ax,95+ay,4) + q(154+ax,92+ay,166+ax,92+ay, + 151+ax,95+ay,168+ax,95+ay,15) + + q(142+ax,92+ay,144+ax,92+ay, + 138+ax,96+ay,141+ax,96+ay,15) + q(144+ax,92+ay,147+ax,93+ay, + 141+ax,96+ay,143+ax,96+ay,5) + q(147+ax,93+ay,151+ax,95+ay, + 143+ax,96+ay,148+ax,98+ay,4) + q(151+ax,95+ay,168+ax,95+ay, + 148+ax,98+ay,169+ax,99+ay,15) + + q(138+ax,96+ay,141+ax,96+ay, + 136+ax,99+ay,141+ax,98+ay,15) + q(141+ax,96+ay,143+ax,96+ay, + 141+ax,98+ay,142+ax,99+ay,5) + q(143+ax,96+ay,148+ax,98+ay, + 142+ax,99+ay,145+ax,100+ay,4) + q(148+ax,98+ay,169+ax,99+ay, + 145+ax,100+ay,167+ax,107+ay,15) + + q(136+ax,99+ay,141+ax,98+ay, + 131+ax,102+ay,139+ax,102+ay,15) + q(141+ax,98+ay,142+ax,99+ay, + 139+ax,102+ay,142+ax,105+ay,15) + q(142+ax,99+ay,145+ax,100+ay, + 142+ax,105+ay,145+ax,107+ay,15 ) + q(145+ax,100+ay,167+ax,107+ay, + 145+ax,107+ay,167+ax,107+ay,15) + + q(131+ax,102+ay,139+ax,102+ay, + 124+ax,107+ay,138+ax,107+ay,15) + q(139+ax,102+ay,142+ax,105+ay, + 138+ax,107+ay,145+ax,107+ay,15) +end + + +function head(ax,ay,st) + q(126+ax,79+ay,137+ax,78+ay, + 128+ax,82+ay,136+ax,81+ay,12) + q(128+ax,82+ay,136+ax,81+ay, + 130+ax,84+ay,138+ax,83+ay,13) + q(130+ax,84+ay,138+ax,83+ay, + 132+ax,86+ay,139+ax,85+ay,14) + line(137+ax,78+ay,133+ax,81+ay,14) + line(133+ax,81+ay,128+ax,82+ay,14) + + q(198+ax,22+ay,198+ax,22+ay, + 185+ax,26+ay,188+ax,26+ay,14) + q(198+ax,22+ay,198+ax,22+ay, + 188+ax,26+ay,189+ax,27+ay,15) + q(185+ax,26+ay,188+ax,26+ay, + 170+ax,36+ay,172+ax,36+ay,14) + q(188+ax,26+ay,189+ax,27+ay, + 172+ax,36+ay,175+ax,37+ay,15) + q(170+ax,36+ay,172+ax,36+ay, + 156+ax,49+ay,158+ax,50+ay,14) + q(172+ax,36+ay,175+ax,37+ay, + 158+ax,50+ay,162+ax,51+ay,15) + + + q(121+ax,70+ay,124+ax,68+ay, + 125+ax,71+ay,128+ax,70+ay,12) + q(123+ax,72+ay,125+ax,71+ay, + 121+ax,73+ay,127+ax,73+ay,12) + q(125+ax,71+ay,128+ax,70+ay, + 127+ax,73+ay,131+ax,72+ay,12) + q(121+ax,73+ay,127+ax,73+ay, + 122+ax,76+ay,128+ax,76+ay,12) + q(127+ax,73+ay,131+ax,72+ay, + 128+ax,76+ay,133+ax,74+ay,12) + q(122+ax,76+ay,128+ax,76+ay, + 125+ax,79+ay,130+ax,79+ay,12) + q(128+ax,76+ay,133+ax,74+ay, + 128+ax,79+ay,135+ax,76+ay,12) + q(128+ax,79+ay,135+ax,76+ay, + 131+ax,79+ay,135+ax,78+ay,12) + + q(119+ax,70+ay,121+ax,70+ay, + 119+ax,73+ay,121+ax,73+ay,6) + q(121+ax,70+ay,125+ax,71+ay, + 121+ax,73+ay,123+ax,72+ay,6) + q(119+ax,73+ay,121+ax,73+ay, + 120+ax,75+ay,122+ax,76+ay,6) + line(125+ax,79+ay,131+ax,79+ay,13) + line(131+ax,79+ay,135+ax,78+ay,14) + + q(124+ax,68+ay,130+ax,66+ay, + 128+ax,70+ay,135+ax,68+ay,6) + q(128+ax,70+ay,135+ax,68+ay, + 131+ax,72+ay,138+ax,75+ay,6) + q(131+ax,72+ay,138+ax,75+ay, + 133+ax,74+ay,135+ax,76+ay,6) + q(135+ax,76+ay,138+ax,75+ay, + 135+ax,78+ay,138+ax,80+ay,6) + q(135+ax,78+ay,138+ax,80+ay, + 136+ax,81+ay,138+ax,83+ay,6) + + q(130+ax,66+ay,137+ax,63+ay, + 135+ax,68+ay,139+ax,65+ay,6) + q(137+ax,63+ay,141+ax,61+ay, + 139+ax,65+ay,142+ax,63+ay,6) + q(141+ax,61+ay,143+ax,58+ay, + 142+ax,63+ay,144+ax,61+ay,6) + q(143+ax,58+ay,146+ax,55+ay, + 144+ax,61+ay,147+ax,59+ay,6) + q(146+ax,55+ay,151+ax,53+ay, + 147+ax,62+ay,151+ax,59+ay,6) + + q(139+ax,65+ay,142+ax,63+ay, + 135+ax,68+ay,140+ax,68+ay,12) + q(142+ax,63+ay,144+ax,61+ay, + 140+ax,68+ay,144+ax,65+ay,12) + q(144+ax,61+ay,147+ax,59+ay, + 144+ax,65+ay,147+ax,62+ay,12) + q(147+ax,59+ay,151+ax,56+ay, + 147+ax,62+ay,151+ax,59+ay,12) + q(151+ax,56+ay,156+ax,53+ay, + 151+ax,59+ay,159+ax,55+ay,12) + + q(135+ax,68+ay,140+ax,68+ay, + 138+ax,75+ay,141+ax,72+ay,6) + q(140+ax,68+ay,144+ax,65+ay, + 141+ax,72+ay,144+ax,69+ay,6) + q(144+ax,65+ay,147+ax,62+ay, + 144+ax,69+ay,147+ax,65+ay,6) + q(147+ax,62+ay,151+ax,59+ay, + 147+ax,65+ay,150+ax,62+ay,6) + q(151+ax,59+ay,159+ax,55+ay, + 150+ax,62+ay,160+ax,57+ay,12) + q(159+ax,55+ay,161+ax,55+ay, + 160+ax,57+ay,162+ax,56+ay,13) + + q(141+ax,72+ay,144+ax,69+ay, + 138+ax,75+ay,144+ax,73+ay,12) + q(144+ax,69+ay,147+ax,65+ay, + 144+ax,73+ay,151+ax,69+ay,12) + q(147+ax,65+ay,150+ax,62+ay, + 151+ax,69+ay,155+ax,66+ay,12) + q(150+ax,62+ay,160+ax,57+ay, + 155+ax,66+ay,160+ax,63+ay,12) + q(160+ax,57+ay,162+ax,56+ay, + 160+ax,63+ay,163+ax,61+ay,13) + + q(138+ax,75+ay,144+ax,73+ay, + 138+ax,80+ay,144+ax,78+ay,12) + q(144+ax,73+ay,151+ax,69+ay, + 144+ax,78+ay,150+ax,75+ay,12) + q(151+ax,69+ay,155+ax,66+ay, + 150+ax,75+ay,155+ax,72+ay,12) + q(155+ax,66+ay,160+ax,63+ay, + 155+ax,72+ay,158+ax,70+ay,12) + q(160+ax,63+ay,163+ax,61+ay, + 158+ax,70+ay,163+ay,66+ay,13) + + q(138+ax,80+ay,144+ax,78+ay, + 138+ax,83+ay,144+ax,80+ay,13) + q(144+ax,78+ay,150+ax,75+ay, + 144+ax,80+ay,151+ax,79+ay,13) + q(150+ax,75+ay,155+ax,72+ay, + 150+ax,82+ay,156+ax,78+ay,13) + q(155+ax,72+ay,158+ax,70+ay, + 156+ax,78+ay,158+ay,76+ay,13) + q(158+ax,70+ay,163+ay,66+ay, + 158+ay,76+ay,161+ax,74+ay,13) + q(138+ax,83+ay,144+ax,80+ay, + 139+ax,85+ay,145+ax,81+ay,14) + q(144+ax,80+ay,151+ax,79+ay, + 145+ax,81+ay,150+ax,82+ay,14) + q(151+ax,79+ay,156+ax,76+ay, + 150+ax,82+ay,156+ax,78+ay,14) + q(156+ax,76+ay,158+ax,74+ay, + 156+ax,78+ay,158+ay,76+ay,14) + q(158+ax,74+ay,162+ax,71+ay, + 158+ay,76+ay,161+ax,74+ay,14) + --eye + spr(0,143+ax,60+ay,11,1,0,0,1,1) + --ear +end + +function hairdraw(x,y,l,d,f,c) + for i=1,l-1+d do + line(d+x+l-i,y+(d+l-1)*(d+l-1)/f-i*i/f, + d+x+l-i,y+(d+l-1)*(d+l-1)/f-(i+1)*(i+1)/f,c) + end +end + +function hair(ax,ay,h1,h2,h3,h4) + q(140+ax,55+ay,141+ax,53+ay, + 141+ax,57+ay,142+ax,56+ay,7) + q(141+ax,53+ay,142+ax,50+ay+h1/14, + 142+ax,56+ay,145+ax,56+ay,7) + q(142+ax,50+ay+h1/14,149+ax+abs(h2/4),44+ay+h1/12, + 145+ax,56+ay,151+ax,59+ay,7) + q(149+ax+abs(h2/4),44+ay+h1/12,156+ax,45+ay+h1/15, + 151+ax,59+ay,155+ax,59+ay,7) + q(156+ax,45+ay+h1/15,165+ax,50+ay+h1/12, + 155+ax,59+ay,159+ax,60+ay,7) + q(155+ax,59+ay,159+ax,60+ay, + 154+ax,65+ay,158+ax,70+ay,7) + q(154+ax,65+ay,158+ax,70+ay, + 151+ax,69+ay,152+ax,72+ay,7) + q(165+ax,50+ay+h1/12,174+ax,56+ay+h2/12, + 159+ax,60+ay,165+ax,62+ay,7) + q(159+ax,60+ay,165+ax,62+ay, + 158+ax,70+ay,167+ax,67+ay,7) + q(158+ax,70+ay,167+ax,67+ay, + 159+ax+h2/12,77+ay+h2/9,170+ax,72+ay,7) + q(174+ax,56+ay+h2/12,184+ax,60+ay+h2/10, + 165+ax,62+ay,183+ax,69+ay+h2/10,7) + q(184+ax,60+ay+h2/10,197+ax+h1/20,65+ay+h2/8, + 183+ax,69+ay+h2/10,194+ax+h1/20,71+ay+h2/8,7) + q(197+ax+h1/20,65+ay+h2/8,207+ax+h1/15,68+ay+h2/4, + 194+ax+h1/20,71+ay+h2/8,204+ax+h1/15,73+ay+h2/4,7) + q(207+ax+h1/15,68+ay+h2/4,220+ax+h1/10,69+ay+h2/2, + 204+ax+h1/15,73+ay+h2/4,212+ax+h1/10,72+ay+h2/2,7) + + q(170+ax,72+ay,174+ax+h2/10,77+ay+h2/8, + 159+ax+h2/12,77+ay+h2/9,164+ax+h2/10,82+ay+h2/8,7) + q(174+ax+h2/10,77+ay+h2/8,181+ax+h2/8,81+ay+h2/6, + 164+ax+h2/10,82+ay+h2/8,175+ax+h2/8,89+ay+h2/6,7) + q(181+ax+h2/8,81+ay+h2/6,196+ax+h2/6,85+ay+h2/5, + 175+ax+h2/8,89+ay+h2/6,196+ax+h2/6,93+ay+h2/5,7) + q(196+ax+h2/6,85+ay+h2/5,215+ax+h2/6,85+ay+h2/4, + 196+ax+h2/6,93+ay+h2/5,218+ax+h2/6,92+ay+h2/4,7) + q(215+ax+h2/6,85+ay+h2/4,224+ax+h2/6,87+ay+h2/2, + 218+ax+h2/6,92+ay+h2/4,228+ax+h2/6,90+ay+h2/2,7) + q(173+ax,63+ay, 183+ax,69+ay+h3/16, + 170+ax,72+ay, 181+ax,76+ay+h3/16,7) + q(183+ax,69+ay+h3/16, 193+ax,73+ay+h3/12, + 181+ax,76+ay+h3/16, 191+ax,79+ay+h3/12,7) + q(193+ax,73+ay+h3/12,205+ax,77+ay+h3/8, + 191+ax,79+ay+h3/12,204+ax,81+ay+h3/8,7) + q(205+ax,77+ay+h3/8,214+ax,78+ay+h3/4, + 204+ax,81+ay+h3/8,216+ax,82+ay+h3/4,7) + q(214+ax,78+ay+h3/4,220+ax,80+ay+h3/2, + 216+ax,82+ay+h3/4,226+ax,84+ay+h3/2,7) + q(165+ax,50+ay+h1/12,173+ax,63+ay, + 155+ax,65+ay,170+ax,72+ay,7) + line(143+ax,52+ay,150+ax,45+ay+h1/14,8) + line(143+ax,52+ay,148+ax,45+ay+h1/14,8) + line(143+ax,52+ay,144+ax,47+ay+h1/12,8) + q(143+ax,52+ay,149+ax,48+ay, + 143+ax,53+ay,150+ax,50+ay,8) + q(149+ax,48+ay,155+ax,46+ay, + 150+ax,50+ay,155+ax,48+ay,8) + q(155+ax,46+ay,163+ax,50+ay+h1/12, + 155+ax,48+ay,163+ax,51+ay+h1/12,8) + q(163+ax,50+ay+h1/12,172+ax,56+ay+h1/10, + 163+ax,51+ay+h1/12,172+ax,57+ay+h1/10,8) + q(152+ax,53+ay,158+ax,51+ay, + 153+ax,55+ay,158+ax,57+ay,8) + + hairdraw(156+ax,51+ay,65,0,250+h1*2,8) + hairdraw(157+ax,53+ay,55,0,140+h1*3,8) + hairdraw(159+ax,67+ay,65,0,150+h3,5) + hairdraw(159+ax,63+ay,65,0,150+h1,5) + hairdraw(159+ax,64+ay,65,0,250+6*h2,7) + hairdraw(159+ax,60+ay,74,0,140+h2,7) + hairdraw(162+ax,64+ay,50,0,85+h3,7) + hairdraw(177+ax,72+ay,47,0,121+h2,7) + hairdraw(166+ax,62+ay,57,0,200+h4,7) + hairdraw(156+ax,61+ay,57,0,100+h3,7) + hairdraw(176+ax,86+ay,40,0,100+h3,7) + hairdraw(176+ax,87+ay,30,0,120+h2,7) + hairdraw(157+ax,54+ay,77,0,158+h4,7) + hairdraw(176+ax,89+ay+h2/4,30,0,120+h1,7) + hairdraw(158+ax,61+ay,65,0,150+h4,5) + hairdraw(157+ax,67+ay,70,0,150+h1,8) + hairdraw(157+ax,57+ay,77,0,158+h4,8) + hairdraw(157+ax,54+ay,65,0,178+h3*4,8) + hairdraw(167+ax,77+ay,50,0,100+h1,8) + hairdraw(162+ax,64+ay,50,0,85+h1,8) + hairdraw(168+ax,68+ay,50,0,185+h1,8) + hairdraw(165+ax,84+ay+h2/12,50,0,185+h1*6,8) + hairdraw(159+ax,75+ay+h2/12,50,0,100+h2,8) + hairdraw(168+ax,68+ay,50,0,85+h1,8) + hairdraw(156+ax,67+ay,57,0,100+h4,8) + + q(176+ax,40+ay,179+ax,41+ay, + 163+ax,52+ay,165+ax,54+ay,13) + q(179+ax,41+ay,181+ax,42+ay, + 165+ax,54+ay,168+ax,56+ay,14) + q(191+ax,30+ay,193+ax,31+ay, + 176+ax,40+ay,179+ax,41+ay,13) + q(193+ax,31+ay,195+ax,32+ay, + 179+ax,41+ay,181+ax,42+ay,14) + q(207+ax,24+ay,207+ax,24+ay, + 191+ax,30+ay,193+ax,31+ay,13) + q(207+ax,24+ay,207+ax,24+ay, + 193+ax,31+ay,195+ax,32+ay,14) + + + spr(16,156+ax,55+ay,11,1,0,0,2,2) +end + +function drawmirror(ax,ay) + elli(66+ax,120+ay,6,4,13) + elli(66+ax,120+ay,4,2,14) + elli(66+ax,120+ay,2,1,13) + q(62+ax,109+ay,64+ax,109+ay, + 64+ax,120+ay,67+ax,120+ay,13) + q(61+ax,91+ay,68+ax,89+ay, + 61+ax,110+ay,68+ax,111+ay,14) + q(68+ax,89+ay,76+ax,88+ay, + 68+ax,111+ay,76+ax,113+ay,13) +end + +function drawdesert(tim) +cls(10) +for i=0,240 do + line(i,60+1.6*sin((i-tim/600)/23)+0.9*sin((i-tim/600)/31+1)+2.1*sin((i-tim/6000)/60+.6),i,68,4) +end +rect(0,68,240,100,3) +rect(0,100,240,100,0) +rect((-30+tim/1.5)%1000,0,5,90,1) +elli((-30+tim/1.5)%1000+2,89,2,1,1) + for i=1,480 do + pix(-11+(tim/4+(i-1))%600,75+rn[i+7],7) + end + for i=1,240 do + pix(-12+(tim/3+(i-1)*2)%600,77+rn[i+7],7) + end + for i=1,120 do + circ(-10+(tim/2.5+(i-1)*5)%600,79+rn[i+24],(4-rn[i*2])/3,7) + end + for i=1,60 do + circ(-10+(tim/2.25+(i-1)*10)%600,82+rn[i+24],(4-rn[i*2])/3,7) + end + for i=1,30 do + elli(-15+(tim/2+(i-1)*30)%600,85+rn[i],(7-rn[i*2])/2,(3-rn[i])/2,7) + end + for i=1,20 do + elli(-13+(tim/1.75+(i-1)*45)%600,89+rn[i]/2,(7-rn[i*2])/1.5,(3-rn[i])/1.5,7) + end + for i=1,15 do + elli(-10+(tim/1.5+(i-1)*60)%600,92+rn[i],7-rn[i*2],2-rn[i]/2,7) + end + for i=1,24 do + elli(((tim/1.5+(i-1)*60)%600)+rn[i+12],99,30-rn[i+27],1,14) + if rn[i]>1 then + elli(((tim/1.5+(i-1)*60)%600)+rn[i+23],99,16-rn[i+17],1,0) + end + end +end + +function BDR(lin) + vbank(0) + + if (lin > 68) and (lin%4==0) then + poke(0x3fc9,228-(lin-68)) + poke(0x3fca,161-(lin-68)*2) + poke(0x3fcb,104-(lin-68)*2.5) + end +end + + +function BOOT() + for i=1,600 do + rn[i]=rand(1,5)-1 + end + vbank(0) + vbank(1) + loadpal(pal1) + poke(0x3FF8,11) + readsprite(spr0,0) + readsprite(spr16,16) + readsprite(spr17,17) + readsprite(spr32,32) + readsprite(spr33,33) +end + +function TIC() + pt=time() + t=time()//60 + vbank(1) + cls(11) + vbank(0) + drawdesert(pt) + vbank(1) + car(0,abs(1/4*sin(t)+sin(t/8))) + rarm(0,abs(1/4*sin(t)+sin(t/8)),0,0) + body(0,abs(1/4*sin(t)+sin(t/8))) + head(0,abs(1/4*sin(t)+sin(t/8)),0) + larm(0,abs(1/4*sin(t)+sin(t/8))) + hair(0,abs(1/4*sin(t)+sin(t/8)),10*cos(t/4),10*sin(t/4),7*cos(t/2),9*sin(t/2)) + drawmirror(0,abs(1/4*sin(t)+sin(t/8))) + print("Remember to drive home safely!",20,20,0) + print("Remember to drive home safely!",20,19,12) + print("See you @ Instanssi'25",30,30,0) + print("See you @ Instanssi'25",30,29,12) +end + \ No newline at end of file diff --git a/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_BFlorry.glsl b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_BFlorry.glsl new file mode 100644 index 000000000..58655dc7d --- /dev/null +++ b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_BFlorry.glsl @@ -0,0 +1,76 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec2 rot(vec2 tex, float r){ + mat2 rotm = mat2(cos(r), -sin(r), sin(r), cos(r)); + vec2 qv = rotm*tex; + return qv; +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5;// + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + //uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + uv.x = abs(uv.x); + uv+= sin(texture( texFFT, uv.x ).r); + uv = (1/uv*5) * 0.01; + + float s=abs(sin(fGlobalTime)*5)*0.1+10; + //uv = round(s*uv)/s; + + if(uv.x>0){ + //uv.x = pow(uv.x, 3); + } + uv *= rot(uv, texture( texFFTSmoothed, 1 ).r * 100); + uv += rot(uv, fGlobalTime*0.1); + + + vec2 m; + //m.x = atan(uv.x / uv.y) / 3.14; + //m.y = 1 / length(uv) * 0.2; + m.y = length(uv); + m = rot(uv,fGlobalTime); + float d = sin(m.y*mod(fGlobalTime,20)); + + float f; + //f = sin(fGlobalTime); + f = texture( texFFTSmoothed, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + + + vec4 t; + //t = plas( m * 3.14, fGlobalTime ) / d; + // + t = vec4(texture( texFFTSmoothed, uv.x ).r*10,texture( texFFTSmoothed, uv.y ).r*10,texture( texFFTSmoothed, uv.x*uv.y ).r*10,texture( texFFTSmoothed, sin(uv.x)*10 ).r); + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_MuffinHop.glsl b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_MuffinHop.glsl new file mode 100644 index 000000000..2bbce3327 --- /dev/null +++ b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_MuffinHop.glsl @@ -0,0 +1,175 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +//can you see the sun shinin on me +//it makes me feel so free so alive +//it makes me want to survive +//and the sky it makes me feel so high +//the bad tiems pass me by +//cause today is gonna be a brighter day +//can you feel the sunshine +//does it brighten up your day +//don't you feel that sometimes +//you just neeed to run away? +#define TAU 6.283185 +#define A 1.0 +#define B 1.9 +vec3 WHITE = vec3(1.0); +vec3 RED = vec3(0.698,0.132,0.203); +vec3 BLUE = vec3(0.234,0.233,0.430); +float random(vec2 coordinate) { + return fract(sin(dot(coordinate.xy,vec2(12.9898,78.233))) * 43758.5453); +} +float RoundedBox(vec2 point, vec2 center, vec2 size) { + return length(max(abs(point - center) - size,0.0)); +} +mat2 rotate(float Angle) { + mat2 rotation = mat2( + vec2(cos(Angle),sin(Angle)), + vec2(-sin(Angle),cos(Angle))); + return rotation; +} +float starPlane(vec2 pos, float shift, int i, float pixelSize) { + float angle = TAU/5.0*float(i); + vec2 a = vec2(cos(angle),sin(angle)); + vec2 n = vec2(a.y,-a.x); + return clamp((dot(pos-a,n)+shift)/(A*pixelSize)+0.5,0.0,1.0); +} +float star(vec2 pos, float radius, float pixelSize) { + float shift = 0.25*(sqrt(5.0)-1.0)*radius; + float total = + starPlane(pos,shift,0,pixelSize) + + starPlane(pos,shift,1,pixelSize) + + starPlane(pos,shift,2,pixelSize) + + starPlane(pos,shift,3,pixelSize) + + starPlane(pos,shift,4,pixelSize); + return clamp(total-3.0,0.0,1.0); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + float aspectratiocorrection = (v2Resolution.x/v2Resolution.y); + uv = 2.0*uv -1.0; + uv.x *= aspectratiocorrection; + vec4 result; + vec4 final = vec4(0.0); + float f = (texture(texFFT, 0.7).r-0.5) * 0.2 + sin(fGlobalTime)*0.2; + + for(float colorIndex = 0.0; colorIndex < 2.0; colorIndex++) { + vec2 coordinate = uv; + coordinate.x *= 1.0 + colorIndex * 0.009; + result.rgb = vec3(140.0/255.0,110.0/255.0,135.0/255.0); + + vec2 funny = vec2(-0.0,0.0); + vec2 coordinate2 = coordinate; + coordinate2.x -= 0.8; + coordinate2 *= rotate(fGlobalTime*0.1); + result.rgb = mix(result.rgb, vec3(0.0), star(coordinate2+funny,1.9,0.004)); + result.rgb = mix(result.rgb, BLUE, star(coordinate2+funny,1.6,0.004)); + result.rgb = mix(result.rgb, WHITE, star(coordinate2+funny,1.4,0.004)); + + coordinate.x += 0.766; + coordinate *=rotate(sin(fGlobalTime*2.0/3.0)/3.0); + coordinate *=1.333; + + + //ears + if(RoundedBox(coordinate, vec2(0.0,0.6), vec2(0.2)) < 0.2) + result.rgb = vec3(1.,.6,.0); + if(RoundedBox(coordinate,vec2(-0.9,0.6),vec2(0.2))<0.2) + result.rgb = vec3(1.,.6,.0); + + //head + if (RoundedBox(coordinate,vec2(0.0), vec2(.7))<0.2) + result.rgb = vec3(1.0,0.6,0.0) *floor(mod(coordinate.x + coordinate.y + fGlobalTime,1.0) + .4); + if(RoundedBox(coordinate,vec2(0.0),vec2(.5))<0.2) + result.rgb = vec3(1.,.6,.0); + + //nuzzle + if(RoundedBox(coordinate,vec2(0.4,-0.4),vec2(.2))<0.2) + result.rgb = vec3(1.,.8,.6); + + //eyes + if(RoundedBox(coordinate,vec2(0.5,0.3), vec2(.1))<0.2) + result.rgb =vec3(1.); + if(RoundedBox(coordinate,vec2(-0.5,0.3),vec2(.2))<0.2) + result.rgb=vec3(1.0); + if(RoundedBox(coordinate,vec2(0.5+f,0.3),vec2(.012))<0.12) + result.rgb=vec3(0.0); + if(RoundedBox(coordinate,vec2(-0.5+f,0.3),vec2(0.012))<0.12) + result.rgb=vec3(0.0); + + //teeth + if(RoundedBox(coordinate,vec2(0.6,-0.725),vec2(0.10,0.11))<0.03112) + result.rgb=vec3(0.0); + if(RoundedBox(coordinate,vec2(0.6,-0.725),vec2(0.08,0.10))<0.03112) + result.rgb=vec3(1.0); + if(RoundedBox(coordinate,vec2(0.6,-0.724),vec2(0.001,0.12))<0.00412) + result.rgb=vec3(0.0); + + //mouth + if(RoundedBox(coordinate,vec2(0.49,-0.6),vec2(0.3,0.012))<0.0112) + result.rgb=vec3(0.0); + result.rgb = result.rgb - vec3(min(max(-0.35 + length(coordinate) * 0.31,0.0),1.0)) + + vec3(0.16 *random(vec2(coordinate.x + coordinate.y, 1.01*coordinate.y * coordinate.x))); + } + //float f = texture( texFFT, uv.x ).r * 100.0; + out_color = result; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.glsl b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.glsl new file mode 100644 index 000000000..b17fa1e16 --- /dev/null +++ b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_ToBach.glsl @@ -0,0 +1,33 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +float tst = 0; + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler2D texNoise; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +//hello twitch, i have no idea what i'm doing :3 + + +void main(void) +{ + float ft=fGlobalTime; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 0.1); + float out_t = 1.0 /sin(uv.y/2+sin(uv.y+sin(uv.x*8+sin(uv.x*2+uv.y)+ft/3)+ft)+ft); + vec4 t = texture(texNoise, vec2(atan(uv.x,uv.y)*8/3.141*4,uv.y-8/((uv.x*uv.x)+(uv.y*uv.y))/16)-ft); + vec4 t2 = vec4(sin(ft-uv.x+uv.y)+1,sin(ft+1+uv.y/2)+1,1,1); + + vec4 t3 = texture(texNoise, vec2(atan(uv.x,uv.y)/3.141,uv.y)*4+ft/32); + + out_color = t*t2+(t3/2)+out_t/24; + + //i have remembered why i dont usually participate in shader jams now +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl new file mode 100644 index 000000000..715e4c4fb --- /dev/null +++ b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl @@ -0,0 +1,118 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rot(float a) { + return mat2(cos(a),-sin(a),sin(a),cos(a)); +} + +float hash(vec2 uv) { + vec3 p=mod(uv.xyx + vec3(345.23,237.32,565.2),vec3(7,3,5)); + p += dot(p,p.yxz +34.32); + return fract((p.x+p.y)+p.z); +} + +vec3 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 2.0 ); + return vec3( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25 ); +} + +vec2 min2(vec2 a, vec2 b) { + return a.x 30) tmp.xyz = vec3(1); + return tmp; + //q /= 20.; + //return abs(sin(q+sin(q))) / 20.; + } + return vec4(1,1,1,0); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 p=vec3(0., 0., -35. + sin(time) * 5.); + vec3 d=normalize(vec3(uv, 1.)); + + r2d(p.xy, time / 3.); + r2d(p.xz, time / 3.); + r2d(d.xy, time / 3.); + r2d(d.xz, time / 3.); + + vec4 c = vec4(1,1,1,0); + for (int i=0; i<200; i++) { + c *= f(p, d); + p += d / 2.; + //if (c.a > 4.) break; + } + c *= vec4(step(d.y, 0.)); + + r2d(uv, sin(time)/3.); + out_color = vec4(cat(uv)) + c; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.glsl b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.glsl new file mode 100644 index 000000000..8b9bdba60 --- /dev/null +++ b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.glsl @@ -0,0 +1,132 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = mod(fGlobalTime*0.6, 300.0); + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float rnd(float t) { + return fract(sin(t*457.532)*947.231); +} + +vec2 rnd(vec2 t) { + return fract(sin(t*457.532+t.yx*374.887)*947.231); +} + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1), pow(smoothstep(0.,1.,fract(t)),10)); +} + +float map(vec3 p) { + + vec3 bp=p; + float off=length(p)*.07; + for (int i=0; i<3; ++i) { + p.xz *= rot(curve(time*0.3+i+off, 2.2)*4); + p.yz *= rot(curve(time*0.4-i*.3+off, 2.1)*7); + p.xz = abs(p.xz); + } + + float d=box(p, vec3(0.3)); + for (int i=0; i<5; ++i) { + p=abs(p)-0.7-i*0.07; + d=min(d, box(p, vec3(0.1))); + } + + float ss=0.01; + float d2 = length(p.xz)-ss; + d2 = min(d2, length(p.xy)-ss); + d2 = min(d2, length(p.zy)-ss); + if(fract(time*0.5)<0.5) d=min(d, d2); + + if(fract(time*0.3)<0.5) d=max(d, 4.-length(bp)); + + return d; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 col=vec3(0); + + float section = rnd(floor(length(uv)*0.2-time*0.5))*300.0 + rnd(floor(abs(uv.x)*0.2-time*0.5-0.5))*300.0; + + float seg = rnd(floor(pow(abs(uv.x),0.7)*5.0-time*2.0)); + + time += (seg-0.5)*1.0*curve(time, 0.4); + + float pu=pow(curve(time, 0.2),0.5)*4.; + float dens=length(uv)*0.7-curve(time, 0.4)*0.4-0.1; + if(rnd(floor(time*10.0)+floor(uv*30+section*1.0+time*3.-seg*100.0)).x100.0) break; + p+=r*d; + col += max(vec3(0), vec3(0.5+sin(length(p)-curve(time,0.2)*4.),0.7,0.9-curve(time, 0.3)*curve(time,0.4)) * 0.005/(0.01+length(d)+abs(d))); + } + + if(length(uv+vec2(curve(time,0.4)-.5, curve(time+17.3,0.3)*.5-.25))0.0 ) p = vec2(p.x-k*p.y,-k*p.x-p.y)/2.0; + p.x -= clamp( p.x, -2.0*r, 0.0 ); + return -length(p)*sign(p.y); +} + +float sdHex( in vec2 p, in float r ) +{ + const vec3 k = vec3(-0.866025404,0.5,0.577350269); + p = abs(p); + p -= 2.0*min(dot(k.xy,p),0.0)*k.xy; + p -= vec2(clamp(p.x, -k.z*r, k.z*r), r); + return length(p)*sign(p.y); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float t = fGlobalTime; + float ft=texture(texFFTIntegrated,.002).r*.002; + float ft2=texture(texFFTIntegrated,.6).r*.20; + float bm=texture(texFFTSmoothed,.02).r*10; + + vec2 uv_=uv; + uv=round(uv*(5000*bm))/(5000*bm); + + rot(uv,ft*.5-ft2*.5+t*.1); + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv*8) * .2; + float d = m.y; + + uv_-=.5; + uv_*=.99; + uv_+=.5; + + vec4 prev=texture(texPreviousFrame,uv_); + + float fft = texture( texFFT, pow(abs(m.x)+.05,2) ).r * 10000; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + float zom=ft*50+abs(m.y*4); + + zom=mod(zom,2); + + float hex=sdHex(uv,.1*zom); + float hexft=sdHex(uv,.8*zom+fft*.0002); + float inhex=1-(step(hexft,0)*2); + + vec2 p = uv; + + for(int i=0; i < 50; ++i){ + uv=abs(uv)-vec2(.4+abs(sin(ft))*.4,.2+abs(cos(ft*.8))*.4); + rot(uv,ft*(.5-step(hex,0))); + uv=mod(abs(uv)-vec2(0,ft*10),10); + rot(uv,bm*.02); + } + + float bhex=sdHex(uv,.2); + + uv+=mod(ft*.1+t*.03,10); + + float fx = texture(texFFTSmoothed,pow(abs(uv.x)+.02,2)).r*10; + + vec4 col = vec4(0)+fx; + col*=abs(bhex); + col= col/(1+abs(hex)*fft)+col; + col-=vec4(.2,.4,.2,1)*inhex; + + col = clamp( col, 0.0, 1.0 ); + + if(sum(col)>2){ + col=prev*vec4(4,2,1,1); + } + if(sum(col)<0.2){ + col=vec4(sum(prev))*vec4(1,4,2,1); + } + + col = clamp( col, 0.0, 1.0 ); + + out_color = col; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_saempl.glsl b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_saempl.glsl new file mode 100644 index 000000000..84dac99c6 --- /dev/null +++ b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_saempl.glsl @@ -0,0 +1,56 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTensu; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time, float f, float f2) +{ + float c = 0.5 + sin( v.x /100 ) + cos( abs( time/0100 + v.y/1000 -time) ); + float asd = sin(f2/1000+time); + return vec4( sin(time), tan(v.x/50), sin(v.y*10)/10, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + vec2 uv2 = uv*vec2(1,1.2); + + + float f = texture( texFFT, d ).r * 100; + float f2 = texture( texFFTSmoothed, d).r * 100; + + vec4 last = texture(texPreviousFrame, uv2 / sin(fGlobalTime/100)); + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.35*0.2*sin(f/1000); + + vec4 noise = texture(texNoise, abs(uv2)); + + vec4 t = plas( m * 3.14, 100*sin(fGlobalTime/100), f, f2) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = noise *t -.2/(0.9*abs(noise)-t +f); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl new file mode 100644 index 000000000..9e6ae54e1 --- /dev/null +++ b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl @@ -0,0 +1,118 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texCIX; +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texLcdz; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +// OUAI OUAI OUAI +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float bpm = fGlobalTime*128/60; +float diam2(vec2 p,float s){p=abs(p);return (p.x+p.y-s)*inversesqrt(3.);} +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +float box2(vec2 p,vec2 b){p=abs(p)-b; return length(max(vec2(0.),p))+min(0.,max(p.x,p.y));} + + +mat3 ortho(vec3 p){ + vec3 z = normalize(p),x=vec3(z.z,0.,-z.x),y=cross(z,x); + return mat3(x,y,z); + } + vec3 cy(vec3 p,float pump){ + vec4 s= vec4(0.); + mat3 o = ortho(vec3(-1.,2.,-3.)); + for(float i=0;i++<5;){ + + p*=o; + p+=sin(p.yzx); + s+=vec4(cross(cos(p),sin(p.zxy)),1.); + s*=pump; + p*=2.; + } + return s.xyz/s.a; + } + vec3 pcg3d(vec3 p){ + uvec3 q = floatBitsToUint(p)*1234567u+1234567890u; + q.x +=q.y*q.z;q.x +=q.y*q.z;q.y +=q.x*q.z;q.z +=q.y*q.x; + q^=q>>16; + q.x +=q.y*q.z;q.x +=q.y*q.z;q.y +=q.x*q.z;q.z +=q.y*q.x; + return vec3(q)/float(-1u); + } +float arrow(vec2 uv,float r){ + uv=erot(uv.xyy,vec3(0.,0.,1.),.8+2.*3.14/4*r).xy; + float l = box2(uv+vec2(.09,0),vec2(.02,.1)); + float b = box2(uv+vec2(.0,.09),vec2(.1,.02)); + vec2 uuv = uv; + uuv=erot(uv.xyy,vec3(0.,0.,1.),.785).xy; + float d = box2(uuv,vec2(.02,.12)); + + l = min(l,b); + l = min(l,d); + + //l = smoothstep(fwidth(l),0.,l); + return .01/(.01+l); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 col = vec3(0.); + bpm = floor(bpm)+smoothstep(.1,.9,fract(bpm)); + vec3 ro=vec3(1.,1.,-5.),rt=vec3(0.,0.,1.); + vec3 z = normalize(rt-ro),x=vec3(z.z,0.,-z.x),y=cross(z,x); + vec3 rd = ortho(rt-ro)*normalize(vec3(uv,1.-fract(.5-bpm))); + vec3 p; + + float i=0.,e=0,g=0; + for(i=0,e=0,g=0;i++<99.;){ + p=ro+rd*g; + + vec3 op=p; + vec3 rnd = cy(op,2.); + float txt = sqrt(texture(texFFTSmoothed,p.x).r); + for(float j=0;j++<5.;){ + p = abs(p)-.5+5*exp(-3-fract(bpm+rnd.y*.01)); + p = erot(p,normalize(vec3(.1,.2,.3)+rnd*.1*sin(bpm*.1)),-.785+exp(-4.*fract(bpm))); + } + float h= min(diam2(p.xz,.01),min(diam2(p.zy,.01),diam2(p.xy,.01))); + h= max(length(op)-7-txt*5,h); + g+=e=max(0.001,h); + col+=(.75+.25*cos(vec3(1.,.7,.2)+bpm-p.z))*.025/exp(i*e*e+fract(.5-bpm)); + + } + float id = floor(uv.x*2); + uv.x= (fract(uv.x*2.)-.5)/2.; + uv.y +=-fGlobalTime*128/60*.5+bpm; + float idy = floor(uv.y*4.); + uv.y =(fract(uv.y*4.)-.5)/4.; + float l = arrow(uv*exp(1.5+-1.5*fract(bpm+id*.25+idy*.1)),floor(id+idy)); + vec3 rrnd = pcg3d(vec3(id,id,idy)); + if(rrnd.x>.5){col *=1-l; + + ivec2 gl= ivec2(gl_FragCoord.xy); + ivec2 off = ivec2(5.+sin(bpm+rrnd.x)*5); + vec3 pcol = vec3( + texelFetch(texPreviousFrame,gl-off,0).a, + texelFetch(texPreviousFrame,gl+off,0).a, + texelFetch(texPreviousFrame,gl+off,0).a + ); + col +=pcol; + } + out_color = vec4(col,l); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.glsl b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.glsl new file mode 100644 index 000000000..abf5a33d2 --- /dev/null +++ b/shader_file_sources/2024_03_04_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.glsl @@ -0,0 +1,232 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define T fGlobalTime +#define R v2Resolution +#define U gl_FragCoord.xy +#define pi acos(-1.) +#define tau (acos(-1.)*2.) + + +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + + + +// hashes +uint seed = 12512; +uint hashi( uint x){ + x ^= x >> 16;x *= 0x7feb352dU;x ^= x >> 15;x *= 0x846ca68bU;x ^= x >> 16; + return x; +} + +#define hash_f_s(s) ( float( hashi(uint(s)) ) / float( 0xffffffffU ) ) +#define hash_f() ( float( seed = hashi(seed) ) / float( 0xffffffffU ) ) +#define hash_v2() vec2(hash_f(),hash_f()) +#define hash_v3() vec3(hash_f(),hash_f(),hash_f()) +#define hash_v4() vec3(hash_f(),hash_f(),hash_f(),hash_f()) + +vec2 sample_disk(){ + vec2 r = hash_v2(); + return vec2(sin(r.x*tau),cos(r.x*tau))*sqrt(r.y); +}// point projection +ivec2 proj_p(vec3 p, float t, out float z){ + // arbitrary camera stuff + float tt = t*0.25; + //p.xy -= 0.5; + float s = hash_f_s(uint(tt)); + float sb = hash_f_s(uint(tt + 125)); + + p.yz *= rot(sin(tt*1.7 + sin(tt))*1.0 + floor(T*0.3)); + p.y -= -0.2; + p.z += 0.4; + p.xz *= rot(sin(tt*0.7)*0.3); + //p.xz *= rot(sin(tt)); + /* + p.xz -= 0.5; + p.xz *= rot(tt*(s*2. - 1.0)*0.5 + sb); + p += sin(vec3(1.1,0.78,0.6)*tt*0.5)*0.02; + p += sin(vec3(1.1,0.78,0.6)*tt*2.7)*0.02; + p.xz *= rot(sin(tt*0.125 + sin(tt*0.125) + sb)*0.4); + p.xy *= rot(sin(tt*0.53 + sb)*0.2*0.4); + + //p.z -= -0.4 + s*0.; + p.y -= 0.2 - s*0.; + //p.x -= 0.5; + p.z += 0.8; + p.yz *= rot(-0.46 + sin(sb*1.5)*0.2); + */ + + z = p.z; + // perspective proj + p.xy /= p.z*.6; + + // depth of field + float dof_pow = pow(abs(p.z - 0.7 + sin(tt*0.45 + sin(tt*0.4))*0.2)*1.0,2.); + + p.xy += sample_disk() * (dof_pow *0.1 + 0.0); + // convert point to ivec2. From 0 to resolution.xy + ivec2 q = ivec2((p.xy + vec2(R.x/R.y,1)*0.5)*vec2(R.y/R.x,1)*R); + if(any(greaterThan(q, ivec2(R))) || any(lessThan(q, ivec2(0)))){ + q = ivec2(-1); + } + return q; +} +vec3 mul3( in mat3 m, in vec3 v ){return vec3(dot(v,m[0]),dot(v,m[1]),dot(v,m[2]));} + +vec3 oklch_to_srgb( in vec3 c ) { + c = vec3(c.x, c.y*cos(c.z), c.y*sin(c.z)); + mat3 m1 = mat3( + 1,0.4,0.2, + 1,-0.1,-0.06, + 1,-0.1,-1.3 + ); + + vec3 lms = mul3(m1,c); + + lms = pow(lms,vec3(3.0)); + + + mat3 m2 = mat3( + 4, -3.3,0.2, + -1.3,2.6,-0.34, + 0.0,-0.7, 1.7 + ); + return mul3(m2,lms); +} +void store_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + // no clue why it wants ivec4() here... + imageStore(computeTex[0], px_coord, ivec4(quant_col.x)); + imageStore(computeTex[1], px_coord, ivec4(quant_col.y)); + imageStore(computeTex[2], px_coord, ivec4(quant_col.z)); +} + +void add_to_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + imageAtomicAdd(computeTex[0], px_coord, quant_col.x); + imageAtomicAdd(computeTex[1], px_coord, quant_col.y); + imageAtomicAdd(computeTex[2], px_coord, quant_col.z); +} + +vec3 read_pixel(ivec2 px_coord){ + return 0.001*vec3( + imageLoad(computeTexBack[0],px_coord).x, + imageLoad(computeTexBack[1],px_coord).x, + imageLoad(computeTexBack[2],px_coord).x + ); +} + + +mat3 orth_mat(vec3 or, vec3 tar){ + vec3 dir = normalize(tar - or); + vec3 right = normalize(cross(vec3(0,1,0),dir)); + vec3 up = normalize(cross(dir, right)); + return mat3(right, up, dir); +} + +void main(void){ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 ro = vec3(0,0,-4.); + vec3 rd = normalize(vec3(uv,0.7)); + + seed = 2151225; + seed += hashi(uint(U.x)) + hashi(uint(U.y)*125); + + vec3 p = vec3(0); + + ivec2 id = ivec2(gl_FragCoord.xy); + if(gl_FragCoord.x < 800){ + + for(float i = 0.; i < 20; i++){ + float X = hash_f(); + + if(X < 0.5){ + for(float i = 0.; i < 2; i++){ + p = abs(p) - 0.4; + p.xz *= rot(0.5 + T*0.02); + p.yz *= rot(1.8*0.2); + p *= 1.0; + } + } else { + p = sin(p*1.6); + } + vec3 c = oklch_to_srgb( vec3(1.0,0.1,dot(p,p)*4.0)); + float z = 0.; + ivec2 q = proj_p(p, T, z); + add_to_pixel(q, c); + } + } + + //imageStore(computeTex[0], ivec2(U), uvec4(t*1000)); + + //imageStore(computeTex[0], ivec2(U), uvec4(t*1000)); + //col = vec3(1); + vec3 col = vec3(1)*2.0 - read_pixel(ivec2(U))*2.0; + + float md = 0.04; + + vec2 u = uv; + + + + col = max(col,0.); + { + #define has(x) fract(sin(x*125.5)*125.6) + #define has2(X) has(has(X.x*35.6 +T*0.01)*415.5 + has(X.y*32.6+T*0.001)*53.6) + vec2 tmd = 0.5*vec2(1,R.x/R.y); + vec2 u = vec2(U/R); + for(float i = 0; i < 20; i++){ + vec2 fluv = floor(u/tmd); + + col = vec3(1)*2.0 - read_pixel(ivec2(fluv*tmd*R))*2.0; + float X = has2(fluv); + if(X <0.02 * (length(col))){ + break; + } + tmd /= 2.0; + } + } + { + float md = 0.05; + vec2 u = uv; + u = mod(u,md) - 0.5*md; + float d = abs(u.x); + d = min(d,abs(u.y)); + d -= 0.001; + //col = mix(col,vec3(0),smoothstep(fwidth(d),0,d)*0.2); + } + + col = max(col,0); + col = col/(1+col); + col = pow(col,vec3(0.454545)); + if(floor(T) == 4.) + col = 1.-col; + + + //for() + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/aldroid.lua b/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/aldroid.lua new file mode 100644 index 000000000..4a68fa1ca --- /dev/null +++ b/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/aldroid.lua @@ -0,0 +1,123 @@ +-- hello and thanks to mallard, +-- raccoonviolet, and my co-coders! +-- Vurpo, Pumpuli, and Catnip + +-- no plan. never any plan... + +S=math.sin +C=math.cos + +function src(x,y,r,c) + for i=0,90 do + a=math.random()*math.pi*2 + rr=math.random() + rr=rr*r*(1+math.exp(-rr*rr))/2 + pix(x+C(a)*rr,y+S(a)*rr,c) + end +end + +function TIC2()t=time()//32 +vbank(0) +for y=0,136 do for x=0,240 do +pix(x,y,(x+y+t)>>3) +end end +t=time()/32 +vbank(1) +poke(0x03FF8,1) + +rect(115+120*S(t/64),0,10,136,0) + +bf1 = S(t/3) +src(120+bf1*20+S(t/30)*90,68-bf1*60, +30-bf1*bf1*20,1) +end + +function proj(x,y,z) +X=x/(30-z) +Y=y/(30-z) + +return X*100,Y*100 +end + + +function quad(x1,y1,x2,y2,height,c) + + tx1,ty1=proj(x1,height,y1) + tx2,ty2=proj(x2,height,y1) + tx3,ty3=proj(x1,height,y2) + tx4,ty4=proj(x2,height,y2) + tri( + 120+tx1,68+ty1, + 120+tx2,68+ty2, + 120+tx3,68+ty3, + c) + tri( + 120+tx2,68+ty2, + 120+tx4,68+ty4, + 120+tx3,68+ty3, + c) +end + +function tch(ch,px,py,c) + chn=string.byte(ch) + for y=0,7 do + row=peek(0x14604+chn*8+y) + for x=0,7 do + if (row>>x)&1 ==1 then + quad(x+px,-y+py,x+1+px,-y+1+py,-12,c) + end + end + end +end + +msgs = { +"A long", +"time ago", +"in a", +"galaxy", +"far far", +"away" +} + +stars = {} + +function TIC() + cls() + + if #stars < 20 then + table.insert(stars,{math.random(-10,10),math.random(10,30)}) + end + for i=1,#stars do + x,y=proj(stars[i][1],3,stars[i][2]) + pix(120+x,68-y,14) + end + + for i=-1,1 do + line(0,68+i*2,240,68+i*2,15-fft(i)*10) + end + t=time()/100 + for mi=1,#msgs do + msg=msgs[mi] + for i=1,#msg do + tch(msg:sub(i,i), + -35+i*8, + -60+(t-mi*8)%80,4) + end + end + for i=1,15 do + xo=-90 + yo=-3 + quad( + xo+i*12,yo, + xo+(i+1)*12,yo+1-fft(i*20)*8000, + 18,i) + end + + for i=1,#stars do + stars[i][2]=stars[i][2]-0.2 + if stars[i][2]<0 then + table.remove(stars,i) + break + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/catnip.lua b/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/catnip.lua new file mode 100644 index 000000000..bcc4a9861 --- /dev/null +++ b/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/catnip.lua @@ -0,0 +1,340 @@ +t=0 +abs=math.abs + +drawList={ + { + {t=0,b=0,x=0,y=0,w=240,h=136,c=0}, + {t=0,b=0,x=18,y=48,w=5,h=77,c=8}, + {t=0,b=0,x=21,y=92,w=172,h=16,c=8}, + {t=0,b=0,x=192,y=98,w=5,h=24,c=8}, + {t=2,b=0,x=35,y=85,w=12,h=4,c=11}, + {t=2,b=0,x=34,y=87,w=12,h=5,c=11}, + {t=2,b=0,x=42,y=74,w=9,h=8,c=4}, + {t=4,b=0,x=45,y=72,w=0,h=-6,c=12}, + {t=4,b=0,x=42,y=73,w=-2,h=-5,c=12}, + {t=4,b=0,x=40,y=72,w=-3,h=-3,c=12}, + {t=4,b=0,x=44,y=67,w=-2,h=-3,c=8}, + {t=0,b=0,x=33,y=65,w=5,h=6,c=4}, + {t=0,b=0,x=51,y=71,w=134,h=34,c=6}, + {t=2,b=0,x=55,y=84,w=9,h=13,c=6}, + {t=0,b=0,x=106,y=11,w=74,h=53,c=15}, + {t=0,b=0,x=140,y=9,w=6,h=57,c=0}, + {t=0,b=0,x=99,y=36,w=91,h=4,c=0}, + {t=2,b=0,x=121,y=23,w=9,h=9,c=12}, + {t=2,b=0,x=114,y=23,w=7,h=10,c=15}, + {t=4,b=0,x=50,y=58,w=5,h=-1,c=10}, + {t=4,b=0,x=55,y=59,w=-4,h=-4,c=10}, + {t=4,b=0,x=52,y=63,w=3,h=0,c=10}, + {t=4,b=0,x=59,y=51,w=5,h=0,c=10}, + {t=4,b=0,x=64,y=51,w=-4,h=-5,c=10}, + {t=4,b=0,x=60,y=56,w=5,h=0,c=10}, + {t=4,b=0,x=69,y=45,w=6,h=-1,c=10}, + {t=4,b=0,x=75,y=46,w=-6,h=-5,c=10}, + {t=4,b=0,x=70,y=51,w=6,h=-1,c=10}, + }, + { + {t=4,b=0,x=130,y=0,w=-43,h=-136,c=12}, + {t=2,b=0,x=175,y=70,w=42,h=30,c=3}, + {t=3,b=0,x=196,y=45,w=19,h=19,c=3}, + {t=3,b=0,x=155,y=46,w=19,h=19,c=3}, + {t=3,b=0,x=195,y=49,w=12,h=16,c=4}, + {t=3,b=0,x=155,y=49,w=12,h=15,c=4}, + {t=2,b=0,x=175,y=64,w=35,h=19,c=4}, + {t=2,b=0,x=174,y=67,w=11,h=12,c=2}, + {t=0,b=0,x=160,y=70,w=27,h=10,c=4}, + {t=2,b=0,x=194,y=56,w=5,h=10,c=12}, + {t=2,b=0,x=156,y=56,w=5,h=10,c=12}, + {t=2,b=0,x=156,y=52,w=3,h=3,c=15}, + {t=2,b=0,x=195,y=52,w=4,h=3,c=15}, + {t=0,b=0,x=16,y=31,w=62,h=99,c=13}, + {t=1,b=0,x=46,y=100,w=25,h=19,c=15}, + {t=1,b=0,x=46,y=52,w=9,h=7,c=15}, + {t=1,b=1,x=47,y=52,w=6,h=4,c=13}, + {t=1,b=1,x=47,y=100,w=20,h=9,c=13}, + {t=4,b=0,x=69,y=78,w=14,h=20,c=11}, + {t=4,b=0,x=84,y=59,w=3,h=-12,c=11}, + {t=4,b=0,x=89,y=72,w=19,h=16,c=11}, + {t=4,b=0,x=76,y=94,w=11,h=7,c=11}, + {t=4,b=0,x=87,y=88,w=6,h=-5,c=11}, + {t=4,b=0,x=94,y=93,w=7,h=3,c=11}, + {t=4,b=0,x=73,y=112,w=9,h=-2,c=11}, + {t=4,b=0,x=82,y=114,w=-10,h=-12,c=11}, + {t=4,b=0,x=74,y=126,w=10,h=-4,c=11}, + {t=4,b=0,x=26,y=78,w=-16,h=16,c=11}, + {t=4,b=0,x=11,y=62,w=15,h=0,c=11}, + {t=4,b=0,x=25,y=61,w=-19,h=25,c=11}, + {t=2,b=1,x=48,y=100,w=6,h=5,c=14}, + {t=2,b=0,x=174,y=127,w=42,h=40,c=3}, + {t=2,b=0,x=209,y=103,w=25,h=6,c=3}, + {t=2,b=0,x=230,y=68,w=8,h=36,c=3}, + {t=2,b=0,x=118,y=107,w=21,h=8,c=3}, + {t=2,b=0,x=107,y=66,w=11,h=41,c=3}, + }, + { + {t=2,b=0,x=113,y=55,w=61,h=41,c=3}, + {t=3,b=0,x=75,y=27,w=22,h=21,c=3}, + {t=3,b=0,x=154,y=28,w=20,h=23,c=3}, + {t=3,b=0,x=152,y=31,w=15,h=17,c=4}, + {t=3,b=0,x=74,y=27,w=11,h=15,c=4}, + {t=2,b=0,x=110,y=51,w=55,h=31,c=4}, + {t=2,b=0,x=97,y=57,w=16,h=8,c=4}, + {t=2,b=0,x=94,y=54,w=12,h=10,c=3}, + {t=2,b=0,x=119,y=55,w=13,h=11,c=3}, + {t=2,b=0,x=119,y=51,w=13,h=9,c=4}, + {t=2,b=0,x=94,y=48,w=12,h=8,c=4}, + {t=2,b=0,x=106,y=48,w=4,h=5,c=15}, + {t=2,b=0,x=126,y=38,w=14,h=11,c=12}, + {t=2,b=0,x=86,y=36,w=14,h=11,c=12}, + {t=2,b=0,x=125,y=44,w=5,h=4,c=15}, + {t=2,b=0,x=90,y=42,w=6,h=5,c=15}, + {t=0,b=0,x=109,y=62,w=7,h=10,c=2}, + {t=2,b=0,x=112,y=71,w=4,h=3,c=2}, + {t=4,b=0,x=127,y=52,w=29,h=0,c=12}, + {t=4,b=0,x=127,y=56,w=22,h=-7,c=12}, + {t=4,b=0,x=86,y=52,w=-23,h=-1,c=12}, + {t=4,b=0,x=90,y=56,w=-19,h=-4,c=12}, + {t=2,b=0,x=107,y=112,w=71,h=25,c=3}, + {t=2,b=0,x=47,y=126,w=18,h=19,c=3}, + {t=2,b=0,x=174,y=124,w=16,h=12,c=3}, + {t=0,b=0,x=-2,y=126,w=246,h=11,c=9}, + {t=2,b=0,x=111,y=115,w=28,h=12,c=13}, + {t=2,b=0,x=147,y=107,w=12,h=7,c=13}, + {t=3,b=0,x=147,y=101,w=8,h=8,c=13}, + {t=3,b=0,x=158,y=110,w=8,h=5,c=13}, + {t=1,b=0,x=153,y=105,w=3,h=2,c=12}, + {t=1,b=0,x=152,y=104,w=1,h=1,c=15}, + {t=2,b=0,x=128,y=124,w=15,h=4,c=13}, + {t=2,b=0,x=93,y=125,w=8,h=4,c=13}, + }, + { + {t=1,b=0,x=196,y=33,w=4,h=1,c=11}, + {t=1,b=0,x=61,y=45,w=4,h=2,c=11}, + {t=1,b=0,x=104,y=83,w=4,h=4,c=11}, + {t=1,b=0,x=195,y=94,w=5,h=4,c=11}, + {t=1,b=0,x=119,y=22,w=4,h=4,c=11}, + {t=1,b=0,x=22,y=18,w=3,h=2,c=11}, + {t=1,b=0,x=33,y=102,w=4,h=2,c=11}, + {t=1,b=0,x=218,y=51,w=10,h=7,c=9}, + {t=1,b=0,x=131,y=45,w=8,h=6,c=9}, + {t=1,b=0,x=76,y=16,w=9,h=7,c=9}, + {t=1,b=0,x=26,y=59,w=8,h=5,c=9}, + {t=1,b=0,x=64,y=92,w=9,h=7,c=9}, + {t=1,b=0,x=161,y=102,w=7,h=8,c=9}, + {t=1,b=0,x=227,y=120,w=9,h=1,c=9}, + {t=1,b=0,x=161,y=20,w=14,h=14,c=8}, + {t=1,b=0,x=167,y=66,w=15,h=10,c=8}, + {t=1,b=0,x=114,y=113,w=16,h=5,c=8}, + {t=1,b=0,x=87,y=54,w=14,h=10,c=8}, + {t=4,b=0,x=240,y=5,w=-242,h=-42,c=5}, + {t=4,b=0,x=242,y=10,w=-249,h=-59,c=5}, + {t=4,b=0,x=230,y=22,w=-237,h=-67,c=5}, + {t=4,b=0,x=14,y=-1,w=77,h=-137,c=3}, + {t=4,b=0,x=19,y=-1,w=102,h=-138,c=3}, + {t=4,b=0,x=35,y=0,w=139,h=-137,c=3}, + {t=4,b=0,x=241,y=116,w=-195,h=113,c=10}, + {t=4,b=0,x=241,y=124,w=-247,h=87,c=10}, + {t=2,b=0,x=91,y=58,w=57,h=42,c=3}, + {t=3,b=0,x=124,y=27,w=21,h=21,c=3}, + {t=3,b=0,x=52,y=28,w=16,h=19,c=3}, + {t=3,b=0,x=50,y=31,w=10,h=14,c=4}, + {t=3,b=0,x=125,y=24,w=8,h=12,c=4}, + {t=2,b=0,x=90,y=54,w=52,h=34,c=4}, + {t=2,b=0,x=88,y=69,w=10,h=8,c=3}, + {t=2,b=0,x=101,y=59,w=13,h=9,c=3}, + {t=2,b=0,x=75,y=58,w=14,h=9,c=3}, + {t=2,b=0,x=74,y=51,w=14,h=9,c=4}, + {t=2,b=0,x=103,y=54,w=17,h=7,c=4}, + {t=2,b=0,x=82,y=66,w=1,h=6,c=12}, + {t=2,b=0,x=94,y=66,w=1,h=4,c=12}, + {t=0,b=0,x=80,y=60,w=10,h=6,c=3}, + {t=0,b=0,x=92,y=62,w=5,h=3,c=3}, + {t=1,b=0,x=102,y=44,w=12,h=12,c=12}, + {t=1,b=0,x=73,y=43,w=13,h=13,c=12}, + {t=1,b=0,x=102,y=44,w=11,h=1,c=0}, + {t=1,b=0,x=73,y=43,w=12,h=1,c=0}, + {t=4,b=0,x=121,y=58,w=34,h=5,c=12}, + {t=4,b=0,x=124,y=62,w=26,h=-2,c=12}, + {t=4,b=0,x=124,y=69,w=23,h=-5,c=12}, + {t=4,b=0,x=54,y=56,w=-25,h=5,c=12}, + {t=4,b=0,x=50,y=63,w=-25,h=-1,c=12}, + {t=4,b=0,x=49,y=70,w=-24,h=-6,c=12}, + {t=2,b=0,x=85,y=134,w=56,h=40,c=3}, + {t=2,b=0,x=148,y=111,w=46,h=11,c=3}, + {t=2,b=0,x=185,y=65,w=12,h=45,c=3}, + {t=2,b=0,x=186,y=23,w=15,h=12,c=3}, + {t=2,b=0,x=175,y=13,w=6,h=4,c=3}, + {t=2,b=0,x=184,y=9,w=6,h=4,c=3}, + {t=2,b=0,x=196,y=11,w=6,h=5,c=3}, + {t=2,b=0,x=176,y=13,w=3,h=3,c=15}, + {t=2,b=0,x=184,y=10,w=4,h=3,c=15}, + {t=2,b=0,x=196,y=11,w=4,h=3,c=15}, + {t=2,b=0,x=186,y=25,w=5,h=3,c=15}, + }, + { + {t=2,b=0,x=56,y=56,w=41,h=36,c=3}, + {t=2,b=0,x=41,y=135,w=36,h=53,c=3}, + {t=2,b=0,x=91,y=74,w=10,h=9,c=3}, + {t=2,b=0,x=98,y=63,w=5,h=8,c=3}, + {t=2,b=0,x=100,y=71,w=4,h=6,c=3}, + {t=2,b=0,x=44,y=31,w=11,h=27,c=3}, + {t=2,b=0,x=47,y=30,w=0,h=8,c=3}, + {t=2,b=0,x=47,y=22,w=4,h=11,c=3}, + {t=2,b=0,x=47,y=28,w=4,h=19,c=4}, + {t=0,b=0,x=41,y=24,w=20,h=32,c=3}, + {t=4,b=0,x=104,y=74,w=-16,h=0,c=15}, + {t=4,b=0,x=87,y=73,w=-3,h=2,c=15}, + {t=4,b=0,x=84,y=71,w=-1,h=6,c=15}, + {t=0,b=0,x=93,y=75,w=7,h=29,c=2}, + {t=2,b=0,x=96,y=104,w=3,h=3,c=2}, + {t=2,b=0,x=85,y=45,w=6,h=11,c=12}, + {t=1,b=0,x=89,y=45,w=7,h=7,c=15}, + {t=4,b=0,x=89,y=64,w=-31,h=-2,c=12}, + {t=4,b=0,x=87,y=71,w=-20,h=-9,c=12}, + {t=4,b=0,x=93,y=71,w=-18,h=-14,c=12}, + {t=4,b=0,x=93,y=68,w=-26,h=-3,c=12}, + {t=1,b=0,x=143,y=65,w=7,h=6,c=3}, + {t=1,b=0,x=160,y=65,w=10,h=7,c=3}, + {t=1,b=0,x=178,y=66,w=9,h=6,c=3}, + {t=1,b=0,x=150,y=93,w=7,h=4,c=3}, + {t=1,b=0,x=158,y=79,w=16,h=4,c=3}, + {t=2,b=0,x=156,y=133,w=22,h=41,c=3}, + {t=2,b=0,x=66,y=103,w=1,h=4,c=3}, + {t=2,b=0,x=70,y=112,w=18,h=10,c=3}, + {t=2,b=0,x=89,y=121,w=15,h=10,c=3}, + {t=2,b=0,x=108,y=127,w=13,h=10,c=3}, + {t=2,b=0,x=127,y=131,w=12,h=8,c=3}, + {t=2,b=0,x=157,y=78,w=35,h=13,c=4}, + {t=0,b=0,x=120,y=75,w=81,h=8,c=0}, + {t=0,b=0,x=128,y=75,w=58,h=7,c=1}, + {t=2,b=0,x=143,y=66,w=7,h=3,c=3}, + {t=2,b=0,x=158,y=65,w=9,h=2,c=3}, + {t=2,b=0,x=176,y=67,w=5,h=3,c=3}, + {t=2,b=0,x=149,y=91,w=6,h=5,c=3}, + }, + { + {t=2,b=0,x=61,y=66,w=37,h=23,c=3}, + {t=3,b=0,x=80,y=47,w=18,h=13,c=3}, + {t=3,b=0,x=42,y=47,w=16,h=12,c=3}, + {t=3,b=0,x=79,y=46,w=8,h=6,c=4}, + {t=3,b=0,x=40,y=46,w=6,h=5,c=4}, + {t=2,b=0,x=62,y=63,w=34,h=19,c=4}, + {t=2,b=0,x=61,y=72,w=7,h=5,c=3}, + {t=2,b=0,x=69,y=66,w=8,h=5,c=3}, + {t=2,b=0,x=53,y=65,w=9,h=5,c=3}, + {t=2,b=0,x=70,y=60,w=8,h=6,c=4}, + {t=2,b=0,x=53,y=60,w=9,h=6,c=4}, + {t=2,b=0,x=57,y=135,w=48,h=49,c=3}, + {t=2,b=0,x=175,y=66,w=36,h=22,c=14}, + {t=3,b=0,x=196,y=48,w=14,h=13,c=14}, + {t=3,b=0,x=154,y=48,w=13,h=13,c=14}, + {t=3,b=0,x=196,y=51,w=5,h=8,c=14}, + {t=3,b=0,x=195,y=53,w=9,h=13,c=13}, + {t=3,b=0,x=153,y=50,w=7,h=9,c=13}, + {t=2,b=0,x=174,y=64,w=32,h=16,c=13}, + {t=2,b=0,x=173,y=73,w=8,h=5,c=14}, + {t=2,b=0,x=182,y=67,w=9,h=5,c=14}, + {t=2,b=0,x=164,y=66,w=10,h=5,c=14}, + {t=2,b=0,x=164,y=60,w=11,h=6,c=13}, + {t=2,b=0,x=181,y=61,w=11,h=6,c=13}, + {t=2,b=0,x=163,y=57,w=5,h=5,c=12}, + {t=2,b=0,x=180,y=57,w=5,h=5,c=12}, + {t=2,b=0,x=70,y=55,w=6,h=6,c=12}, + {t=2,b=0,x=53,y=55,w=6,h=7,c=12}, + {t=1,b=0,x=160,y=57,w=3,h=1,c=15}, + {t=1,b=0,x=178,y=57,w=3,h=1,c=15}, + {t=1,b=0,x=74,y=55,w=2,h=1,c=15}, + {t=1,b=0,x=55,y=54,w=3,h=2,c=15}, + {t=2,b=0,x=176,y=135,w=32,h=50,c=14}, + {t=2,b=0,x=229,y=108,w=4,h=27,c=14}, + {t=2,b=0,x=227,y=133,w=5,h=4,c=14}, + {t=2,b=0,x=208,y=132,w=6,h=2,c=14}, + {t=0,b=0,x=57,y=70,w=4,h=34,c=2}, + {t=2,b=0,x=59,y=103,w=2,h=1,c=2}, + {t=4,b=0,x=155,y=65,w=-21,h=6,c=12}, + {t=4,b=0,x=150,y=69,w=-8,h=-2,c=12}, + {t=4,b=0,x=195,y=66,w=14,h=4,c=12}, + {t=4,b=0,x=198,y=72,w=12,h=-3,c=12}, + {t=4,b=0,x=78,y=65,w=10,h=3,c=12}, + {t=4,b=0,x=82,y=70,w=12,h=-5,c=12}, + {t=4,b=0,x=40,y=66,w=-13,h=6,c=12}, + {t=4,b=0,x=38,y=70,w=-16,h=-4,c=12}, + {t=2,b=0,x=104,y=22,w=12,h=11,c=2}, + {t=2,b=0,x=128,y=22,w=12,h=12,c=2}, + {t=2,b=0,x=115,y=38,w=12,h=17,c=2}, + {t=2,b=0,x=107,y=34,w=10,h=12,c=2}, + {t=2,b=0,x=101,y=30,w=7,h=7,c=2}, + {t=2,b=0,x=130,y=36,w=5,h=7,c=2}, + {t=2,b=0,x=133,y=32,w=4,h=5,c=2}, + {t=2,b=0,x=124,y=40,w=6,h=8,c=2}, + }, +} +group=1 + +function drawShape(type,origin,size,border,colour) + if type==0 then + if border then + rectb(origin.x,origin.y,size.x,size.y,colour) + else + rect(origin.x,origin.y,size.x,size.y,colour) + end + elseif type==1 then + if border then + circb(origin.x,origin.y,size.x,colour) + else + circ(origin.x,origin.y,size.x,colour) + end + elseif type==2 then + if border then + ellib(origin.x,origin.y,size.x,size.y,colour) + else + elli(origin.x,origin.y,size.x,size.y,colour) + end + elseif type==3 then + if border then + trib( + origin.x-size.x,origin.y+size.y, + origin.x+size.x,origin.y+size.y, + origin.x,origin.y-size.y, + colour) + else + tri( + origin.x-size.x,origin.y+size.y, + origin.x+size.x,origin.y+size.y, + origin.x,origin.y-size.y, + colour) + end + elseif type==4 then + line(origin.x,origin.y,origin.x+size.x,origin.y-size.y,colour) + elseif type==5 then + pix(origin.x,origin.y,colour) + end +end + +function TIC() + vbank(0) + tmp=time()//32 + for y=0,136 do for x=0,240 do + pix(x,y,(x+y+tmp)>>3) + end end + vbank(1) + cls() + local duration=240 + local scene=t//duration%#drawList+1 + local count=#drawList[scene] + local int=(t%duration)/duration + local maxJ=int*count*1.5 + --for i=1,#drawList do + for j=1,#drawList[scene] do + if j15 then i=15 end + --returning color r,g,b of the color + if r==nil and g==nil and b==nil then + return peek(0x3fc0+(i*3)),peek(0x3fc0+(i*3)+1),peek(0x3fc0+(i*3)+2) + else + if r==nil or r<0 then r=0 end + if g==nil or g<0 then g=0 end + if b==nil or b<0 then b=0 end + if r>255 then r=255 end + if g>255 then g=255 end + if b>255 then b=255 end + poke(0x3fc0+(i*3)+2,b) + poke(0x3fc0+(i*3)+1,g) + poke(0x3fc0+(i*3),r) + end +end + +for i =0,15 do + pal(i,i*i,i*i,i*i) +end +pal(14,255,182,0) +pal(4,255,255,255) +pal(15,0,0,0) + +exp=math.exp +pow=math.pow +max=math.max +min=math.min +abs=math.abs +sin=math.sin +cos=math.cos +grt={"FEED","YOUR","CATS","NOW!"} +cls(0) +function subPix(i,a) + local p=peek4(i) + poke4(min(i,0x3fbf*2),max(p-a,0)) +end +function addPix(i,a,of) + local p=peek4(i-of) + poke4(min(i+of,0x3fbf*2),min(p+a,15)) +end + + +bpm=162 +function timekeep(bpm) + local s=120/bpm*31.2 + local t=time()//s + return t +end + +function TIC() + t=timekeep(bpm) + --[ + i=0 + offx=sin(t)*10 + c=cos(t/10) + s=sin(t/10) + for y=0,H do + for x=0,W do + ox=pow(abs(x-W/2),.98) + oy=y + rx=x + ry=y + + i=i+1 + fx=fft(ox)*((1000+ox*1000)/5) + if (fx/1000)>abs(.5-ry/H) then + pix(rx,ry,max(min(fx,15),0)) + else + if ox%4==t%5 then + subPix(i,2) + else + addPix(i,-1,fx*.1) + end + end + end + end + if t%16==0 then + cls(15) + pal(14,255*((t/16)%4)//4,255*(((t/16)+1)%4)//4,255*(((t/16)+3)%5)//5) + end + w=print(grt[(t//16)%4+1],0,-6) + sc=4+(t/64%8) + if t%16>8 then + print(grt[(t//16)%4+1],W/2-w*sc/2+(t%16*(1-(t/2)%2)),H/2-2*sc,15,1,sc) + else + print(grt[(t//16)%4+1],W/2-w*sc/2,H/2-2*sc,4,1,sc) + end + i=0 + if (t/32)%8>7.75 then + cls(0) + w=print("OwO",0,-6) + print("OwO",W/2-w/2*4,H/2-4*2,14,1,4) + + end + for x=0,W do + for y=0,H do + i=i+1 + if x%2==(t/5)%2 then + addPix(i,-1,0) + elseif y%2==(t/5)%2 then + subPix(i,-1) + end + end + end--]] + updateBPM() +end + +function updateBPM(dbg) + local bt1=0 + local bt2=0 + if btn(0) then + bt1=1 + dbg=1 + else + bt1=0 + end + if btn(1) then + bt2=1 + dbg=1 + else + bt2=0 + end + bpm=bpm+(bt1-bt2)*.1 + if not(dbg==0 or dbg==nil) then + rect(0,0,30,6,1) + print(bpm,0,0,14,1) + end +end diff --git a/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/vurpo.lua b/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/vurpo.lua new file mode 100644 index 000000000..d718902eb --- /dev/null +++ b/shader_file_sources/2024_03_11_byte_jam_monday_night_bytes/vurpo.lua @@ -0,0 +1,126 @@ +-- YIPPEE!!! +-- created by vurpo +-- greetings to mallard violet aldroid theremin catnip + +m=math +p={ +{1,-3},{1,8},{2,13},{5,15},{9,13},{11,8}, +{11,5},{11,8},{13,13},{15,15},{18,13}, +{19,12},{20,4},{25,4},{25,13},{28,15}, +{31,14},{32,13},{33,8},{33,-2},{31,-6}, +{20,-7} +} + +function sign(x) + if x<0 then return -1 + else return 1 end +end + +function drawthing(x,y,flip) + for i=1,#p-1 do + line( + x+p[i][1]*flip, + y+p[i][2], + x+p[i+1][1]*flip, + y+p[i+1][2], + 0) + end + circb(x+8*flip,y-21,18,0) + circ(x+1*flip,y-21,5,0) + circ(x+15*flip,y-21,5,0) + circ(x-1*flip,y-22,1.5,12) + circ(x+13*flip,y-22,1.5,12) + line(x+6*flip,y-11,x+11*flip,y-11,0) +end + +function len(x,y) + return m.sqrt(m.pow(x,2)+m.pow(y,2)) +end + +function rotscale(p,angle,scale) + return { + x=scale*(p.x*m.cos(angle)-p.y*m.sin(angle)), + y=scale*(p.y*m.cos(angle)+p.x*m.sin(angle)) + } +end + +function drawthings() + for i=#c,1,-1 do + c[i][1]=c[i][1]+c[i][3] + c[i][2]=c[i][2]+c[i][4] + + c[i][3]=c[i][3]*0.91 + c[i][4]=c[i][4]*0.96+0.2 + + mag=len(c[i][3],c[i][4]) + + if c[i][4] > 1.8 then + table.remove(c,i) + else + x=c[i][1] + y=c[i][2] + angle=m.atan2(c[i][4],c[i][3]) + x1=m.abs(c[i][3]) + y1=m.abs(c[i][4]) + m2=m.min(1.1,mag) + p1=rotscale({x=-2-mag,y=-1.8*m2},angle,mag*0.04+0.6) + p2=rotscale({x=-2-mag,y= 1.8*m2},angle,mag*0.04+0.6) + p3=rotscale({x= 2+mag,y=-1.8*m2},angle,mag*0.04+0.6) + p4=rotscale({x= 2+mag,y= 1.8*m2},angle,mag*0.04+0.6) + tri( + x+p1.x,y+p1.y, + x+p2.x,y+p2.y, + x+p3.x,y+p3.y, + c[i].c) + tri( + x+p2.x,y+p2.y, + x+p3.x,y+p3.y, + x+p4.x,y+p4.y, + c[i].c) + end + end +end + +x=0 + +function triangle(x) + return 2*m.abs(x-m.floor(x+0.5)) +end + +c={{100,100,1.5,-1.5,c=3}} + +function r() + return m.random()-0.5 +end + +colors={2,3,4,5,10} + +function add(x,y,x2) + if #c < 400 then + table.insert(c, + { + x,y, + x2*6.5+r()*12, + -8.3+r()*7.5, + c=colors[m.floor(m.random(1,#colors))] + } + ) + end +end + +function TIC() + t=time()/1000 + cls(12) + drawthing( + 70+100*triangle(t*2.5/m.pi), + 100-25*m.abs(m.sin(t*10)), + -sign(m.sin(t*5))) + if m.random() > fft(3)*5 then + for _=1,3 do + add( 0+10*r(),140,1) + add(240+10*r(),140,-1) + add(120+10*r(),140,0) + end + end + drawthings() +end diff --git a/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_Catnip.glsl b/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_Catnip.glsl new file mode 100644 index 000000000..9eafe780d --- /dev/null +++ b/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_Catnip.glsl @@ -0,0 +1,92 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define time (fGlobalTime / 3.) +#define r2d(p,a) p=cos(a)*p + sin(a)*vec2(-p.y,p.x); + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float f(vec3 p, float t) { + vec3 o = p; + p = fract(p) - .5; + float s = 3., l; + for (int i=0; i<8; i++) { + p = abs(p); + p = p.x>16;x*=0x7feb352dU;x^=x>>15;x*=0x846ca68bU;x^=x>>16; return x;}// hash integer +float hash_f(){return float(seed=hashi(seed))/float(0xffffffffU);} // hash float +vec3 hash_v3(){return vec3(hash_f(),hash_f(),hash_f());} // hash vec3 +vec2 hash_v2(){return vec2(hash_f(),hash_f());} // hash vec2 + +//DISC FUNCTION: Use this function to make a disc filled with random particles +vec2 hash_disc(){ vec2 r=hash_v2();return vec2(cos(r.x*6.28),sin(r.x*6.28))*sqrt(r.y);} + +//POINT PROJECTION FUNCTION: Project points in 3d, use classic raymarching camera or some transform on p +ivec2 proj_point(vec3 p,vec3 cameraPostion,mat3 cameraDirection){ + // Classic camera example + p-=cameraPostion; //Shift p to cameraPosition + p=p*cameraDirection; //Multiply by camera direction matrix + + //No camera example: careful, order matters + //p.xz*=rotate2D(t); + //p.z+=50; + + if(p.z<0) return ivec2(-1); //REMOVE particles behind camera (see Add function call) + float fov=0.5; //FIELD OF VIEW amount + p.xy/=p.z*fov; //Perspective projection using field of view above + + //DOF code: + float dofFocus=20; //dofFocus is 20 as the camera is 20 unit away (orbit camera has 20 radius), change this to change the focus distance + float dofScale=0.7; //scale of dof, how fast it kicks in + float dofAmount=0.005; //amount of dof + p.xy+=hash_disc()*abs((p.z-dofFocus)*dofScale)*dofAmount; //Add dof to scene + + ivec2 q=ivec2((p.xy+vec2(R.x/R.y,1)*0.5)*vec2(R.y/R.x,1)*R); //Convert to int + return q; +} + +void main(void){ + t=fGlobalTime*.1; //Set global time variable + seed=0; //Init hash + seed+=hashi(uint(UV.x))+hashi(uint(UV.y)*125); //More hash + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); //Default uv calc from Bonzo + //uv-=.5; //We want uv range 0->1 not -.5->.5 so things start at zero + uv/=vec2(v2Resolution.y / v2Resolution.x, 1); //uv now hold uv coordinates in 0->1 range + + //PLEASE NOTE: we have two uv coordinates variables: uv and UV + //uv is from 0 -> 1 + //UV is from 0 -> screen resolution, and is basically a shortcut to gl_FragCoord.xy + //Depending on what we want to achieve, sometimes we'll use uv, sometimes UV. Generally because the uv range simplifies the calculation, stick around yeah? + + // Classic camera example: remove this if not using camera and just using transforms in proj_point function + vec3 cameraTarget=vec3(0,0,0), //Camera target + cameraPosition=vec3(cos(t)*20,2,sin(t)*20), //Camera position + cameraForward=normalize(cameraTarget-cameraPosition), //Camera forward + cameraLeft=normalize(cross(cameraForward,vec3(0,1,0))), //Camera left + cameraTop=normalize(cross(cameraLeft,cameraForward)); //Camera top + mat3 cameraDirection=mat3(cameraLeft,cameraTop,cameraForward);//Camera direction matrix + float ptc = 0; + if(UV.x<100){ //Amount / Density of particles. If you change this and want to keep system in middle then adapt 50 in line 93 below with half of this number + vec3 p=vec3(0); //Set p as 0,0,0 with no hash to avoid noise and keep sharp line look + float tubeLength=0.1; + p.z=UV.x*tubeLength; //We extrude system along z using UV rather than uv so that the calculation to move in middle is more simple + //Yes you CAN extrude using uv instead of UV, so with a uv range 0->1 and with a different tube length range... + //...But then to move the system in the middle, it would be more complex calculation than this: + p.z-=50*tubeLength; //Move tube in middle, 50 is simply half of the amount of particles. Yes if you change 100 on line 97 you should change 50 to half of it + ptc=texture(texFFTSmoothed,fract(abs(p.z)/100)).x*(10+10*fract(p.z/100)); + float radius=1.+cos(p.z*.5)*.3+ptc; //Tube radius with bulge deform using cosinus of p.z. You could use UV.x or uv.x as well, but p.z is based on UV.x and it's shifted at 0,0,0 + p.xy+=vec2(cos(uv.y*6.283)*radius,sin(uv.y*6.283)*radius); //Push particles along a circle on XY to create tube. Here we using uv.y rather than UV.y as its range is 0->1 so it's simpler to make a full circle by mutiplying by 2*PI + ivec2 q=proj_point(p,cameraPosition,cameraDirection); //Project point in 3d using camera or not, see function itself + //If point is NOT behind camera, draw point with gradient along p.z. Removing if(q.x>0) will make it trippy where things behind camera appear at front + //CAREFUL when calling Add function. Here we are not doing it in a loop so it's ok. But if you were inside a loop, then you shouldnt do this like 100 times, if you do have loop of 100 make sure to exit early and / or not call Add every iterations + if(q.x>0)Add(q,mix(vec3(1.,.1,.2),vec3(.0,.1,1.)+vec3(ptc,0,-ptc),cos(p.z*.5)*.5+.5)); + + } + vec3 s = vec3(0); + vec2 uo = vec2(smoothstep(0.3,0.39+texture(texFFT,0.01).x,length(uv-vec2(0.5+sin(t*3),0.5))),0)*100; + + for (int i = -30; i <= -26; ++i) { + for (int j=-3; j <= -1; ++j) { + s += Read(ivec2(UV+uo)+ivec2(i,j))*.1; //Read back compute texture pixel, *.1 controls the brightness of the whole thing as it's additive + } + } + s *= 2.; + if (length(s) > 1.) { + Add(ivec2(UV),s.yzx/9); + } + + //Recalculate uv for vignette: This is only done to simplify making a vignette background by using uv in range -.5,.5. It's the original uv calc you get in bonzomatic start tunnel + uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); //Default uv calc from Bonzo, used for vignette + uv-=.5; //Default uv calc from Bonzo, used for vignette + uv/=vec2(v2Resolution.y / v2Resolution.x, 1); //Default uv calc from Bonzo, used for vignette + + vec3 col = vec3(.2,.35,.5)-pow(length(uv+vec2(texture(texFFT,0.01).x,0)),4)*.75; //Background colour and vignette + col+=pow(mix(s,s.xxx,length(uv))/1000,vec3(.45)); //Particle colour and gamma correction + for (float i=0;i<3;++i) { + col += smoothstep(0.21-i/12,0.2-i/12,length(uv+vec2(sin(t)*(3-i),-0.4+i*0.1)))*(0.2-i/11); + } + out_color = vec4(col,0); //Return final colour for pixel +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_nusan.glsl b/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_nusan.glsl new file mode 100644 index 000000000..15acc545e --- /dev/null +++ b/shader_file_sources/2024_03_18_shader_jam_monday_night_bytes/grabber_iliketea_nusan.glsl @@ -0,0 +1,142 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = mod(fGlobalTime*.7, 300); + +//READ / WRITE COMPUTE TEXTURE FUNCTIONS +void add(vec2 au, vec3 c){//add pixel to compute texture + ivec2 u=ivec2(au); + ivec3 q = ivec3(c*1000);//squish float into int, we use this trick to keep it additive as floatToInt wouldn't work additively + imageAtomicAdd(computeTex[0], u,q.x); + imageAtomicAdd(computeTex[1], u,q.y); + imageAtomicAdd(computeTex[2], u,q.z); +} + +vec3 read(vec2 au){ //read pixel from compute texture + ivec2 u=ivec2(au); + return 0.001*vec3( //unsquish int to float + imageLoad(computeTexBack[0],u).x, + imageLoad(computeTexBack[1],u).x, + imageLoad(computeTexBack[2],u).x + ); +} + +vec2 rnd(vec2 uv) { + return fract(sin(uv*574.537+uv.yx*384.714)*471.526); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x,max(p.y,p.z)); +} + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float fft(float t) { + return texture(texFFTSmoothed, fract(t)*.1).x; +} + +float ffti(float t) { + return texture(texFFTIntegrated, fract(t)*.1).x; +} + +float map(vec3 p) { + + for(int i=0; i<5; ++i) { + p.xz *= rot(ffti(0.01+i*.1)*.2+i); + p.yz *= rot(ffti(0.03+i*.02)*.17); + p=abs(p)-0.4-fft(0.04+i*0.02)*.3; + } + + float d = box(p, vec3(0.3)); + + return d; +} + +void cam(inout vec3 p) { + + p.yz *= rot(time*.27); + p.xz *= rot(time*.42); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv=abs(uv); + + if(gl_FragCoord.y<10000) { //Amount / density of particle cloud + + vec3 s = vec3(0,0,-10); + vec3 r = normalize(vec3(rnd(uv), 1)); + cam(s); + cam(r); + vec3 p = s; + for (int i=0; i<100; ++i) { + float d=abs(map(p)); + if(d<0.001) { + vec2 pp = p.xy * 1 / (5+abs(p.z)); + pp += (rnd(uv+.1)-.5)*.2 * abs(0.3/(5+abs(p.z))); + if (rnd(floor(uv*10-time)+.3).x<0.2) pp.x=-pp.x; + add( (pp*1+.5)*v2Resolution.xy, max(vec3(fft(p.x*5.)*3,fft(p.y*5.)*5,sin(p.z*5-time)*.5+.5),vec3(0.))); + d=0.1; + r.xy = r.xy + (rnd(uv+.1)-.5)*.2; + //break; + } + if(d>100.0) break; + p+=r*d; + } + } + + + vec3 col=vec3(0); + + vec3 s = read(gl_FragCoord.xy); //Read back compute texture pixel, *.3 controls the brightness of the whole thing as it's additive + float size = 7; + for (float i=-size; i>16u; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + return vec3(q)/float(-1u); +} +#define UV gl_FragCoord.xy //Shortcut for gl_FragCoord +#define R v2Resolution.xy //Shortcut for v2Resolution +float t; //Time global variable + +//READ / WRITE COMPUTE TEXTURE FUNCTIONS +void Add(ivec2 u, vec3 c){//add pixel to compute texture + ivec3 q = ivec3(c*1000);//squish float into int, we use this trick to keep it additive as floatToInt wouldn't work additively + imageAtomicAdd(computeTex[0], u,q.x); + imageAtomicAdd(computeTex[1], u,q.y); + imageAtomicAdd(computeTex[2], u,q.z); +} +vec3 Read(ivec2 u){ //read pixel from compute texture + return 0.001*vec3( //unsquish int to float + imageLoad(computeTexBack[0],u).x, + imageLoad(computeTexBack[1],u).x, + imageLoad(computeTexBack[2],u).x + ); +} + +//HASH NOISE FUNCTIONS: Make particles random +uint seed = 1; //hash noise seed +uint hashi( uint x){x^=x>>16;x*=0x7feb352dU;x^=x>>15;x*=0x846ca68bU;x^=x>>16; return x;}// hash integer +float hash_f(){return float(seed=hashi(seed))/float(0xffffffffU);} // hash float +vec3 hash_v3(){return vec3(hash_f(),hash_f(),hash_f());} // hash vec3 +vec2 hash_v2(){return vec2(hash_f(),hash_f());} // hash vec2 + +//POINT PROJECTION FUNCTION: Project points in 3d, use classic raymarching camera or some transform on p +ivec2 proj_point(vec3 p,vec3 cameraPostion,mat3 cameraDirection){ + // Classic camera example + p-=cameraPostion; //Shift p to cameraPosition + p=p*cameraDirection; //Multiply by camera direction matrix + + //No camera example: careful, order matters + //p.xz*=rotate2D(t); + //p.z+=50; + + if(p.z<0) return ivec2(-1); //REMOVE particles behind camera (see Add function call) + float fov=0.5; //FIELD OF VIEW amount + p.xy/=p.z*fov; //Perspective projection using field of view above + ivec2 q=ivec2((p.xy+vec2(R.x/R.y,1)*0.5)*vec2(R.y/R.x,1)*R); //Convert to int + return q; +} +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +void main(void){ + t=fGlobalTime*.1; //Set global time variable + seed=0; //Init hash + seed+=hashi(uint(UV.x))+hashi(uint(UV.y)*125); //More hash + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec3 rnd = pcg3d(floor(uv.xyy*10)); + ivec2 gl =ivec2(gl_FragCoord.xy); + //Default uv calc from Bonzo + + //uv-=.5; //We want uv range 0->1 not -.5->.5 so things start at zero + uv/=vec2(v2Resolution.y / v2Resolution.x, 1); //uv now hold uv coordinates in 0->1 range + + //PLEASE NOTE: we have two uv coordinates variables: uv and UV + //uv is from 0 -> 1 + //UV is from 0 -> screen resolution, and is basically a shortcut to gl_FragCoord.xy + //Depending on what we want to achieve, sometimes we'll use uv, sometimes UV. Generally because the uv range simplifies the calculation, stick around yeah? + + // Classic camera example: remove this if not using camera and just using transforms in proj_point function + vec3 cameraTarget=vec3(0,0,0), //Camera target + cameraPosition=vec3(cos(t)*20,2,sin(t)*20), //Camera position + cameraForward=normalize(cameraTarget-cameraPosition), //Camera forward + cameraLeft=normalize(cross(cameraForward,vec3(0,1,0))), //Camera left + cameraTop=normalize(cross(cameraLeft,cameraForward)); //Camera top + mat3 cameraDirection=mat3(cameraLeft,cameraTop,cameraForward);//Camera direction matrix + + if(UV.x<1000){ + //Amount / Density of particles. If you change this and want to keep system in middle then adapt 50 in line 93 below with half of this number + vec3 p=vec3(0); + //Set p as 0,0,0 with no hash to avoid noise and keep sharp line look + float tubeLength=0.1+tanh(texture(texFFTSmoothed,.3).r*25)*5; + p.z=UV.x*tubeLength*.5+rnd.x; + p-=hash_v3()*.01; + //We extrude system along z using UV rather than uv so that the calculation to move in middle is more simple + //Yes you CAN extrude using uv instead of UV, so with a uv range 0->1 and with a different tube length range... + //...But then to move the system in the middle, it would be more complex calculation than this: + p.z-=150*tubeLength; + //Move tube in middle, 50 is simply half of the amount of particles. Yes if you change 100 on line 87 you should change 50 to half of it + float radius=1.+sqrt(texelFetch(texFFTSmoothed,int(UV.x),0).r)*100*sin(fGlobalTime+p.z*.1); + //Tube radius with bulge deform using cosinus of p.z. You could use UV.x or uv.x as well, but p.z is based on UV.x and it's shifted at 0,0,0 + uv = erot(uv.xyy,vec3(0,0,1),fGlobalTime+p.z*.1).xy; + p.y+=cos(uv.y*6.283+fGlobalTime*.74)*radius; + p.x+=cos(uv.y*6.283*2+fGlobalTime)*radius; + + // Push particles along a circle on XY to create tube. Here we using uv.y rather than UV.y as its range is 0->1 so it's simpler to make a full circle by mutiplying by 2*PI + ivec2 q=proj_point(p,cameraPosition,cameraDirection); + // Project point in 3d using camera or not, see function itself + // If point is NOT behind camera, draw point with gradient along p.z. Removing if(q.x>0) will make it trippy where things behind camera appear at front + // CAREFUL when calling Add function. Here we are not doing it in a loop so it's ok. But if you were inside a loop, then you shouldnt do this like 100 times, if you do have loop of 100 make sure to exit early and / or not call Add every iterations + if(q.x>0)Add(q,mix(vec3(1.,.1,.2),vec3(.0,.1,1.),cos(p.z*.5+texture(texFFTIntegrated,.3).r*50)*.5+.5)*10); + } + vec3 s = Read(ivec2(UV))*.1; //Read back compute texture pixel, *.1 controls the brightness of the whole thing as it's additive + + //Recalculate uv for vignette: This is only done to simplify making a vignette background by using uv in range -.5,.5. It's the original uv calc you get in bonzomatic start tunnel + uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); //Default uv calc from Bonzo, used for vignette + uv-=.5; //Default uv calc from Bonzo, used for vignette + uv/=vec2(v2Resolution.y / v2Resolution.x, 1); //Default uv calc from Bonzo, used for vignette + + vec3 col = vec3(.2,.35,.5)-length(uv)*.5; //Background colour and vignette + col+=pow(s,vec3(.45)); //Particle colour and gamma correction + ivec2 off= ivec2(5.); + vec3 pcol = vec3( + texelFetch(texPreviousFrame,gl+off,0).r, + texelFetch(texPreviousFrame,gl-off,0).r, + texelFetch(texPreviousFrame,gl-off,0).r + ); + col = mix(col,pcol,.5)*(1.1*2*exp(-1*fract(rnd.y+fGlobalTime*135/60))); + if(fract(fGlobalTime*135/60*.5+rnd.x)>.9)col=1-col; + out_color = vec4(col,0); //Return final colour for pixel +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/cosamentale-qualif-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/cosamentale-qualif-rev2024.glsl new file mode 100644 index 000000000..9a93f4749 --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/cosamentale-qualif-rev2024.glsl @@ -0,0 +1,80 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +mat2 rot(float t){ float c = cos(t); float s= sin(t); return mat2(c,-s,s,c);} +float t = fGlobalTime+texture(texFFTIntegrated,0.2).x*1.;float e; float zl; +float rd(){return fract(sin(e +=45.)*7845.236);} +vec3 vr(){float a = rd()*6.28; + return vec3(cos(a), sin(a),(rd()-0.5)*2.)*sqrt(rd());} +float b(vec3 p){vec3 q = abs(p)-10.; + return length(max(q,0.))+min(0.,max(q.x,max(q.y,q.z)));} + vec3 co ; + float map(vec3 p){ + p.xy *= rot(p.z*0.1*sin(t)); + vec3 pb = p; + float fr = step(0.5,fract(p.x/12.))+step(0.5,fract(p.z/12.)); + pb= mod(pb,vec3(6.,0.,6.))-vec3(3.,0.,3.); + pb.y += -5.*abs(sin(t*2.+fr)); + float t1 = smoothstep(-0.5,0.5,sin(t)); + float d1 = max(length(pb)-mix(3.,2.,t1),length(mod(p,vec3(2.))-1.)-mix(0.5,2.,t1)); + float d2 = max(-100.,-b(p-vec3(0.,8.,0.))); + float d3 = mix(mix(-p.y+12.,p.x+9.9,step(0.5,fract(t*4.))),length(p.xz)-2.*step(0.5,fract(t*4.)),step(0.5,fract(t))); + zl = d3; + float l1 = step(0.5,fract(atan(pb.x,pb.z)/3.14*4.)); + float l2 = mix(l1,1.-l1,step(0.5,fract(pb.y*1.))); + co = mix(vec3(0.8,0.9,1.)*max(vec3(0.,0.1,0.3),step(0.05,fract(p.x+0.5))*step(0.05,fract(p.y+0.5))*step(0.05,fract(p.z+0.5))), + mix(mix(vec3(1.,0.,0.),vec3(1.),l2),vec3(1.), step(0.01,d1)),step(0.01,d2)); + return min(d1,min(d2,d3));} + float rm(vec3 p, vec3 r){ float dd= 0.; + for(int i = 0 ; i < 64 ; i++) { + float d = map(p); + if(d<0.01){break;} + p += r*d; + dd +=d;}return dd;} +vec3 nor(vec3 p){vec2 e = vec2(0.01,0.); + return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx)));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uc = uv; + uv -= 0.5;uv *= 2.; + uv = mix(uv,abs(uv),step(0.75,fract(t*0.25))); + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 p = vec3(0.,0.,-7.); vec3 r = normalize(vec3(uv,1.+sin(t)*0.5)); + p.xz *= rot(t);r.xz *= rot(t); + float r1 = 0.;float de = 0.; + e = uv.x*v2Resolution.y+uv.y; + e +=t; + float at = 2.;vec3 lum; + for(int i = 0 ; i < 4 ; i++){ + float d = rm(p,r); + if(i == 0){lum = co;} + if(zl>0.01){p +=r*d; + vec3 n = nor(p); + r = n+vr(); + p +=r*0.2; + at *= 0.5; + } + else{r1 = at;}} + float r2 = mix(r1,texture(texPreviousFrame,uc).a,0.6); + out_color = vec4(pow(vec3(r2*mix(lum,1.-lum,step(0.9,fract(t*4.)))),vec3(0.25)),r2); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/dok-qualif-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/dok-qualif-rev2024.glsl new file mode 100644 index 000000000..50aed5286 --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/dok-qualif-rev2024.glsl @@ -0,0 +1,113 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +const float pi = acos(-1); +#define r2(a) mat2(cos(a),-sin(a),sin(a), cos(a)) +vec4 s = fGlobalTime*(128/60.)/vec4(1,4,8,16); +vec4 t = fract(s); +float sd_b(vec3 p, vec3 e) { + p = abs(p) -e ; + return length(max(p,0)) + min(max(max(p.x,p.y),p.z),0); +} +#define time fGlobalTime +float map(vec3 p) { + float d; + { + vec3 q = p; + q.xy = abs(q.xy); + q.xy -= .5; + q.x += asin(sin(p.z+time)) * .5; + q.y += asin(cos(p.z+time)) * .5; + d = sd_b(q, vec3(0.2,0.2,1111))-.1; + } + { + vec3 q = p; + q.z -= round(q.z); +q.xz *= r2(time+q.z); + d = min(d, sd_b(q, vec3(0.1))-0.1); + } + return d; +} +vec3 nor(vec3 p) { + vec3 e = vec3(1e-4,0,0); + return normalize(vec3( + map(p+e.xyy)-map(p-e.xyy), + map(p+e.yxy)-map(p-e.yxy), + map(p+e.yyx)-map(p-e.yyx) + )); +} + +void main(void) +{ + vec2 uv = (gl_FragCoord.xy - .5 * v2Resolution.xy ) / v2Resolution.y; + vec3 col = vec3(1); + vec3 ro = vec3(1+cos(fGlobalTime),2+sin(fGlobalTime),4); + + if (t.w >.5) + ro = vec3(0,4,sin(time)); + vec3 cf = normalize(-ro), + cu = normalize(cross(cf, vec3(1,0,0))), + cl = normalize(cross(cf,cu)), + rd = mat3(cl,cu,cf)*normalize(vec3(uv, 0.5)); + float i,r,d,N=123,h=0; + for (i=r=0.; i0) r+=d*.5; + if (d<1e-4||r>1e5) break; + } + if (i.5 && t.w < .25) { + col *= step(0.5, fract(t.x*8)); + }else + if (texture(texFFTSmoothed,0.005).r > 0.2) + col = 1 - col; + + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/evvvvil-final-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/evvvvil-final-rev2024.glsl new file mode 100644 index 000000000..df77a5c17 --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/evvvvil-final-rev2024.glsl @@ -0,0 +1,125 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float f,b,c,d,r,t,wa,af;vec2 U=gl_FragCoord.xy,R=v2Resolution.xy; +uint se=0; +uint hi(uint x){ + x^=x>>16;x*=0x1234567bU;x^=x>>15;x*=0x8468461dU;x^=x>>16;return x; +} +float hash(){return float(se=hi(se))/float(0xffffffffU);} +vec2 hash2(){return vec2(hash(),hash());} +vec2 hash_d(){vec2 r=hash2();return vec2(cos(r.x*6.28),sin(r.x*6.28))*sqrt(r.y);} +mat2 r2(float r){return mat2(cos(r),-sin(r),sin(r),cos(r));} +vec3 hash3(){return vec3(hash(),hash(),hash());} +void ad(ivec2 u,vec3 c){ + ivec3 q=ivec3(c*1000); + imageAtomicAdd(computeTex[0],u,q.x); + imageAtomicAdd(computeTex[1],u,q.y); + imageAtomicAdd(computeTex[2],u,q.z); +} +vec3 re(ivec2 u){ + return .001*vec3( + imageLoad(computeTexBack[0],u).x, + imageLoad(computeTexBack[1],u).x, + imageLoad(computeTexBack[2],u).x); +} + +ivec2 pr( vec3 p,vec3 ro,mat3 rd,float s) +{ + p-=ro;p*=rd; + p.xy*=r2(sin(p.z*.2)*.5*s*(1-b)); + if(p.z<0) return ivec2(-10); + p.xy/=p.z*.5; + p.xy+=hash_d()*abs(p.z-70)*.0001; + ivec2 q=ivec2((p.xy+vec2(R.x/R.y,1)*.5)*vec2(R.y/R.x,1)*R); + return q; +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + //uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + //f= texture( texFFT, d ).r * 100; + t=mod(fGlobalTime*.1,4.1); + se+=hi(uint(U.x))+hi(uint(U.y)*125); + b=smoothstep(0.,1.,clamp(cos(max(0.,t-.5)*3),-.5,.5)+.5); + c=1-smoothstep(0.,1.,min(t*2.,1.))+clamp((t-3.55),0.,1.); + d=1.-c; + vec3 ro=mix( + vec3(0,0,-90-70*cos(t*6)), + vec3(-70+cos(t*12)*15,2,50-cos(t*12)*15),b), + cw=normalize(vec3(0,0,-20+b*40)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)); + wa=sin(uv.x*50+t*25)*.5+.5; + mat3 rd=mat3(cu,cv,cw); + if(U.x<400){ + vec3 p=hash3()*sin(uv.x*40*(1+b*3))*sin(uv.y*40); + p.z+=U.x*.1; + r=2.7+wa*b+p.y*.5; + p.xy+=vec2(cos(uv.y*6.28)*r,sin(uv.y*6.28)*r); + p.yz*=r2(p.z*.5*c); + for(int i=0;i<4;i++){ + p.xy*=mix(1.5,.6,b); + if(i==1) p.xy+=vec2(cos(uv.y*6.28)*r,sin(uv.y*6.28)*r); + vec3 ap=vec3(0,0,10)-p; + af=length(ap)/(10+wa+cos(p.z+1)+100*c); + af=pow(clamp(1-af,0.,1.),2.72); + if(i>0)p-=af*ap*3; + ivec2 q=pr(p,ro,rd,1); + if(q.x>0) ad(q,d*mix(vec3(.7,.2,.1),vec3(.2,.5,.7),cos(p.z*.2+1)*.5+.5)); + } + } + else if(U.x>400&&U.x<500){ + vec3 p=hash3()*0.2; + p.z+=15+(U.x-400)*.3; + r=0.5; + p.xy+=vec2(cos(uv.y*6.28)*r,sin(uv.y*6.28)*r); + p.yz*=r2(p.z*.5*c); + p.x+=3+wa*(p.z-14)*.5+(p.z-14)*.5; + for(int i=0;i<12;i++){ + p.xy*=r2(.523); + ivec2 q=pr(p,ro,rd,1); + if(q.x>0) ad(q,d*(sin(p.z*5)*.5+.5)*mix(vec3(.7,.2,.1),vec3(.2,.5,.7),cos(p.z*.2)*.5+.5)); + } + } + else if(U.x>500&&U.x<600){ + vec3 p=hash3()*0.2; + p.y-=U.y*.01*(1-c*40)-7+b*20; + p.xy-=1-b*20; + p.z+=(U.x-500)*(.3+b)-sin(t*3-2)*b*40-b*40; + p.xy*=r2(-.256+b*6.5); + for(int i=0;i<5;i++){ + p.xy*=r2(1.256); + ivec2 q=pr(p,ro,rd,0.2); + if(q.x>0) ad(q,d*vec3(.1+b*.5)); + } + } + uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 v=rd*normalize(vec3(uv,.5)); + vec3 co=vec3(.2,.35,.5)-length(uv)*.5+sin(v.z*20-t*60)*.05*d; + co+=pow(re(ivec2(U))*.1,vec3(.45)); + co-=texture(texNoise,v.yz).r*.2; + out_color = vec4(co,1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/evvvvil-qualif-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/evvvvil-qualif-rev2024.glsl new file mode 100644 index 000000000..b0a4e5916 --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/evvvvil-qualif-rev2024.glsl @@ -0,0 +1,154 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float f,t,r,s;vec2 U=gl_FragCoord.xy,R=v2Resolution.xy; +uint se=0; +uint hi(uint x){ + x^=x>>16;x*=0x1234567bU;x^=x>>15;x*=0x8468461dU;x^=x>>16;return x; +} +float hash(){return float(se=hi(se))/float(0xffffffffU);} +vec2 hash2(){return vec2(hash(),hash());} +vec2 hash_d(){vec2 r=hash2();return vec2(cos(r.x*6.28),sin(r.x*6.28))*sqrt(r.y);} +mat2 r2(float r){return mat2(cos(r),-sin(r),sin(r),cos(r));} +vec3 hash3(){return vec3(hash(),hash(),hash());} +void ad(ivec2 u,vec3 c){ + ivec3 q=ivec3(c*1000); + imageAtomicAdd(computeTex[0],u,q.x); + imageAtomicAdd(computeTex[1],u,q.y); + imageAtomicAdd(computeTex[2],u,q.z); +} +vec3 re(ivec2 u){ + return .001*vec3( + imageLoad(computeTexBack[0],u).x, + imageLoad(computeTexBack[1],u).x, + imageLoad(computeTexBack[2],u).x); +} +ivec2 pr( vec3 p,vec3 ro,mat3 rd) +{ + p-=ro;p*=rd; + if(p.z<0) return ivec2(-1); + p.xy/=p.z*.65; + p.xy+=hash_d()*abs(p.z-5)*.003; + ivec2 q=ivec2((p.xy+vec2(R.x/R.y,1)*.5)*vec2(R.y/R.x,1)*R); + return q; +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + //uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + f= texture( texFFTSmoothed, 0.29 ).r * 50; + t=fGlobalTime*.1; + se+=hi(uint(U.x))+hi(uint(U.y)*125); + vec3 ro=mix( + mix(vec3(5+cos(t*8-1)*3,sin(t*8-1)*5,0),vec3(.5,cos(t*8)*.5,sin(t*8)*.5+2),ceil(sin(t*2-.1))), + vec3(4,cos(t*8)*2,sin(t*8)*2), + ceil(sin(t*4+sin(uv.x)*.5+f*.3))), + cw=normalize(vec3(0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)); + mat3 rd=mat3(cu,cv,cw); + if(U.x<100){ + vec3 p=vec3(0);//hash3(); + p.z+=U.x*.2; + p.z+=.5; + r=max(0.,.4-length(p)*.15)+f*.1; + s=sin(U.x*.1+f-t*5); + p.xy+=vec2(sin(uv.y*6.28*s)*r,cos(uv.y*6.28*s)*r); + for(int i=0;i<8;i++){ + ivec2 q=pr(p,ro,rd); + if(q.x>0) ad(q,vec3(.1,.4,1)); + p.yz*=r2(.785); + } + } + else if(U.x>100&&U.x<200){ + vec3 p=hash3()*.01; + p.z+=(U.x-100)*.2; + p.z+=.5; + r=max(0.,.4-length(p)*.15)+texture(texFFTSmoothed,p.z+.05).r*5; + s=sin((U.x-100)*.1+f-t*5); + p.xy+=vec2(sin(uv.y*6.28*s)*r,cos(uv.y*6.28*s)*r); + for(int i=0;i<8;i++){ + ivec2 q=pr(p,ro,rd); + if(q.x>0) ad(q,mix(vec3(1,.4,.2),vec3(.1,.4,1),cos(p.x*10)*.5+.5)); + p.yz*=r2(.785); + } + } + else if(U.x>200&&U.x<300){ + vec3 p=hash3()*.005; + p.z+=(U.x-200)*.2; + p.z+=.5; + p.x=max(0.,uv.y*.4-length(p)*.15)+texture(texFFTSmoothed,p.z+.05).r*5; + s=sin((U.x-200)*.1+f-t*5); + p.xy*=r2(1.57-s*6.28); + for(int i=0;i<8;i++){ + ivec2 q=pr(p,ro,rd); + if(q.x>0) ad(q,mix(vec3(1),vec3(.1,.4,1),uv.y)); + p.yz*=r2(.785); + } + } + else if(U.x>300&&U.x<400){ + vec3 p=hash3()*.01; + p.z+=(U.x-300)*.2; + p.z+=.5; + p.y=max(0.,U.y*.00034-length(p)*.15); + p.xy*=r2(p.y*100+f*2-t*10); + for(int i=0;i<8;i++){ + ivec2 q=pr(p,ro,rd); + if(q.x>0) ad(q,mix(vec3(1,.4,.2),vec3(.1,.4,1),cos(uv.y*50)*.5+.5)); + p.yz*=r2(.785); + } + } + else if(U.x>400&&U.x<500){ + vec3 p=hash3()*vec3(0,.9,1); + p-=vec3(0,.5,.5); + for(int i=0;i<3;i++){ + p.x-=.1-f*.1; + p/=dot(p*.5,p*7); + p.yz*=r2(sin(p.z*5)*1.4); + ivec2 q=pr(p*(.7+f*.5),ro,rd); + if(q.x>0) ad(q,mix(vec3(1,.4,.2),vec3(.1,.4,1),sin(p.x*20)*.5+.5)-U.x*.0005); + } + } + else if(U.x>500&&U.x<504){ + vec3 p=hash3()*vec3(max(0.,-.5+f*5),.02,.02); + p-=vec3(0,.01,.01); + p.x-=.1-f*.1; + p.z+=.15+f*.05; + p.y+=.015-f*.06; + for(int i=0;i<2;i++){ + ivec2 q=pr(p*(.7+f*.25),ro,rd); + if(q.x>0) ad(q,vec3(1,.2,.1)); + p.z-=.3+f*.1; + } + } + uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 v=rd*normalize(vec3(uv,.5)); + vec3 c=vec3(.2+f*.2,.25,.5)-length(sin(abs(v.z)-f*.5))*.4; + c+=pow(re(ivec2(U))*.4,vec3(.45)); + c-=0.4*texture(texNoise,v.yz).r; + c-=0.1*texture(texTex1,v.yz*2).r; + c+=0.1*texture(texFFTSmoothed,abs(v.z*.1)-.05).r; + out_color = vec4(c,1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/musk-qualif-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/musk-qualif-rev2024.glsl new file mode 100644 index 000000000..e6312f748 --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/musk-qualif-rev2024.glsl @@ -0,0 +1,124 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +#define T fGlobalTime +#define O(X) sin(X*T*3.14159*171/60) +#define M(X,Y) (mod(X,Y+Y)-Y) + +mat2 rot(float a) { float c=cos(a),s=sin(a); return mat2(c,s,-s,c); } + +mat2 _R2; + +float df(vec3 p) { + p.xy*=rot(-p.z*0.1+O(0.1)); + vec3 rp=M(p,2); + //float d=length(p)-1+O(1)*0.01; + float d=1e9; + d=min(d,p.y+2); + d=min(d,2-p.y); + d=min(d,p.x+2); + d=min(d,2-p.x); + d=min(d,length(rp)-0.5-O(1)); + float s=1; + for (int i=0; i<10; i+=1) { + p.xz*=_R2; + p.yz*=_R2; + vec3 rp2=M(p,s); + s*=0.5; + d=max(d-0.1*s,min(d,length(rp2.xz)-s)); + d=max(d-0.1*s,min(d,length(rp2.yz)-s)); + } + return d; +} + +vec3 nf(vec3 p) { + vec2 e=vec2(0,1e-3); + return normalize(vec3( + df(p+e.yxx)-df(p-e.yxx), + df(p+e.xyx)-df(p-e.xyx), + df(p+e.xxy)-df(p-e.xxy) + )); +} + +void main(void) +{ + _R2=rot(0.1); + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, uv.x*0.5-0.5 ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec3 col=vec3(0); + + float s=1.0; + for (int i=0; i<10; i+=1){ + + //uv.xy += sin(uv.yx*s); + s*=0.5; + } + + float t=1e-3; + vec3 pos = vec3(0,0,-4); + pos.z+=T*16+O(2); + vec3 dir=normalize(vec3(uv.xy,1)); + int maxit=100,i; + for (i=0; i100) break; + p+=r*d; + } + + vec3 col=atm/3.0; + + if(abs(uv.y)<0.1*curve(time, 40)+0.2 - d/3) { + col += 0.3; + col.yz *= rot(time*0.2 + abs(uv.x)); + + + } + + + //col=mix(col,(1-col)*sin(uv.x*10)*10, clamp(rev/2,0,1)); + //col += rev*vec3(0.3,0.4,1.2) * 1; + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/nusan-qualif-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/nusan-qualif-rev2024.glsl new file mode 100644 index 000000000..df8d0160e --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/nusan-qualif-rev2024.glsl @@ -0,0 +1,159 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; + +mat2 rot(float a) { + float sa=sin(a); + float ca=cos(a); + return mat2(ca,sa,-sa,ca); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return min(0, max(p.x,max(p.y,p.z))) + length(max(p,0)); +} + +float fa=0.3; +float fft(float t) { + + return texture(texFFTSmoothed, fract(t)*0.1+0.01).x*fa; +} +float ffti(float t) { + + return texture(texFFTIntegrated, fract(t)*0.1+0.01).x*fa; +} + + +float rnd(float t) { + return fract(sin(t*345.293)*754.834); +} + + +vec3 rnd(vec3 t) { + return fract(sin(t*345.293+t.yzx*534.929+t.zxy*643.045)*754.834); +} + +float map(vec3 p) { + + for(int i=0; i<3; ++i){ + p.xz *= rot(time*0.1 + ffti(0.01+0.01*i)*0.2); + p.xy *= rot(time*0.13 + ffti(0.013+0.013*i)*0.7); + p.xz = abs(p.xz)-2; + + } + + float d=box(p, vec3(0.3)); + + p=abs(p)-10; + + p+=sin(p.yzx/3); + + d=min(d, box(p, vec3(0,10,0))); + + return d; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + fa = 0.2; + time = mod(fGlobalTime, 300); + time *= 128/120.0; + time += rnd(floor(time-length(uv)/3))*1000; + + vec3 s=vec3(0,0,-30); + s.x += sin(time*0.1 + ffti(0)*1) * 2; + vec3 r=normalize(vec3(uv, 3)); + vec3 p=s; + + vec3 col=vec3(0); + + float md=10000; + vec3 mn=vec3(1,0,0); + + for(int i=0; i<200; ++i){ + + float d=map(p); + if(d1000) break; + p+=r*d*0.5; + } + + md *=3; + + float ra=atan(mn.y,mn.x)/6.28; + ra *= ceil(md)*5; + + + ra += (rnd(floor(md))-0.5) * time * 5; + + float id=rnd(floor(md)+rnd(floor(ra)+0.3)); + + col += step(0.01,md)*step(fract(ra),0.8) * step(fract(md),0.8) * rnd(vec3(id, 0.7,0.5)); + + col *= exp(-0.1*fract(time-length(uv)/3)); + col *= 1.2-abs(uv.y); + + if(dot(col,vec3(0.33))<0.05) { + float t2=time; + col=vec3(1,0.5,0.3); + col.xz *= rot(t2+uv.x); + col.yz *= rot(t2*1.3+uv.y); + col=abs(col); + + } + + vec3 lum = vec3(dot(col,vec3(0.33))); + float lim=abs(uv.y)-0.3+md/20; + + vec3 prev = vec3(0); + vec2 of=uv/60; + prev.x += texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy-of).x; + prev.y += texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy-of*0.2).y; + prev.z += texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy+of).z; + + lum *= abs(lim)*3; + + lum=mix(lum, prev, 0.95); + + + if(lim>0) { + col = lum; + } + + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/ponk-final-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/ponk-final-rev2024.glsl new file mode 100644 index 000000000..1b2c10e3d --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/ponk-final-rev2024.glsl @@ -0,0 +1,153 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +#define time fGlobalTime + +mat2 rot (float a) { float c=cos(a),s=sin(a); return mat2(c,-s,s,c); } + +float gyroid (vec3 p) { return dot(cos(p),sin(p.yzx)); } + +float fbm(vec3 p) +{ + float result = 0.; + float a = .5; + for (float i = 0.; i < 3.; ++i) + { + p += result; + p.z += time*.2; + result += abs(gyroid(p/a)*a); + a/=2.; + } + return result; +} +float fbm2(vec3 p) +{ + float result = 0.; + float a = .5; + for (float i = 0.; i < 9.; ++i) + { + p += result*.1; + p.z += time*.1; + result += abs(gyroid(p/a)*a); + a/=2.; + } + return result; +} + + +vec2 momo (vec2 p, float count) +{ + float a= 6.283/count; + float an = mod(atan(p.y,p.x)+a/2.,a)-a/2.; + return vec2(cos(an),sin(an))*length(p); +} + +float map(vec3 p) +{ + float dist = 100.; + + float t = time*6.28*2.; + t += sin(t); + t *= .2; + float b = abs(sin(t*2.)); + t += p.z*.5; + p.xz *= rot(t); + p.xy *= rot(t); + p.xy = momo(p.xy, 5.); + p.x -= 1.*b; + p.y = abs(p.y); + //p.x = abs(p.x)-b; + //p.xz *= rot(t); + //p.yz *= rot(sin(t)*2.); + //p.xz *= rot(3.14/4.); + //p.xy *= rot(3.14/4.); + p = abs(p)-vec3(.8); + + dist = max(p.x, max(p.y, p.z)); + dist += fbm(p*1.)*.5*b; + dist += fbm(p*20.)*.001; + + dist = abs(dist)-.1; + + + return dist; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 pos = vec3(0,0,7); + vec3 ray = normalize(vec3(uv, -1.5)); + float total = 0.; + float dither = fbm2(vec3(uv,0.)*12345678.); + float shade = 0.; + const float count = 200.; + for (float i = count; i > 0.; --i) + { + float dist = map(pos); + if (dist < .0001) + { + shade += 0.001; + dist = 0.002; + } + if (total > 10.) break; + dist *= .9+.1*dither; + total += dist; + pos += ray * dist; + } + vec3 color = vec3(0.); + + vec3 e = vec3(1000./v2Resolution, 0.); + +#define T(u) fbm2(ray*3.+u) + vec3 normal = normalize(T(0.)-vec3(T(e.xzz),T(e.zyz),.7)); + color = 0.5 + 0.5 * cos(vec3(1,2,3)*5.9 + (normal.z*3.)); + color *= smoothstep(.1,.0,T(0.)-.8);//+abs(sin(time*6.*2.))*.1); + color *= smoothstep(.0, .9, length(uv)); + + if (total < 10.) + { + color = 0.5 + 0.5 * cos(vec3(1,2,3)*5.5+shade*300.); + } + out_color = vec4(color, 1); +} + + + + + + + + + + + diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/ponk-qualif-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/ponk-qualif-rev2024.glsl new file mode 100644 index 000000000..ab4d84f46 --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/ponk-qualif-rev2024.glsl @@ -0,0 +1,136 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +#define time fGlobalTime +float fft; + +mat2 rot(float a) +{ + float c=cos(a),s=sin(a); + return mat2(c,-s,s,c); +} + +float gyroid (vec3 p) +{ return dot(cos(p),sin(p.yzx)); +} + +float fbm (vec3 p) +{ + float result = 0.; + float a = .5; + for (float i = 0.; i < 3.; ++i) + { + p += result; + p += time*.1; + result += gyroid(p/a)*a; + a /= 2.; + } + return result; +} + +float map(vec3 p) +{ + float dist = 100.; + + float a = 1.; + float t = time*1.; + t = pow(fract(t),.4)+floor(t); + t *= 3.; + //t +=p.z*.9; + + p.xz *= rot(time); + p.yx *= rot(time); + + vec3 e = vec3(.1,.1*abs(sin(time*1.)),0); + + float r = .5+abs(sin(time*10.))*.5; + //r += fft*1.; + + for (float i = 0.; i < 12.; ++i) + { + + p.x = abs(p.x)-r*a; + p.xz *= rot(t*a); + p.yz *= rot(t*a); + p = p - clamp(p, -e, e); + float b = length(p)-.01*a; + dist = min(dist, b); + a/=1.8; + } + + + return dist; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + fft = texture(texFFT, abs(uv.x)).a; + + vec3 pos = vec3(0,0,10); + vec3 ray = normalize(vec3(uv, -1.)); + float shade = 0.; + float dist = 100.; + float total = 0.; + const float count = 100.; + + for (float i = count; i > 0.; --i) + { + dist = map(pos); + if (dist < .001) + { + shade = i/count; + break; + } + pos += ray * dist; + total += dist; + } + vec3 back = vec3(smoothstep(1., -.5, length(uv))); + vec3 seed = vec3(uv*10.,0.); + seed.xy = vec2(atan(seed.y, seed.x), log(length(seed.xy))*.2-time); + vec3 tint2 = 0.5 + 0.5 * cos(vec3(1,2,3)+length(uv)*4.); + back = tint2*smoothstep(.01,.0,abs(abs(fbm(seed))-.5)-.2); + vec3 color =back; + if (total < 10.) + { + + vec2 e = vec2(.001,0); + vec3 normal = normalize(dist-vec3(map(pos+e.xyy),map(pos+e.yxy),map(pos+e.yyx))); + + + vec3 tint = 0.5 + 0.5 * cos(vec3(1,2,3)+length(pos)*3.); + float light = dot(reflect(ray, normal), normalize(vec3(0,1,-1))); + color = vec3(tint*shade); + color += pow(light, 3.); + } + out_color = vec4(color, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/totetmatt-qualif-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/totetmatt-qualif-rev2024.glsl new file mode 100644 index 000000000..3c94251a0 --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/totetmatt-qualif-rev2024.glsl @@ -0,0 +1,157 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +// I'm still NOt a bot +// Party Party ! KORE DA ! +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float bpm = 174/60*fGlobalTime; +float frw = bpm *4.; + +vec3 erot(vec3 p,vec3 ax,float t){ + return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t); + } +float txt(vec2 p){ + + float t= floor(bpm)+smoothstep(.1,.9,fract(bpm)); + p = erot(p.xyy,vec3(0.,0.,1),t*(step(.3,length(p))-.5)).xy; + return texture(texRevisionBW,clamp(p*vec2(1.,-1.),-.5,.5)-.5).x; + } +vec3 path(vec3 p){ + + vec3 o = vec3(0.); + o.x +=sin(p.z*.01)*30; + o.x +=tanh(cos(p.z*.053)*4)*5;; + o.y +=cos(p.z*.033)*20;; + o.y +=tanh(sin(p.z*.043)*4)*5;; + return o; + } +mat3 orth(vec3 p){ + vec3 z = normalize(p),x=vec3(z.z,0.,-z.x); + return mat3(x,cross(z,x),z); + } +float box(vec2 p,vec2 b){p=abs(p)-b;return length(max(vec2(0.),p))+min(0.,max(p.x,p.y));} +vec3 cy(vec3 p,float pump){ + + vec4 s = vec4(0.); + mat3 o = orth(vec3(-1.,2.,-3.)); + for(float i=0;i++<5.;){ + p*=o; + p+=sin(p.xyz); + s+=vec4(cross(sin(p),cos(p.yzx)),1.); + s*=pump; + p*=2.; + } + return s.xyz/s.w; + } +vec3 pcg3d(vec3 p){ + + uvec3 q= floatBitsToUint(p)*123457u+1234567890u; + q.x +=q.y*q.z;q.y +=q.x*q.z;q.z +=q.y*q.x; + q^=q>>16u; + q.x +=q.y*q.z;q.y +=q.x*q.z;q.z +=q.y*q.x; + return vec3(q)/float(-1U); + } +vec2 sdf(vec3 p){ + vec3 c = cy(p,2.); + vec3 ph =path(p); + vec3 hp=p-ph; + vec2 h; + h.x = box(hp.xy-c.yz*.4,vec2(1.,2.)); + h.y = 1.+step(.9,fract(p.y))+length(c); + + vec3 tp=p-c*.4; + vec2 t; + t.x = dot(vec3(0.,1,0),tp)-step(-10,-p.z)*100+dot(sin(tp*.45),cos(tp.yzx*.12))/.13; + h.x = max(-h.x,t.x*.13); + + + tp=p-ph; + + tp.z = mod(tp.z,10)-5.; + tp=erot(tp,vec3(0.,1,0),bpm+floor(p.z/10)); + vec2 q =vec2((1-txt(tp.xy))*.1,abs(tp.z)); + t.x = max(length(tp.xy)-.5, length(max(vec2(0.),q))+min(0.,max(q.x,q.y))); + + h=t.x< h.x ? t:h; + + + tp=p-ph; + + + t.x = max(abs(tp.z-frw)-2., length(tp.xy)-abs(length(c)*.7)); + t.y = -1.; + h=t.x< h.x ? t:h; + return h; + + } + + #define q(s) s*sdf(p+s).x + vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); +vec3 rnd= pcg3d(vec3(uv,bpm)); + float wheeeee = clamp(tanh(sin(bpm*.125+rnd.x*.1)*4),0.,1.); + vec3 col = vec3(0); + uv *= 1-.5*step(.4,abs(uv.y)); + + uv = erot(uv.xyy,vec3(0.,0.,1),sin(bpm*0.125+cos(bpm*.5))).xy; + vec3 ro= vec3(0.5,0.5,-5.+frw),rt=vec3(0.,0.,5.+frw); + ro=erot(ro,vec3(0.,0.,1),bpm*.5); + ro+=path(ro); + rt+=path(rt); + vec3 rd= orth(rt-ro)*normalize(vec3(uv,1.-.9*wheeeee)); + vec3 rp=ro; + vec3 acc=vec3(0.); + vec3 light =vec3(1.,2.,-3.+frw); + light +=path(light); + vec2 d; + float rl=0.,i=0;; + for(;i++<128;){ + + d = sdf(rp); + if(d.y <=0){ + vec3 cc= d.y ==-1. ? sin(vec3(.2,.5,.9)+rp.z)*.5 :vec3(.2,.5,.9); + acc+=cc*exp(-abs(d.x))/10; + + d.x = max(.001,abs(d.x)); + } + rl+=d.x; + rp=ro+rd*rl; + if(d.x< .001)break; + } + if(d.x< .001){ + vec3 n = norm(rp,.001); + vec3 ld = normalize(light-rp); + float dif = max(0.,dot(ld,n)); + float spc = max(0.,pow(dot(reflect(ld,n),rd),32)); + float sss = clamp(sdf(rp+ld*.4).x/.4,0.,1.); + float fre = pow(1+dot(rd,n),4); + vec3 cc= d.y >1.9 ? vec3(.9,.5,.2)*sqrt(texture(texFFTSmoothed,fGlobalTime+rp.z+d.y).r)*10:vec3(.2); + col = cc*(dif+sss*.5)+spc*vec3(.9,.5,.2); + col = mix(vec3(.1),col,1-fre); + } + col = mix(col,mix(vec3(.2,.5,.9),vec3(.9,.5,.2),uv.y*2),1-exp(-.00004*rl*rl*rl)); + + out_color = vec4(col+acc,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/wrighter-qualif-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/wrighter-qualif-rev2024.glsl new file mode 100644 index 000000000..1d0804b59 --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/wrighter-qualif-rev2024.glsl @@ -0,0 +1,149 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define T fGlobalTime +#define R v2Resolution +#define pi acos(-1.) +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + +uint seed = 12354u; + +uint hashi(uint x){ + x ^= x >> 16; + x *= 0x85763927u; + x ^= x >> 16; + x *= 0x85763927u; + x ^= x >> 16; + return x; +} + +#define hf() float(seed = hashi(seed))/float(0xFFFFFFFFu) +#define hfs(x,y,z) float(hashi(uint(x*125 + y*632 + z*754))) + +vec2 samp_circ(){ + vec2 X = vec2(hf(),hf()); + return vec2(cos(X.x*pi*2),sin(X.x*pi*2))*sqrt(X.y); +} + +ivec2 proj_p(vec3 p){ + float sc = floor(0.5*T/60*174); + p.xz *= rot(T + sc); + + p.yz *= rot(T); + + p.z += 2.5; + + float z = p.z; + + p.xy /= p.z; + float dof_amt = 0.04; + float dof_foc = 2.6 + sin(T + sin(T))*0.2; + + vec2 dof = samp_circ(); + p.xy += (p.z - dof_foc)*dof_amt*dof; + + ivec2 q = ivec2(-1); + if(z > 0.){ + q = ivec2((p.xy+0.5)*vec2(R.y/R.x,1)*R); + } + return q; +} + +#define U gl_FragCoord.xy + +void add(ivec2 q, vec3 col){ + uvec3 qcol = uvec3(col*1000); + imageAtomicAdd(computeTex[0],q,qcol.x); + imageAtomicAdd(computeTex[1],q,qcol.y); + imageAtomicAdd(computeTex[2],q,qcol.z); +} +vec3 fetch(ivec2 q){ + return vec3( + imageLoad(computeTexBack[0],q).x, + imageLoad(computeTexBack[1],q).x, + imageLoad(computeTexBack[2],q).x + )/1000.0; +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 col = vec3(0); + + seed = hashi(uint(U.x *1025.125 + U.y*316135 + 18235)); + + vec3 p = vec3(hf(),hf(),hf()); + + + for(float i = 0.; i < 10; i++){ + float X = hf(); + if(X < 0.5){ + p.yz *= rot(1.7); + p = abs(p) - .3; + p.xz *= rot(0.7 +T); + p /= dot(p,p)*1.; + } else { + p = sin(p.zxy*1.4); + p += sin(p.zxy*5.); + } + ivec2 q = proj_p(p); + + vec3 C = 0.5 + 0.5 * sin(vec3(3,2,1)*dot(p,p)*1); + C = pow(C,vec3(0.4)); + if(all(greaterThan(q,ivec2(0)))){ + add(q, C); + } + + } + + ivec2 id = ivec2(U); + + uv = U.xy/R; + col = fetch(id); + vec2 md = 0.5*vec2(R.x/R.y,1); + for(float i = 0.; i < 20.; i++){ + vec2 fluv = floor(uv/md); + ivec2 iuv = ivec2(fluv/md*R); + float X = hfs(fluv.x,fluv.y,T); + if(X > 0.05){ + //col = fetch(iuv); + break; + } + md/= 2.0; + } + + col *= 0.5; + col = max(col,0); + col = col/(col + 1); + + col = 1.-col; + col = pow(col,vec3(0.4545454545)); + out_color = vec4(col,1); +} + + + + diff --git a/shader_file_sources/2024_03_29_shader_showdown_revision_2024/z0rg-qualif-rev2024.glsl b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/z0rg-qualif-rev2024.glsl new file mode 100644 index 000000000..995c557c1 --- /dev/null +++ b/shader_file_sources/2024_03_29_shader_showdown_revision_2024/z0rg-qualif-rev2024.glsl @@ -0,0 +1,123 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define FFT(a) (texture(texFFT, a).x) +#define rot(a) mat2(cos(a), -sin(a), sin(a), cos(a)) +#define sat(a) clamp(a, 0., 1.) +float _cube(vec3 p, vec3 s) +{ + vec3 l = abs(p)-s; + return max(l.x, max(l.y, l.z)); +} +float _seed; +vec2 _min(vec2 a, vec2 b) +{ + if (a.x < b.x) + return a; + return b; +} + +float hash(float seed) +{ + return fract(sin(123.456*seed)*123.456); +} +float rand() +{ + return hash(_seed++); +} +vec2 map(vec3 p) +{ + vec3 pix = vec3(1.9); + p = floor(p/pix)*pix; + p.x += 5.; + p.z += fGlobalTime*155.; + p.xy *= rot(p.z*.05); + vec3 rep = vec3(15.); + p = mod(p+rep*.5,rep)-rep*.5; + vec2 shape = vec2(10000., -1.); + p.xz *= rot(fGlobalTime*.5); + float an = atan(p.z, p.x); + + shape = _min(shape, vec2(length(p)-.1-FFT(an), 0.)); + + for (float i = 0.; i < 8.; ++i) + { + float sz = mix(1.,2.,i/8.); + vec3 p2 = p; + // p2.yz *= rot(i); +// p2.xz *= rot(i+fGlobalTime*.5); + float repa = acos(-1.)*2./3.; + float an2 = atan(p2.x, p2.y); + float sector = mod(an2+repa*.5,repa)-repa*.5; + p2 = vec3(sin(sector), cos(sector), 0.)*length(p2)+vec3(0.,0.,p.z); + p2.y -= sz; + p2.xy *= rot(i); + p2.xz *= rot(i+fGlobalTime); + float cub = _cube(p2, vec2(.1,2.).yxx); + shape = _min(shape, vec2(cub, i)); + } + return shape; +} + +vec3 getNorm(vec3 p) +{ + vec2 e = vec2(0.01, 0.); + return -normalize(vec3(map(p-e.xyy).x, map(p-e.yxy).x, map(p-e.yyx).x)-vec3(map(p+e.xyy).x, map(p+e.yxy).x, map(p+e.yyx).x)); +} + +void main(void) +{ + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + _seed = texture(texNoise, uv).x+fGlobalTime; + + vec3 ro = vec3(0., 0., -5.)+vec3(rand()-.5, rand()-.5, 0.)*.1; + vec3 rd = normalize(vec3(uv, 1.)); + + vec3 p = ro; +vec3 col = vec3(0.); +vec3 accCol = vec3(0.); + for (float i = 0.; i < 128.; ++i) + { + vec2 res= map(p); + if (res.x < 0.01) + { + vec3 n = getNorm(p); + col = n*.5+.5; + col = vec3(.1); + break; + } + float beat = 1./3.; + vec3 rgb = abs(sin(p)); + rgb *= sat(sin(p.z*15.-fGlobalTime*10.)); + accCol += rgb.xyy*(1.-sat(res.x/1.5))*.1*sat(.4+.5*pow(mod(fGlobalTime, beat)/beat, 5.)); + p+=rd*res.x; + } + col += accCol; + col += vec3(1.)*FFT(abs(uv.x)-abs(uv.y)+fGlobalTime*.5); + float line = abs(uv.x-FFT(uv.y*.1)*10.)-.4; + col = mix(col, col.xxx*.3, sat(line*500.)); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_byte_jam_revision_2024/gasman.lua b/shader_file_sources/2024_03_30_byte_jam_revision_2024/gasman.lua new file mode 100644 index 000000000..a00fbeba7 --- /dev/null +++ b/shader_file_sources/2024_03_30_byte_jam_revision_2024/gasman.lua @@ -0,0 +1,79 @@ +function BOOT() + poke(16320+15*3,255) + poke(16321+15*3,255) + poke(16322+15*3,255) + + cls(0) + -- cls BEFORE printing stuff dammit + print("WE",10,0,1) + print("ARE",6,8,1) + print("MANY",4,16,1) + + img={} + for y=0,23 do + img[y]={} + for x=0,31 do + img[y][x]=pix(x,y) + end + end +end + +function TIC() + for i=0,14 do + poke(16320+i*3,i*16) + poke(16321+i*3,i*3) + poke(16322+i*3,i*2) + end + + t=time() + for sy=0,135 do + for sx=0,239 do + cx=sx-119.5 + cy=sy-67.5 + zx=math.abs(1/cx)*140+t/200 + zy=math.abs(1/cy)*100+t/200 + z=math.min(zx,zy) + if zy +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_byte_jam_revision_2024/jtruk.lua b/shader_file_sources/2024_03_30_byte_jam_revision_2024/jtruk.lua new file mode 100644 index 000000000..89986dc58 --- /dev/null +++ b/shader_file_sources/2024_03_30_byte_jam_revision_2024/jtruk.lua @@ -0,0 +1,210 @@ +T=0 +local SIN,COS,PI=math.sin,math.cos,math.pi +local TAU=PI*2 +local ABS=math.abs + +local RINGS={ + { + rI=10, + rO=20, + b={ + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + }, + }, + { + rI=20, + rO=30, + b={ + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0, + }, + }, + + { + rI=30, + rO=40, + b={ + 0,1,1,1,0,0,0,0, + 0,0,1,1,1,0,0,0, + }, + }, + { + rI=50, + rO=60, + b={ + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + }, + }, + { + rI=60, + rO=70, + b={ + 0,0,0,0,0,1,1,1,1,1,1,1,1, + 0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0, + }, + }, +} + +local XCAM,YCAM,ZCAM=0,0,0 + +function BDR(y) + vbank(0) + for i=0,15 do + local a=16320+i*3 + local int=i/15 + local r=127+SIN(T*.05+y*.01)*128 + local g=127+SIN(T*.04+y*.021)*128 + local b=127+SIN(T*.03+y*.017)*128 + + poke(a,r*int) + poke(a+1,g*int) + poke(a+2,b*int) + end +end + +function TIC() + XCAM=SIN(T*.02)*10 + YCAM=-ABS(SIN(T*.08))*10 + + vbank(0) + cls() + for i=0,10 do + local z=(ZCAM+i*25) + z=z%280 + drawSquare(0,0,z,50) + end + + vbank(1) + cls() + local a=T/32 + local z=600+SIN(T/40)*200 + for _,ring in ipairs(RINGS) do + local rI=ring.rI + local rO=ring.rO + drawRing(0,0,z,rI,rO,a,ring.b) + end + + T=T+1 + ZCAM=ZCAM+2 +end + +function drawSquare(xc,yc,zc,d) + local sc=1.6 + local iTiles=10 + local c=getC(zc) + for i=-iTiles,iTiles do + local o=(i/iTiles)*d + local p={ + x=xc+o/sc, + y=yc-d, + z=zc + } + p=proj(p) + pix(p.x,p.y,c) + + local p={ + x=xc+o/sc, + y=yc+d, + z=zc + } + p=proj(p) + pix(p.x,p.y,c) + + local p={ + x=xc-d/sc, + y=yc+o, + z=zc + } + p=proj(p) + pix(p.x,p.y,c) + + local p={ + x=xc+d/sc, + y=yc+o, + z=zc + } + p=proj(p) + pix(p.x,p.y,c) + end + + print("close enough",170,128,14) +end + +function getC(z) + return (z/280)*15 +end + +function drawRing(xc,yc,zc,rI,rO,aStart,bits) + local iPoints=#bits + local pILast = nil + local pOLast = nil + local rY=time()/600 + for i,b in ipairs(bits) do + local a=aStart + (i-1)/#bits * TAU + local sina=SIN(a) + local cosa=COS(a) + local pI={x=sina*rI,y=cosa*rI,z=0} + local pO={x=sina*rO,y=cosa*rO,z=0} + + pI=rotY(pI,rY) + pO=rotY(pO,rY) + + local tr={x=xc,y=yc,z=zc} + pI=trans(pI,tr) + pO=trans(pO,tr) + + pI=proj(pI) + pO=proj(pO) + + if i>1 and b>0 then + tri( + pI.x,pI.y, + pO.x,pO.y, + pILast.x,pILast.y, + 12) + tri( + pO.x,pO.y, + pILast.x,pILast.y, + pOLast.x,pOLast.y, + 12) + end + pILast=pI + pOLast=pO + end +end + +function proj(p) + local zD=3-p.z/100 + return { + x=120+(p.x-XCAM)/zD, + y=68+(p.y-YCAM)/zD, + } +end + +function rotY(p,a) + return { + x=p.x*COS(a)-p.z*SIN(a), + y=p.y, + z=p.x*SIN(a)+p.z*COS(a), + } +end + +function trans(p,t) + return { + x=p.x+t.x, + y=p.y+t.y, + z=p.z+t.z, + } +end + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_byte_jam_revision_2024/nusan.lua b/shader_file_sources/2024_03_30_byte_jam_revision_2024/nusan.lua new file mode 100644 index 000000000..016593939 --- /dev/null +++ b/shader_file_sources/2024_03_30_byte_jam_revision_2024/nusan.lua @@ -0,0 +1,32 @@ +r=math.random +s=math.sin +max=math.max +abs=math.abs +function SCN(y) +for k=0,47 do +v=(k//3)*(s(k%3+k%11+t/200+y/170+s(y/270+t/20)*3+(k%8>4 and 3 or 0))*0.5+0.5)*15 + +poke(0x3fc0+k,v) +end +end + +function TIC()t=time()//32 + +for i=0,1000 do +o=s(t/10)<0.5 and abs(s(t/10))*3+1 or 0 +x,y=r(240),r(136) + circb(x,y,o,pix(x,y)*max(s(t/20)*100,0.5)) +end +for i=0,1 do + circb(r(200)+120-100,r(100)+10,r(30),15) +end +u=s(t)*70*s(t/3)*s(t/7)*s(t/5) +for i=0,30 do +rect(r(240),90-u+i,r(10),u*2+100,15) +end +circb(120,68,40-fft(2)*4000,15) +end + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_byte_jam_revision_2024/tobach.lua b/shader_file_sources/2024_03_30_byte_jam_revision_2024/tobach.lua new file mode 100644 index 000000000..dd9006c3e --- /dev/null +++ b/shader_file_sources/2024_03_30_byte_jam_revision_2024/tobach.lua @@ -0,0 +1,107 @@ +--ohhh yea, i'm on stage +--hello revision!!! +--greetz to gasman, jtruk, aldroid, +--violet, nusan and numtek <3 + +sin=math.sin +cos=math.cos +abs=math.abs +saustab={} +currtab={} +for i=1,20 do + saustab[i]={math.random()*80,math.random()*10} +end + +for i=1,100 do + currtab[i]={math.random()*100,math.random()*30} +end + +curstr="Currywurst" +rvsnstr="Revision 2024" + +function heart(x,y) + --this is cheap don't do this + tri(109+x,68+y//1,120+x,85+y//1,132+x,68+y//1,1) + circ(115+x,68+y,6,1) + circ(125+x,68+y,6,1) + tri(110+x,68+y//1,120+x,83+y//1,131+x,68+y//1,2) + circ(115+x,68+y,5,2) + circ(125+x,68+y,5,2) +end + +function TIC() + cls() + t=time()//32 + --this is boring, lets do a plasma :3 + --for i=0,135 do + --line(0,i,240,i,sin(i/8+t/4+sin(i/3+t/3))*2+t/8) + --end + + --what an absolute CHOON this is!!! + for i=0,2 do + print("Greetz to... Slipstream, RiFT, Poo-Brain, Bitshifters, Torment, Logicoma, Marquee Design, Lemon., Team210, 5711, TUHB, FTG, DESiRE, and you !!",240-t*8%7200-i*3,70-abs(sin(t/4)*32)-i*3,i+2,true,8) + end + --thank you xxx for the currywurst delivery + --hahahaha <3 + + for y=0,135,2 do + for x=0,239,2 do + c=10+sin(x/32+y/17+t/4)*sin(y/32+sin(x/13+t/4)*sin(t/32+x/16))*2+t/8 + pix(x,y,c) + end + end + + elli(120,84,50,20,12) + elli(120,68,70,30,12) + ellib(120,68,70,30,13) + ellib(120,68,60,20,13) + elli(120,68,55,18,2) + for i=1,100 do + pix(75+currtab[i][1],55+currtab[i][2],3) + end + + elli(120,48,21,16,3) + elli(120,48,20,15,4) + elli(120,43,15,10,12) + rect(120,20,4,18,4) + rect(119,35,2,5,4) + rect(123,35,2,5,4) + + --this is making me hungry now... + --should've seen it coming :D + + for i=1,20 do + for j=0,5 do + circ(80+saustab[i][1],saustab[i][2]+58+j,8,1) + circ(80+saustab[i][1],saustab[i][2]+58+j,7,3) + end + end + for i=1,100 do + pix(70+currtab[i][1],50+currtab[i][2],4) + end + for i=1,#curstr do + --took long enough to figure out + --lol + c=string.sub(curstr,i,i) + for j=0,2 do + print(c,45+i*12+j,115+j+sin(i/2+t/4)*4,14-j,true,2) + end + end + + --cba making it into a function lol + for i=1,#rvsnstr do + c=string.sub(rvsnstr,i,i) + for j=0,2 do + print(c,30+i*12+j,10+j+sin(i/2+t/4+2)*2,14-j,true,2) + end + end + --love when it swaps keyboard + --layouts in the middle of a jam.... + heart(-80,50+sin(t/4)*2) + heart(80,50+sin(t/4)*2) + +end + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_0b5vr.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_0b5vr.glsl new file mode 100644 index 000000000..23e2b021b --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_0b5vr.glsl @@ -0,0 +1,194 @@ +#version 410 core + +#define saturate(x) clamp(x,0.,1.) +#define linearstep(a,b,t) saturate( ( (t)-(a) ) / ( (b)-(a) ) ) +#define lofi(i,j) (floor((i)/(j))*(j)) +#define repeat(i,n) for(int i=0;i1.62||abs(p.y)>.92){ + p=lofi(p,.01); + p=smin(p,-p,.1); + vec3 n=sin(9.0*ponky(vec3(4.0*p,time),.5)); + out_color=vec4(.2*PURPLE * step(.5,n.x),0); + out_color.xyz=pow(out_color.xyz,vec3(.4545)); + return; + } + if(abs(p.x)>1.6||abs(p.y)>.9){ + out_color=vec4(PURPLE,0); + out_color.xyz=pow(out_color.xyz,vec3(.4545)); + return; + } + + vec3 col=bg(p); + + // shadow + { + vec3 ro=vec3(p,-1); + vec3 rd=normalize(vec3(0,.2,1)); + float rl; + float shadow=1.; + repeat(i,50){ + float dist=map(ro+rd*rl).x; + if(dist<1E-4){ + shadow=0.; + break; + } + shadow=min(shadow,4.*dist/rl); + rl+=dist; + } + col*=mix(1.,shadow,.99); + } + + vec3 ro=vec3(0,0,2); + vec3 rd=normalize(vec3(p,-2)); + float rl; + vec3 rp; + vec4 isect; + + repeat(i,100){ + isect=map(rp); + rl+=isect.x; + rp=ro+rd*rl; + } + + if(isect.x<.01){ + vec3 l=normalize(vec3(1)); + vec3 n=nmap(rp); + vec3 h=normalize(l-rd); + col=vec3(.0)*(.5+.5*dot(n,l)); + + vec3 refl=reflect(rd,n); + col+=pow(.5+.5*ponky(refl+time,.5).x,5.); + //col+=bg(.1*refl.xy); + } + + col=pow(col,vec3(.4545)); + + out_color = vec4( col, 1.0 ); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Exca.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Exca.glsl new file mode 100644 index 000000000..1b5246de6 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Exca.glsl @@ -0,0 +1,351 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = fGlobalTime; +float fft = 0.0; +float ffts = 0.0; +float ffti = 0.0; +float glow1 = 0.0; +float glow2 = 0.0; +float glow3 = 0.0; +float beat = 0.0; +float beatstep = 0.0; +float bar = 0.0; +float barstep = 0.0; +vec2 uv = vec2(0.0); + +vec3 getcam(vec3 cam, vec3 target, vec2 uv, float fov) +{ + vec3 forward = normalize(target - cam); + vec3 right = normalize( cross(vec3(0,1,0), forward)); + vec3 up = normalize( cross(forward, right)); + return normalize( forward * fov + uv.x * right + uv.y * up); +} +vec3 rotate( vec3 p, float x, float y, float z) +{ + mat3 rotx = mat3( 1.0, 0.0, 0.0, 0.0, cos(x), -sin(x), 0.0, sin(x), cos(x)); + mat3 roty = mat3( cos(y), 0.0, sin(y), 0.0, 1.0, 0.0, -sin(y), 0.0, cos(y)); + mat3 rotz = mat3( cos(z), -sin(z), 0.0, sin(z), cos(z), 0.0, 0.0, 0.0, 1.0); + return rotx*roty*rotz * p; +} + + +vec3 palette( in float t, in vec3 a, in vec3 b, in vec3 c, in vec3 d ) +{ + return a + b*cos( 6.28318*(c*t+d) ); +} + +vec3 color1 = palette( time, vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,1.0),vec3(0.3,0.20,0.20)); + +vec2 rot2d( float a, vec2 p) +{ + return mat2( cos(a), -sin(a), sin(a), cos(a)) * p; +} + +vec3 repeat( vec3 p, vec3 q) +{ + return mod(p + q*0.5, q)-q*0.5; +} + + +float hexPrism( vec3 p, vec2 h ) +{ + const vec3 k = vec3(-0.8660254, 0.5, 0.57735); + p = abs(p); + p.xy -= 2.0*min(dot(k.xy, p.xy), 0.0)*k.xy; + vec2 d = vec2( + length(p.xy-vec2(clamp(p.x,-k.z*h.x,k.z*h.x), h.x))*sign(p.y-h.x), + p.z-h.y ); + return min(max(d.x,d.y),0.0) + length(max(d,0.0)); +} + +float octahedron( vec3 p, float s) +{ + p = abs(p); + return (p.x+p.y+p.z-s)*0.57735027; +} + + + +float sphere(vec3 p, float r) +{ + return length(p) - r; +} + +float ground(vec3 p, float h) +{ + return p.y - h; +} + +vec3 union(vec3 a, vec3 b) +{ + return a.x < b.x ? a : b; +} + +vec3 map( vec3 p ) +{ + vec2 ruv = rot2d( (ffti*0.3-ffts*2.0)*0.1, uv)+vec2(ffti*0.7, ffti*0.3); + + if(ffts > 0.85) p = rotate( p, floor(ruv.x*15.0)-0.5*ffti,floor(ruv.y*5.0)+floor(uv.x*5.0),0.0); + else if(ffts > 0.4) p = rotate( p, floor(ruv.x*3.0)-0.5*ffti,floor(uv.y*0.0)+floor(uv.x*3.0),0.0); + else if(ffts > 0.3) p = rotate( p, floor(ruv.x*1.0)-0.5*ffti,floor(ruv.y*10.0)+floor(uv.x*5.0),0.0); + else if(ffts > 0.2) p = rotate( p, floor(ruv.x*1.0)-0.5*ffti,floor(uv.y*5.0)+floor(uv.x*2.0),0.0); + else if(ffts > 0.1) p = rotate( p, floor(uv.x*4.0)-0.5*ffti,floor(uv.y*2.0)+floor(ruv.x*5.0),0.0); + else p = rotate( p, floor(uv.x*1.0)-1.5*ffti,floor(uv.y*1.0)+floor(ruv.x*1.0),0.0); + + vec3 sphereP = repeat( p, vec3( 1.0, 0.0,1.0)); + + float distanceFromCenter = length( p); + float distanceSize = 1.0 - smoothstep(1.0, 5.0, distanceFromCenter); + + float bm = mod(beat,4.0); + + float s1 = sphere(sphereP, 0.5 * distanceSize); + if(bm < 1.0) s1 = hexPrism(sphereP, vec2(0.2,0.4) * distanceSize); + else if(bm < 2.0) s1 = octahedron(sphereP, 0.8 * distanceSize); + + float innerRadius = (0.2+ 0.2 * ffts)*distanceSize; + float innerOffset = (0.25 + ffts*0.25)*distanceSize; + float sx1 = sphere(sphereP - vec3(innerOffset, 0.0,0.0), innerRadius); + float sx2 = sphere(sphereP - vec3(-innerOffset, 0.0,0.0), innerRadius); + float sy1 = sphere(sphereP - vec3(0.0, -innerOffset,0.0), innerRadius); + float sy2 = sphere(sphereP - vec3(-0.0, innerOffset,0.0), innerRadius); + float sz1 = sphere(sphereP - vec3(0.0, 0.0,-innerOffset), innerRadius); + float sz2 = sphere(sphereP - vec3(-0.0, 0.0,innerOffset), innerRadius); + + float si = min(sx1, sx2); + si = min(si, sy1); + si = min(si, sy2); + si = min(si, sz1); + si = min(si, sz2); + + s1 = max(s1, -si); + + float lightSphere = sphere(sphereP, 0.07*ffts + 0.05*(sin(floor(p.x+0.5)+ffti*4.0) + cos(ffti*10.0-floor(p.z+0.5)))); + + float g1 = ground(p, -2.0); + + glow1 += 1.0/lightSphere; + //glow1 += smoothstep(0.0, 0.5, lightSphere); + + + vec3 S1 = vec3(s1, 1.0, 0.0); + vec3 LS1 = vec3(lightSphere, 2.0, 0.0); + vec3 GROUND1 = vec3( g1, 3.0, 0.0); + + + vec3 OUT = union(GROUND1, union(S1, LS1)); + + return OUT; +} + +vec3 march( vec3 cam, vec3 rd, out vec3 p, out float travel) +{ + float minim = 99.0; + for(int i = 0; i < 100; i++) + { + p = cam + rd*travel; + vec3 r = map(p); + travel += r.x; + minim = min(r.x, minim); + if(r.x < 0.001){ + return r; + } + if(travel > 90.0){ + travel = 90.0; + return vec3( minim, 0.0, 0.0); + } + } + return vec3( minim ,0.0, 0.0); +} + +vec3 normal( vec3 p ) +{ + vec3 c = map(p); + vec2 e = vec2(0.001, 0.0); + return normalize( vec3( + map(p+e.xyy).x, + map(p+e.yxy).x, + map(p+e.yyx).x + )-c.x); +} + +float diffuse( vec3 p, vec3 n, vec3 l) +{ + return max( 0.0, dot(n, normalize(l-p))); +} + +vec2 barrelDistortion(vec2 uv, float k) +{ + float rd = length(uv); + float ru = rd * (1.0 + k * rd * rd); + uv /= rd; + uv *= ru; + return uv; +} + +void main(void) +{ + uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 ouv = uv; + uv -= 0.5; + + + ffti = texture(texFFTIntegrated,0.2).r; + ffts = texture(texFFTSmoothed, 0.15).r*30.0; + fft = texture(texFFT,0.2).r; + + uv = barrelDistortion(uv, 0.10 + smoothstep(0.0, 0.75, ffts)*2.5 * smoothstep(0.08, 0.2, length(uv-0.5))); + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + beat = floor(time * 110.0 / 60.0); + beatstep = fract( time * 130.0 / 60.0*1.0); + bar = floor(beat/4.0); + barstep = fract(beat/4.0); + + + vec3 col = vec3(0.0); + + vec3 target = vec3( + sin(ffti*0.05)*1.3, + cos(ffti*0.01)*0.3+0.8, + cos(ffti*0.02)*1.3 + cos(time*0.3)*1.0 + ); + vec3 cam = vec3( + sin(time*0.1)*1.3, + cos(time*0.1)*0.3+0.8, + cos(time*0.2)*1.3 + cos(time*0.3)*1.0 + ); + float fov = 0.5; + + vec3 light1 = vec3( + sin(time)*2.3, + cos(time)*0.3+3.0, + cos(time)*2.3 + cos(time*0.3)*1.0 + ); + + vec3 rd = getcam( cam, target, uv, fov); + + vec3 marchP = cam; + float marchT = 0.0; + vec3 res = march( cam , rd, marchP, marchT); + + if(res.y < 0.5 ){ + // bg + + } + else if(res.y < 1.5){ + // balls + vec3 n = normal(marchP); + vec3 l = color1 * diffuse( marchP, n, light1); + col =vec3(1.0) * l; + + // balls reflection + vec3 ref = reflect( rd, n); + vec3 refP = marchP; + float refT = 0.0; + vec3 refR = march( marchP - n*0.1, ref, refP, refT); + vec3 refC = vec3(0.0); + if(refR.y < 0.5 ){ + // ref1 bg + refC = vec3(0.0); + } + else if(refR.y < 1.5){ + // ref1 balls + vec3 n = normal(refP); + vec3 l = color1 * diffuse( refP, n, light1); + refC =vec3(1.0) * l; + } + else if(refR.y < 2.5){ + // ref1 inner light + refC =vec3(1.0); + } + else if(refR.y < 3.5){ + // ref1 ground + refC = vec3(1.0); + } + col = mix(col, refC,0.4); + + + } + else if(res.y < 2.5){ + // inner light + col =vec3(1.0); + } + else if(res.y < 3.5){ + // ground + float xl = length( mod(marchP.x*3.0,4.0)-2.0); + float zl = length( mod(marchP.z*3.0,4.0)-2.0); + col = vec3( 0.1,0.2,0.3) * (1.0-xl * zl)*1.1; + + // ground reflection + vec3 n = normal(marchP); + vec3 ref = reflect( rd, n); + vec3 refP = marchP + n*0.1; + float refT = 0.0; + vec3 refR = march( marchP + n*0.1, ref, refP, refT); + vec3 refC = vec3(0.0); + if(refR.y < 0.5 ){ + // ref1 bg + refC = vec3(0.0); + } + else if(refR.y < 1.5){ + // ref1 balls + vec3 n = normal(refP); + vec3 l = color1 * diffuse( refP, n, light1); + refC =vec3(1.0) * l; + } + else if(refR.y < 2.5){ + // ref1 inner light + refC =vec3(1.0); + } + else if(refR.y < 3.5){ + // ref1 ground + refC = vec3(1.0); + } + col = refC; + } + + col += glow1*0.002; + + col = mix( col, vec3(0.0), smoothstep(10.0, 15.0, marchT)); + + float bm = mod(bar,4.0); + if(bm < 1.0) col.rgb = col.grb; + else if(bm < 2.0) col.rgb = col.brg; + else if(bm < 3.0) col.rgb = col.rbg; + else if(bm < 4.0) col.rgb = col.gbr; + + + ouv -= 0.5; + ouv *= 1.05-ffts*0.15; + ouv += 0.5; + vec3 prev = texture( texPreviousFrame, rot2d(ffti, ouv)).rgb + texture( texPreviousFrame, ouv).rgb; + prev *=0.5; + col = mix( + col, + col + palette(time*0.3,vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,1.0),vec3(0.3,0.20,0.20))* prev*0.5, smoothstep(0.005, 0.2, ffts)); + + out_color = vec4(col,1.0); + +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Kamoshika.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Kamoshika.glsl new file mode 100644 index 000000000..ffdf5b8b6 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Kamoshika.glsl @@ -0,0 +1,299 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +//#define time fGlobalTime +#define hash(x) fract(sin(x) * 1e4) + +const float PI = acos(-1.); +const float PI2 = PI * 2.; +const float EPS = 0.0001; +const float FAR = 1e5; +const float numSamples = 8.; +const float numSph = 20.; +const float lightSize = 0.1; +const float minRa = 0.1; +const float BPM = 175.; +const vec3 boxSize = vec3(2, 1, 2); + +float time; +float Time; +vec3 lightPos; + +float hash12(vec2 p) { + return hash(dot(p, vec2(14.6121, 11.7232))); +} + +vec3 rotate3D(vec3 v, float a, vec3 ax) { + ax = normalize(ax); + return mix(dot(ax, v) * ax, v, cos(a)) - sin(a) * cross(ax, v); +} + +float noise3D(vec3 p) { + vec3 i = floor(p); + vec3 f = fract(p); + vec3 b = vec3(31, 47, 37); + vec4 h = vec4(0, b.yz, b.y + b.z) + dot(i, b); + f = f * f * (3. - 2. * f); + h = mix(hash(h), hash(h + b.x), f.x); + h.xy = mix(h.xz, h.yw, f.y); + return mix(h.x, h.y, f.z); +} + +float ease(float x, float s) { + return floor(x) + smoothstep(0.5 - s, 0.5 + s, fract(x)); +} + +vec4 sphIntersect(vec3 ro, vec3 rd, vec3 ce, float ra) { + float t = -1.; + vec3 n = vec3(0, 1, 0); + + vec3 oc = ro - ce; + float b = dot(oc, rd); + float c = dot(oc, oc) - ra * ra; + float h = b * b - c; + if(h < 0.) { + return vec4(n, t); + } + + t = -b - sqrt(h); + n = (ro + t * rd - ce) / ra; + return vec4(n, t); +} + +float objNoise(vec3 p, float ID) { + float h = noise3D((p + ID * 2.) * 2.) * 2.; + return abs(h - 1.); +} + +float bumpFunc(vec3 p, float ID, float thd) { + float g = objNoise(p, ID) / thd; + return sqrt(1. - g * g); +} + +vec3 bumpMap(vec3 p, vec3 n, float ID, float thd) { + const vec2 e = vec2(EPS, 0.); + float factor = 0.02; + float ref = bumpFunc(p, ID, thd); + vec3 grad = (vec3(bumpFunc(p - e.xyy, ID, thd), + bumpFunc(p - e.yxy, ID, thd), + bumpFunc(p - e.yyx, ID, thd)) - ref) / e.x; + grad -= n * dot(n, grad); + return normalize(n + grad * factor); +} + +vec4 concSphIntersect(vec3 ro, vec3 rd) { + float t = -1.; + vec3 n = vec3(0, 1, 0); + + float b = dot(ro, rd); + float ro2 = dot(ro, ro); + float rc = sqrt(ro2); + float ho = b * b - ro2; + + for(float i = 0.; i < numSph * 2.; i++) { + float k = numSph - i; + float s = 1.; + if(i >= numSph) { + k = i - numSph + 1.; + s = -1.; + } + + float T = ease(Time * .5 - 0.5, .2) + time * .5; + float Tr = T * 5.; + float ra = (k + fract(Tr) - 1.) / numSph; + ra = exp(ra * log(1. / minRa)) * minRa; + + float h = ho + ra * ra; + if(h < 0.) { + if(i < numSph) { + i = numSph * 2. - i - 1.; + } + continue; + } + + float ts = -b - s * sqrt(h); + if(ts < 0.) { + continue; + } + + vec3 rp = ro + ts * rd; + float lrp = length(rp); + vec3 nrp = rp / lrp; + + float ID = mod(k - floor(Tr), 500.); + float a = T * 0.3 + ID * 2.3; + vec3 ax = normalize(hash(vec3(1, 2, 3) * ID) - .5); + vec3 npos = rotate3D(nrp, a, ax); + float g = objNoise(npos, ID); + float thd = mix(0.1, 0., lrp); + + if(g < thd) { + t = ts; + n = bumpMap(npos, s * npos, ID, thd); + n = rotate3D(n, -a, ax); + break; + } + } + + return vec4(n, t); +} + +vec4 boxIntersect(vec3 ro, vec3 rd) { + vec3 srd = sign(rd); + vec3 v = (srd * boxSize - ro) / rd; + float t = min(v.x, min(v.y, v.z)); + vec3 n = -srd * step(v, v.yzx) * step(v, v.zxy); + return vec4(n, t); +} + +vec4 castRay(vec3 ro, vec3 rd) { + float t = FAR; + vec3 n = vec3(0, 1, 0); + + vec4 tmp = concSphIntersect(ro, rd); + if(tmp.w > 0.) { + t = tmp.w; + n = tmp.xyz; + } + + tmp = sphIntersect(ro, rd, lightPos, lightSize); + if(tmp.w > 0. && tmp.w < t) { + t = tmp.w; + n = tmp.xyz; + } + + tmp = boxIntersect(ro, rd); + if(tmp.w < t) { + t = tmp.w; + n = tmp.xyz; + } + + return vec4(n, t); +} + +float fakeAO(vec3 p) { + vec3 q = abs(abs(p) - boxSize); + float d = max(q.x, max(q.y, q.z)); + d = q.x + q.y + q.z - d; + float ao = mix(.1, .7, d); + ao = min(ao, dot(p, p)); + ao = min(ao, length(p.xz) * 1. + .3); + return clamp(ao, 0., 1.); +} + +vec3 render(vec3 ro, vec3 rd) { + vec3 col = vec3(0); + + vec4 res = castRay(ro, rd); + float t = res.w; + vec3 n = res.xyz; + + vec3 rp = ro + t * rd; + vec3 lv = lightPos - rp; + float L = length(lv); + if(L < lightSize + EPS) { + col = vec3(1); + } + + vec3 albedo = vec3(0.9); + float amp = pow(sin(fract(Time) * PI2) * .5 + .5, 3.) * 3. + 0.05; + float po = amp / (L * L); + vec3 ld = lv / L; + float diff = max(dot(n, ld), 0.); + float spec = pow(max(dot(reflect(ld, n), rd), 0.), 30.); + float sh = 1.; + if(castRay(rp + n * EPS, ld).w < L - lightSize - EPS * 2.) { + sh = 0.1; + } + float metal = dot(rp, rp) < 1. ? 0.7: 0.9; + float ao = fakeAO(rp); + col += albedo * mix(diff, spec, metal) * po * sh; + col += albedo * ao * (amp * 0.01); + + return col; +} + +float stepNoise(float x, float n) { + float i = floor(x); + float s = 0.2; + float u = smoothstep(.5 - s, .5 + s, fract(x)); + float res = mix(floor(hash(i) * n), floor(hash(i + 1.) * n), u); + res /= (n - 1.) * 0.5; + return res - 1.; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1) * .5; + vec3 col = vec3(0); + + //col = uv.xyy; + //col += step(noise3D(vec3(uv * 3., fGlobalTime)), .5) * .5 + .5; + + for(float i = 0.; i < numSamples; i++) { + time = fGlobalTime; + vec2 seed = gl_FragCoord.xy + mod(time, 500.) * (i + 1.); + time += hash12(seed) * .03; + + Time = time * BPM / 60.; + lightPos = sin(normalize(vec3(3, 5, 9)) * time * 5.) * .5; + + vec3 ro = vec3(0, 0, 2); + ro = rotate3D(ro, time * .3, vec3(0, 1, 0)); + ro.y += stepNoise(Time * .5, 3.) * .9; + + vec3 ta = vec3(0); + ta.x += stepNoise(Time * .5 - 500., 3.) * .5; + ta.y += stepNoise(Time * .5 - 1000., 3.) * .5; + ta.z += stepNoise(Time * .5 - 1500., 3.) * .5; + + vec3 dir = normalize(ta - ro); + vec3 side = normalize(cross(dir, vec3(0, 1, 0))); + vec3 up = cross(side, dir); + float fov = 60.; + fov += stepNoise(Time * .5 - 2000., 2.) * 30.; + vec3 rd = normalize(uv.x * side + uv.y * up + dir / tan(fov / 360. * PI)); + + float L = length(ta - ro); + vec3 fp = ro + L * rd; + vec3 ros = ro; + float r = sqrt(hash12(seed)); + float a = hash12(seed * 1.2) * PI2; + + vec3 v = vec3(r * vec2(cos(a), sin(a)) * L * 0.03, 0); + vec3 diro = vec3(0, 0, -1); + float va = dot(dir, diro); + vec3 vax = cross(dir, diro); + v = rotate3D(v, va, vax); + + //ros.xy += r * vec2(cos(a), sin(a)) * L * 0.03; + ros += v; + vec3 rds = normalize(fp - ros); + + col += render(ros, rds); + } + + col /= numSamples; + col = pow(col, vec3(1. / 2.2)); + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_LechugaFeliz.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_LechugaFeliz.glsl new file mode 100644 index 000000000..65b195c0c --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_LechugaFeliz.glsl @@ -0,0 +1,111 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float t = mod(fGlobalTime, 100.)*.03251; +#define rot(a) mat2(cos(a),sin(a),-sin(a),cos(a)) +#define pi acos(-1.) +#define tn(a) texture(texNoise, a).x +float ii = 0.; +float smin(float a, float b, float k){ + float h = max(0., k-abs(a-b))/k; + return min(a,b)-h*h*k*.25; +} +float c(float tt){ + return mix(floor(tt), floor(tt+1.), smoothstep(0., 1., fract(tt))); +} +#define nn (texture(texFFTSmoothed, 0.01).x*10.)*.0125 +float ac = 0., ac2 = 0.; +float m(vec3 p){ + vec3 p2,p3; + p2 = p3 = p; + //p3.z += t*100.; + p3.xy *= rot(p3.z*.012+t*30.); + + p3.xy = abs(p3.xy)-5.; + p3 = (fract(p3/20.-.5)-.5)*20.; + float d3 = length(p3)-3.-sin(p.x+t)*sin(p.y+t)*cos(p.z+t); + p.zy *= rot(t*2.); + p.xz *= rot(p.y*.625); + float d = 1.; + float di = .635 - nn; + //p.xy -= (texture(texFFTSmoothed, 0.01).x*10.)*.1; + for(float i = 10.; i-- > 0.;){ + p.xy *= rot(c(t*.1332)+t); + d = smin(length(p-vec3(sin(i+t)*1.75))-di, d, 1.); + } + //p.xz *= + p2.xz *= rot(.17625+t*40.); + p2.xz *= rot(p.z*.0231); + float d2 = length(abs(p2.xz)-.5-sin(p.x*.15+t*20.)*2.5-2.5)-.66; + ac2 += 3./(1.+d2*d2*d2); + d = smin(d, d2, 1.5); + ac += .054125/(.15+d*d); + ii -= d; + + d = smin(d, d3, 1.); + return d; +} +vec3 nm(vec3 p){ + vec2 e = vec2(0.01, 0.); + return normalize(m(p)-vec3(m(p-e.xyy),m(p-e.yxy),m(p-e.yyx))); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 s = vec3(0.1+cos(t*20.)*4., 0.1-sin(t*20.)*2.,-10.); + vec3 p = s; + uv *= rot(t*10.); + vec3 r=normalize(vec3(-uv, 1.75-length(uv)*1.25-fract(sin(t*10.345-length(uv-tn(uv)*.825)-2.)))); + vec3 co = vec3(0.01); + //uv *= rot(c(t*200.)*.1); + //uv.x *= tn(uv+t*t); + + t += fract(sin(dot(uv.yx, uv*244.43+t*20.))*133.432)*.00091347; + for(float i = 0.; i++ < 100.;){ + float d = m(p); + if(abs(d) < 0.0001) { + if(ii < 0.){ + r = reflect(r, nm(p)); + p-=1.; + } + else break; + } + if(d > 100.) break; + p+=d*r; + } + vec3 n = nm(p); + vec3 l = normalize(vec3(-1, 2.,-3.)); + l.xy *= rot(t*120.); + + vec2 uv2 = fract(abs(uv*70.)-t*150.)*10.; + //uv2 *= rot(p.x*.14); + vec2 g = uv2 / (length(p-s)*r.z); + float dd = min(g.x, g.y) * 1. - max(g.x, g.y); + co += vec3(dd); + co += clamp(vec3(dot(l,n)), 0., 1.); + co += ac*vec3(.123,.04,.3)*pi/2.*.3972125; + co += ac2*vec3(.2,.5,.0)*.235 ; + co *= 1.25-length(p-s)/155.; + co *= 1.-length(uv)*.98275; + //co = sqrt(co)*.78; + + out_color = vec4(co, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Marex.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Marex.glsl new file mode 100644 index 000000000..9182e5286 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Marex.glsl @@ -0,0 +1,48 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rotate2d(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} + +float sdHexagram( in vec2 p, in float r ) +{ + const vec4 k = vec4(-0.5,0.8660254038,0.5773502692,1.7320508076); + p = abs(p); + p -= 2.0*min(dot(k.xy,p),0.0)*k.xy; + p -= 2.0*min(dot(k.yx,p),0.0)*k.yx; + p -= vec2(clamp(p.x,r*k.z,r*k.w),r); + return length(p)*sign(p.y); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 rotatedUV=uv*rotate2d(fGlobalTime); + + float pattern = ceil(sin(fGlobalTime+rotatedUV.y*100.)/2.); + + vec3 finalPattern =vec3(pattern,pattern,pattern); + + vec3 finalColour=vec3(1,1,1)*ceil(-sdHexagram(rotatedUV,sin(fGlobalTime*128./60)/2.+.5)); + + vec3 Final =mix(finalColour,finalPattern,finalColour); + + out_color = vec4(Final,0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_MrSynAckSter.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_MrSynAckSter.glsl new file mode 100644 index 000000000..9203d9c01 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_MrSynAckSter.glsl @@ -0,0 +1,159 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + + +vec3 pal( in float t) +{ + vec3 a = vec3(0.500, 0.500, 0.500); + vec3 b = vec3(-0.692, 0.500, 0.500); + vec3 c = vec3(1.058, 1.000, 1.000); + vec3 d = vec3(0.078, 0.333, 0.667); + return a + b*cos( 6.28318*(c*t+d) ); + +} + + + +float circle(in vec2 _st, in float _radius){ + vec2 dist = _st-vec2(0.5); + return 1.-smoothstep(_radius-(_radius*0.01), + _radius+(_radius*0.01), + dot(dist,dist)*4.0); +} + +vec2 pMod2(inout vec2 p, vec2 size) { + vec2 c = floor((p + size*0.5)/size); + p = mod(p + size*0.5,size) - size*0.5; + return c; +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +//iq triangle +float sdEquilateralTriangle( in vec2 p, in float r ) +{ + const float k = sqrt(3.0); + p.x = abs(p.x) - r; + p.y = p.y + r/k; + if( p.x+k*p.y>0.0 ) p=vec2(p.x-k*p.y,-k*p.x-p.y)/2.0; + p.x -= clamp( p.x, -2.0*r, 0.0 ); + return -length(p)*sign(p.y); +} + +#define PI 3.14159265359 +#define TWO_PI 6.28318530718 + +float getTriangle(vec2 p, vec2 rp){ + // p *= vec2(v2Resolution.x, v2Resolution.y); + // p /= max(v2Resolution.x, v2Resolution.y); + + p -= rp; + + vec3 color = vec3(0.0); + float d = 0.0; + + // Remap the space to -1. to 1. + p = p *2.-1.; + + // Number of sides of your shape + int N = 3; + + // Angle and radius from the current pixel + float a = atan(p.x,p.y)+PI; + float r = TWO_PI/float(N); + + // Shaping function that modulate the distance + d = cos(floor(.5+a/r)*r-a)*length(p); + + return 1.0-step(.12,d); +} + +void pR(inout vec2 p, float a) { + p = cos(a)*p + sin(a)*vec2(p.y, -p.x); +} + +void main(void) +{ + float time = fGlobalTime; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + //uv -= 0.5; + //uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv = uv * (15.5*sin(time/3.));//+sin(time)*.5; + uv += time; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float q = m.y; + + float f = texture( texFFT, q ).r * 100; + + + pMod2(uv,vec2(5.,3.)); + vec2 triuv = uv*.5+2.; + triuv.x = triuv.x-.319; + triuv.y = triuv.y-.4; + triuv*0.5+triuv.x; + pR(triuv,sin(time/2.)); + vec3 tri = vec3(getTriangle(triuv,vec2(1.,1.))); + vec2 cuv = uv; + cuv.y = cuv.y-sin(f/(20.-cuv.y)); + cuv.x = cuv.x + sin(cuv.x+(time+cuv.y)/5.); + vec3 circ = vec3(circle(cuv,0.8+(sin(f)/20.))); + vec3 circ2 = vec3(circle(uv+0.5,0.5+(sin(f)/10.))); + vec2 c3uv = uv; + c3uv= uv-0.5; + c3uv.x = c3uv.x+sin(time/10.); + c3uv.y = c3uv.y+sin(f/20.); + vec3 circ3 = vec3(circle(c3uv,0.9+(sin(f)/10.))); + vec2 c4uv = uv; + c4uv= uv+0.5; + c4uv.y = c3uv.y-sin(c4uv.x+f/30.); + vec3 circ4 = vec3(circle(c4uv,.3+(sin(f)/20.))); + float d = length(uv)*sin(uv.y*2.)*.5; + vec3 tint2 = pal(d); + + vec2 c5uv = uv; + pR(c5uv,sin(time+c5uv.y/2.+(f/50.))); + vec3 circ5 = vec3(circle(c5uv,2.+(sin(f)/20.))); + + vec2 c6uv = uv; + pR(c5uv,sin(time/2.+(f/50.))); + c6uv.y = c6uv.y+sin(time); + vec3 circ6 = vec3(circle(c6uv,.5+(sin(f)/10.))); + + d = sin(d*8. + time)/8.; + d = abs(d); + d = 0.02/d; + vec3 tint = vec3(1.,0.,0.); + tint *= d; + tint2 *=d; + + + + vec3 shape = max(circ6,max(circ5,max(circ4,max(circ3,max(circ2,max(circ,tri)))))); + + vec3 color = tint2*shape; + + out_color = vec4(color,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Zavie.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Zavie.glsl new file mode 100644 index 000000000..38ffddfd6 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_Zavie.glsl @@ -0,0 +1,393 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +in vec2 out_texcoord; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +// -------------------------------------------------------------------- +// The low level building blocks: + +float pi = acos(-1.); +float tau = 2. * pi; +float ratio = v2Resolution.x / v2Resolution.y; +float invratio = v2Resolution.y / v2Resolution.x; + +// A quick smoothstep helper to have antialiased cuts: +float smootherstep(float a, float b, float x) { float dx = min(abs(dFdx(x)),abs(dFdy(x))); return smoothstep(a-dx, b+dx, x); } +float smoothcut(float a, float x) { return smootherstep(a, a, x); } + +float hash(vec2 x) { return fract(sin(dot(x, vec2(12.9898, 78.233))) * 43758.5453); } +float hash(vec3 x) { return hash(vec2(hash(x.xy), x.z)); } + +float valueNoise(vec2 p) +{ + vec2 ip = floor(p); + vec2 dp = p - ip; + float x0 = smoothstep(0., 1., mix(hash(ip+vec2(0.,0.)), hash(ip+vec2(0.,1.)), dp.y)); + float x1 = smoothstep(0., 1., mix(hash(ip+vec2(1.,0.)), hash(ip+vec2(1.,1.)), dp.y)); + return smoothstep(0., 1., mix(x0, x1, dp.x)); +} + +float valueNoise(vec3 p) +{ + vec3 ip = floor(p); + vec3 dp = p - ip; + float y00 = smoothstep(0., 1., mix(hash(ip+vec3(0.,0.,0.)), hash(ip+vec3(0.,0.,1.)), dp.z)); + float y01 = smoothstep(0., 1., mix(hash(ip+vec3(0.,1.,0.)), hash(ip+vec3(0.,1.,1.)), dp.z)); + float y10 = smoothstep(0., 1., mix(hash(ip+vec3(1.,0.,0.)), hash(ip+vec3(1.,0.,1.)), dp.z)); + float y11 = smoothstep(0., 1., mix(hash(ip+vec3(1.,1.,0.)), hash(ip+vec3(1.,1.,1.)), dp.z)); + + float x0 = smoothstep(0., 1., mix(y00, y01, dp.y)); + float x1 = smoothstep(0., 1., mix(y10, y11, dp.y)); + return smoothstep(0., 1., mix(x0, x1, dp.x)); +} + +float fBm(vec2 uv, float t) +{ + float w = 0.5; + float x = w*valueNoise(vec3(uv, t)); uv = uv*2.+10.; w /= 2.; + x += w*valueNoise(vec3(uv, t)); uv = uv*2.+10.; w /= 2.; + x += w*valueNoise(vec3(uv, t)); uv = uv*2.+10.; w /= 2.; + x += w*valueNoise(vec3(uv, t)); uv = uv*2.+10.; w /= 2.; + x += w*valueNoise(vec3(uv, t)); uv = uv*2.+10.; w /= 2.; + return x; +} + +float norm(vec2 p, float normType) +{ + float l1 = max(abs(p.x), abs(p.y)); + float l2 = length(p); + float l3 = abs(p.x) + abs(p.y); + return (normType > 0. ? mix(l2, l1, normType) : mix(l2, l3, -normType)); +} + +vec4 grid(vec2 uv, vec2 size) { uv *= size; return vec4(fract(uv), floor(uv)); } +vec4 modgrid(vec2 uv, vec2 size) { vec4 uvzw = grid(uv, size); uvzw.zw = mod(uvzw.zw,size); return uvzw; } +vec2 polar(vec2 uv) { return vec2(atan(uv.y, uv.x)/tau+0.5, length(uv)); } +vec2 tunnel(vec2 uv) { uv = polar(uv); return vec2(uv.x, 1./uv.y/tau); } + +float segment(vec2 p, vec2 a, vec2 b) +{ + vec2 ab = b - a; + vec2 ap = p - a; + float h = clamp(dot(ap, ab) / dot(ab, ab), 0., 1.); + return length(ap - h * ab); +} + +vec2 pinch(vec2 uv, float strength) +{ + return sign(uv) * pow(abs(uv), (1. + 2. * pow(vec2(dot(uv, uv)), vec2(0.8, 5.)))); +} + +vec2 truchet(vec2 uv, float seed, float dir, float normType) +{ + if (seed > 0.5) uv.y = 1. - uv.y; + vec2 uv1 = uv; + vec2 uv2 = uv - vec2(1.); + float x = uv.x+uv.y-1.; + + float r1 = norm(uv1, normType); + float r2 = norm(uv2, normType); + float a1 = dir * (atan(uv1.y, uv1.x) / tau + 0.5); + float a2 = dir * (atan(uv2.y, uv2.x) / tau + 0.5); + + float arc1 = clamp(2.*r1, 0., 1.) * clamp(2. - 2.*r1, 0., 1.); + float arc2 = clamp(2.*r2, 0., 1.) * clamp(2. - 2.*r2, 0., 1.); + arc1 = clamp(arc1 - 0.4, 0., 1.) / 0.6; + arc2 = clamp(arc2 - 0.4, 0., 1.) / 0.6; + + float a = (x < 0. ? a1 : a2); + return vec2(1.-max(arc1,arc2), 2.*a); +} + +vec2 zoom(vec2 uv, float scale) +{ + return (uv - 0.5) * scale + 0.5; +} + +vec4 blurredPrev(float blurScale, float zoomScale) +{ + vec2 duv = blurScale/v2Resolution; + return 1./8. * ( + 4.*texture(texPreviousFrame, zoom(out_texcoord, zoomScale)) + + texture(texPreviousFrame, zoom(out_texcoord + duv * vec2( 1., 0.), zoomScale)) + + texture(texPreviousFrame, zoom(out_texcoord + duv * vec2(-1., 0.), zoomScale)) + + texture(texPreviousFrame, zoom(out_texcoord + duv * vec2( 0., 1.), zoomScale)) + + texture(texPreviousFrame, zoom(out_texcoord + duv * vec2( 0., -1.), zoomScale))); +} + +// -------------------------------------------------------------------- +// The high level effects: + +float bars(vec2 uv, float ratio, float n, float height, float width, float soft) +{ + ratio *= n; + vec4 grid = grid(clamp(uv, 0., 1.), vec2(n, 1.)); + grid.x -= 0.5; + grid.x /= ratio; + height *= texture(texFFT, abs((grid.z+0.5)/n * 2. - 1.)).x; + float s = segment(grid.xy, vec2(0., 0.5-height), vec2(0., 0.5+height)); + float cut = 0.5*width; + return 1.-smootherstep(cut-soft, cut+soft, s*ratio); +} + +vec2 barsWithShadow(vec2 uv, float ratio, float n, float height, float width, vec2 shadowOffset, float shadowWidth, float shadowSoft) +{ + float bar = bars(uv, ratio, n, height, width, 0.); + float shadow = 1.-bars(uv + shadowOffset, ratio, n, height, shadowWidth, shadowSoft); + shadow = max(bar, shadow); + return vec2(bar, shadow); +} + +float analogFFT(vec2 uv) +{ + float fft = texture(texFFT, abs(uv.x * 2. - 1.)).r; + float dist = pow(fft, 0.7) - abs(uv.y * 2. - 1.); + float dDist = 2. * abs(dFdy(dist)); + return smoothstep(-dDist, dDist, dist); +} + +float digitalFFTview(vec2 uv, vec2 res, float amp) +{ + vec2 fftUV = floor(vec2(abs(uv)) * res) / res; + vec2 pixelUV = fract(vec2(uv) * res + 0.5); + + float fft = fract(texture(texFFT, fftUV.x).x) * amp; + fft = smoothstep(0., 0.01, fft - fftUV.y); + + float fade = 0.5; + float pixelShape = smoothstep(0.1, 0.1+fade*res.x/res.y, abs(pixelUV.x * 2. - 1.)) * smoothstep(0.1, 0.1+fade, abs(pixelUV.y * 2. - 1.)); + return pixelShape * mix(0.01, 1., fft); +} + +float wireframe(vec2 uv, vec2 width) +{ + float x = smoothcut(width.x, uv.x) * smoothcut(width.x, 1.-uv.x); + float y = smoothcut(width.y, uv.y) * smoothcut(width.y, 1.-uv.y); + return max(1.-x, 1.-y); +} + +vec3 spinpill(vec2 uv, float id) +{ + float angle = pi/5. + 20.*pi*pow(texture(texFFTSmoothed, id).r,1.); + vec2 pillDir = vec2(sin(angle), cos(angle)); + float pill = segment(uv, vec2(0.5)+0.25*pillDir, vec2(0.5)-0.25*pillDir); + pill = 1.-4.*pill; + + float pillStripes1 = fract(4.*clamp(pill, 0., 1.)-0.5); + pillStripes1 = abs(pillStripes1 * 2. - 1.); + pillStripes1 = smoothcut(0.5, pillStripes1); + + float pillStripes2 = fract(2.*clamp(pill, 0., 1.)-0.25); + pillStripes2 = abs(pillStripes2 * 2. - 1.); + pillStripes2 = smoothcut(0.5, pillStripes2); + pill = smoothcut(0.2, pill); + + return vec3(pill, pillStripes1, pillStripes2); +} + +vec3 rotapill(vec2 uv, float id, float rows) +{ + vec2 polarUV = polar(uv*2.-1.); + float inside = 1.-smoothcut(1.-0.1/rows, polarUV.y); + float row = floor(rows * polarUV.y); + float oddRow = mod(row, 2.); + polarUV.x += hash(vec2(row, id)); + polarUV.x += fGlobalTime*0.2 * (oddRow*2.-1.); + polarUV = fract(vec2(row+2., rows) * polarUV); + float rotapill = segment(polarUV*vec2(rows,1.5), vec2(1., 0.5), vec2(rows-1., 0.5)); + rotapill = 1.-smoothcut(0.5, rotapill); + rotapill *= inside; + float tail = mix(polarUV.x, 1.-polarUV.x, oddRow); + + return vec3(rotapill, tail, oddRow); +} + +vec3 truchetlanes(vec4 tiles, float id, float lanes, float speed) +{ + float dir = mod(tiles.z + tiles.w,2.); + vec2 pattern = truchet(tiles.xy, id, dir*2.-1., 0.); + pattern.x /= 0.7; + + vec4 curve = grid(pattern.xy, vec2(lanes, 1.)); + float lane = hash(vec2(curve.z)); + float odd = smoothcut(0.5, pattern.x); + speed *= odd * 2. - 1.; + float forward = texture(texFFTIntegrated, lane).x; + curve.y = fract(pattern.y + mix(fGlobalTime, forward, 0.7) * speed); + + float worm = segment(curve.xy * vec2(1., 10.), vec2(0.5, 0.5), vec2(0.5, 9.)); + worm = 1. - smoothcut(0.25, worm); + worm *= 1.-smoothcut(1.0, pattern.x); + return vec3(worm, curve.y, odd); +} + +// -------------------------------------------------------------------- +// A few predefined colours: + +vec3 palette_linear[] = vec3[](vec3(0.037, 0.173, 0.177), vec3(0.235, 0.013, 0.145), vec3(0.752, 1.0, 0.076), vec3(1.0, 0.133, 0.125), vec3(0.0003)); +vec3 palette(float x) +{ + x = 4. * fract(x); + int i = int(floor(x)); + int j = (x >= 3. ? 0 : i + 1); + float t = smoothstep(0., 1., fract(x)); + return mix(palette_linear[i], palette_linear[j], t); +} + +vec3 recolorise(vec3 color, float saturation, float contrast) +{ + color = contrast * color + ( 1.0 - contrast ) / 2.0; + float luma = dot(color, vec3(0.299, 0.587, 0.114)); + return mix(vec3(luma), color, saturation); +} + +// ==================================================================== + +void main(void) +{ + vec2 uv = (out_texcoord - 0.5) * vec2(v2Resolution.x / v2Resolution.y, 1.); + vec3 bgColor = palette_linear[4]; + + if (true) // FEEDBACK ZOOM IN + { + float remanance = 0.85; + + bgColor = remanance * pow(blurredPrev(2., 0.99).rgb, vec3(2.2)); + } + + vec3 color = bgColor; + float tone = 0.2*length(uv) - 0.05*fGlobalTime; + float t = fGlobalTime*0.05; + float variation1 = sin(t*tau); + float variation2 = smoothstep(0.45, 0.55, abs(fract(t) * 2. - 1.)); + float variation3 = smoothstep(0.45, 0.55, abs(fract(t+0.25) * 2. - 1.)); + vec2 set1 = vec2(1.);//vec2(variation2, mix(0.5, 1.5, variation1*variation1*variation1*variation1*variation1*variation1*variation1*0.5+0.5)); + vec2 set2 = vec2(variation3, 1.); + vec2 set3 = vec2(variation3, 1.); + + float forward = mix(texture(texFFTIntegrated, 0.).x, fGlobalTime, 0.4); + vec2 tunnel = tunnel(uv); + float tunnelFade = exp(-pow(tunnel.y, 1.2)); + + vec2 fftUV = uv; + if (false) // PINCH + { + fftUV = pinch(uv, 0.); + } + + if (true) // CIRCULAR FFT + { + fftUV = vec2(fract(atan(fftUV.y, fftUV.x) / pi + t), length(fftUV) * 2. - 0.7); + } + + if (true) // A TUNNEL OF PILLS + { + vec2 t2 = tunnel; + t2.x += -0.01 * fGlobalTime; + t2.y += 0.04 * forward; + vec4 tiles = modgrid(t2, vec2(40.)); + float id = hash(tiles.zw); + + vec3 pill = spinpill(tiles.xy, id ); + + float pillSwitchSpeed = 0.02; + float pillSwitch = smoothstep(0.3, 0.4, abs(fract(pillSwitchSpeed*fGlobalTime) * 2. - 1.)); + float pillSwitch2 = smoothstep(0.6, 0.7, abs(fract(pillSwitchSpeed*fGlobalTime) * 2. - 1.)); + vec3 c = palette(tone + 0.2*(id*2.-1.) + 0.5*pill.z*pillSwitch*pillSwitch2); + c = recolorise(c, set1.x, set1.y); + color = mix(color, c, mix(pill.x, pill.y, pillSwitch)); + } + + if (false) // A WIREFRAME TUNNEL + { + vec2 t2 = tunnel; + t2.x += sin(fGlobalTime*0.2)*0.2; + t2.y += 0.1 * forward; + vec4 tiles = modgrid(t2, vec2(12.)); + + float mesh = wireframe(tiles.xy, vec2(0.01, 2.*fwidth(tiles.y))); + + vec3 c = palette(tone + 0.3); + c = recolorise(c, set2.x, set2.y); + color = mix(color, c, mesh); + } + + if (false) // A TUNNEL OF DISKS + { + vec2 t2 = tunnel; + t2.x += sin(fGlobalTime*0.2)*0.2; + t2.y += 0.1 * forward; + float rotate = 0.05 * fGlobalTime * (hash(vec2(floor(t2.y*12.))) * 2. - 1.); + t2.x += rotate; + vec4 tiles = modgrid(t2, vec2(12.)); + + vec3 rotapills = rotapill(tiles.xy, hash(tiles.zw), 3.+floor(20. * pow(texture(texFFTSmoothed, 0.).x, 0.25))); + + vec3 c = palette(tone + 0.3 + 0.1*rotapills.z); + c = recolorise(c, set2.x, set2.y); + color = mix(color, c, rotapills.x * smoothstep(0.1, 0.15, rotapills.y)); + } + + if (false) // A TUNNEL OF TRUCHET + { + vec2 t2 = tunnel; + t2.x += sin(fGlobalTime*0.1)*0.5; + t2.y += 0.15 * forward; + vec4 tiles = modgrid(t2, vec2(11.)); + float id = hash(tiles.zw); + + vec3 pattern = truchetlanes(tiles, id, 2., 1.); + + vec3 c = palette(tone + 0.2*pattern.z + 0.2*pattern.y); + c = recolorise(c, set3.x, set3.y); + color = mix(color, c, pattern.x); + } + color = mix(bgColor, color, tunnelFade); + + if (true) // ROUND BARS FFT + { + vec2 s = barsWithShadow(fftUV, v2Resolution.y / v2Resolution.x, 80., 1., 0.6, vec2(-0.004, 0.006), 0.8, 0.2); + vec3 c = palette(tone + 0.4); + c = recolorise(c, set3.x, set3.y); + color = mix(color * s.y, c, s.x); + } + + if (false) // DIGITAL FFT + { + vec3 c = palette(tone + 0.6); + c = recolorise(c, set3.x, set3.y); + vec2 resolution = vec2(25., 80.); + vec2 dropShadowOffset = vec2(-0.2, 0.3) * 1./max(resolution.x, resolution.y); + color = mix(color, vec3(0.), digitalFFTview(fftUV + dropShadowOffset, resolution, 4.)); + color = mix(color, c, digitalFFTview(fftUV, resolution, 4.)); + } + + if (false) // ANALOG FFT + { + vec3 c = palette(tone + 0.8); + c = recolorise(c, set3.x, set3.y); + color = mix(color, c, analogFFT(fftUV)); + } + + if (true) // SMOKEY NOISE + { + float signalNoise = 0.97; + color *= mix(signalNoise, 1./signalNoise, fBm(out_texcoord*20., fGlobalTime)); + } + out_color = vec4(pow(color, vec3(1./2.2)), 1.); +} diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_aldroidia.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_aldroidia.glsl new file mode 100644 index 000000000..51111571a --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_aldroidia.glsl @@ -0,0 +1,95 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texEmboss; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 plas( vec2 v, float time ) +{ + v *= 20; + float c = 0.5 + sin( v.x * 1.0 ) + cos( sin( time + v.y ) * 20.0 ); + c /= 20; + return vec3(c);//vec3( sin(c * 0.2 + cos(time+v.y)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25 ); +} + +mat2 rot(float a) { + return mat2(cos(a),-sin(a),sin(a),cos(a)); +} + +vec3 plas2(vec2 uv) { + + uv *= rot(fGlobalTime); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, floor(d*100)/100 ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec3 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + return (f -t)*(1-d)*vec3(0,1,1); +} + + +float map(vec3 p) { + p *=0.5; + p.z -=8+texture(texFFTSmoothed,0.02).x*100; + p.yz *= rot(0.5*3.1415); + p.xz *= rot(0.25*3.1415); + vec3 q=p-vec3(3,0,3); + return max(max(length(p.xz)-4, abs(p.y)-1),-max(abs(q.x)-3,abs(q.z)-3)); + } + +vec3 gn(vec3 p) { + vec2 e = vec2(0.001,0); + return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx))); +} + +void main(void) +{ + vec2 puv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv = floor(puv*240)/240; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro=vec3(0,0,-10), rd=normalize(vec3(uv+vec2(0,-texture(texFFTSmoothed,0.15).x*20),1)); + float t=0,d; + + float flex=0; + + vec3 ld=normalize(vec3(3,4,-3)); + + for (int i=0;i<100; ++i) { + d=map(ro+rd*t); + if (d<0.01) { + break; + } + t += d; + } + vec3 col = 0.1*flex*vec3(1,0,0)+10*plas2(rd.xy); + //col += t*texture(texPreviousFrame,abs(uv)*10).xyz*0.004; + + if (d<0.01) { + col=vec3(1,1,0)*dot(gn(ro+rd*t),ld); + } + + out_color=vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_alien.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_alien.glsl new file mode 100644 index 000000000..3f3fcb9f4 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_alien.glsl @@ -0,0 +1,171 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texTex5; +uniform sampler2D texTex6; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define iTime fGlobalTime + +#define one_bpm 60./140. +#define beat(a) fract(iTime/(one_bpm*a)) + +mat2 rot(float a) {return mat2(cos(a), -sin(a), sin(a), cos(a));} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 nuv = uv; + if(beat(1.0) < 0.5) { + uv *= rot(0.8); + } + + if(beat(2.0) < 0.5) { + uv *= fract(uv * 4.0); + uv = abs(uv); + } + + if(beat(16.) > 0.9) { + uv += 0.5; + } + + + vec3 color = vec3(0); + vec2 uvv = uv; + vec2 uu = uv; + if(beat(4) < 0.5) { + + uvv.x += beat(4.0)*0.2; + } + else { + uvv.y += beat(4.0)*0.2; + } + float b = texture(texTex6, uvv).a; + + if(beat(4.0) < 0.5) { + + //uvv *= fract(uv * 4.0 ); + } + uv *= 0.8 + beat(4.) * .4; + vec2 uv1 = uv; + vec2 uv2 = uv; + uv1 *= 0.8 + beat(4.) * .4; + uv2 *= rot(beat(2.0)); + uv1 *= 0.8 + beat(2.) * .4; + uv1 *= rot(-beat(4.0)); + uv1 -= 0.5; + uv2 -= 0.5; + + float m1 = step(length(uv1+0.5) - 0.25, 0.0); + float m2 = step(length(uv2 + 0.5) - 0.5, 0.0) * 1.-step(length(uv2 + 0.5) - 0.3, 0.0); + + if(beat(8.0) < 0.5) { + // m1 = 1; +// m2 = 1; + uv2 *= 2.0; + uv1 *= 2.0; + } + + if(beat(2.0) < 0.5) { + uv2 *= 20.0; + uv1 *= 20.0; + } + + vec3 t1 = texture(texRevisionBW, uv1).xxx * m1; + vec3 t2 = texture(texRevisionBW, uv2).xxx * m2; + + + + + color = t1+t2; + color *= b; + + + + //color*= vec3(beat(2.0), beat(4.0), 0.9); + + + + + + color = mix(texture(texPreviousFrame, uvv).xyz, color, 0.8 ); + + float a = step(fract(uu.x * 5.0 + beat(4.)), 0.8); + //color *= vec3(a); + + + + + + + color = beat(1) < 0.5 ? color : 1.-color; + + + //vec2 tt = texture(); + + + + + if(beat(32.0) < 0.5) { + color = t1+t2; + } + if(beat(8.0) < 0.5) { + vec2 n= texture(texNoise, uv).xy; + n.x += iTime; + color *= texture(texChecker, n).xyz; + } + + if(beat(4.0) < 0.5 || true) { + vec2 n= texture(texNoise, uv).xy; + n.x += iTime*0.2; + n.y *=color.x; + color /= texture(texChecker, n).xyz; + } + + vec2 s = step(fract(uv*2.0), 0.5 + vec2(beat(1.0))); + color *= min(s.x, s.y); + + if(beat(32) > 0.5) { + color = 1.- color; + } + + if(beat(16.0) < 0.5 || true) { + color = mix(color, texture(texPreviousFrame, uv).xyz, 0.5); + } + if(beat(32.0) < 0.5) { + color *= fwidth(color)*20.0; + } + if(beat(16) <0.4) { + + color *= t1+t2; + } + + + color *= color; + color.xz *= pow(color.xy, uvv); + + + + + out_color = color.xyzz; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ciosai_tw.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ciosai_tw.glsl new file mode 100644 index 000000000..e6f7e1c44 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ciosai_tw.glsl @@ -0,0 +1,268 @@ +#version 410 core + +#define TAU 6.2831853071 + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rot2( float a ){ vec2 v = sin(vec2(1.570796, 0) - a); return mat2(v, -v.y, v.x); } + +#define MAX_STEPS 40 +#define MAX_DIST 40. +#define SURF_DIST .01 +//I didn't optimize this + + +float c2f(in float x){ + return x*.5+.5; +} +//https://iquilezles.org/articles/distfunctions +float sdBox( vec3 p, vec3 pos, vec3 b ) +{ + //vec3 q = abs(p-pos) - b; + //return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0); + + float e = b.r*.2; + p = abs(p )-b; + vec3 q = abs(p+e)-e; + return min(min( + length(max(vec3(p.x,q.y,q.z),0.0))+min(max(p.x,max(q.y,q.z)),0.0), + length(max(vec3(q.x,p.y,q.z),0.0))+min(max(q.x,max(p.y,q.z)),0.0)), + length(max(vec3(q.x,q.y,p.z),0.0))+min(max(q.x,max(q.y,p.z)),0.0)); +} +float sdHexPrism( vec3 p, vec2 h ) +{ + const vec3 k = vec3(-0.8660254, 0.5, 0.57735); + p = abs(p); + p.xy -= 2.0*min(dot(k.xy, p.xy), 0.0)*k.xy; + vec2 d = vec2( + length(p.xy-vec2(clamp(p.x,-k.z*h.x,k.z*h.x), h.x))*sign(p.y-h.x), + p.z-h.y ); + return min(max(d.x,d.y),0.0) + length(max(d,0.0)); +} + +//SPONGE +float GetDist(vec3 p){ + //the main cube + float box = sdBox(p, vec3(0.), vec3(0.2)); + float hex = sdHexPrism(p, vec2(.3, .2)*rot2(c2f(sin(fGlobalTime*2.632)))); + + + float d = max(box, hex); + + return d; +} + +float RayMarch(vec3 ro, vec3 rd){ + float dO = 0.; + + for(int i=0; i MAX_DIST || dS < SURF_DIST) break; + } + + return dO; +} + +vec3 GetNormal(vec3 p){ + float d = GetDist(p); + vec2 e = vec2(.01, 0.); + + vec3 n = d-vec3( + GetDist(p-e.xyy), + GetDist(p-e.yxy), + GetDist(p-e.yyx) + ); + + return normalize(n); +} + +float GetLight(vec3 p){ + vec3 lightPos = vec3(2., 10., 6.); + + vec3 l = normalize(lightPos-p); + + vec3 n = GetNormal(p); + + float dif = clamp(dot(n, l), 0., 1.); + float d = RayMarch(p+n*SURF_DIST*2., l); + if(dMAX_DIST){ + nor = vec3(0.); + } + + vec3 id = vec3(addUp(nor*vec3(1.,1.,-1.))>0.?1.:0., + addUp(nor*vec3(1.,-1.,1.))>0.?1.:0., + addUp(nor*vec3(-1.,1.,1.))>0.?1.:0.); + uv = mix(uv+distort(id, t)*.5, uv, smoothstep(MAX_DIST-1., MAX_DIST, d)); + //vec3 col = mix(texture2D(u_tex, tex_uv+distort(id, u_time)*0.1).rgb, texture2D(u_tex, tex_uv).rgb, smoothstep(MAX_DIST-1., MAX_DIST, d)); + // -------------------------------------------------------------------- + + vec2 uv_i = floor(uv*32.)/32.; + uv_i += tex_normal.rb*0.04; + uv_i += tex_normal.bg*0.02; + + float radius = 1.2; + + float tmod = mod(t, 8.); + float amt = min(sin(fract(t)*TAU/4.0)*1.5, 1.0) + floor(tmod) + 1.0; + + float sum = 0.0; + + float spacing = 0.2; + + float turn = TAU/amt; + for(float i=0.; i200.){break;} + if(i==0){de = smoothstep(200.,0.,d);li = step(zl,0.01);mo = step(zf,0.01); + } + if(zl>0.01){p += r*d; + vec3 n = nor(p); + r = n + vr(); + p +=r*0.2; + at *= 0.5; + lum = vec3(0.5,0.5,1.);} + else{r1 = vec3(lum)*at;break;} + }return r1;} + vec3 ru(vec3 p, vec3 r){ vec3 r1 = vec3(0.); float at = 2.;vec3 lum = vec3(0.);float lo; + for(int i =0 ; i < 2 ; i++){ + float d = rm(p,r); + if(d>200.){break;} + if(i==0){lo = 1.-step(zl,0.01);} + if(zl>0.01){p += r*d; + vec3 n = nor(p); + r = normalize(refract(n,r,1.)) + vr()*3.; + p +=r*0.2; + + lum = vec3(0.5,0.5,1.);} + else{r1 = vec3(1.,0.3,0.2)*2.;break;} + }return r1;} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uc = uv; + uv -= 0.5;uv *= 2.; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + e =(uv.x*v2Resolution.y+uv.y)*step(0.1,fract(t)); + vec3 p = vec3(0.,0.,-7.);vec3 r = normalize(vec3 (uv+(vec2(hs(uv),hs(uv+78.))-0.5)*smoothstep(0.7,1.,no(t*4.))*length(uv.y),no(t)*1.5+0.5)); + e += t; +vec3 r1 = rc( p, r)+ru(p,r); + float trr = 1.-step(0.2,rand(t*1.+6.)); + r1 = mix(vec3(1.),3.*abs(1.-2.*fract(r1.x*0.7+t*10.+vec3(0.,-1./3.,1./3.)))-1.,trr*0.5)*r1; + vec3 r2 = mix(r1,load(ivec2(gl_FragCoord)),0.6); + add(ivec2(gl_FragCoord),r2); + + vec3 r3 = mix(r2,1.-r2,trr); + float ct = max(mo,texture(texPreviousFrame,uc+(vec2(rd(uv*10.),rd(uv*10.+95.)+(rd()-0.5)*2.)*0.01)).a*0.9); + vec3 ctc = mix(vec3(1.),3.*abs(1.-2.*fract(ct*0.7+vec3(0.,-1./3.,1./3.)))-1.,0.3)*ct*smoothstep(0.6,0.7,no(t*2.)); + out_color = vec4(pow((r3+li)*mix(vec3(0.5,0.5,1.),vec3(1.),de),mix(vec3(0.25),vec3(2.),trr))+ctc*(1.-mo)*0.5,ct); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cpdt.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cpdt.glsl new file mode 100644 index 000000000..e93fd324c --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_cpdt.glsl @@ -0,0 +1,96 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float noise2d(vec2 co){ + return fract(sin(dot(co.xy ,vec2(1.0,73))) * 43758.5453); +} + +float tile(vec2 p, float s) { + for (int i = 0; i < 5; i++) { + + // boundary condition + if (noise2d(vec2(s)) < float(i) / 4) return 1.; + + // quadrant? + s += 1.; + float q = noise2d(vec2(s)); + p *= 2.; + if (q < 0.25) { + } else if (q < 0.5) { + p.x -= 1.; + } else if (q < 0.75) { + p.y -= 1.; + } else { + p.x -= 1.; + p.y -= 1.; + } + + if (p.x < 0. || p.y < 0. || p.x > 1. || p.y > 1.) return 0.; + + s += 1.; + } + + return 0.; +} + +float tile1(vec2 p, float s, float aspect, float size) { + float v = tile(p, s); + + float vx0 = tile(p - vec2(size, size * aspect), fFrameTime); + float vx1 = tile(p + vec2(size, size * aspect), fFrameTime); + + return v - sign(vx0 * vx1); +} + +float BPM = 120.; + +float find(vec2 p) { + + + float destX = noise2d(vec2(floor(fGlobalTime * BPM) + 100.)); + float destY = noise2d(vec2(floor(fGlobalTime * BPM) + 200.)); + + vec2 minX = vec2(floor(destX * 10.) / 10., floor(destY * 10.) / 10.); + vec2 maxX = minX + vec2(1. / 10.); + + if (p.x > minX.x && p.x < maxX.x && p.y > minX.y && p.y < maxX.y) return 1.; + return 0.; +} + +void main(void) +{ + vec3 c = vec3(0.); + + float aspect = v2Resolution.x / v2Resolution.y; + vec2 uv = gl_FragCoord.xy / v2Resolution; + + uv.y += fGlobalTime * 1.; + uv.y = mod(uv.y, 1.); + + float v = 0.; + for (int i =0; i < 10; i++) { + v += tile1(uv / float(i), fFrameTime, aspect, float(i) * 0.01); + } + + float m = find( gl_FragCoord.xy / v2Resolution); + v = v != m ? 1. : 0.; + + + out_color = vec4(v, v, v, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_diffty.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_diffty.glsl new file mode 100644 index 000000000..70cc5e1fa --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_diffty.glsl @@ -0,0 +1,102 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform float fMidiKnob; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float sphere(vec3 rayPos, vec3 objPos, float r) { + return r - distance(rayPos, objPos); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + //mod(uv.y * 10, 1.) + uv.x = abs(uv.x); + //uv.y = abs(uv.y); + + float c = 0.; + float dist = 0.; + + int NB_STEPS = 64; + + float bpm = 170; + float beat = mod(fGlobalTime, 60. / bpm); + + vec3 camPos = vec3(0., 0., -1.); + + camPos.x += sin(fGlobalTime)*0.1; + camPos.y -= cos(fGlobalTime)*0.1; + camPos.z -= 3.0 * sin(beat); + + float wave = 0; + float colId = 0.; + float inObj = 0.; + vec3 normal; + + for (int i = 0; i < NB_STEPS; i++) { + vec3 spherePos = vec3(1., 1., 2.); + + vec3 rayPos = normalize(camPos - vec3(uv.x, uv.y, 0.)) * dist; + rayPos.x += 0.5; + rayPos.y += 0.3; + + float depth = rayPos.z; + vec3 initRayPos = rayPos; + rayPos.z += fGlobalTime; + + rayPos.z = mod(rayPos.z, 5.); + rayPos.x = mod(rayPos.x + sin(fGlobalTime*10.)*cos(rayPos.x) * 0.5, 2.); + rayPos.y = mod(rayPos.y + cos(fGlobalTime*7.)*sin(rayPos.y) * 0.5, 2.); + + colId = mod(initRayPos.x, 2.); + + float d = sphere(rayPos, spherePos, 0.7); + dist += d*.7; + + float fCoef = beat; //mod(fGlobalTime, beat); + + wave = mod(abs(initRayPos.x) + fGlobalTime*5.5, 10.); + + + if (abs(d) < 0.01) { + normal = spherePos - rayPos; + //c = 1.0 * fCoef * (mod(rayPos.z, 0.5) * mod(depth + fGlobalTime, 20.)); + c *= 1.-abs(initRayPos.x)*0.2; + inObj = 1.; + break; + } + } + + vec4 f = texture(texFFT, uv.x); + float pulse = smoothstep(c, 1.-c, beat); + + float l = dot(normal, vec3(cos(fGlobalTime), sin(fGlobalTime), 0.0)); + float lg = dot(normal, vec3(1.0, 0.0, 0.0)); + float ld = dot(normal, vec3(-1.0, 0.0, 0.0)); + + vec4 w = vec4(1.0); + vec4 b = vec4(0.0, 0.0, 0.0, 0.0); + c = inObj * step(beat*1., 0.1); + out_color = vec4(c + max(1.-abs(wave*0.1), 0.)*inObj, + mix(0., 1., step(beat, 0.2))*ld, + mix(0., 1., step(1.-beat, 0.3))*lg, + 1.0); + out_color = mix(out_color, 1.-out_color, step(beat*2., 0.1)); + //out_color = vec4(f.r); + +} diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_dok.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_dok.glsl new file mode 100644 index 000000000..1eb06abb4 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_dok.glsl @@ -0,0 +1,150 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +const float pi = acos(-1); +#define r2(a) mat2(cos(a),-sin(a),sin(a), cos(a)) +vec4 s = fGlobalTime*(120/60.)/vec4(1,4,8,16); +vec4 t = fract(s); +float sd_b(vec3 p, vec3 e) { + p = abs(p) -e ; + return length(max(p,0)) + min(max(max(p.x,p.y),p.z),0); +} +#define time fGlobalTime +float tri(float a) { + a/=4;return min(fract(a),fract(-a))*4-1; +} +float map(vec3 p) { + float d; + { + vec3 q = p; +float m = mix(.2,2.,t.w); + + q.xy *= r2(0.5*q.z*sin(time*0.1)); + + q.xy = abs(q.xy); + + q.xy -= 1.5; + + q.x += tri(0.5*q.z+time)*m; + q.y += tri(0.5*q.z+time+.5)*m; +// q.x += asin(sin(q.z+time)) * .5; +// q.y += asin(cos(q.z+time)) * .5; + d = sd_b(q, vec3(0.2,0.2,111))-.1; + } + { + vec3 q = p; + q.z+=pow(t.x,5.); + float id = round(q.z); + q.z -= id; + q.xz *= r2(time+id); + d = min(d, sd_b(q, vec3(0.1))-0.1); + } + return d; +} +vec3 nor(vec3 p) { + vec3 e = vec3(5e-3,0,0); + return normalize(vec3( + map(p+e.xyy)-map(p-e.xyy), + map(p+e.yxy)-map(p-e.yxy), + map(p+e.yyx)-map(p-e.yyx) + )); +} + +void main(void) +{ + vec2 uv = (gl_FragCoord.xy - .5 * v2Resolution.xy ) / + v2Resolution.y; + + vec3 col = vec3(1); + vec3 ro = vec3(2*cos(fGlobalTime),1+2*sin(fGlobalTime),4); + float fv = .5; +if (t.w > .75) + ro = vec3(4,0,t.w); +else if (t.w >.5){ + ro = vec3(0,4,sin(time)); + fv=mix(.4,.5,pow(t.x,2)); +} +else if (t.w > .25) +ro = vec3(4*sin(time),4,sin(time)); + vec3 cf = normalize(-ro), + cu = normalize(cross(cf, vec3(1,0,0))), + cl = normalize(cross(cf,cu)), + rd = mat3(cl,cu,cf)*normalize(vec3(uv, fv)); + float i,r,d,N=123,h=0; + for (i=r=0.; i.5&&t.w<.75) + p.xy -= clamp(round(p.xy),-1,n); + d=min(d, sd_b(p, vec3(0.5+t.x,.05,.05))); + } + { + vec3 p = ro+rd*r; + p.xy *= r2(.25*pi); + float n = int(mix(1,4,t.x)); + p.xy *= r2(0.01*pow(t.x,2)*p.z); + + p.xy = abs(p.xy); + p.xy -= 4; + p.x += tri(0.5*(p.z + time*2))*pow(t.x,2); + + d=min(d, sd_b(p, vec3(0.1+.1*pow(t.y,2.),.1+.1*pow(t.y,2.),5))); + } + + } + if (d>0) r+=d*.9; + if (d<1e-4||r>1e5) break; + } +// if (i.5 && t.w < .5) + { + if (fract(t.x*4)>.5&&texture(texRevisionBW,clamp(uv+0.5,0,1)).r>0.5) + col=1-col; + //if (fract(t.x*4)>.5) col = 1-col; + }else + if (texture(texFFTSmoothed,0.005).r > 0.3) + col = 1 - col; + out_color = vec4(col, 1); +} diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ebu.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ebu.glsl new file mode 100644 index 000000000..e6aceb394 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ebu.glsl @@ -0,0 +1,131 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texRevision; +uniform float fMidiKnob; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define T fGlobalTime +#define FFT(x) (texture(texFFT, x).r) +#define FFTS(x) (texture(texFFTSmoothed, x).r) +#define FFTI(x) (texture(texFFTIntegrated, x).r) + +uint hash(float val) { + uint v = uint(val); + v ^= v << 13u; + v ^= v >> 17u; + v ^= v << 5u; + return v; +} + +uvec2 uhash(vec2 uv, float o) { + return uvec2(hash(hash(uv.x) + uv.y), hash(hash(uv.x + o) + uv.y + o)); +} +float hmix(uvec2 h, int s) { + return mix(0, 1, (h.y >> s) & 1u) - mix(0, 1, (h.x >> s) & 1u); +} + +float m(vec2 uv, float t, float dens) { + uvec2 h0 = uhash(uv * 100, 0.5); + uvec2 h1 = uhash(uv.yx * 120, 0.2); + uvec2 h2 = uhash(uv.xx * dens, 0.2); + + float pat = hmix(h0, 10) + hmix(h1, 17); + float c = 1 - fract(uv.y * 0.3 + t * 0.3 + ((h2.x >> 6u) & 0xffu) / 250.0); + return pow(c, 10) * pat; +} + +vec2 rot(vec2 uv, float r) { + return mat2(sin(r), cos(r), -cos(r), sin(r)) * uv; +} + + +float mr(vec2 uv, float ri, float ro, float a0, float a1) { + float r = (atan(-uv.x, -uv.y) / 3.141592) * 180.0 + 180.0; + float d = length(uv); + return (step(a0, r) - step(a1, r)) * (step(ri, d) - step(ro, d)); +} + + +float rev(vec2 uvA, vec2 uvB, vec2 uvC) { + float c = 0; + + c += mr(uvA, 0.04, 0.085, 0, 360); + c += mr(uvA, 0.04, 0.155, 290, 350); + + c += mr(uvA, 0.225, 0.265, 0, 360); + c += mr(uvA, 0.19, 0.265, 0, 108); + c += mr(uvA, 0.19, 0.265, 120, 210); + c += mr(uvA, 0.19, 0.265, 225, 285); + c += mr(uvA, 0.13, 0.265, 20, 65); + c += mr(uvA, 0.13, 0.265, 137, 175); + c += mr(uvA, 0.13, 0.265, 250, 265); + + c += mr(uvB, 0.38, 0.435, 0, 360); + c += mr(uvB, 0.33, 0.435, 45, 55); + c += mr(uvB, 0.33, 0.435, 73, 91); + c += mr(uvB, 0.33, 0.435, 152, 163); + c += mr(uvB, 0.33, 0.435, 180, 205); + c += mr(uvB, 0.33, 0.435, 265, 325); + c += mr(uvB, 0.33, 0.435, 350, 360); + c += mr(uvB, 0.33, 0.435, 0, 20); + c += mr(uvB, 0.38, 0.46, 93, 150); + c += mr(uvB, 0.38, 0.46, 315, 325); + + + float cb = 0.6; + c += mr(rot(uvC, T), cb, cb + 0.01, 0, 270); + c += mr(rot(uvC, -T), cb + 0.02, cb + 0.025, 0, 150); + c += mr(rot(uvC, -T), cb + 0.02, cb + 0.025, 170, 300); + c += mr(rot(uvC, -T * 1.3), cb + 0.04, cb + 0.065, 0, 40); + c += mr(rot(uvC, -T * 1.3), cb + 0.04, cb + 0.065, 80, 140); + c += mr(rot(uvC, -T * 1.3), cb + 0.04, cb + 0.065, 180, 340); + + return c; +} + +void main(void) +{ + vec2 ouv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uvc = ouv - 0.5; + uvc.x += sin(uvc.y * 200 + T * 2) * 0.05 * smoothstep(2, 10, FFT(0.6) * 1000); + uvc *= 1.3; + + vec2 uv = ouv / vec2(v2Resolution.y / v2Resolution.x, 1); + uvc /= vec2 (v2Resolution.y / v2Resolution.x, 1); + + + float p = 0; + for (float i = 1; i <= 8; i++) { + vec2 uvt = vec2(uv.x + FFTI(0.7) / i, uv.y); + uvt.x += sin(uvt.y * 500 + T * 2) * 0.05 * smoothstep(3, 10, FFT(0.7) * 1000); + p += m(uvt * i, T * 0.3, 20 + (5 * i)) / i; + } + + float integ = texture(texFFTIntegrated, 0.01).r * 0.1; + vec2 uvm = uvc * (1.5 - FFT(0.1) * 6); + + vec3 col = vec3(0); + for (int i = 1; i < 8; i++) { + vec2 uvr = uvm * i * 0.25; + float r = rev(rot(uvr, integ), rot(uvr, -integ), uvr * 1.5); + col += vec3(0, 0.3, 0.7) * (r / i) * 0.1; + } + + float r = rev(rot(uvm, integ), rot(uvm, -integ), uvc * 1.5 * (FFT(0.3) * 20 + 0.8)); + col += vec3(0, 0.3, 0.7) * r; + + col += vec3(0, 1, 1) * p * 0.5; + col += FFT(ouv.x) * 10 * (1-ouv.y) * vec3(0, 0, 1); + col += FFT(1-ouv.x) * 10 * ouv.y * vec3(0, 0, 1); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ferris.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ferris.glsl new file mode 100644 index 000000000..960874e40 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ferris.glsl @@ -0,0 +1,245 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define UV gl_FragCoord.xy //Shortcut for gl_FragCoord +#define R v2Resolution.xy //Shortcut for v2Resolution +float t; //Time global variable + +// hi all, long time no see, hope things are well +// I'm referencing some stuff, and maybe some copy+paste, full jam mode baby +// remember to call your folks and eat vegetables +// greets to lgc, cns, $MACE, hg, pb, lns, 0b5vr, monad, polarity, fr, z10, nce, cat, inque, lj, atz, rbs, brcr, ivory labs, approximate, brain control, anyone else making (64k) intros, c64+snes+dmg sceners, norwegian sceners, everyone using st4b (hi wrl), friends, family, and YOU +// special thanks to wrighter and evvvil for compute bonzo examples etc +// see (saw?) you at the last TRSAC +// <3 + +//READ / WRITE COMPUTE TEXTURE FUNCTIONS +void Add(ivec2 u, float c){//add pixel to compute texture + ivec3 q = ivec3(c*1000);//squish float into int, we use this trick to keep it additive as floatToInt wouldn't work additively + imageAtomicAdd(computeTex[0], u,q.x); + //imageAtomicAdd(computeTex[1], u,q.y); + //imageAtomicAdd(computeTex[2], u,q.z); +} +float Read(ivec2 u){ //read pixel from compute texture + return 0.001 * //unsquish int to float + float(imageLoad(computeTexBack[0],u).x) + //imageLoad(computeTexBack[1],u).x, + //imageLoad(computeTexBack[2],u).x + ; +} + +//HASH NOISE FUNCTIONS: Make particles random +uint seed = 1; //hash noise seed +uint hashi( uint x){x^=x>>16;x*=0x7feb352dU;x^=x>>15;x*=0x846ca68bU;x^=x>>16; return x;}// hash integer +float hash_f(){return float(seed=hashi(seed))/float(0xffffffffU);} // hash float +vec3 hash_v3(){return vec3(hash_f(),hash_f(),hash_f());} // hash vec3 +vec2 hash_v2(){return vec2(hash_f(),hash_f());} + +vec3 unitSquareToNGon(vec2 p, float n, float amount) +{ + float a = p.x * 2.0 - 1.0; + float b = p.y * 2.0 - 1.0; + + float pi = 3.141592; + + float r, theta; + if (a > -b) + { + if (a > b) + { + r = a; + theta = (pi / 4.0) * (b / a); + } + else + { + r = b; + theta = (pi / 4.0) * (2.0 - (a / b)); + } + } + else + { + if (a < b) + { + r = -a; + theta = (pi / 4.0) * (4.0 + (b / a)); + } + else + { + r = -b; + if (b != 0.0) + { + theta = (pi / 4.0) * (6.0 - (a / b)); + } + else + { + theta = 0.0; + } + } + } + + float circleRadius = r; + + r *= mix(1.0, cos(pi / n) / cos(theta - (2.0 * pi / n) * floor((n * theta + pi) / (2.0 * pi))), amount); + // This is just so that the shape isn't aligned to an axis, which looks a bit nicer + theta += .6; + + float u = r * cos(theta); + float v = r * sin(theta); + return vec3(u, v, circleRadius); +} + +vec2 get_random_point_in_disk() { + /*float angle = fract(hash_f()) * 3.14159265 * 2.0; + float rad = hash_f(); + return vec2(cos(angle), sin(angle)) * rad;*/ + vec2 s = vec2(hash_f(), hash_f()); + return unitSquareToNGon(s, 5.0, 1.0).xy; +} + + +mat2 rot(float angle) { + float c = cos(angle); + float s = sin(angle); + return mat2(c, s, -s, c); +} + +vec3 pallete(float k){ + // Simple variation of https://iquilezles.org/articles/palettes/ + // You can use anything here. + //return 0.5 + 0.5 * sin(vec3(3,2,1) + k); + return pow(vec3(k), vec3(3.0, 1.4, 1.0)); +} + +void main(void) +{ + t=fGlobalTime*.1; //Set global time variable + seed=0; //Init hash + seed+=hashi(uint(UV.x))+hashi(uint(UV.y)*125); //More hash + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); //Default uv calc from Bonzo + //uv-=.5; //We want uv range 0->1 not -.5->.5 so things start at zero + uv/=vec2(v2Resolution.y / v2Resolution.x, 1); //uv now hold uv coordinates in 0->1 range + + //PLEASE NOTE: we have two uv coordinates variables: uv and UV + //uv is from 0 -> 1 + //UV is from 0 -> screen resolution, and is basically a shortcut to gl_FragCoord.xy + //Depending on what we want to achieve, sometimes we'll use uv, sometimes UV. Generally because the uv range simplifies the calculation, stick around yeah? + + // Classic camera example: remove this if not using camera and just using transforms in proj_point function + float rad = 7.0 + sin(t * 8.2) * 3.0; + vec3 cameraTarget=vec3(0,0,0), //Camera target + cameraPosition=vec3(cos(t)*rad,0.0,sin(t)*rad); //Camera position + cameraPosition.xz *= rot(sin(t * 0.9) * 12.0); + cameraPosition.xy *= rot(sin(t * 0.7) * 12.0); + vec3 cameraForward=normalize(cameraTarget-cameraPosition), //Camera forward + cameraLeft=normalize(cross(cameraForward,vec3(0,1,0))), //Camera left + cameraTop=normalize(cross(cameraLeft,cameraForward)); //Camera top + mat3 cameraDirection=mat3(cameraLeft,cameraTop,cameraForward);//Camera direction matrix + + if(UV.x<100){ //Amount / Density of particles + vec3 p=hash_v3(); + p -= 0.5; + p *= 10.0; + + for (int i = 0; i < 4; i++) { + float r = hash_f(); + // Random variable + + // Pick a transformation + if(r<.3){ + p += 0.3; + p.xz *= rot(t); + p /= clamp(dot(p,p),-0.1,4.); + p += vec3(texture(texFFTSmoothed, 0.1).x,0.4,0.); + } else if(r<.66){ + p.xz *= rot(5.2+ sin(float(uv.x * 1000.)*0.00001)*0.001); + p.yz *= rot(5.2 + texture(texFFTSmoothed, 0.1).x * 10.0); + p += vec3(-1.,0.4,0.); + p /= clamp(dot(-p,p),-3.2,1.); + p *= vec3(2,1.5,1.2)*1.5; + } + else { + p -= vec3(-0.2,0.2,0.2); + p /= clamp(dot(p,p),-4.5,10.); + p += vec3(-1.,0.4,0.); + p *= vec3(2,1.5,1.2)*3.1; + } + } + + int num_plots = 500; + for (int i = 0; i < num_plots; i++) { + vec3 p2 = p; + // Classic camera example + p2-=cameraPosition; //Shift p to cameraPosition + p2=p2*cameraDirection; //Multiply by camera direction matrix + + //No camera example: careful, order matters + //p.xz*=rotate2D(t); + //p.z+=50; + + if(p2.z> 0.) { + float fov=0.5; //FIELD OF VIEW amount + const float focus_dist = 6.0; + float dof_scale = 70.0 + texture(texFFTSmoothed, 0.8).x * 2000.0; + vec2 dof_sample = dof_scale * get_random_point_in_disk() * abs(p2.z - focus_dist) / min(v2Resolution.x, v2Resolution.y); + p2.xy += dof_sample; + vec2 anti_aliasing = get_random_point_in_disk() / min(v2Resolution.x, v2Resolution.y); + p2.xy += anti_aliasing; + p2.xy/=p2.z*fov; //Perspective projection using field of view above + p2.x -= 0.3; + p2.y -= 0.2; + ivec2 q=ivec2((p2.xy+vec2(R.x/R.y,1)*0.5)*vec2(R.y/R.x,1)*R); //Convert to int + //If point is NOT behind camera, draw point with gradient along p.z. Removing if(q.x>0) will make it trippy where things behind camera appear at front + //CAREFUL when calling Add function. Here we are not doing it in a loop so it's ok. But if you were inside a loop, then you shouldnt do this like 100 times, if you do have loop of 100 make sure to exit early and / or not call Add every iterations + if(q.x>0)Add(q,(10.0 + texture(texFFTSmoothed, 0.5).x * 2000.0)/float(num_plots)/p2.z); + } + } + } + //vec3 s = Read(ivec2(UV))*.3; //Read back compute texture pixel, *.3 controls the brightness of the whole thing as it's additive + + //Recalculate uv for vignette: This is only done to simplify making a vignette background by using uv in range -.5,.5. It's the original uv calc you get in bonzomatic start tunnel + /*uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); //Default uv calc from Bonzo, used for vignette + uv-=.5; //Default uv calc from Bonzo, used for vignette + uv/=vec2(v2Resolution.y / v2Resolution.x, 1); //Default uv calc from Bonzo, used for vignette + + vec3 col = vec3(.4)-length(uv)*.5; //Background colour and vignette + col+=pow(s,vec3(.45)); //Particle colour and gamma correction + out_color = vec4(col,0); //Return final colour for pixel + */ + float density_scaled = Read(ivec2(UV)); + int box_scale = 100 + int(texture(texFFT, 0.2).x * 80.0); + density_scaled += Read(ivec2(UV) / box_scale * box_scale) * 0.1; + float brightness = 10.0; + density_scaled *= brightness; + + vec3 colour = pallete(density_scaled); + colour *= density_scaled; + colour += vec3(0.0, 1.0, 1.0) * texture(texFFT, 0.8).x * 100.0 * uv.y; + //colour += vec3(0.0, 0.0, 0.7) * texture(texFFT, 0.2).x * 10.0 * (1.0 - uv.y); + colour = colour / (1. + colour); + + out_color = vec4(vec3(1.0) - colour, 1.); + + out_color.xyz = mix(out_color.xyz, texture(texPreviousFrame, vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y)).xyz, 0.01); + + if (abs(uv.y - 0.5) > 0.3) + out_color = vec4(vec3(0.0), 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_gam0022.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_gam0022.glsl new file mode 100644 index 000000000..5f20edcfa --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_gam0022.glsl @@ -0,0 +1,275 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define PI acos(-1) +#define TAU (2. * PI) +#define saturate(x) clamp(x, 0, 1) +#define VOL 0.0 +#define SOL 1.0 +#define phase(x) (floor(x) + .5 + .5 * cos(TAU * .5 * exp(-5. * fract(x)))) + +float beat, beatTau, beatPhase; +vec3 pos, light; +float scene; + +vec4 map(vec3 p); + +float sdBox(vec3 p, vec3 b) { + vec3 q = abs(p) - b;return length(max(q, 0)) + min(0, max(q.x, max(q.y, q.z))); +} + +void U(inout vec4 m, float d, float a, float b, float c) { + if (d < m.x) m = vec4(d, a, b, c); +} + +void rot(inout vec2 p, float a) { p *= mat2(cos(a), sin(a), -sin(a), cos(a)); } + +void pmod(inout vec2 p, float s) { + float n = TAU / s; + float a = PI / s - atan(p.x, p.y); + a = floor(a / n) * n; + rot(p, a); +} + +float fft(float d) { return texture(texFFT, fract(d)).r; } + +float minRadius2 = 0.5; +float fixedRadius2 = 1.0; +float foldingLimit = 1.0; + +void sphereFold(inout vec3 z, inout float dz) { + float r2 = dot(z, z); + if (r2 < minRadius2) { + float temp = (fixedRadius2 / minRadius2); + z *= temp; + dz *= temp; + } else if (r2 < fixedRadius2) { + float temp = fixedRadius2 / r2; + z *= temp; + dz *= temp; + } +} + +void boxFold(inout vec3 z, inout float dz) { z = clamp(z, -foldingLimit, foldingLimit) * 2.0 - z; } + +vec3 normal(vec3 p) { + vec2 e = vec2(0, .0005); + return normalize(map(p).x - vec3(map(p - e.yxx).x, map(p - e.xyx).x, map(p - e.xxy).x)); +} + +vec3 fbm(vec3 p) { return sin(p) + sin(p * 2) / 2 + sin(p * 4) / 4; } + +vec3 pal(float h) { + vec3 col = vec3(0.5) + 0.5 * cos(TAU * (vec3(0.0, 0.33, 0.67) + h)); + return mix(col, vec3(1), 0.1 * floor(h)); +} + +#define FLT_EPS 5.960464478e-8 +float roughnessToExponent(float roughness) { + return clamp(2.0 * (1.0 / (roughness * roughness)) - 2.0, FLT_EPS, 1.0 / FLT_EPS); +} + +vec3 evalLight(vec3 p, vec3 normal, vec3 view, vec3 baseColor, float metallic, float roughness) { + vec3 ref = mix(vec3(0.04), baseColor, metallic); + vec3 h = normalize(light + view); + vec3 diffuse = mix(1.0 - ref, vec3(0.0), metallic) * baseColor / PI; + float m = roughnessToExponent(roughness); + vec3 specular = ref * pow(max(0.0, dot(normal, h)), m) * (m + 2.0) / (8.0 * PI); + return (diffuse + specular) * max(0.0, dot(light, normal)); +} + +vec4 dMenger(vec3 z0, vec3 offset, float scale, float iteration) { + vec4 z = vec4(z0, 1.0); + for (int n = 0; n < iteration; n++) { + z = abs(z); + + if (z.x < z.y) z.xy = z.yx; + if (z.x < z.z) z.xz = z.zx; + if (z.y < z.z) z.yz = z.zy; + + z *= scale; + z.xyz -= offset * (scale - 1.0); + + if (z.z < -0.5 * offset.z * (scale - 1.0)) { + z.z += offset.z * (scale - 1.0); + } + } + + float d1 = sdBox(z.zxy, vec3(1)) / z.w; + float d2 = sdBox(z.zxy, vec3(0.1, 1.2, 0.8)) / z.w; + vec4 m = vec4(d1, SOL, 1, 10); + float hue = 2 + fract(pos.z * 2 + length(pos.xy) * 0.2); + U(m, d2, VOL, saturate(cos(pos.z / 4 * TAU + beatTau / 2)), hue); + return m; +} + +float dMandel(vec3 z, float scale, int n) { + vec3 offset = z; + float dr = 1.0; + for (int i = 0; i < n; i++) { + boxFold(z, dr); // Reflect + sphereFold(z, dr); // Sphere Inversion + z = scale * z + offset; // Scale & Translate + dr = dr * abs(scale) + 1.0; + } + float r = length(z); + return r / abs(dr); +} + +vec4 map(vec3 p) { + pos = p; + vec4 m = vec4(1, 1, 1, 1); + float a = 3.3; + + pos += 0.2 * fbm(pos * 4.); + rot(pos.xy, beat / 4); + // rot(pos.zx, beat / 4); + + if (scene == 0) { + a = 10; + p = pos; + rot(p.xz, beatTau / 32); + rot(p.xy, beatTau / 64); + p -= 0.5 * a; + p = mod(p, a) - 0.5 * a; + return vec4(dMandel(p, -3.3 + 15 * fft(0.1), 10), SOL, 8, 5 + fract(length(p))); + } + else if (scene == 1) { + a = 20; + p = pos; + rot(p.xz, beatTau / 32); + p -= 0.5 * a; + p = mod(p, a) - 0.5 * a; + return vec4(dMandel(p, 2.78 + 15 * fft(0.1), 10), SOL, 8, 4.7); + } + else if (scene == 2) { + a = 4; + p = pos; + p -= 0.5 * a; + p = mod(p, a) - 0.5 * a; + pmod(p.xy, 8); + return dMenger(p, vec3(1.5, 2.2, 0.7 + 2.5 * (0.5 + 0.5 * cos(beatTau / 16))), 2.2, 4); + } + else if (scene == 3) { + a = 3.3; + p = mod(pos, a) - 0.5 * a; + float s = 1; + for (int i = 0; i < 4; i++) { + p = abs(p) - 0.5; + rot(p.xy, -0.5); + p = abs(p) - 0.4; + rot(p.yz, -0.1); + + float b = 1.4; + p *= b; + s *= b; + } + + U(m, sdBox(p, vec3(0.5, 0.05, 0.05)) / s, SOL, 1, 10); + U(m, sdBox(p, vec3(0.1 + 0.5 * cos(beatTau / 8), 0.06, 0.05)) / s, VOL, 0.1, 1.9); + U(m, sdBox(p, vec3(0.2, 0.1, 0.1)) / s, VOL, saturate(cos(beatTau / 2 + TAU * pos.z / 8)), 5.5); + } + else if (scene == 4) { + a = 16; + vec3 of1 = vec3(2.68, 2.1, 1.9); + p = mod(pos, a) - 0.5 * a; + p -= of1; + + for (int i = 0; i < 4; i++) { + p = abs(p + of1) - of1; + rot(p.xz, TAU * (0.05)); + rot(p.zy, TAU * 0.21); + rot(p.xy, TAU * (-0.52)); + } + + vec3 p2 = p; + p2.y = mod(p2.y, 0.4) - 0.5 * 0.4; + + vec3 p3 = p; + p3.y = mod(p3.y, 4) - 0.5 * 4; + U(m, sdBox(p2, vec3(1, 0.05, 1)), SOL, 0.1, 1); + U(m, sdBox(p, vec3(0.5, 20, 0.5)), VOL, saturate(cos(beatTau / 2 + p.y * TAU / 4)), 2.4 + fract(beat / 8)); + U(m, sdBox(p3, vec3(1, 0.2, 1)), VOL, saturate(cos(beatTau / 2 + TAU / 32 * pos.z / 16)), 2.9 + fract(beat / 16)); + } + + return m; +} + +vec3 render(vec3 ro, vec3 rd) { + vec3 col = vec3(0); + float t = 0.; + for (int i = 0; i < 100; i++) { + vec3 p = ro + rd * t; + vec4 m = map(p); + float d = m.x; + + if (m.y == SOL) { + t += d; + if (d < t * 0.001) { + // col += evalLight(p, n, -ray, vec3(1), 0.7, 0.5) * 2; + vec3 n = normal(p); + float diffuse = saturate(dot(n, light)); + col += evalLight(p, n, -rd, vec3(1), 0.7, 0.5) * pal(m.w) * m.z; + t += d; + break; + } + } else { + t += abs(d) * 0.5 + 0.01; + col += saturate(0.001 * pal(m.w) * m.z / abs(d)); + } + } + col = mix(vec3(0), col, exp(-0.01 * t)); + return col; +} + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + beat = time * 140 / 60; + float span = 1; + float count = 5; + beat = mod(beat, span * count); + // beat = 16 * 5 + mod(beat, 16); + beatTau = beat * TAU; + beatPhase = phase(beat / 2.); + scene = floor(beat / span); + // scene += saturate(pow(fract(beat / 4), 1) - abs(uv.y)); + // scene = mod(floor(scene + 0.5), count + 1); + // scene = 4; + + vec3 ro = vec3(0, 0, 0.5 * time); + // ro = vec3(0, 2.5, -4); + if (scene == 0) ro = vec3(0, 0, -8); + else if (scene == 1) ro = vec3(0, 0, -15); + else if (scene == 4) ro = vec3(0, 0, 10 * time); + + vec3 rd = vec3(uv, 1.1 + 0 * cos(TAU * time / 8)); + rd = normalize(rd); + light = normalize(vec3(1, 1, -1)); + vec3 col = render(ro, rd); + // col += texture(texSessions, saturate(vec2(0.5 + uv.x, 0.5 - uv.y * 2))).rgb * 100 * fft(0.2); + // col += 10 * fft(40 * abs(uv.x)) - abs(uv.y); + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ivan_dianov.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ivan_dianov.glsl new file mode 100644 index 000000000..c7e7e534b --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_ivan_dianov.glsl @@ -0,0 +1,85 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform float fMidiKnob; + +#define col(c) (cos((c+vec3(.0,.2,.3))*2.*3.1415)*.5+.5) +layout(location = 0) out vec4 o; // out_color must be written in order to see anything + +#define rnd(x) fract(1.1e4*sin(mod(111.1*(x),3.14)+.1)) +#define F float +#define N normalize +#define L length +#define V vec2 +#define W vec3 +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) +#define time fGlobalTime +#define S(x) sin(x+2*sin(x+4*sin(x))) +//#define + +float sigmoid(float x) { + return clamp((x*(2.51*x+0.03))/(x*(2.43*x+0.59)+0.14),0.,1.); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + o=vec4(0); + + F i=0,d=0,e=1; + W p,rd=N(W(uv,1)),ro=W(0,0,0),pI; + W pCol; + for(;i++<99&&e>.0001;){ + p=rd*d+ro; + p.xz*=rot(S(time*.1)*.2); + p.yz*=rot(S(time*1.68*.1)*.2); + pI = p; + p.x+=7; + p.z+=time+pI.z*.1; + p/=7.; + p=abs(fract(p*.5)*2.-1.)-.5; + p*=7.; + + F j=0,ss=1.2,s; + W sz=W( + S(time+pI.z*.1)*.5+1.5, + S(time+L(pI)*.1)*.2+.5, + 1); + + W pp = p; + F res=9999.; + W pgl; + for(;j++<3.;){ + if(j==1)pCol=p; + if(j==2)pgl=p; + p-=clamp(p, -sz, sz)*2.; + s = 12.*clamp(.3/min(dot(p,p),1.),0.,1.); + p*=s; ss*=s; + p+=.3*pp; + p.xz*=rot(time*.3+pI.z*.1); + p.yz*=rot(time*.323+pI.z*.12); + p=p.zxy; + res = min(res,(L(p.yz)+.1*(sin(pI.z*2.))-2.1+.3*S(time*1-pI.z*.5))/ss); + } + //F gl=(L(p.xy)-1.1)/ss; + e=res; + //o.r+=.03*exp(-i*i*e); + //e=min(e,gl); + d+=e; + } + o+=1-i/99; + o.rgb*=col(S(L(pCol.xy)*.02)); + o.r=sigmoid(o.r); + o.g=sigmoid(o.g); + o.b=sigmoid(o.b); + o.g+=.1; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_kali.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_kali.glsl new file mode 100644 index 000000000..e063b84b9 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_kali.glsl @@ -0,0 +1,204 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define iTime mod(fGlobalTime,1000.) +#define iResolution v2Resolution +float so=0.; + + +precision highp float; +#define col1 vec3(0,1,0)*so*20 +#define col2 vec3(0,.10,0.) +#define col3 vec3(2.,0.5,0.)*so*20 +#define col4 vec3(1,1.,1.)*.7 +#define col5 vec3(w*2,w,w*.5)*.3 +#define spex .1 +#define spey -1. +#define fa .1211 +#define amp 0. +#define focus 20. +#define ospe 2. +#define mx .5 +#define bri 2. +#define zoom .7 + +#define rnd01 rnd(01.) +#define rnd02 rnd(02.) +#define rnd03 rnd(03.) +#define rnd04 rnd(04.) +#define rnd05 rnd(05.) +#define rnd06 rnd(06.) +#define rnd07 rnd(07.) +#define rnd08 rnd(08.) +#define rnd09 rnd(09.) +#define rnd10 rnd(10.) +#define rnd11 rnd(11.) +#define rnd12 rnd(12.) +#define rnd13 rnd(13.) +#define rnd14 rnd(14.) +#define rnd15 rnd(15.) +#define rnd16 rnd(16.) +#define rnd17 rnd(17.) +#define rnd18 rnd(18.) +#define rnd19 rnd(19.) +#define rnd20 rnd(20.) + + + +float cuad; + + +#define PI 3.14159 + +// vec3 col1 = vec3(0.2,.5,.7); +// vec3 col2 = vec3(0.,0.,1.); +// vec3 col3 = vec3(0.,.0,.5); +// vec3 col4 = vec3(0.,.5,.5); + +float w=0.; + + +float rnd(float p) +{ + p*=fa+w; + p*=1234.; + p = fract(p * .1031); + p *= p + 33.33; + return fract(2.*p*p); +} + + +float det=.005; +float maxdist=5.; +vec3 ldir=vec3(1.,1.,-1.); +vec3 fcol; + + +float hash12(vec2 p) +{ + p*=1232.231; + vec3 p3 = fract(vec3(p.xyx) * .1031); + p3 += dot(p3, p3.yzx + 33.33); + return fract((p3.x + p3.y) * p3.z); +} + + +float segment(vec3 p, vec3 a, vec3 b) { + float h = max(0.,min(1.,dot(p-a, b-a)/dot(b-a, b-a))); + return length(p-a-h*(b-a)); + +} + + +mat2 rot(float a) { + float s=sin(a),c=cos(a); + return mat2(c,s,-s,c); +} + +//rnd04 + + +vec2 polarUV(vec2 uv) { + float angle = atan(uv.y, uv.x); // Obtener el ngulo polar + float radius = length(uv)-.5; // Obtener la distancia radial desde el centro + + // Normalizar el ngulo al rango [0, 1] (opcional) + angle = (angle + 3.14159265359) / (2.0 * 3.14159265359); + + // Devolver las coordenadas UV transformadas + return vec2(angle, radius); +} + + +vec3 render(vec2 p) { + vec2 po=p; + //p*=100.-sin(iTime*.2)*95.; + float m=100.; + float l=100.; + float s=100.; + float it=0.; + p*=1.+rnd04*3.+so*amp; + if (rnd13>.5) p/=clamp(dot(p,p),.2+rnd01*.3,1.+rnd02*2.); + p+=vec2(floor(rnd02*4.)*.5,floor(rnd03*4.)*.5)*(.5+step(rnd14,.7)*.5); + if (rnd14>.7) p=polarUV(p); + p.x+=iTime*spex; + p.y+=iTime*spey; + p=mod(p,4); + for (float i=0.; i<5.; i++) { +// if (i>floor(rnd11*3.)+4.) break; + p=abs(p)/clamp(abs(p.x*p.y),.5*rnd06,2.+rnd07*3.)-vec2(1.+rnd08*.5,1.+rnd09*.5); + float a=abs(p.x+step(.5,fract(p.y+iTime+i*.25+so*ospe))*.5); + if (i>rnd10*3.) m=min(m, a); + if (m==a) it=i; + //l=min(l,length(p)-.03); + l=min(l,length(max(vec2(0),abs(p)-(.2+rnd05*.3)*step(fract(p.y*20.+iTime*.0),.4)))); + s=min(s,length(p)); + } + float w=rnd12*.05; +// m=smoothstep(.03+w,.02+w,m); +// l=smoothstep(.03+w,.02+w,l); + m=step(m,.07+w); + l=step(l,.0); + s=exp(-10.*s); + vec3 col=mix(col1, col2, step(.5,abs(p.y)))*m; + col=mix(col,col3, it*.2)*m; + col=mix(col, col5, step(length(col),.01)); + col=mix(col,col4,l*.5); + col=mix(col,.9-col5,s*.8*step(.6,rnd17)); + return col; +} + +vec2 rand2(vec2 co){ + return + vec2(fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453), + fract(cos(dot(co.xy ,vec2(4.898,7.23))) * 23421.631)); +} + +vec2 uniformDisc(vec2 co) { + vec2 r = rand2(co); + return sqrt(r.y)*vec2(cos(r.x*6.28),sin(r.x*6.28)); +} + + +void main() +{ + for (float i=0.; i<10.; i++) + { + so+=texture(texFFT,i/10.).x; + } + vec3 prev=texture(texPreviousFrame,gl_FragCoord.xy/v2Resolution).rgb; + vec2 uv = gl_FragCoord.xy/v2Resolution - .5; + uv/=.7+uv.y*sin(iTime*.5)*2.; + uv*=zoom; + float b=smoothstep(.5,.3,max(abs(uv.x),abs(uv.y))); + uv.x*=iResolution.x/iResolution.y; + w=max(step(.5,uv.x+sin(iTime)),step(1.,uv.y+cos(iTime))); + vec2 jit=uniformDisc(uv+iTime*.1); + uv*=rot(PI/4.*floor(rnd12*4.)); + vec2 pix=1./iResolution; + float y=smoothstep(.6,.3,abs(uv.y)); + uv+=jit*pix*(1.+focus*length(uv)); + vec3 col = render(uv); + col=mix(col5,col*1.1,b); + //col+=(hash12(uv+iTime*.1)-.5)*.5; + if (rnd18>.9) col=vec3(pow(length(col)*.8,2.)); + col=mix(col*bri,prev,mx); + //col=1-col*2; + out_color = vec4(col,1.); +} diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_klos.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_klos.glsl new file mode 100644 index 000000000..ecadc0efe --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_klos.glsl @@ -0,0 +1,155 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define f float +#define v2 vec2 +#define v3 vec3 + +#define F gl_FragCoord +#define R v2Resolution +#define T fGlobalTime +// #define R iResolution +// #define T iTime +#define N normalize + +#define B (0.01*abs(sin(10.* T)) +0.01*sin(T) +0.005*sin(0.1*T)) +#define BI (0.01*T) +#define BS B +// #define B (50.*texture(texFFTSmoothed, 0.).x); + +// V A = V(0.2, 0.5, 1.4); + +f gB = 10e8; + +v3 colA = v3(0.2, 0.5, 1.4); + +mat2 rot(f a) { return mat2(cos(a), -sin(a), sin(a), cos(a)); } + +f box(v3 p, v3 b) { + v3 q = abs(p) -b; + return length( max(q, v3(0.))) + min( max(max(q.x, q.y), q.z), 0.); +} + +f plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + vec4 p = vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); + return dot(p.xyz, p.xyz); +} + +f map(v3 p) { + + f s = 10e8; + + v3 p0 = p; + p0.z -= 10.0*T +10*abs(sin(0.1*T)) +20*B; + s = min( p0.y +1.5 + plas(0.1*p0.xz - 0.1*T, 0.1*BI), -p0.y + 6.); + + p0.x = abs(p0.x); + p0.xy *= rot( -0.7); + p0.x -= 8.; + p0.z = mod(p0.z + 2.0, 4.0) - 2.0; + s = min(s, box(p0, v3(1.0, 100.0, 1.0))); + + + p -= v3(0, 2., 12. -100.0*BS); + + for (f i = 0.; i < 4.; ++i) { + p -= v3(0.2, 0.6 + 0.5*abs(sin(BI)), 0.6); + p.xy *= rot( 0.01*T -5*B ); + p.yz *= rot( -0.05*T +10*B); + p = abs(p); + + if (i > 2) { + p.yz *= rot( 5.*T); + p.xz *= rot( 1.*T); + } + + f sl = box(p, v3(0.01, 100.0, 0.01)); + s = min(s, sl); + gB = min(gB, sl); + } + + s = min(s , + mix( + length(p) -0.15 -200.0*B, + box(p, v3(0.2)), + 0.5 + 0.5*abs(sin(T)) +) ); + + return s; +} + + +void main(void) +{ + v3 c = v3(0); + + vec2 q = (2.0*F.xy - R.xy) / R.y; + out_color = vec4(0.); + if (abs(q.y) > 0.75) return; + + v3 ro = v3( 2.0*sin(10.0*BI) + sin(.1*T), 2. + 20.0*B +1.*sin(T), 0); + v3 rd = N(v3(q, 2.)); + rd.xy *= rot( 0.4*sin(20.0*B) ); + + // c = v3(q, 0.); + c = v3(0.); + f t = 0.2; + f tt = 10e8; + for (f bi = 0.; bi < 4.; ++bi) { + for (f i = 0.; i < 64.; ++i) { + f d = map(ro + rd * t); + if (d < 0.0001 || t > 40.) break; + t += d; + } + tt = bi == 0. ? t : tt; + if (t > 0.1 && t < 40.0) { + v3 p = ro + rd * t; + f str0 = smoothstep(.5, .51, fract(2.33*p.x)); + f str1 = smoothstep(.5, .51, fract(0.1*p.x)); + + v2 e = 0.001 * v2(-1., 1); + v3 n = N( + e.xxx * map(p + e.xxx) + + e.yxx * map(p + e.yxx) + + e.xyx * map(p + e.xyx) + + e.xxy * map(p + e.xxy) + ); + // c = n; + f fre = pow(dot(rd, n) + 1., 6.); + c += colA.zyx * (0.5+0.5*fre) * (str0+str1); + + rd = N(reflect(rd, n) + 0.01 * fract(sin(100.0*p) * 43758.5453)); + ro = p; + } + } + // c = v3(1.0 - (t / 32.)); + // c = mix(c, N(mix(colA, colA.zyx, sin(20.0*(t / 32.)))), sin(T)); + + c = mix(c, 0.01*colA, 1.0 - exp(-0.01 *tt*tt)); + + f sb = 2. + 80.0*BS + 20.0*B + 0.1*pow((1.-fract(7.5*T)), 4.) * smoothstep(0., 1., fract(T));; + c += sb * colA * exp(gB * -20.0); + c += sb * colA * exp(gB * -10.0); + c += sb * colA * exp(gB * -2.0); + c += sb * colA * exp(gB * -1.0); + c += 20.0*B; + c += 0.3 * pow((1.-fract(7.5*T)), 4.) * smoothstep(0., 1., fract(T)); + + + c = c / (1. + c); + c = pow(c, v3(0.4545)); + c = pow(c, v3(2.)); + out_color = c.xyzz; +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_krafpy.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_krafpy.glsl new file mode 100644 index 000000000..e124e0157 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_krafpy.glsl @@ -0,0 +1,178 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime + +mat2 rot(float a){ +float c = cos(a); + float s = sin(a); + return mat2(c, -s, s, c); +} + +float hash13(vec3 p3) { + p3 = fract(p3 * .1031); + p3 += dot(p3, p3.zyx + 31.32); + return fract((p3.x + p3.y) * p3.z); +} + +float noise(vec3 p) { + vec3 i = floor(p); + vec3 w = smoothstep(0., 1., p-i); + + vec2 k = vec2(1., 0.); + return + mix(mix(mix(hash13(i+k.yyy), + hash13(i+k.xyy), w.x), + mix(hash13(i+k.yxy), + hash13(i+k.xxy), w.x), w.y), + mix(mix(hash13(i+k.yyx), + hash13(i+k.xyx), w.x), + mix(hash13(i+k.yxx), + hash13(i+k.xxx), w.x), w.y), w.z); +} + +float fbm(vec3 p){ + float f = 0.; + float s = 0.5; + float a = 1.; + for(int i = 0; i < 1; i++){ + s *= 2.; + a *= 0.5; + f += a*noise(s*p); + } + return f; +} + +float gyr(vec3 p){ + return dot(sin(p.xyz), cos(p.yzx))*0.7; +} + +float smin(float a, float b , float k){ + return -log2(exp2(-k*a)+exp2(-k*b))/k; + } + + float zz(float x){ + return fract(x)*2-1; + } + + float ss(float x){ return 0.5*sin(x)+0.5;} + +float map(vec3 p) { + vec3 p0 = p; + p.xz *= rot(p.y); + p.xz *= 1. + 0.2*sin(p.y + 2*time); + p.x = abs(p.x)-1.; + p.z = abs(p.z) - 0.5; + float d = abs(length(p) - (1+0.5*exp(-fract(3*time)))) -( 0.1 + 0.1*exp(-fract(time))); + vec3 q = p + time + pow(abs(sin(time*0.5)), 5); + p.xz *= rot(4*time); + p.yz *= rot(3*time); + + //vec3 c = vec3(cos(time),0,sin(time)); + //d = min(d, dot(q, c)-0.1); + + d = max(d, gyr(q*10 + sin(time))/10); + float d1 = d + fbm(p*(10+2*ss(3*time)))*0.1; + d = d1; + vec3 n = vec3(0, 1, 1); + float d2 = abs(dot(p, n) - sin(time)) - 1; + d = max(d, d2); + return d; +} + +vec3 normal(vec3 p){ + vec2 h = 0.001*vec2(1,-1); + return normalize( + h.xyy*map(p+h.xyy) + + h.yxy*map(p+h.yxy) + + h.yyx*map(p+h.yyx) + + h.xxx*map(p+h.xxx) + ); + } + + +float glow = 0; +vec2 march(vec3 ro, vec3 rd){ + float t = 0; + float n = 32; + for(float i = 0.; i < n; i++){ + float d = map(ro + rd*t); + glow += pow(exp(-3*d), 50); + if(d < 0.001){ + return vec2(t, i/n); + } + t += d; + } + return vec2(-1); +} + +void main(void) +{ + vec2 uv = gl_FragCoord.xy / v2Resolution.xy; + uv -= 0.5; + uv.x *= v2Resolution.x / v2Resolution.y; + + vec3 col = vec3(0); + + vec3 ro = vec3(0, 0, -4); + vec3 rd = normalize(vec3(uv, 1)); + rd.xz *= rot(time); + ro.xz *= rot(time); + + vec2 hit = march(ro, rd); + if(hit.y > 0){ + float f = 1 - hit.y; + f = pow(f, 0.5); + col = vec3(1)*f; + + vec3 p = ro + rd*hit.x; + vec3 n = normal(p); + + + vec3 c = mix(vec3(1), vec3(0,1,1), 0.5*sin(10*time)+0.5); + c = mix(c, vec3(1,0,1), 0.3*sin(time)+0.5); + + float sh = max(0, dot(n, normalize(vec3(1)+sin(time)))); + col *= sh*sh*sh*sh*sh; + col += max(0, dot(n, -normalize(vec3(1)))) * vec3(0, 0, 1) * 0.5; + + vec3 s = normalize(vec3(1)); + col += pow(max(0, dot(n, -rd)), 10); + + col += f*c; + + vec3 k = normalize(vec3(0,1,0)); + k.xy *= rot(time); + k.zx *= rot(time); + col = mix(col, 1-col, step(0, dot(p,k))); + + col.rg *= rot(col.b + time); + } else { + col += glow; + } + + + float k = time + exp(-fract(5*time)); + float d = dot(uv, vec2(cos(k), sin(k))) + 0.3*sin(time); + float d2 = dot(uv, vec2(-cos(k), sin(k+1.33))) + 0.3*sin(time); + col = mix(col, 1.-col, step(d*d2, 0)); + //col= mix(col, 1-col, noise(vec3(uv) + + out_color = vec4(col, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_luckyxxl.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_luckyxxl.glsl new file mode 100644 index 000000000..55358296a --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_luckyxxl.glsl @@ -0,0 +1,167 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float PI = 3.14159265; +const float TWO_PI = 2.0 * PI; + +vec3 rainbow(float t) +{ + t = fract(t); + const float s = 2 * TWO_PI; + return max(vec3(max(cos(t*s), cos(1-t*s)), cos((t-1/3.)*s), cos((t-2/3.)*s)), vec3(0.0)); +} + +float t = fGlobalTime; +float b = fGlobalTime * 125.0 / 60.0; + +vec3 f1(vec2 u) +{ + float tt = t * 3; + u += vec2(sin(tt), cos(tt)) * 0.5; + vec2 p = vec2(atan(u.y, u.x), length(u)); + p.x += sin(p.y * 10.0) * sin(b / 4 * TWO_PI) * 0.2; + p.x += (texture(texFFT, 0.1).r * 2.0 - 1.0) + sin(t*20)*0.01; + float k = (1.0 - smoothstep(0.0, 0.5, abs(fract((p.x / TWO_PI * 25.0) + t * 0.2) - 0.5))) * min(p.y * 3.0, 1.0); + vec3 c = rainbow(t); + c += vec3(1.0) * pow(k, 32.0); + c *= 1.0 - fract(b*2)*2; + return k * c; +} + +vec3 f2(vec2 u) +{ + vec2 uu = u; + u.x += (texture(texFFT, abs(u.y)).r * (1.0 + abs(u.y) * 10) * 2.0 - 1.0) * 0.3; + u.x += sin(uu.y * 10 - t) * 0.1 + t * 0.1 + fract(b) * 0.1 * (fract(2*b) < 0.5 ? 1:-1); + vec3 c = vec3(0.0); + c += pow((1.0 - abs(fract(u.x * 5) - 0.5)), 16) * vec3(0.0, 1.0, 1.0); + return c; +} + +vec3 f3(vec2 u) +{ + vec2 cc = fract(u * 10); + ivec2 ii = ivec2(u * 10); + int i = (ii.x * 123 + ii.y * 1234124) % 1024; + float d = distance(cc, vec2(0.5)); + float tt = b + u.y * 0.1 + i/52.0; + vec3 c = max(0.0, fract(tt) * 0.5 - d) * vec3(0.0, 1.0, 0.0); + return c; +} + +vec3 f4(vec2 u) +{ + float y = u.y * 16; + float o = fract(y); + int i = int(y) + (int(b) * 12345) % 16; + float s = max(0.0, 1.0 - fract(b)); + if((i% 4) != 0) s = 0; + return vec3(o * s); +} + +vec3 f5(vec2 u) +{ + vec2 p = vec2(atan(u.y, u.x), length(u)); + u *= 1.0 + texture(texFFT, 0.01).r; + float a = -t; + vec2 cs = vec2(sin(a), cos(a)); + mat2 r = mat2(cs.x, -cs.y, cs.y, cs.x); + u = r * u; + u.x += int(u.y * 4) * 0.3; + u.y += int(u.x * 4) * 0.3; + float d = 1.0 - length(u) + sin(p.x * 20 + t * 5 + sin(t * 4) * 10 + p.y * 20) * 0.04; + float k = fract(d * 5 - t * 2 + sin(t * 2) * 2); + vec3 c2; + c2.x = fract(k); + c2.y = fract(k + 1/3.); + c2.z = fract(k + 2/3.); + int i = int(k*8); + vec3 c; + c.x = (i&1)==0?1:0; + c.y = (i&2)==0?1:0; + c.z = (i&4)==0?1:0; + return c2; +} + +float f6(vec2 u) +{ + u.y += (sin(u.x + t) + sin(u.x + t * 1.1234) * 0.5) * 0.2; + u.y += t * -0.2; + float k = fract(u.y * 16 + t * 5) < 0.9 ? 1:0; + return k; +} + +vec3 f7(vec2 u) +{ + u.y += texture(texFFT, 0.0).r * 0.0; + u.y += u.x * sin(t); + vec2 c = fract((u+12456) * 8); + ivec2 ii = ivec2((u+123456) * 8); + ii.y += ii.x; + int i = ii.x + ii.y; + float d = 1.0-distance(c, vec2(0.5))*2.0; + i<<=1; + vec3 cc = vec3((i&1)==0?1:0, (i&2)==0?1:0, (i&4)==0?1:0); + ii.y += ii.x + int(b); + float h = (ii.y&1)==0?0.0:1.0; + float hh = clamp(sin((u.x + u.y * 0.5) + t * 2) + sin(u.y + t * 4.1235), 0.0, 1.0); + cc *= h; + vec3 ccc = cc * vec3((i&1)==0?1:0) * d * hh; + ccc += (1.0 - smoothstep(0.0, 0.1, abs(d - (1.0 - fract(b))))) * h * hh; + return ccc; +} + +void main(void) +{ + vec2 u = gl_FragCoord.xy / v2Resolution * 2.0 - 1.0; + u.x *= v2Resolution.x / v2Resolution.y; + + vec3 c = vec3(0.0); + //c += f2(u) * 0.5; + //c += f3(u) * 0.8; + //c += f4(u) * 0.3; + c += f5(u); + c = mix(f5(u), f1(u), f1(u) * 10); + + //c = mix(c*0.8, f7(u), f6(u)); + c = f5(u)*0.6; + vec3 o = clamp(f7(u), 0.0, 1.0); + c = mix(c, o, o*2); + c *= 0.8; + if(fract(t * 20) < 0.5) c *= 0.0; + c += clamp(f1(u), 0.0, 1.0); + //c += clamp(f1(u), 0.0, 1.0); + + //c += texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution).rgb * 0.5; + //c *= 0.0; + + vec2 uu = u; + if(fract(b/4)<0.25) uu = uu.yx; + c += (1.0 - smoothstep(0.0, 0.3, abs(uu.y - sin(b * TWO_PI) * (fract(uu.x * 4)< 0.5?-1:1)))) * vec3(fract(uu.y*32)<0.2?1:1); + + vec2 uuu = gl_FragCoord.xy/v2Resolution*2-1; + float ps = 0.0, pd = 0.005; + c.r += ps*texture(texPreviousFrame, (uuu * (1-pd))*.5+.5).r; + c.g += ps*texture(texPreviousFrame, (uuu * 1)*.5+.5).g; + c.b += ps*texture(texPreviousFrame, (uuu * (1+pd))*.5+.5).b; + + + out_color = vec4(c, 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_musk.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_musk.glsl new file mode 100644 index 000000000..6df5d5317 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_musk.glsl @@ -0,0 +1,90 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +#define T fGlobalTime +#define O(X) sin(X*T*0.8) +#define M(X,Y) (mod(X,Y+Y)-Y) + +mat2 rot(float a){ float c=cos(a), s=sin(a); return mat2(c,s,-s,c); } + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + + + + vec3 col = vec3(0); + float pwr=0.52; + + for (float i=0; i<1; i+=0.01) + { + float r=0.1+T*4+i*O(0.2)*0.1+O(4)-T; + r=mix(sin(r*0.02)*16.0,cos(r*0.1)*4.0,smoothstep(-1,1,O(0.1))); + mat2 rm=rot(r+i*O(4)); + vec2 p2 = uv.xy*(9.0+O(2)+O(4)*2+i*O(0.1)*0.1)*(1); + p2*=rm; + p2=M(p2,1); + vec2 p3=M(p2,0.5); + float sz = O(1.5)*0.05+0.2; + float sz2 = O(2.5)*0.01+0.05; + float fi=T+i; + vec3 ch=abs(vec3(sin(vec3(fi,fi+3,fi+5)))); + col+=ch*0.0005; + ch.xyz*=vec3(O(.19),O(0.12),O(1.4)*0.5+0.5); + col = max(col,smoothstep(sz,sz-1e-2,max(abs(p2).x, abs(p2).y))*pwr*ch); + p2*=4.5; + col = max(col,smoothstep(sz2,sz2-1e-2,max(abs(p3).x, abs(p3).y))*pwr*ch); + + } + for (int i=0; i<2; i+=1){ + col*=smoothstep(-0.4,0.4,sin(T*4+uv.y*(999.0+float(i)*10.0+sin(T*0.1)*100.0)))*0.29+0.96; + } + for (int i=0; i<2; i+=1){ + col*=smoothstep(-0.4,0.4,sin(T*4+uv.x*(999.0+float(i)*10.0+sin(T*0.1)*100.0)))*0.29+0.96; + } + col*=1-length(uv)*0.2; + col=mix(col, vec3(length(col))*0.2, -1); + col=1.9*col/(1+col); + + + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_nusan.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_nusan.glsl new file mode 100644 index 000000000..647ce1f93 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_nusan.glsl @@ -0,0 +1,175 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = mod(fGlobalTime, 300); + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float fft(float t) { + return texture(texFFTSmoothed, 0.01+fract(t)*0.1).x; +} + +float rnd(float t) { + return fract(sin(t*234.854)*543.945); +} +vec3 rnd(vec3 t) { + return fract(sin(t*234.854+t.yzx*453.864+t.zxy*564.954)*543.945); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1), pow(smoothstep(0,1,fract(t)),10)); +} + +float sec; + +vec3 atm=vec3(0); +float map(vec3 p) { + vec3 bp=p; + for(int i=0; i<3; ++i ){ + p.yz *= rot(time*0.3 + i +fft(0.02+i*0.02)*2); + p.xz *= rot(time*0.2 + i*0.3 + fft(0.03+i*0.1)*2); + p=abs(p)-1-min(fft(0.02),0.1)*10-3; + } + + vec3 p2=p; + + float d=box(p,vec3(1)); + + p=abs(p)-3; + p=abs(p)-1; + d=min(d, box(p,vec3(0.2,0.2,30))); + + p2=abs(p2)-7; + + //d=min(d, box(p2,vec3(30,0.2,0.2))); + + + d = max(d, 20-length(bp)); + + d = min(d, length(bp)-10); + + float d2 = length(p.xz)-0.1; + d=min(d,max(d2,0.1)); + //if(rnd(sec+0.1)<0.5) atm-= vec3(1,0.4,0.8) * 0.004/(0.01+abs(d2)); + + return d; +} + +void cam(inout vec3 p) { + p.xz *= rot(time*0.12); + p.xy*=rot(time*0.1); +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + time=mod(fGlobalTime, 300); + sec=floor(time-length(uv)/3); + + + time *= 0.3; + + //time *= 0.4+sin(time)*0.02; + time += rnd(sec)*400; + time += rnd(floor(abs(uv.x)*5-time*10)*0.3+0.1)*0.9; + + uv.y -= fft(0)-0.05; + + if(rnd(sec*0.3)<0.3) uv.x=abs(uv.x); + if(rnd(sec*0.4)<0.3) uv.y=abs(uv.y); + + vec3 s=vec3(0,0,-80); + s.x += sin(time/30)*10; + vec3 r=normalize(vec3(uv,0.3+4*rnd(sec+0.2))); + cam(s); + cam(r); + + vec3 col=vec3(0); + + vec3 p=s; + float alpha=1; + float fd=10000; + bool first=true; + for(int i=0; i<100; ++i) { + float d=abs(map(p)); + if(d<0.001) { + //col += map(p-r); + vec2 off=vec2(0.01,0); + vec3 n=normalize(map(p)-vec3(map(p-off.xyy), map(p-off.yxy), map(p-off.yyx))); + float rough=0.3; + n=normalize(n+(rnd(vec3(uv,0.4))-0.5)*rough); + r=reflect(r,n); + d=0.1; + if(first) {fd=d; first=false;} + // + //atm *= 0; + alpha*=0.7; + //break; + } + if(d>100) break; + p+=r*d; + } + + col += alpha*pow(abs(dot(r,vec3(0.7))),2) * 2*vec3(1,0.6,0.3); + col += alpha*vec3(0.4,0.5,1)*0.7; + col += atm*alpha; + + col *= 1.3-length(uv); + + col = smoothstep(0,1,col); + col = pow(col, vec3(0.4545)); + + //col = smoothstep(vec3(0.09),vec3(1.2),col); + + if(abs(uv.y+0.05)<0.1+curve(time,0.3)*0.5-fft(0.01)-fd) { + col.xz *= rot(time*0.6+uv.x); + col -=0.3; + col=abs(col); + } + + if(texture(texRevisionBW,clamp(uv*(1.2-9*fft(0))*rot(time*sign(length(uv)-0.5)+curve(time,0.7)*5)+0.5,0,1)).x>0.1) { + col=col*.4; + } + + vec3 prev=vec3(0); + vec2 off=uv/60; + prev.x+=texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy + off).x; + prev.y+=texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy + off*0.2).y; + prev.z+=texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy - off).z; + + float mi = clamp(0.1 + fd/20,0,1); + col = mix(col, prev, mi); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_peregrine.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_peregrine.glsl new file mode 100644 index 000000000..41ea800fb --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_peregrine.glsl @@ -0,0 +1,127 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define FFT(f) (10. * texture(texFFT, f).x) +#define PI 3.1415926535897932 +#define T (.5 * fGlobalTime) +#define TAU (2. * PI) + +mat3 yaw(float a) { + float s = sin(a), c = cos(a); + return mat3(c, s, 0., -s, c, 0., 0., 0., 1.); +} + +mat3 pitch(float a) { + float s = sin(a), c = cos(a); + return mat3(c, 0., -s, 0., 1., 0., s, 0., c); +} + +mat3 roll(float a) { + float s = sin(a), c = cos(a); + return mat3(1., 0., 0., 0., c, s, 0., -s, c); +} + +mat3 rotation(void) { + float s = .05; + return yaw(T + s * FFT(0.)) * pitch(T + s * FFT(.5)) * roll(T + s * FFT(1.)); +} + +vec3 palette(float x) { + vec3 a = vec3(.5), + b = a, + c = vec3(1.), + d = vec3(0., 1./3., 2./3.); + return a + b * cos(TAU * (c * x + d)); +} + +vec3 dots(vec2 uv) { + float d = length(uv); + uv = fract(20. * uv) - .5; + float r = sin(TAU * (T - d)) * .25 + .25; + vec3 c = palette(d - FFT(0.)); + return c * step(0., r - length(uv)); +} + +float sdf_box(vec3 p, vec3 s, float r) { + vec3 q = abs(p) - s + r; + return length(max(q, 0.)) + min(0., max(q.x, max(q.y, q.z))) - r; +} + +float sdf(vec3 p) { + float d = 1000.; + p *= rotation(); + for (float i = 0.; i < 3.; i++) { + for (float j = 0.; j < 3; j++) { + for (float k = 0.; k < 3; k++) { + float c = sdf_box(p + (vec3(i, j, k) - 1.)/.8, vec3(.5), .1); + d = min(d, c); + } + } + } + return d; +} + +vec3 get_normal(vec3 p) { + vec2 e = .01 * vec2(1., -1); + return normalize( + e.xyy * sdf(p + e.xyy) + + e.yxy * sdf(p + e.yxy) + + e.yyx * sdf(p + e.yyx) + + e.xxx * sdf(p + e.xxx) + ); +} + +vec3 uv_map(vec3 p, vec3 n, mat3 r, float k) { + float scale = 20.; + p *= r; + n *= r; + vec3 x = dots(p.yz); + vec3 y = dots(p.xz); + vec3 z = dots(p.xy); + vec3 w = pow(abs(n), vec3(k)); + return (x * w.x + y * w.y + z * w.z) / (w.z + w.y + w.z); +} + +#define rot(a) mat2(cos(a), sin(a), -sin(a), cos(a)) + +void main(void) { + vec2 uv = (gl_FragCoord.xy * 2. - v2Resolution.xy) / v2Resolution.y; + vec3 c = vec3(0.), + ro = vec3(0., 0., -4.), + rd = normalize(vec3(uv, 1.)), + lo = ro, + p = ro; + float d; + + uv *= rot(FFT(.0)); + uv *= FFT(.5)/2.; + c = .1 * dots(uv); + + for (int i = 0; i < 128; i++) { + d = sdf(p); + if (d < .01) { + vec3 n = get_normal(p); + c = uv_map(p, n, rotation(), 2.); + break; + } + p += d * rd; + } + + out_color = vec4(c, 1.); +} diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_pumpuli.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_pumpuli.glsl new file mode 100644 index 000000000..f29a3b3ac --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_pumpuli.glsl @@ -0,0 +1,241 @@ +#version 420 core + +// Greetings from the graduation party of Papumaja & Tastula !! The guestlist for this party had about 140 people... + + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texRevisionBW; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float E = 0.001; +const int STEPS = 100; +const int FAR = 100; + +float time=fGlobalTime; +float fft=texture(texFFTIntegrated,0.02).r*100; +float fft2=texture(texFFTSmoothed,0.02).r*100; +vec3 glow=vec3(0); + +float sdCirc( vec2 uv, float r ) { + return length(uv)-r; +} +float sphere(vec3 p, float r){ + return length(p)-r; +} + +float box(vec3 p, vec3 b){ + vec3 d = abs(p)-b; + return length(max(d, 0.0))+min(max(d.x, max(d.y, d.z)), 0.0); +} +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(-p.y, p.x); +} + +float scene(vec3 p, vec3 ro, vec3 rd){ + vec3 pp = p; + float fpp= texture(texFFTSmoothed,pow(abs(p.z*.03),1.5)).r; + float keski = sphere(pp,.2+fpp*10); + float pallo = box((pp-ro)*rd,vec3(1)); + //rot(pp.xy, time*0.01); + //rot(pp.yz, time*0.005); + for(int i = 0; i < 8; ++i){ + pp = abs(pp)-vec3(1,0.1,2); + + rot(pp.xy, time*0.005+fft*0.01); + rot(pp.yz, time*0.007+fft*0.003); + } + + + float d = distance(p, pp); + float sp = box(pp, vec3(d*0.05, d*0.04, d*0.02)); + + vec3 g = vec3(.1)*0.01 / (abs(sp)+0.05); + glow += g; + + sp = abs(sp*0.5); + + return max(min(sp,keski),-pallo); +} + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + for(int i = 0; i < STEPS; ++i){ + float d = scene(p,ro,rd); + t += d; + p = ro + rd * t; + if(d <= E || t >= FAR){ + break; + } + } + return t; +} + +vec3 HueShift (in vec3 Color, in float Shift) +{ + vec3 P = vec3(0.55735)*dot(vec3(0.55735),Color); + vec3 U = Color-P; + vec3 V = cross(vec3(0.55735),U); + Color = U*cos(Shift*6.2832) + V*sin(Shift*6.2832) + P; + return vec3(Color); +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +const int BPM = 134; + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + + + + float tim=time*60/BPM; + //uv=mod(uv*sin(time*.2)*10,2)-1; + + + vec2 uv_=uv; + vec2 zom=uv; + vec2 zom2=uv; + + + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 rUv=uv; + + + float px=-texture(texFFTSmoothed,abs(uv.x/uv.y)/3.14).r*1000+100; + //uv=floor(uv*px)/px; + + + float f3=texture(texFFT,abs(zom.x-.5)).r; + + vec3 viz=vec3(0); + + zom-=.5; + zom*=1; + if (f3>abs(zom.y)) { + viz=vec3(1); + } + zom+=.5; + + float ff=texture(texFFTSmoothed,0.2).r*10; + + vec2 q = uv_ -.5; + + q /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 ro = vec3(18,0,0); + vec3 rt = vec3(0, 0, 0); + + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z, vec3(0, 1, 0))); + vec3 y = normalize(cross(x, z)); + + vec3 rd = normalize(mat3(x,y,z) * vec3(q, 1/radians(90.0))); + + float t = march(ro, rd); + vec3 p = ro+rd*t; + float dis = distance(ro,p); + + + vec2 m; + m.x = atan(uv.y / uv.x) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + + float f = texture(texFFT,d).r * 100; + float f2=texture(texFFTSmoothed,abs(m.x/6)).r*1; + vec2 revUv=uv;//(uv*(1-ff*40)-.5*f2*1); + + + zom2-=.5; + rot(zom2,.005-f*.01); + zom2*=0.99; + zom2+=.5; + + revUv+=.5; + revUv-=.5; + rot(revUv,fft*.03); + revUv*=1-f2*.3; + revUv+=.5; + vec4 rev=texture(texRevisionBW,revUv); + rot(rUv,fft*.02); + rUv-=.5; + vec4 rev2=vec4(.5)+texture(texRevisionBW,rUv*t*.1); + + vec2 zm = zom; + zm-=.5; + for(int i =0; i<30; ++i) { + zm = abs(zm)-vec2(.0002*fft2*.2,0); + } + zm+=.5; + zom=zm; + vec4 prev=texture(texPreviousFrame,zom); + vec4 prev2=texture(texPreviousFrame,zom2); + + float s = sdCirc(uv,.1+f2*5); + vec3 col = vec3(0); + + if(t.99) { + out_color=vec4(prev*.99); + }// + out_color*=vec4(-1.2,1.5,1.9,0); + + out_color*=rev2; + + prev2=vec4(HueShift(prev2.rgb,.001+f2*.02),1); + prev2=mix(prev2,vec4(glow*vec3(1.2,3.8,4.9),1),.05); + + if(t>FAR-1) { + out_color=prev2; + } + out_color+=vec4(viz,1); + if(mod(tim,1)<0.1) { + out_color*=rev*vec4(1,.1,1,0); + } + out_color*=.5+step(s,0)*vec4(1,0,0,0); + + out_color=step(prev.r,.01)*.4+out_color; + +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_rubix.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_rubix.glsl new file mode 100644 index 000000000..c56c5ba85 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_rubix.glsl @@ -0,0 +1,120 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define PI 3.14159526535 +#define TAU 6.283185307179586 +#define t fGlobalTime +mat2 r2d(float a) { float c=cos(a), s=sin(a); return mat2(c, -s, s, c); } +float sphere(vec3 p, float r) { return length(p) - r; } +float extrude(float d, float d2) { return max(d, -d2); } +vec3 gay(float t) { return 0.5 + 0.5 * cos(TAU * (t + vec3(0.33, 0.66, 1.))); } + + +float face(vec3 p, vec3 off) { + return sphere(p - off, .8+sin(t*3.+(off.x+off.y+off.z)*1.5)*.1); +} + +float thing(vec3 p) { + float s = sphere(p, 1.); + vec2 off = vec2(1., 0.); + s = extrude(s, face(p, off.xyy)); + s = extrude(s, face(p, off.yxy)); + s = extrude(s, face(p, off.yyx)); + s = extrude(s, face(p, -off.xyy)); + s = extrude(s, face(p, -off.yxy)); + s = extrude(s, face(p, -off.yyx)); + return s; +} +float map(vec3 p) { + + p.xy *= r2d(t*1.8); + p.zy *= r2d(t*1.7); + p.xz *= r2d(t*1.5); + vec2 o = vec2(1.+sin(t*2.73)*.9, 0.); + + float s = 10000.;//thing(p); + s = min(s, thing(p + o.xyy)); + s = min(s, thing(p + o.yxy)); + s = min(s, thing(p + o.yyx)); + s = min(s, thing(p - o.xyy)); + s = min(s, thing(p - o.yxy)); + s = min(s, thing(p - o.yyx)); + return s; +} + +vec3 normal(vec3 p) { + vec2 e = vec2(0.001, 0.); + return normalize(vec3( + map(p+e.xyy)-map(p-e.xyy), + map(p+e.yxy)-map(p-e.yxy), + map(p+e.yyx)-map(p-e.yyx))); +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); uv -= 0.5; uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float a = atan(uv.x / uv.y) / 3.14; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec3 ro=vec3(0., 0., -4.); + vec3 rd=vec3(uv, 1.); + vec3 ld=normalize(vec3(sin(t), cos(t), 3.)); + vec3 p=ro; + + float tt = t; + if (abs(uv.y) + mod(t*.2, .5) > .5) tt += 3.; + float k = (1.5+sin(tt)*sin(tt)*sin(tt)*2.); + k = pow(k, 3.); + vec2 uv2 = r2d(length(uv)*k) * uv; + vec3 bgcol = vec3(0., tan(uv.y), .5-abs(uv2.x)); + bgcol += .01/(uv2.y+.001); + bgcol.r = pow(bgcol.r, 2.); + + vec3 col = vec3(0.); + for (int i = 0; i < 50.; i++) { + float d = map(p); + if (d > 500.) break; + if (d < 0.001) { + vec3 n = normal(p); + float diff = dot(-ld, n); + float spec = pow(clamp(0., 1., dot(-ld, n)), 200); + col = n * diff + vec3(1.) * spec; + col.r = pow(col.r, 1.5); + col.g = pow(col.g, 1.5); + col.b = pow(col.b, 1.5); + break; + } + p += rd * d; + bgcol += 0.009 * gay(a); + } + bgcol = sqrt(bgcol); + out_color = vec4((col.x == 0 ? bgcol : col), 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_scrapper.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_scrapper.glsl new file mode 100644 index 000000000..70dc893b6 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_scrapper.glsl @@ -0,0 +1,298 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +const float sample1 = 0.004f; +const float sample2 = 0.04f; + +const float sampleC = 120.5f / 10000.0f; +const float sampleD = 140.0f / 10000.0f; +const float sampleE = 150.5f / 10000.0f; +const float sampleF = 160.5f / 10000.0f; +const float sampleG = 180.0f / 10000.0f; +const float sampleA = 200.0f / 10000.0f; +const float sampleB = 228.0f / 10000.0f; +const float sampleC2 = 241.0f / 10000.0f; + +const float sampleBass = 42.0f / 10000.0f; +const float sampleKick = 66.0f / 10000.0f; + +const float octaveOffset = sampleC2 - sampleC; + +float rand(vec2 n) { + return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453); +} + + +float noise(vec2 n) { + const vec2 d = vec2(0.0, 1.0); + vec2 b = floor(n), f = smoothstep(vec2(0.0), vec2(1.0), fract(n)); + return mix(mix(rand(b), rand(b + d.yx), f.x), mix(rand(b + d.xy), rand(b + d.yy), f.x), f.y); +} + + +vec3 hsv_to_rgb(vec3 color) { + // Translates HSV color to RGB color + // H: 0.0 - 360.0, S: 0.0 - 100.0, V: 0.0 - 100.0 + // R, G, B: 0.0 - 1.0 + + float hue = color.x; + float saturation = color.y; + float value = color.z; + + float c = (value/100) * (saturation/100); + float x = c * (1 - abs(mod(hue/60, 2) - 1)); + float m = (value/100) - c; + + float r = 0; + float g = 0; + float b = 0; + + if (hue >= 0 && hue < 60) { + r = c; + g = x; + b = 0; + } else if (hue >= 60 && hue < 120) { + r = x; + g = c; + b = 0; + } else if (hue >= 120 && hue < 180) { + r = 0; + g = c; + b = x; + } else if (hue >= 180 && hue < 240) { + r = 0; + g = x; + b = c; + } else if (hue >= 240 && hue < 300) { + r = x; + g = 0; + b = c; + } else if (hue >= 300 && hue < 360) { + r = c; + g = 0; + b = x; + } + + r += m; + g += m; + b += m; + + return vec3(r, g, b); +} + + +float circle(vec2 p, float r){ + + + float lerper = 0.5f + 0.5f * sin(fGlobalTime * 0.1f); + + float circle = length(p) - r; + float square = abs(p.x) + abs(p.y) - r; + + return step(mix(circle, square, lerper), 0.0f); +} + +float box(vec2 p, float r) +{ + float lerper = 1f; + + float circle = length(p) - r; + float square = abs(p.x) + abs(p.y) - r; + + return step(mix(circle, square, lerper), 0.0f); +} + + +void main(void) +{ + //float bpm = 155.0f; + //float bps = bpm / 60.0f; + + //float + + //float v = 0.5f + 0.5f * sin(fGlobalTime * 3.14159f * bps); + + + + float t = fGlobalTime; + + float integrated = texture(texFFTIntegrated, 0.01f).r; + + vec2 uvRaw = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv = uvRaw - 0.5; // centered + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); // aspect ratio + + + + float uvAngle = atan(uv.y, uv.x); + + uvAngle += sin(t * .1f) * 0.5f; + + // --- + + uv = uv * (1.0f + 0.4f * sin(integrated * 0.05f) * 0.8f); + + + vec3 led = hsv_to_rgb(vec3(360f * mod(t, 1.0f), 100.0f, 50.0f)); + + //uv = abs(uv); + + + // ======== + + float valueC = max(texture(texFFT, sampleC).r, texture(texFFT, sampleC * 2.0f).r); + float valueD = max(texture(texFFT, sampleD).r, texture(texFFT, sampleD * 2.0f).r); + float valueE = max(texture(texFFT, sampleE).r, texture(texFFT, sampleE * 2.0f).r); + float valueF = max(texture(texFFT, sampleF).r, texture(texFFT, sampleF * 2.0f).r); + float valueG = max(texture(texFFT, sampleG).r, texture(texFFT, sampleG * 2.0f).r); + float valueA = max(texture(texFFT, sampleA).r, texture(texFFT, sampleA * 2.0f).r); + float valueB = max(texture(texFFT, sampleB).r, texture(texFFT, sampleB * 2.0f).r); + + float valueKick = texture(texFFT, sampleKick).r; + float valueBass = texture(texFFT, sampleBass).r; + + + + // ---- + + + float noiseX = (0.5f - noise(uv * 1000f)) * 0.5f; + float noiseY = (0.5f - noise(uv * 987f)) * 0.5f; + + uv += vec2(noiseX, noiseY) * pow(valueBass, 4.0) * 0.5f; + + // ---- + + + + const float tau = 3.14159f * 2.0f; + float angle = tau * 0.2f * t; + + angle -= integrated * 0.2f; + + float toneDist = 0.3f; + + vec2 circlePosC = vec2(cos(angle + 0.0f/7.0f * tau) * toneDist, sin(angle + 0.0f/7.0f * tau) * toneDist); + vec2 circlePosD = vec2(cos(angle + 1.0f/7.0f * tau) * toneDist, sin(angle + 1.0f/7.0f * tau) * toneDist); + vec2 circlePosE = vec2(cos(angle + 2.0f/7.0f * tau) * toneDist, sin(angle + 2.0f/7.0f * tau) * toneDist); + vec2 circlePosF = vec2(cos(angle + 3.0f/7.0f * tau) * toneDist, sin(angle + 3.0f/7.0f * tau) * toneDist); + vec2 circlePosG = vec2(cos(angle + 4.0f/7.0f * tau) * toneDist, sin(angle + 4.0f/7.0f * tau) * toneDist); + vec2 circlePosA = vec2(cos(angle + 5.0f/7.0f * tau) * toneDist, sin(angle + 5.0f/7.0f * tau) * toneDist); + vec2 circlePosB = vec2(cos(angle + 6.0f/7.0f * tau) * toneDist, sin(angle + 6.0f/7.0f * tau) * toneDist); + + float circleBase = 0.05f; + float circleRange = 0.4f; + + float circleC = circle(uv - circlePosC, circleBase + circleRange * valueC); + float circleD = circle(uv - circlePosD, circleBase + circleRange * valueD); + float circleE = circle(uv - circlePosE, circleBase + circleRange * valueE); + float circleF = circle(uv - circlePosF, circleBase + circleRange * valueF); + float circleG = circle(uv - circlePosG, circleBase + circleRange * valueG); + float circleA = circle(uv - circlePosA, circleBase + circleRange * valueA); + float circleB = circle(uv - circlePosB, circleBase + circleRange * valueB); + + float circleKick = circle(uv, circleBase * 1.5f + circleRange * 2.0f * valueKick); + float circleBass = circle(uv, circleBase * 0.3f + circleRange * 3.0f * valueBass); + + float squareKick = box(uv * vec2(0.5f, 1.0f), circleBase * 1.5f + circleRange * 2.0f * valueKick); + + // --- + + + + + + + + + vec4 fft1 = texture(texFFT, uvRaw.x / 5f, uvRaw.y) * (1.0f + 5.0f * uvRaw.x); + vec4 fft2 = texture(texFFTSmoothed, uvRaw.x / 5f, uvRaw.y) * (1.0f + 5.0f * uvRaw.x); + + float bass = texture(texFFT, sample1).r; + float snare = texture(texFFT, sample2).r; + + //vec2 p1 = translate(uv, vec2(0f, 0f)); + + //float c1 = step(circle(p1, 0.1f + bass * 0.3f), 0); + //float c2 = step(circle(p1, 0.1f + snare * 0.3f), 0); + + + //out_color = vec4(bass); + + //out_color = vec4(c1, 0f, c2, 0f); + + + vec4 gradient = vec4(0.1, 0.2f, 1.1f, 1.0f); + vec4 gradient2 = vec4(0.4, 0.34f, 0.3f, 1.0f); + + // === + + float allCircles = max(circleC, max(circleD, max(circleE, max(circleF, max(circleG, max(circleA, circleB)))))); + + allCircles = max(allCircles, circleBass); + allCircles = allCircles - circleKick; + + + gradient = vec4(led.r, led.g, led.b, 1.0f) * 100.0f; + vec4 allCirclesColor = allCircles * gradient; + + + //vec3 rgb = hsv2rgb(vec3(mod(uvAngle + 1.5f, 1.0f), 0.2f, 0.5f)); + //vec3 rgb = hsv_to_rgb(vec3(0.0f, 1.0f, 0.5f)); + //allCirclesColor = allCircles * vec4(rgb.r, rgb.b, rgb.b, 1.0f); + + vec4 allSquaresColor = squareKick * gradient2; + + allCircles = allCircles + circleBass; + + //out_color = vec4(allCircles, 0.0f, 0.0f, 0.0); + + + + out_color = allCirclesColor; + //out_color = allCirclesColor + allSquaresColor; + + out_color = clamp(out_color, 0.0f, 1.0f); + + //out_color = vec4(1.0f) - out_color; + + //float c = circle(uv - vec2(0.0f, 0.0f), 0.1f); + //out_color = vec4(c); + + + // ghost + + float c = 0.005f; + + vec4 prev_but_smaller = texture(texPreviousFrame, uvRaw * (1.0f + 2.0f * c) - vec2(c)); + + out_color += 0.9f * prev_but_smaller; + //out_color += vec4(fft1.r, fft2.r, 0.0f, 1.0f)*0.2; + + + //out_color = max(out_color, 0.4f * gradient2 * step(sin(uvAngle * 20.0f), 0.0f)); + + //out_color = vec4(v, v, v, 1.0f); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_totetmatt.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_totetmatt.glsl new file mode 100644 index 000000000..ccc29fd69 --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_totetmatt.glsl @@ -0,0 +1,148 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + /** Result of the gridTraversal3 */ + struct Grid { + /** Center of the cell */ + vec3 cell; + + /** Distance to the bound */ + float dist; + + /** Normal of the bound */ + vec3 normal; + }; +vec3 pcg3d(vec3 p){ + + uvec3 q=floatBitsToUint(p)*1234567u*1234567890u; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + q^= q>>16u; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + return vec3(q)/float(-1u); + } + Grid doGrid( vec3 ro, vec3 rd, vec3 size ) { + Grid result; + + result.cell = floor( ( ro + rd * 1E-3 ) / size + 0.5 ) * size; + result.cell.y=0.; + vec3 src = -( ro - result.cell ) / rd; + vec3 dst = abs( 0.5 * size / rd ); + vec3 bv = src + dst; + result.dist = min( min( bv.x, bv.y ), bv.z ); + + result.normal = step( bv, vec3( result.dist ) ); + + return result; + } +mat3 orth(vec3 p){ + vec3 z = normalize(p),x=vec3(z.z,0,-z.x); + return mat3(x,cross(z,x),z); + +} +vec3 path(vec3 p){ + vec3 o=vec3(0.); + o.x +=tanh(sin(p.z*.1)*3)*2; + return o; + } +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +float box(vec3 p,vec3 b){p=abs(p)-b; return length(max(vec3(0.),p))+min(0.,max(p.x,max(p.y,p.z)));} +float box2(vec2 p,vec2 b){p=abs(p)-b; return length(max(vec2(0.),p))+min(0.,max(p.x,p.y));} +float diam2(vec2 p,float s){p=abs(p);return (p.x+p.y-s)*inversesqrt(3.); ;} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 uuv=uv; + + float bpm = fGlobalTime*125/60; + + vec3 rnd = pcg3d(vec3(uv,fGlobalTime)); + vec3 frnd = pcg3d(vec3(floor(uv*10),fGlobalTime)); + uuv.x +=tanh(sin(bpm+rnd.z*.1+cos(bpm))*5)*.5; + uuv*=1-texture(texFFTSmoothed,.3).r*50; + vec3 col = vec3(0.); + + float ffti = texture(texFFTIntegrated,.3).r+rnd.x*.01; + float bb = floor(bpm)+smoothstep(.1,.9,pow(fract(bpm+rnd.x*.1),2)); + uuv = erot(uuv.xyy,vec3(0,0,1),bb*(1-step(.3,length(uv))-.5)).xy; + float rev = texture(texRevisionBW,clamp(uuv*vec2(1.,-1.),-.5,.5)-.5).r; + + float frw = bpm+ffti*10; + vec3 ro=vec3(0.25,0.25,-5.+frw),rt=vec3(0.,0,0+frw); + ro+=path(ro); + rt+=path(rt); + vec3 rd= orth(rt-ro)*normalize(vec3(uv,1.-exp(3*-fract(bpm+.5)))); + + + + ffti = floor(ffti)+smoothstep(.0,1.,pow(fract(ffti),2.25)); + float i=0,e=0,g=0; + vec3 p=ro; + float len = 0.; + Grid gr; + for(;i++<99.;){ + + p=ro+rd*g; + + ; + p-=path(p); + p.y+=1.; + p=erot(p,vec3(0.,0,1),tanh(cos(bpm*4+rnd.x*.1)*5)*3); + vec3 hp=p; + hp.x = abs(hp.x)-1.; + hp.yz = fract(hp.yz)-.5; + float h = diam2(hp.xy,.01); + h = min(h,diam2(hp.xz,.05)); + + + vec3 gp= p; + gp.y+=.5; + vec3 id = (floor(gp*4)+.5)/4; + vec3 ir = pcg3d(id); + id.x = clamp(id.x,-.5,.5); + gp.xz= gp.xz-id.xz; + float txt = texture(texFFTSmoothed,ir.y+ir.x).r; + txt= sqrt(txt)*1.2; + float t= box(gp,vec3(.12,.12+ txt,.12)); + h= min(t,h); + + + g+=e=max(.001,h); + col+=vec3(1.2,.7,.2)*(.075-exp(-7*fract(bpm+ir.z)))/exp(i*i*e); + } + + ivec2 gl= ivec2(gl_FragCoord.xy); + ivec2 off = ivec2(4.+100*exp(-10*fract(bpm))); + vec3 pcol = vec3( + texelFetch(texPreviousFrame,gl+off,0).r, + + texelFetch(texPreviousFrame,gl-off,0).g, + + texelFetch(texPreviousFrame,gl-off,0).b + ); + + col = mix(col,pcol,.5); + if(fract(bpm+frnd.x*.1)>.5) col = 1-col*+rev; + col = erot(col,normalize(vec3(.2,.3,.4)),floor(bpm)); + out_color = vec4(sqrt(col),1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wbcbz7.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wbcbz7.glsl new file mode 100644 index 000000000..3cd0fa8ab --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wbcbz7.glsl @@ -0,0 +1,167 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float hash(vec2 uv) { return fract(sin(dot(vec2(32.5, 32.), uv) * 2300.0));} + +float time = fGlobalTime; +float tt = mod(fGlobalTime + 0.01*hash(gl_FragCoord.xy/v2Resolution), 180.0); + +const float PI = 3.14159265359; + +float star(vec2 uv, float t) { + float r = length(uv)*32.; + float a = atan(uv.y, uv.x) - PI; + float v = (1.+sin(r*(1.-.4*sin(5.*a + PI/3.))+0.3*t)) *.7; + return v; +} + +mat2 rot2(float a) {return mat2(cos(a), sin(a), -sin(a), cos(a)); } + +vec3 mapLogoRot(vec2 uv) { + uv *= (1.0 + (0.2 * texture(texFFT, 0.01).r)); + float r = length(uv); + //if (r < 0.5) { + if (r < 0.12) uv *= rot2(tt * 0.7 + 3*sin(tt * 0.3)); else + if (r < 0.18) uv *= rot2(tt * 1.5); else + if (r < 0.25) uv *= rot2(tt * 0.3); else + if (r < 0.4) uv *= rot2(tt * -1.3); else + uv *= rot2(tt * 0.5); + + return textureLod(texRevisionBW, clamp(uv+vec2(0.5), vec2(0), vec2(1)), 1).rgb; + //} else return vec3(0.0); + +} + +vec3 mapLogo(vec2 uv) { + return texture(texNoise, uv).rgb; +} + +vec3 triplanar(vec3 p) { + return (mapLogo(p.xy) + mapLogo(p.xz) + mapLogo(p.yz)); +} + +float sphere(vec3 p, float r) { + return length(p) - r - (0.5*triplanar(p*0.7).r); +} + +vec3 mod3(vec3 p, vec3 s, vec3 l) { + vec3 q = p - s*clamp(round(p/s),-1,1); + return q; +} + +float map(vec3 p) { + p.xz *= rot2(0.4*time); + p = abs(p - vec3(1.4)); + p.xy *= rot2(0.9*time); + p = abs(p - vec3(1.6)); + p.yz *= rot2(0.8*time); + return sphere(mod3(p, vec3(5.0), vec3(5.0)), 2.0+2.3*texture(texFFT, 0.01).r); +} + +vec3 norm(vec3 p) { + vec2 b = vec2(0., 0.01); + float a = map(p); + return normalize(vec3( + -a+map(p+b.yxx), + -a+map(p+b.xyx), + -a+map(p+b.xxy) + )); +} + +float trace(vec3 o, vec3 d) { + float t = 0.; + for (int i = 0; i < 256; i++) { + vec3 p = o + t*d; + float ct = map(p); + if ((abs(ct) < 0.001) || (t > 128.)) break; + t += ct; + } + + return t; +} + +mat3 la(vec3 o, vec3 t, float r) { + vec3 rr = vec3(sin(r), cos(r), 0.0); + vec3 ww = normalize(t - o); + vec3 uu = normalize(cross(ww, rr)); + vec3 vv = normalize(cross(uu, ww)); + + return mat3(uu, vv, ww); +} + + +void main(void) { + vec2 src_uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 uv = src_uv - vec2(0.5); + + uv *= vec2(v2Resolution.x / v2Resolution.y, 1); + uv.x += 0.03*(sin(fGlobalTime*4.6))*hash(vec2(tt, tt))* sqrt(texture(texFFT, 0.01).r); + uv.y += 0.03*(sin(fGlobalTime*7.6))*hash(vec2(tt, tt))* sqrt(texture(texFFT, 0.01).r); + + vec3 color = vec3(0.0); + + uv.x += 0.05*fract(sin(fGlobalTime*4.6)*67.5*(round(uv.y*32 + 15)/32)) * sqrt(texture(texFFT, 0.02).r); + uv.y += 0.05*fract(sin(fGlobalTime*4.6)*47.5*(round(uv.y*32 + 15)/32)) * sqrt(texture(texFFT, 0.02).r); + + // backdrop + float spiral = star(rot2(tt*1.4)*uv*(0.1+0.7*sin(time*1.4)), time); + float tex = -mapLogoRot(uv).r; + //float tex = -texture(texRevisionBW, clamp(uv+vec2(0.5), vec2(0), vec2(1))).r; + float noise = texture(texNoise, (uv*5)+tt*10).r*2; + color = (((spiral + noise)+tex) > 1.0 ? + mix(vec3(0.4, 0.5, 0.4), vec3(0.4, 0.6, 0.7), 2*(texture(texFFT, 0.03).r)) : + vec3(0.3, 0.42, 0.4)); + + // now time to at least SOME raymarching stuff AAAAAAAAAAAAAAA FUUUUUUUUUUUUUKA + // trace something + float fov = 0.3; + float sp = 7.60; + float ap = fov * 3.14159*2; + float f = 1.0/ap; + float r = length(uv); + float phi = atan(uv.y, uv.x); + float theta = atan(r/((1.+sp)*f))*(1+sp); + vec3 ray = vec3(sin(theta)*cos(phi), sin(theta)*sin(phi), cos(theta)); + vec3 o = vec3(-4 * cos(0.1*time), -3 * cos(1*time), -2 * sin(1*time) - 14); + vec3 e = vec3(0, 0, 0); + ray *= la(o, e, 0.0); + + float t = trace(o, ray); + vec3 p = o+t*ray; + + p = mix(p, norm(p), 0.5); + if (!((t == 0.0) || (t > 128.0))) { + vec3 n = p;//norm(p); + //n = cross(n,p); + color += 0.5*pow(0.5+0.5*vec3(sin(1.3*n.x),cos(1.3*n.y),sin(1.7*n.z)), vec3(1.0)); + } + + // random lines + if (hash(vec2(float(int(src_uv.y*50))+mod(time,1))) > (0.2+2.7*sqrt(texture(texFFT, 0.02).r))) color += vec3(0.03); + if (hash(vec2(float(int(src_uv.y*30))+mod(time,5))) > (0.2+2.7*sqrt(texture(texFFT, 0.04).r))) color -= vec3(0.03); + + + + // vingette + color *= 1.0-0.9*length(src_uv-vec2(0.5)); + //color = pow(color, vec3(0.7)); + + out_color = vec4(color,1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wrighter.glsl b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wrighter.glsl new file mode 100644 index 000000000..c91dfcb9f --- /dev/null +++ b/shader_file_sources/2024_03_30_shader_jam_revision_2024/grabber_rdpjam2024_wrighter.glsl @@ -0,0 +1,291 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define T fGlobalTime +#define R v2Resolution +#define U gl_FragCoord.xy +#define pi acos(-1.) +#define tau (acos(-1.)*2.) + + +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + + + +// hashes +uint seed = 12512; +uint hashi( uint x){ + x ^= x >> 16;x *= 0x7feb352dU;x ^= x >> 15;x *= 0x846ca68bU;x ^= x >> 16; + return x; +} + +#define hash_f_s(s) ( float( hashi(uint(s)) ) / float( 0xffffffffU ) ) +#define hash_f() ( float( seed = hashi(seed) ) / float( 0xffffffffU ) ) +#define hash_v2() vec2(hash_f(),hash_f()) +#define hash_v3() vec3(hash_f(),hash_f(),hash_f()) +#define hash_v4() vec3(hash_f(),hash_f(),hash_f(),hash_f()) + +vec2 sample_disk(){ + vec2 r = hash_v2(); + return vec2(sin(r.x*tau),cos(r.x*tau))*sqrt(r.y); +}// point projection +ivec2 proj_p(vec3 p, float t, out float z){ + // arbitrary camera stuff + float tt = t*0.25; + float qt = 2.*t/60*500; + //p.xy -= 0.5; + float s = hash_f_s(uint(qt)); + float sb = hash_f_s(uint(qt + 125)); + + p.yz *= rot(sin(tt*1.7 + sin(tt))*1.0 + floor(T*0.3)); + //p.z += 2.; + p.y -= 0.4; + p.z += 1.2; + p.xz *= rot(sin(tt*0.7)*0.3); + //p.xz *= rot(sin(tt)); + /* + p.xz -= 0.5; + p.xz *= rot(tt*(s*2. - 1.0)*0.5 + sb); + p += sin(vec3(1.1,0.78,0.6)*tt*0.5)*0.02; + p += sin(vec3(1.1,0.78,0.6)*tt*2.7)*0.02; + p.xz *= rot(sin(tt*0.125 + sin(tt*0.125) + sb)*0.4); + p.xy *= rot(sin(tt*0.53 + sb)*0.2*0.4); + + //p.z -= -0.4 + s*0.; + p.y -= 0.2 - s*0.; + //p.x -= 0.5; + p.z += 0.8; + p.yz *= rot(-0.46 + sin(sb*1.5)*0.2); + */ + + z = p.z; + // perspective proj + p.xy /= p.z*.6; + + // depth of field + float dof_pow = pow(abs(p.z - 0.7 + sin(tt*0.45 + sin(tt*0.4))*0.2)*1.0,2.); + + p.xy += sample_disk() * (dof_pow *(0.06 + float(mod(T,4) < 2)*0.02) + 0.0); + // convert point to ivec2. From 0 to resolution.xy + ivec2 q = ivec2((p.xy + vec2(R.x/R.y,1)*0.5)*vec2(R.y/R.x,1)*R); + if(false){ + q = ivec2(-1); + } + return q; +} +vec3 mul3( in mat3 m, in vec3 v ){return vec3(dot(v,m[0]),dot(v,m[1]),dot(v,m[2]));} + +vec3 oklch_to_srgb( in vec3 c ) { + c = vec3(c.x, c.y*cos(c.z), c.y*sin(c.z)); + mat3 m1 = mat3( + 1,0.4,0.2, + 1,-0.1,-0.06, + 1,-0.1,-1.3 + ); + + vec3 lms = mul3(m1,c); + + lms = pow(lms,vec3(3.0)); + + + mat3 m2 = mat3( + 4, -3.3,0.2, + -1.3,2.6,-0.34, + 0.0,-0.7, 1.7 + ); + return mul3(m2,lms); +} +void store_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + // no clue why it wants ivec4() here... + imageStore(computeTex[0], px_coord, ivec4(quant_col.x)); + imageStore(computeTex[1], px_coord, ivec4(quant_col.y)); + imageStore(computeTex[2], px_coord, ivec4(quant_col.z)); +} + +void add_to_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + imageAtomicAdd(computeTex[0], px_coord, quant_col.x); + imageAtomicAdd(computeTex[1], px_coord, quant_col.y); + imageAtomicAdd(computeTex[2], px_coord, quant_col.z); +} + +vec3 read_pixel(ivec2 px_coord){ + return 0.001*vec3( + imageLoad(computeTexBack[0],px_coord).x, + imageLoad(computeTexBack[1],px_coord).x, + imageLoad(computeTexBack[2],px_coord).x + ); +} + + +mat3 orth_mat(vec3 or, vec3 tar){ + vec3 dir = normalize(tar - or); + vec3 right = normalize(cross(vec3(0,1,0),dir)); + vec3 up = normalize(cross(dir, right)); + return mat3(right, up, dir); +} + +float map(vec3 p){ + for(float i = 0; i < 8; i++){ + p.yz *= rot(0.6); + p = abs(p) - 0.6; + p.xz *= rot(0.6 + T); + + } + return length(p) - 0.1; +} +vec3 getNormal(vec3 p){ + vec2 t = vec2(0.001,0.); + return normalize(vec3( + map(p + t.xyy) - map(p - t.xyy), + map(p + t.yxy) - map(p - t.yxy), + map(p + t.yyx) - map(p - t.yyx) + )); +} +void main(void){ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 ro = vec3(0,0,-4.); + vec3 rd = normalize(vec3(uv,0.7)); + + seed = 2151225; + seed += hashi(uint(U.x)) + hashi(uint(U.y)*125); + + vec3 p = vec3(0); + + ivec2 id = ivec2(gl_FragCoord.xy); + if(gl_FragCoord.x < R.x/14){ + + if(mod(T,5) < 1.5 && false){ + vec3 p = normalize(sin(vec3(3,2,1)*T*0.1))*2; + vec3 rd = (hash_v3()*0.2 - p); + float side = 1.0; + for(float i = 0; i < 40; i++){ + float d = map(p)*side; + + if(d < 0.001){ + vec3 n = getNormal(p)*side; + side *= -1; + p -= n*0.02; + rd = refract(rd,n,1.7); + } + + vec3 c = oklch_to_srgb( vec3(1.0,0.1,dot(p,p)*4.0)); + float z = 0.; + ivec2 q = proj_p(p, T, z); + add_to_pixel(q, c); + p += rd*d; + } + + } else { + for(float i = 0.; i < 20; i++){ + float X = hash_f(); + + if(X < 0.5){ + for(float i = 0.; i < 2; i++){ + p = abs(p) - 0.4; + p.xz *= rot(0.5 + T*0.02); + p.yz *= rot(1.8*0.2); + p *= 1.0; + } + } else { + p = sin(p*1.6); + p/= dot(p,p); + } + vec3 c = oklch_to_srgb( vec3(1.0,0.1,dot(p,p)*4.0)); + float z = 0.; + ivec2 q = proj_p(p, T, z); + add_to_pixel(q, c); + } + } + } + + //imageStore(computeTex[0], ivec2(U), uvec4(t*1000)); + + //imageStore(computeTex[0], ivec2(U), uvec4(t*1000)); + //col = vec3(1); + vec3 col = vec3(1)*2.0 - read_pixel(ivec2(U))*2.0; + + float md = 0.04; + + vec2 u = uv; + + + + col = max(col,0.); + { + #define has(x) fract(sin(x*125.5)*125.6) + #define has2(X) has(has(X.x*35.6 +T*0.0 + 4 + floor(T))*415.5 + has(X.y*32.6+T*0.00)*53.6) + vec2 tmd = 0.5*vec2(1,R.x/R.y); + vec2 u = vec2(U/R); + for(float i = 0; i < 60; i++){ + vec2 fluv = floor(u/tmd); + + col = vec3(1)*2.0 - read_pixel(ivec2(fluv*tmd*R))*2.0; + float X = has2(fluv); + if(X <0.0 * (length(col)*max(sin(T),0))+0.004){ + break; + } + tmd /= 2.0; + } + } + { + float md = 0.05; + vec2 u = uv; + u = mod(u,md) - 0.5*md; + float d = abs(u.x); + //d = min(d,abs(u.y)); + d -= 0.001; + //col = mix(col,vec3(0),smoothstep(fwidth(d),0,d)*0.2); + } + + col = max(col,0); + col = col/(1+col); + if(mod(T,5)<2.){ + col = 1.-col; + } else if(mod(T,4)<1.){ + + col = fract(col + 1.5); + col = pow(col,vec3(5)); + } + col = 1.-col; + col = pow(col,vec3(4.)); + col = pow(col,vec3(0.454545)); + if(floor(T) == 4.) + col = 1.-col; + vec4 prev = texture(texPreviousFrame, U/R); + vec2 adv = vec2( + texture(texPreviousFrame, U/R + vec2(1,0)/R).x - texture(texPreviousFrame, U/R - vec2(1,0)/R).x, + texture(texPreviousFrame, U/R + vec2(0,1)/R).x - texture(texPreviousFrame, U/R - vec2(0,1)/R).x + ); + if(floor(mod(T,4))<0.5) + col -= adv.xyx; + col = fract(col); + //col = mix(col,prev.rgb,0.2); + //for() + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/jokerx.lua b/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/jokerx.lua new file mode 100644 index 000000000..a3f2080e7 --- /dev/null +++ b/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/jokerx.lua @@ -0,0 +1,86 @@ +function bg(x1,y1,x2,y2,dx,dy,o,fftv) + + for y=y1,y2 do + for x=x1,x2 do + pix(x,y,o+(dx*x+dy*y+t+fftv)) + end + end +end + +function fft_vu_text() + +text="Welcome to my first jam ever, greetz" + + for i=1, #text do + c = text:sub(i,i) + x = i*6+5 + fftv = fft(i*6)*i + y = fftv*20+10 + print(c,x,y) + end +end + +function fft_circle(x,y,from,to,scale) + + fftv = 0 + for i=from,to do + fftv = fftv + fft(i)*i + end + + r = fftv*scale + + minR = 7 + if r +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- \ No newline at end of file diff --git a/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..5324edb55 --- /dev/null +++ b/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,207 @@ +local SIN,COS=math.sin,math.cos +local PI=math.pi +local TAU=PI*2 +local MIN,MAX=math.min,math.max +local ATAN2=math.atan2 + +function BDR(y) + vbank(0) + local sl=y%4>=2 + local r=30+SIN(T*.01+y*.01)*30 + local g=30+SIN(T*.017+y*.007)*30 + local b=(sl and 30 or 80)+SIN(T*.023-y*.006)*30 + setRGB(0,r,g,b) + for c=1,15 do + local v=c/15*.5*SIN(T*.009)+.5 + local r=v*(127+SIN(c*.1+T*.01+y*.03)*127) + local g=v*(127+SIN(c*.12-T*.02+y*.024)*127) + local b=v*(127+SIN(c*.15+T*.03-y*.02)*127) + setRGB(c,r,g,b) + end +end + +function setRGB(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end + +T=0 +function TIC() + vbank(1) + for y=0,63 do + for x=0,63 do + local dx,dy=x-32,y-32 + local a=ATAN2(dy,dx)+PI + local d=(dx^2+dy^2)^.8 + local c=a*2+d*.02-T*.2 + pix(x,y,8+SIN(c)*7) + end + end + local x,y=8,12 + print("=)",x-1,y-1,0,false,8) + print("=)",x,y,15,false,8) + + vbank(0) + cls() + for i=0,100 do + local p=proj({ + x=SIN(i*.2+T*.04), + y=SIN(i*.12+T*.02), + z=(i*2+T*.1)%12-8, + }) + + local sc=4/p.z^2 + local s=MAX(0,MIN(sc,10)) + circ(p.x,p.y,s,8+SIN(i*.1)*7) + end + + local a=T*.01 + local boom=fft(1)*2 + local tCube={ + x=SIN(T*.02)*.4, + y=SIN(T*.012)*.2, + z=SIN(T*.017)*2-1, + } + drawSide(a,0,0,0,tCube,boom) + drawSide(a,.5,0,.5,tCube,boom) + + drawSide(a,.25,0,.5,tCube,boom) + drawSide(a,.75,0,.5,tCube,boom) + + drawSide(a,0,.25,.5,tCube,boom) + drawSide(a,0,.75,.5,tCube,boom) + + vbank(1) + cls() + print("jtruk",210,130,15) + T=T+1 +end + +function drawSide(a,rX,rY,rZ,t,boom) + local nPsWide=10 + local points={} + for yT=0,nPsWide do + for xT=0,nPsWide do + local xP=xT/nPsWide + local yP=yT/nPsWide + local xPh,yPh=xP-.5,yP-.5 + local mul=boom*.5+((.5-(xPh^2+yPh^2)^.5)*boom^.5)*.5 + mul=.5+MAX(mul,0) + table.insert(points,{ + x=xP-.5, + y=yP-.5, + z=mul, + xP=xP, + yP=yP, + }) + end + end + + for i,p in ipairs(points) do + -- happy day of trans visibility + -- (close enough!) + p=rotX(p,rX*TAU) + p=rotY(p,rY*TAU) + p=rotZ(p,rZ*TAU) + p=trans(p,t) + p=rotX(p,SIN(a*1.2)) + p=rotY(p,SIN(a*2)) + p=rotZ(p,SIN(a*1.6)) + p=proj(p) + points[i].tr=p + end + + local c=0 + local span=nPsWide+1 + for yT=0,nPsWide-1 do + for xT=0,nPsWide-1 do + local p00=points[yT*span+xT+1] + local p01=points[yT*span+(xT+1)+1] + local p10=points[(yT+1)*span+xT+1] + local p11=points[(yT+1)*span+(xT+1)+1] + local p00t=p00.tr + local p01t=p01.tr + local p10t=p10.tr + local p11t=p11.tr + + local tX,tY=64,64 + ttri( + p00t.x,p00t.y, + p10t.x,p10t.y, + p11t.x,p11t.y, + p00.xP*tX,p00.yP*tY, + p10.xP*tX,p10.yP*tY, + p11.xP*tX,p11.yP*tY, + 2, + -1, + p00t.z, + p10t.z, + p11t.z + ) + + ttri( + p11t.x,p11t.y, + p01t.x,p01t.y, + p00t.x,p00t.y, + p11.xP*tX,p11.yP*tY, + p01.xP*tX,p01.yP*tY, + p00.xP*tX,p00.yP*tY, + 2, + -1, + p11t.z, + p01t.z, + p00t.z + ) + end + end +end + +function proj(p) + local zD=2-p.z/3 + return { + x=120+p.x/zD*100, + y=68+p.y/zD*100, + z=zD, + } +end + +function rotX(p,a) + local sa,ca=SIN(a),COS(a) + return { + x=p.x, + y=p.y*ca-p.z*sa, + z=p.y*sa+p.z*ca, + } +end + +function rotY(p,a) + local sa,ca=SIN(a),COS(a) + return { + x=p.x*ca-p.z*sa, + y=p.y, + z=p.x*sa+p.z*ca, + } +end + +function rotZ(p,a) + local sa,ca=SIN(a),COS(a) + return { + x=p.x*ca-p.y*sa, + y=p.x*sa+p.y*ca, + z=p.z, + } +end + +function trans(p,t) + return { + x=p.x+t.x, + y=p.y+t.y, + z=p.z+t.z, + } +end + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- \ No newline at end of file diff --git a/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/pumpuli.lua b/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/pumpuli.lua new file mode 100644 index 000000000..3929885a6 --- /dev/null +++ b/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/pumpuli.lua @@ -0,0 +1,97 @@ +W=240 +H=136 +SKIP = 1 +ADDR = 0x3FC0 +palette = 0 + +function addLight() + for i=0, 15 do + for j=0, 2 do + poke(ADDR+(i*3)+j, palette*15) + end + palette = palette + 1 + end +end + +function subPix(i,a,f) + local p=peek4(i) + poke4(min(i-f,0x3fbf*2),max(p-a,0)) +end +function addPix(i,a,of) + local p=peek4(i-of) + poke4(min(i+of,0x3fbf*2),min(p+a,15)) +end + +addLight() +poke(ADDR+4*3, 128) +poke(ADDR+4*3+1,100) +poke(ADDR+4*3+2,80) + +poke(ADDR+12*3, 220) +poke(ADDR+12*3+1,100) +poke(ADDR+12*3+2,190) + +abs=math.abs +exp=math.exp +min=math.min +max=math.max +rnd=math.random +flr=math.floor +gr={"PET","ALL","BNY","NOW"} +cls(0) +BPM=171 +function TIC() + t=time()//31*BPM + b=0 + ft=fft(0)*100 + + for i=0,100 do + x=rnd(W) + y=rnd(H) + circ(x,y,i/10,ft) + circb(x,y,i/10,0) + end + vbank(1) + cls(0) + for y=0,H do + for x=0,W do + fq=abs(x-W/2)/30 + f=fft(exp(fq+1.5))*150 + yy=abs(y-H/2) + if f>yy then + pix(x,y,2) + end + if f>yy and f5 then + print(gr[tt],W/2-w/2+9,H/2-12*2+((c%3)*24-12)*3,c*(t),1,8) + end + for i=0,W*H,SKIP do + subPix(i+t%SKIP,rnd(5)-2,ft/10) + end +end + +function BDR(row) + a=abs((row-3)-H/2) + fff=fft(exp(a/15+.5))*50 + vbank(1) + off=min(fff,15)-8 + if row%2==0 then + poke(0x3FF9,off/2) + else + poke(0x3FF9,(off/2)*-1) + end + vbank(0) + poke(0x03FF8,min(fff,15)) +end + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- \ No newline at end of file diff --git a/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/suule.lua b/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/suule.lua new file mode 100644 index 000000000..3aa8f9367 --- /dev/null +++ b/shader_file_sources/2024_04_02_byte_jam_monday_night_bytes/suule.lua @@ -0,0 +1,402 @@ +sin,cos,pi,abs,l=math.sin,math.cos,math.pi,math.abs,line + +-- Setup + +-- Sprite Data + +spr0={ +6,11,2,1, +5,11,3,1, +5,11,3,1, +4,11,3,1,1,0, +4,11,3,1,1,0, +3,11,3,1,1,0,1,1, +3,11,2,1,1,0,1,1,1,0, +4,11,2,1,2,0} +spr1={ +8,11, +2,1,6,11, +3,1,5,11, +3,1,5,11, +4,1,4,11, +1,1,4,1,3,11, +4,1,1,1,3,11, +4,1,1,1,3,11} +spr16={ +4,11,2,1,2,0, +6,11,1,0,1,1, +6,11,2,0, +6,11,1,0,1,1, +7,11,1,1, +8,11, +8,11, +8,11} +spr17={ +4,1,1,1,3,11, +3,1,1,1,4,11, +2,1,1,1,5,11, +1,0,2,1,5,11, +3,1,5,11, +3,1,5,11, +2,1,6,11, +8,11} +spr32={ +3,5,2,12,3,5, +1,5,1,13,3,12,11,5, +1,5,1,13,1,12,1,10,1,9,3,5, +1,13,2,12,1,9,1,0,27,5} +spr33={ +2,12,6,5, +3,12,1,13,12,5, +1,13,2,12,1,10,4,5, +1,13,2,12,1,9,1,0,27,5} + +function BOOT() + rspr(spr0,0) + rspr(spr1,1) + rspr(spr16,16) + rspr(spr17,17) + rspr(spr32,32) + rspr(spr33,33) + vbank(1) + poke(0x3ff8,3) +end + +-- Read Sprite + +function rspr(sprarr,id) + local con=0 + for i=0,#sprarr//2-1 do + local rep=sprarr[i*2+1] + local col=sprarr[i*2+2] + for j=1,rep do + poke4(0x8000+con+id*64,col) + con=con+1 + end + end +end + +-- Quad + +function q(x1,y1,x2,y2,x3,y3,x4,y4,c) + tri(x1,y1,x2,y2,x3,y3,c) + tri(x2,y2,x3,y3,x4,y4,c) +end + +function clmp(x,n1,n2) + if x < n1 then + return n1 + else + if x > n2 then + return n2 + else + return x + end + end +end + +function drw_tailfxdnc(ax,ay,deg1,deg2,deg3) + circ(ax,ay,2,2) + q(-2*cos(deg1)-0*sin(deg1)+ax, + -2*sin(deg1)+0*cos(deg1)+ay, + 2*cos(deg1)-0*sin(deg1)+ax, + 2*sin(deg1)+0*cos(deg1)+ay, + -9*cos(deg1)-12*sin(deg1)+ax, + -9*sin(deg1)+12*cos(deg1)+ay, + 9*cos(deg1)-12*sin(deg1)+ax, + 9*sin(deg1)+12*cos(deg1)+ay,2) + q(-9*cos(deg1)-12*sin(deg1)+ax, + -9*sin(deg1)+12*cos(deg1)+ay, + 9*cos(deg1)-12*sin(deg1)+ax, + 9*sin(deg1)+12*cos(deg1)+ay, + -12*cos((deg1+deg2)/2)-18*sin((deg1+deg2)/2)+ax, + -12*sin((deg1+deg2)/2)+18*cos((deg1+deg2)/2)+ay, + 12*cos((deg1+deg2)/2)-18*sin((deg1+deg2)/2)+ax, + 12*sin((deg1+deg2)/2)+18*cos((deg1+deg2)/2)+ay,2) + q(-12*cos((deg1+deg2)/2)-18*sin((deg1+deg2)/2)+ax, + -12*sin((deg1+deg2)/2)+18*cos((deg1+deg2)/2)+ay, + 12*cos((deg1+deg2)/2)-18*sin((deg1+deg2)/2)+ax, + 12*sin((deg1+deg2)/2)+18*cos((deg1+deg2)/2)+ay, + -14*cos(deg2)-31*sin(deg2)+ax, + -14*sin(deg2)+31*cos(deg2)+ay, + 14*cos(deg2)-31*sin(deg2)+ax, + 14*sin(deg2)+31*cos(deg2)+ay,2) + q(-14*cos(deg2)-31*sin(deg2)+ax, + -14*sin(deg2)+31*cos(deg2)+ay, + 14*cos(deg2)-31*sin(deg2)+ax, + 14*sin(deg2)+31*cos(deg2)+ay, + -10*cos((deg2+deg3)/2)-45*sin((deg2+deg3)/2)+ax, + -10*sin((deg2+deg3)/2)+45*cos((deg2+deg3)/2)+ay, + 10*cos((deg2+deg3)/2)-45*sin((deg2+deg3)/2)+ax, + 10*sin((deg2+deg3)/2)+45*cos((deg2+deg3)/2)+ay,2) + q(-10*cos((deg2+deg3)/2)-45*sin((deg2+deg3)/2)+ax, + -10*sin((deg2+deg3)/2)+45*cos((deg2+deg3)/2)+ay, + 10*cos((deg2+deg3)/2)-45*sin((deg2+deg3)/2)+ax, + 10*sin((deg2+deg3)/2)+45*cos((deg2+deg3)/2)+ay, + -5*cos(deg3)-51*sin(deg3)+ax, + -5*sin(deg3)+51*cos(deg3)+ay, + 5*cos(deg3)-51*sin(deg3)+ax, + 5*sin(deg3)+51*cos(deg3)+ay,12) + q( -5*cos(deg3)-51*sin(deg3)+ax, + -5*sin(deg3)+51*cos(deg3)+ay, + 5*cos(deg3)-51*sin(deg3)+ax, + 5*sin(deg3)+51*cos(deg3)+ay, + -1*cos(deg3*1.1)-57*sin(deg3*1.1)+ax, + -1*sin(deg3*1.1)+57*cos(deg3*1.1)+ay, + 1*cos(deg3*1.1)-57*sin(deg3*1.1)+ax, + 1*sin(deg3*1.1)+57*cos(deg3*1.1)+ay,12) + +end + +function drawarm(ax,ay,bx,by,cx,cy,dx,dy,inv) + circ(ax,ay,4,2) +q(ax,ay-5,ax,ay+5, + bx,by-5,bx,by+5,2) +q(ax-4,ay,ax+4,ay, + bx-4,by,bx+4,by,2) +circ(bx,by,3,1) +if inv==1 then +q(cx,cy-3,cx,cy+1, + bx,by-4,bx,by+4,1) +q(cx-3,cy,cx+1,cy, + bx-4,by,bx+4,by,1) +else +q(cx,cy-1,cx,cy+3, + bx,by-4,bx,by+4,1) +q(cx-1,cy,cx+3,cy, + bx-4,by,bx+4,by,1) + +end +spr(0,dx,dy,11,1,inv,0,2,2) +end + +function drawtop(ax,ay,bx,by,cx,cy) +-- Neck +q(-5+bx,-8+by,5+cx,-8+cy, + -3+bx,-5+by,3+cx,-5+cy,13) +q(-4+bx,-11+by,4+cx,-11+cy, + -4+bx,-8+by,4+cx,-8+cy,13) +q(-3+bx,-5+by,3+cx,-5+cy, + -2+ax,-1+ay,2+ax,-1+ay,12) +q(-4+bx,-8+by,-3+bx,-5+by, + -6+bx,-6+by,-2+ax,-1+ay,12) +q(4+cx,-8+cy,3+cx,-5+cy, + 6+cx,-6+cy,2+ax,-1+ay,12) +q(-4+bx,-11+by,-5+bx,-11+by, + -4+bx,-8+by,-6+bx,-6+by,2) +q(4+cx,-11+cy,5+cx,-11+cy, + 4+cx,-8+cy,6+cx,-6+cy,2) + +l(1+ax,-4+ay,6+cx,-6+cy,13) +l(-1+ax,-4+ay,-6+bx,-6+by,13) + +q( -9+bx,-5+by,-6+bx,-6+by, + -12+ax,1+ay,-8+ax,3+ay,6) +q( -6+bx,-6+by,-2+ax,-1+ay, + -8+ax,3+ay,-2+ax,2+ay,5) +q( -2+ax,-1+ay,2+ax,-1+ay, + -2+ax,2+ay,2+ax,2+ay,5) +q( 6+cx,-6+cy,2+ax,-1+ay, + 8+ax,3+ay,2+ax,2+ay,5) +q( 9+cx,-5+cy,6+cx,-6+cy, + 12+ax,1+ay,8+ax,3+ay,6) +q( -13+ax,3+ay,-12+ax,1+ay, + -12+ax,10+ay,-9+ax,9+ay,6) +q( -12+ax,1+ay,-8+ax,3+ay, + -9+ax,9+ay,-7+ax,9+ay,6) +q( -8+ax,3+ay,-2+ax,2+ay, + -7+ax,9+ay,-2+ax,8+ay,5) +q( -2+ax,2+ay,2+ax,2+ay, + -2+ax,8+ay,2+ax,8+ay,5) +q( 8+ax,3+ay,2+ax,2+ay, + 7+ax,9+ay,2+ax,8+ay,5) +q( 12+ax,1+ay,8+ax,3+ay, + 9+ax,9+ay,7+ax,9+ay,6) +q( 13+ax,3+ay,12+ax,1+ay, + 12+ax,10+ay,9+ax,9+ay,6) + +end + +function drawbelly(ax,ay,bx,by,cx,cy,dx,dy) +q(-12+dx,-3+dy,-9+dx,-4+dy, + -10+bx,5+by,-9+bx,4+by,2) +q(-9+dx,-4+dy,-7+dx,-4+dy, + -9+bx,4+by,-6+bx,3+by,2) +q(-7+dx,-4+dy,-2+dx,-5+dy, + -6+bx,3+by,-2+bx,2+by,12) +q(-2+dx,-5+dy,2+dx,-5+dy, + -2+bx,2+by,2+bx,2+by,12) +q(7+dx,-4+dy,2+dx,-5+dy, + 6+bx,3+by,2+bx,2+by,12) +q(9+dx,-4+dy,7+dx,-4+dy, + 9+bx,4+by,6+bx,3+by,2) +q(12+dx,-3+dy,9+dx,-4+dy, + 10+bx,5+by,9+bx,4+by,2) + +q(-10+bx,5+by,-9+bx,4+by, + -11+ax,9+ay,-9+ax,9+ay,2) +q(-9+bx,4+by,-6+bx,3+by, + -9+ax,9+ay,-6+ax,10+ay,2) +q(-6+bx,3+by,-2+bx,2+by, + -6+ax,10+ay,-2+ax,10+ay,12) +q(-2+bx,2+by,2+bx,2+by, + -2+ax,10+ay,2+cx,10+cy,12) +q(6+bx,3+by,2+bx,2+by, + 6+cx,10+cy,2+cx,10+cy,12) +q(9+bx,4+by,6+bx,3+by, + 9+cx,9+cy,6+cx,10+cy,2) +q(10+bx,5+by,9+bx,4+by, + 11+cx,9+cy,9+cx,9+cy,2) +end + +function drawunder(ax,ay,bx,by) + q(-6+ax,-4+ay,-2+ax,-4+ay, + -7+ax,1+ay,-2+ax,5+ay,5) + q(6+bx,-4+by,2+bx,-4+by, + 7+bx,1+by,2+ax,5+by,5) + q(-2+ax,-4+ay,2+bx,-4+by, + -2+ax,5+ay,2+bx,5+by,5) + q(-9+ax,-5+ay,-6+ax,-4+ay, + -9+ax,1+ay,-7+ax,1+ay,6) + q(9+bx,-5+by,6+bx,-4+by, + 9+bx,1+by,7+bx,1+by,6) + q(-11+ax,-5+ay,-8+ax,-5+ay, + -14+ax,0+ay,-9+ax,1+ay,6) + q(11+bx,-5+by,8+bx,-5+by, + 14+bx,0+by,9+bx,1+by,6) + q(-9+ax,1+ay,-6+ax,1+ay, + -2+ax,5+ay,-2+ax,9+ay,6) + + q(9+bx,1+by,6+bx,1+by, + 2+bx,5+by,2+bx,9+by,6) + q(-2+ax,5+ay,2+bx,5+by, + -2+ax,9+ay,2+bx,9+by,6) +end + +function drawleg(ax,ay,bx,by,cx,cy,inv) + q(-8*inv+ax,4+ay,-6*inv+ax,-1+ay, + -8*inv+bx,21+by,-7*inv+bx,26+by,2) + q(-6*inv+ax,-1+ay,0*inv+ax,0+ay, + -7*inv+bx,26+by,-3*inv+bx,28+by,2) + q(0*inv+ax,0+ay,7*inv+ax,8+ay, + -3*inv+bx,28+by,1*inv+bx,27+by,2) + q(7*inv+ax,8+ay,6*inv+ax,17+ay, + 1*inv+bx,27+by,5*inv+bx,23+by,1) + q(-7*inv+bx,26+by,-3*inv+bx,28+by, + -9*inv+cx,54+cy,-6*inv+cx,56+cy,1) + q(-3*inv+bx,28+by,1*inv+bx,27+by, + -6*inv+cx,56+cy,-4*inv+cx,57+cy,1) + q(1*inv+bx,27+by,2*inv+bx,36+by, + -4*inv+cx,57+cy,-1*inv+cx,49+cy,1) + q(-9*inv+cx,54+cy,-6*inv+cx,56+cy, + -13*inv+cx,56+cy,-9*inv+cx,60.5+cy,1) + q(-6*inv+cx,56+cy,-4*inv+cx,57+cy, + -9*inv+cx,60.5+cy,-4*inv+cx,60.5+cy,1) + q(-21*inv+cx,59+cy,-13*inv+cx,56+cy, + -21*inv+cx,60.5+cy,-9*inv+cx,60.5+cy,1) + end + +function drawhead(ax,ay) + q(-3+ax,2.5+ay,3+ax,2.5+ay, + -7+ax,6.5+ay,7+ax,6.5+ay,12) + q(-7+ax,6.5+ay,7+ax,6.5+ay, + -2+ax,12.5+ay,2+ax,12.5+ay,12) + q(-8+ax,0.5+ay,-3+ax,0.5+ay, + -7+ax,6.5+ay,-3+ax,2.5+ay,12) + q(-11+ax,2+ay,-8+ax,0.5+ay, + -9+ax,5+ay,-6+ax,6.5+ay,12) + q(-9+ax,5+ay,-6+ax,6.5+ay, + -12+ax,8+ay,-8+ax,7+ay,12) + q(-12+ax,4+ay,-11+ax,2+ay, + -14+ax,6+ay,-9+ax,5+ay,12) + q(8+ax,0.5+ay,3+ax,0.5+ay, + 7+ax,6.5+ay,3+ax,2.5+ay,12) + q(11+ax,2+ay,8+ax,0.5+ay, + 9+ax,5+ay,6+ax,6.5+ay,12) + q(9+ax,5+ay,6+ax,6.5+ay, + 12+ax,8+ay,8+ax,7+ay,12) + q(12+ax,4+ay,11+ax,2+ay, + 14+ax,6+ay,9+ax,5+ay,12) + q(-11+ax,-10+ay,-10+ax,-13+ay, + -8+ax,-4+ay,-4+ax,-8+ay,12) + q(11+ax,-10+ay,10+ax,-13+ay, + 8+ax,-4+ay,4+ax,-8+ay,12) + l(-11+ax,-10+ay,-8+ax,-4+ay,1) + l(-11+ax,-10+ay,-10+ax,-13+ay,1) + l(-10+ax,-13+ay,-4+ax,-8+ay,1) + l(11+ax,-10+ay,8+ax,-4+ay,1) + l(11+ax,-10+ay,10+ax,-13+ay,1) + l(10+ax,-13+ay,4+ax,-8+ay,1) + + q(-7+ax,-9+ay,-4+ax,-10+ay, + -4+ax,-8+ay,-2+ax,-9.5+ay,2) + q(-5+ax,-13+ay,0+ax,-12+ay, + -2+ax,-9.5+ay,2+ax,-9.5+ay,2) + q( 0+ax,-14+ay,3+ax,-12+ay, + 2+ax,-9.5+ay,4+ax,-8+ay,2) + q(-2+ax,-9.5+ay,2+ax,-9.5+ay, + -4+ax,-8+ay,4+ax,-8+ay,2) + q(-3+ax,0.5+ay,3+ax,0.5+ay, + -3+ax,2.5+ay,3+ax,2.5+ay,2) + q(-4+ax,-8+ay,4+ax,-8+ay, + -3+ax,0.5+ay,3+ax,0.5+ay,2) + q(-8+ax,-4+ay,-4+ax,-8+ay, + -8+ax,0.5+ay,-3+ax,0.5+ay,2) + q(-10+ax,-2+ay,-8+ax,-4+ay, + -11+ax,2+ay,-8+ax,0.5+ay,2) + q(8+ax,-4+ay,4+ax,-8+ay, + 8+ax,0.5+ay,3+ax,0.5+ay,2) + q(10+ax,-2+ay,8+ax,-4+ay, + 11+ax,2+ay,8+ax,0.5+ay,2) + l(-3+ax,2+ay,-5+ax,4+ay,0) + l(3+ax,2+ay,5+ax,4+ay,0) + l(0+ax,5+ay,0+ax,7+ay,13) + l(-3+ax,8+ay,3+ax,8+ay,13) + l(-1.5+ax,10+ay,1.5+ax,10+ay,13) + l(-4+ax,7+ay,-1.5+ax,10+ay,13) + l(4+ax,7+ay,1.5+ax,10+ay,13) + q(-2.5+ax,2.+ay,2.5+ax,2.5+ay, + -2.5+ax,3.5+ay,2.5+ax,3.5+ay,0) + q(-2.5+ax,3.5+ay,2.5+ax,3.5+ay, + -0.5+ax,5.5+ay,0.5+ax,5.5+ay,0) + spr(32,-6+ax,-5+ay,5,1,0,0,2,1) +end + +function TIC()t=time()//40 +local dt1=t/8 +local t1=t/4 +local ht1=t/2 +vbank(0) + cls(4) +vbank(1) + cls(3) + drw_tailfxdnc(103,74,pi/2*sin(t1/4),0.8*pi/2*sin(t1/4),0.9*pi/2*sin(t1/4)) + drawarm(93-2*sin(t1),46+1*cos(ht1), + 80-2*sin(t1)+3*cos(ht1), + 46-clmp(14*cos(t1),-10,10), + 80-2*sin(t1)+3*cos(ht1)-clmp(4*cos(ht1),0,2), + 31-clmp(14*cos(t1),-10,10), + 72-2*sin(t1)+3*cos(ht1)-clmp(4*cos(ht1),0,2), + 19-clmp(15*cos(t1),-10,10),1) + + drawarm(113-2*sin(t1),46-1*cos(ht1), + 126-2*sin(t1)-3*cos(ht1), + 46+clmp(15*cos(t1),-10,10), + 126-2*sin(t1)-3*cos(ht1)+clmp(4*cos(ht1),-2,0), + 31+clmp(15*cos(t1),-10,10), + 119-2*sin(t1)-3*cos(ht1)+clmp(4*cos(ht1),-2,0), + 19+clmp(15*cos(t1),-10,10),0) + + drawtop(103-sin(t1),47, + 103-2*sin(t1),47+1*cos(ht1), + 103-2*sin(t1),47-1*cos(ht1),1) + drawbelly(103+2*sin(t1),60+1*cos(t1),103+sin(t1),60,103+2*sin(t1),60-1*cos(t1),103-sin(t1),60) + drawunder(103+2*sin(t1),74+1*cos(t1),103+2*sin(t1),74-1*cos(t1)) + drawleg(95+2*sin(t1),75+1*cos(t1),91+2*sin(t1),76+1*cos(t1),89,75,1) + drawleg(111+2*sin(t1),75-1*cos(t1),115+2*sin(t1),76-1*cos(t1),117,75,-1) + drawhead(103-2*sin(t1),28-cos(t1)) +end + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- diff --git a/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.glsl b/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.glsl new file mode 100644 index 000000000..45f13d7b5 --- /dev/null +++ b/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.glsl @@ -0,0 +1,73 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const vec2 ep= vec2 (.00035,-.00035); +const float far=80; + +float box1(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);} +float box2(vec3 p,vec3 r){p=abs(p)-r;return max(max(p.x,p.y),p.z);} +float sphere(vec3 p,float r){return length(p)-r;} + + +float map(vec3 p){ + float Box1=box1(p-vec3(sin(fGlobalTime*20.)-10.,0,10),vec3(sin(fGlobalTime*5)/2.+2)); + float Box2=box2(p-vec3(-sin(fGlobalTime*20.)+10.,0,10),vec3(sin(fGlobalTime*5)/2.+1)); + float Sphere=sphere(p+vec3(sin(fGlobalTime*10.)*5.,0,0),2.); + float scene= min(Box1/Box2,Sphere); + return scene; +} + + float raycast(vec3 rayOrigin, vec3 rayDirection ){ + float dist,result=0.; + for(int i=0;i<128;i++){ + dist=map(rayOrigin+rayDirection*result); + if(dist<.0001||result>far) break; + result+=dist; + } +return result; +} + + +mat2 rotate2d(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} + +void main(void) +{ + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + uv = uv*sin(fGlobalTime)*2; + + vec2 rotatedUV=uv*rotate2d(abs(sin(fGlobalTime*2))*2.5); + vec2 rotatedUV2=uv*rotate2d(-fGlobalTime); + + float pattern =sin(fGlobalTime*20+rotatedUV2.x/rotatedUV2.y*20.); + + vec3 rayOrigin=vec3(0,0,-10); + vec3 rayDirection=normalize(vec3(rotatedUV,-abs(sin(fGlobalTime*10))/2.+1.)); + vec3 backgroundColor=vec3(-abs(sin(fGlobalTime*5.))+0.25*pattern*2.); + vec3 color=backgroundColor; + float result=raycast(rayOrigin,rayDirection); + if(result .75) break; + } + + vec3 pos = p / scale; + + vec3 iCol = vec3(1), aCol = k * k * .5 + .5, bCol = (1. - k) * .5 + .5; + if (k.y > 0.7) aCol *= texture(texFFTSmoothed, k.x).x*500.; + vec3 aa= vec3(floor(pos.xy), 0.) * scale, + bb = vec3(ceil(pos.xy), 1.) * scale; + vec4 sp = vec4( + floor(pos.xy) + k.xy, + k.z, k.z) * scale; + + for (int b=0; b<3; b++) { + vec4 bDist = boxDist(p, d, aa, bb); + + vec4 sDist = sphereDist(p, d, sp); + bDist = bDist.w < sDist.w ? bDist : sDist; + iCol *= bDist.w == sDist.w ? aCol : bCol; + p += d * bDist.w; + p += bDist.xyz * 0.001; + d = reflect(d, bDist.xyz); + } + col += sCol(d) * iCol; + } + } + out_color = vec4(col / samples, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_dok.glsl b/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_dok.glsl new file mode 100644 index 000000000..8252d6ab2 --- /dev/null +++ b/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_dok.glsl @@ -0,0 +1,105 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +#define time fGlobalTime + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +//READ / WRITE COMPUTE TEXTURE FUNCTIONS +void Add(ivec2 u, vec3 c){//add pixel to compute texture + ivec3 q = ivec3(c*1000);//squish float into int, we use this trick to keep it additive as floatToInt wouldn't work additively + imageAtomicAdd(computeTex[0], u,q.x); + imageAtomicAdd(computeTex[1], u,q.y); + imageAtomicAdd(computeTex[2], u,q.z); +} +vec3 Read(ivec2 u){ //read pixel from compute texture + return 0.001*vec3( //unsquish int to float + imageLoad(computeTexBack[0],u).x, + imageLoad(computeTexBack[1],u).x, + imageLoad(computeTexBack[2],u).x + ); +} + + +float sdb(vec3 p, vec3 e) { + p=abs(p)-e; + return length(max(p,0))+min(max(max(p.x,p.y),p.z),0); +} +const float pi = acos(-1); +const float bps = 137/60.; +#define r2(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + +float map(vec3 p) { + float d = 1e9; + { + vec3 q = p; + float id; + q.xy=abs(q.xy); + q.xy -= 5; + q.xy=abs(q.xy); + q.x -= 2; + q.z -= pow(fract(time*bps/4),4) + (time/bps); + q.z -= id = round(q.z); + q.xy *= r2(0.25*pi+id*0.1); + q.y += 0.1*sin(time+id); + q.x += 0.2*sin(q.y)*pow(fract(time*bps/2),2); + d= sdb(q, vec3(0.05,mix(1,100,pow(.5+.5*sin(time*bps*pi/8),4)),0.05)); + } + + return d; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 col = vec3(1); + vec3 ro = vec3(0.5*sin(time),0,3); + float vv = (abs(uv.x) + abs(uv.y) - time*bps/2); + float fv = mix(0.2,0.5,round(fract(vv/2))); + + vec3 cf = normalize(-ro), + cs = normalize(cross(cf,vec3(0,1,0))), + cu=normalize(cross(cs,cf)), + rd=mat3(cs,cu,cf)*normalize(vec3(mix(uv,.5*uv,round(fract(vv/2))), + fv + )); + float r,d,n=123,i; + vec3 p; + for (i=r=0;i.0) r+=d*.8; + if (r>1e3||d<1e-4)break; + } + col *= 1/(r*.1); + { + float r = texture(texFFTSmoothed, vv).r*10; + col = mix(col, 1.-col, clamp(r,0,1)); + } + if (fract(time/bps/16)>.5)col = 1.-col; + if (texture(texFFTSmoothed, 0.01).r > 0.01)col = 1.-col; + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.glsl b/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.glsl new file mode 100644 index 000000000..1497ca9ce --- /dev/null +++ b/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.glsl @@ -0,0 +1,159 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float gtt=texture(texFFTIntegrated,0.002).r*.002; +float gttf=texture(texFFT,0.002).r*4; + +vec3 glow=vec3(0.0); +const float E = 0.001; +const int STEPS = 100; +const float FAR = 800; + +float cir(vec2 uv, float r) { + + return length(uv)-r; +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(-p.y,p.x); +} +float sdRBox(vec3 p, vec3 b, float r) { + vec3 q = abs(p)-b+r; + return length(max(q,0.0)+min(max(q.x,max(q.y,q.z)),0.0)); +} +float scene(vec3 p, vec3 ro, vec3 rd){ + vec3 pp = p; + pp+=vec3(5); + for(int i=0;i<4;++i){ + pp=abs(pp)+vec3(-10,-10,-10); + rot(pp.zy,.01+gtt*10); + } + pp-=vec3(5); + float d = distance(p,pp); + float bx = sdRBox(pp,vec3(1,1,1)*(1+gttf*2),.4); + vec3 g = vec3(.2)*.01 / (abs(bx)+0.5); + glow += g; + glow *= d*.03; + + return bx; +} + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + for(int i=0; i < STEPS;++i){ + float d = scene(p,ro,rd); + t+=d; + p = ro+rd*t; + if(d <=E || t >= FAR){ + break; + } + } + return t; +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 zom=uv; + vec2 zom2=uv; + vec2 rat=vec2(v2Resolution.y / v2Resolution.x, 1); + uv -= 0.5; + uv /= rat; + float gft=texture(texFFTIntegrated,0.005).r; + float gt=fGlobalTime*.6;//+gft*.3; + + vec2 q = uv; + + vec3 ro = vec3(10,0,0); + vec3 rt = vec3(0,0,0); + vec3 up=vec3(0.0,1.0,0.0); + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z,up)); + vec3 y = normalize(cross(x,z)); + + vec3 rd = normalize(mat3(x,y,z)*vec3(q, 1/radians(90.0))); + + float mr = march(ro,rd); + vec3 pos = ro+rd*mr; + + //uv*=mod(gft*.05,10); + vec2 m; + m.x = atan(uv.y / uv.x) / 3.14; + m.y = 1 / length(uv) * .2; + float d = exp(abs(m.x/2)*.2); + + float f = texture(texFFT, d ).r*1; + float b = texture(texFFTSmoothed,0.002).r*10; + + + zom2-=.5; + zom2*=.8; + zom2+=.5; + + for(int i=0;i<10;++i) { + zom=abs(zom)-vec2(.001,0)*(1-mod(i,2)*2); + zom-=.5; + zom*=.999-b*.05; + zom+=.5; + } + + vec3 pr=texture(texPreviousFrame,zom).rgb; + vec3 spr=texture(texPreviousFrame,zom2).rbg; + + vec3 t = vec3(cir(mod(zom,.8),.2)); + t = clamp( t, 0.0, 1.0 ); + + float tt=(.4-mod(sin(gt*.2)*.4+.4,.8))*5; + + float c1=cir(uv,.2); + float c = mod(abs(c1),.2+b*.3)*c1; + vec2 off=vec2(.2,.1)*tt; + rot(off,gt*.02); + float f2 = texture(texFFT, d+off.x ).r*1; + float c2= cir(uv*vec2(1.001)+off,.2+abs(f2*.1)); + + + float c3=step(c,f*.1*(length(off)*3))-(max(step(c2,0),0)*1000)-mod(spr.r,.25); + + vec3 col=vec3(1); + col+=step(t.r,.0); + + col*=c3; + col+=vec3(.05,.02,0); + //rot(spr.rb,.5); + //rot(pr.br,.1); + col+=pr*.5+spr*.4; + + col*=vec3(1*max(min(col.r+.2,1),0),.4*max(min(col.g+.2,1),0)+.6,1.2); + + if (col.r+col.b+col.g<.1) { + col=col*mr*.2+pr*.2; + } + + + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.glsl b/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.glsl new file mode 100644 index 000000000..d0c8a8c49 --- /dev/null +++ b/shader_file_sources/2024_04_08_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.glsl @@ -0,0 +1,192 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float bpm = 110/60*fGlobalTime; +struct Grid { + /** Center of the cell */ + vec3 cell; + + /** Distance to the bound */ + float dist; + + /** Normal of the bound */ + vec3 normal; + }; + Grid g; + Grid doGrid( vec3 ro, vec3 rd, vec3 size ) { + Grid result; + + result.cell = floor( ( ro + rd * 1E-3 ) / size + 0.5 ) * size; + + vec3 src = -( ro - result.cell ) / rd; + vec3 dst = abs( 0.5 * size / rd ); + vec3 bv = src + dst; + result.dist = min( min( bv.x, bv.y ), bv.z ); + + result.normal = step( bv, vec3( result.dist ) ); + + return result; + } +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +mat3 orth(vec3 p){ + vec3 z=normalize(p),x=vec3(z.z,0.,-z.x); + + return mat3(x,cross(z,x),z); + } +float box3(vec3 p,vec3 b){p=abs(p)-b;return length(max(vec3(0.),p))+min(0.,max(p.x,max(p.y,p.z)));} +vec3 pcg3d(vec3 p){ + uvec3 q=floatBitsToUint(p)*1234567u+1234567890u; + q.x+=q.y*q.z; q.y+=q.x*q.z; q.z+=q.y*q.x; + q^=q>>16u; + q.x+=q.y*q.z; q.y+=q.x*q.z; q.z+=q.y*q.x; + return vec3(q)/float(-1u); +} + +vec3 cy(vec3 p,float pump){ + vec4 s = vec4(0.); + mat3 o = orth(vec3(-1,2,-3)); + for(float i=0;i++<5.;){ + + p*=o; + p+=sin(p.yzx); + s+=vec4(cross(cos(p),sin(p.zxy)),1.); + s*=pump; + p*=2.; + } + return s.xyz/s.w; +} +vec2 sdf(vec3 p){ + vec3 hp=p; + vec2 h; + vec3 rnd = pcg3d(g.cell); + h.x = box3(p,vec3(3.20)); + vec3 hhp=hp-g.cell; + hhp.y = abs(hhp.y); + float d = sqrt(texture(texFFTSmoothed,length(rnd)).r)*5; + h.x = max(h.x,box3( (hhp)-vec3(0.,d,0),vec3(.25,.1+d,.25))); + + h.y =1.+rnd.x+rnd.y+rnd.z; + vec3 tp=p; + tp=abs(tp)-1.5; + tp= erot(tp,normalize(vec3(1.,1.,1)),-.785); + vec2 t; + t.x = abs(box3(tp,vec3(10)))-.1; + t.y = 0.; + + + h=t.x < h.x ?t:h; + + return h; + } +#define q(s) s*sdf(p+s).x + vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(.1,.3,.7)));} + vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 rnd = pcg3d(vec3(uv,fGlobalTime)); + + uv.y *= 1-.9*step(.9,abs(fract(uv.y+bpm+rnd.x*.1))); + + vec3 col =vec3(0.); + + + vec3 ro=vec3(0.,3.,-7.),rt=vec3(0.,1.,0); + + float tt =texture(texFFTIntegrated,.3).r+bpm+rnd.x*.1; + tt= floor(tt)+smoothstep(.1,.9,fract(tt)); +ro=erot(ro,normalize(vec3(1.,1.,0)),bpm*.1+floor(tt)+tanh(sin(tt)*4)); + + vec3 rd= orth(rt-ro)*normalize(vec3(uv,+tanh(sin(bpm*.5)*5.5)*.1+.5+exp(3.*-fract(-bpm*.5)))); + vec3 light = vec3(1.,5.,-5.); + light=erot(light,vec3(0.,1.,0),bpm*.1); + vec3 rp=ro;; + vec2 d; + float rl=0.,i=0; + float len=0.; + for(i=0,rl=0;i++<90;){ + if(len<=rl){ + g=doGrid(rp,rd,vec3(.5,10.,.5)); + len+=g.dist; + } + d= sdf(rp); + rl=min(rl+d.x,len); + rp=ro+rd*rl; + if(d.x< .001) break; + } + if(d.y==0.){ + vec3 n = norm(rp,.001); + rd= reflect(rd,normalize(n+cy(floor(rp*10.)+bpm,1.)*.2)); + ro=rp+n*.1; + len=0; + for(i=0,rl=0;i++<70;){ + if(len<=rl){ + g=doGrid(rp,rd,vec3(.5,10.,.5)); + len+=g.dist; + } + d= sdf(rp); + rl=min(rl+d.x,len); + + rp=ro+rd*rl; + + } + } + + ivec2 gl = ivec2(gl_FragCoord.xy); + ivec2 off = ivec2(erot(vec2(.3,.9).xyy,vec3(0.,0.,1),bpm).xy*(5+exp(1*fract(bpm+.5)))); + vec3 pcol= vec3( + texelFetch(texPreviousFrame,gl+off,0).r, + texelFetch(texPreviousFrame,gl-off,0).g, + texelFetch(texPreviousFrame,gl-off,0).b + ); + if(d.x <.001){ + + // float txt = texture(texFFTIntegrated,length(rnd)).r; + // float zzz = sqrt(texture(texFFTSmoothed,length(rnd)+txt).r); + vec3 n = norm(rp,.001); + vec3 ld = normalize(light-rp); + float dif = max(0.,dot(ld,n)); + float spc = max(0.,pow(dot(reflect(ld,n),rd),32)); + float sss = clamp(sdf(rp+ld*.4).x/.4,0.,1.); + float fre = pow(1+dot(rd,n),4-2*exp(-3.*fract(bpm*.5+.5))); + float bbpm =bpm; + + if(d.y >=1.){ + for(int i=0;i<3;i++){ + bbpm +=rnd.x*.05; + bbpm =floor(bbpm)+smoothstep(.0,1.,fract(bbpm)); + col[i] = 2*exp(-3*fract(d.y*5+bbpm))*(dif+sss*.5)+spc; + + } + col = mix(vec3(.1),sqrt(col),(1-fre)); + + } else { + col = vec3(.5+step(.9,fract(bpm*4)))*dif; + col = mix(pcol,col,.5-3*exp(-3+fract(bpm))); + } + } + + + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/muffintrap.lua b/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/muffintrap.lua new file mode 100644 index 000000000..906a6b144 --- /dev/null +++ b/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/muffintrap.lua @@ -0,0 +1,104 @@ +--[[ + Thank you Aldroid for organizing! + + It was really intense and fun :D + + -muffintrap +]]-- + + +S=math.sin +C=math.cos +NF={} +for y=0,128 do + table.insert(NF,0) +end + +lines={} +linering=1 + +for l=1,100 do + table.insert(lines,{p=0}) +end + +function normalFFT() + for y=0,128 do + NF[y]=fft(y*2)*(2+y*0.65) + end +end + +function BASS() + local ba=0 + for b=0,60 do + ba=ba+fft(b) + end + return ba +end + +function LOMID() + local ba=0 + for b=10,30 do + ba=ba+fft(b)*b + end + return ba +end + +function TIC() + normalFFT() + t=time()//32 + for y=0,136/4 do + rect(0,y*136/4,240,136/4,1+y) + end + + bass=BASS() + lm=LOMID() + if bass>2.5 then + lines[linering].p=lines[linering].p+1 + linering=1+(linering+1)% #lines + end + + + for x=0,240 do + for y=0,136 do + line(x,68+fft(x)*100, + x,68-fft(x+2)*100,1+(x%4)) + end + end + + ramount=40 + ringstep=math.pi*2/ramount + ringspeed=(t+bass*10)/40 + for rl=0,ramount do + + xo=S(ringspeed+rl*ringstep)*50 + yo=C(ringspeed+rl*ringstep)*50 + circb(120+xo,68+yo,20+bass*10+fft(60+rl*4)*100,7+rl%6) + end + + + for li=1,#lines do + if lines[li].p > 0 then + lines[li].p = lines[li].p+1 + ly=lines[li].p + + + line(0,60-ly,240,60-ly,12-(ly%4)) + line(0,90+ly,240,90+ly,12-(ly%3)) + if ly>136 or ly < 0 then + lines[li].p=0 + end + end + end + + dstep=240/12 + sx=-120 + line(0,90,240,90,12) + line(0,60,240,60,12) + for d=-60,60 do + dx=sx+d*dstep + line(120+dx/3,90,d*dstep,136,12) + line(120+dx/3,60,d*dstep,0,12) + end + +-- print("MUFFINTRAP",60,80,12,12,2) +end diff --git a/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/pumpuli.lua b/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/pumpuli.lua new file mode 100644 index 000000000..1aa24b161 --- /dev/null +++ b/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/pumpuli.lua @@ -0,0 +1,147 @@ +SMOOTH=0.8 +W=240 +H=136 +fc={} +fm={} +fn={} +function BOOT() + for i=0,255 do + fc[i]=0 + fm[i]=0 + fn[i]=0 + end +end +function pal(i,r,g,b) + --sanity checks + if i<0 then i=0 end + if i>15 then i=15 end + --returning color r,g,b of the color + if r==nil and g==nil and b==nil then + return peek(0x3fc0+(i*3)),peek(0x3fc0+(i*3)+1),peek(0x3fc0+(i*3)+2) + else + if r==nil or r<0 then r=0 end + if g==nil or g<0 then g=0 end + if b==nil or b<0 then b=0 end + if r>255 then r=255 end + if g>255 then g=255 end + if b>255 then b=255 end + poke(0x3fc0+(i*3)+2,b) + poke(0x3fc0+(i*3)+1,g) + poke(0x3fc0+(i*3),r) + end +end + +for i=0,15 do + pal(i,i*32,i*32,i*32) +end +vbank(1) +for i=0,15 do + pal(i,i*32,i*32,i*32) +end +vbank(0) + +function eft(a) + return fft(math.exp(a/255*6)) +end + +function ffts(a,b) + local f=0 + if a==b then + f=eft(a) + else + for i=a,b,SMOOTH do + f=f+eft(i) + end + f=f/((b-a)*(1/SMOOTH)) + end + return f +end +function sfft(f,s) + return ffts(f-s,f+s) +end + +min=math.min +max=math.max +abs=math.abs +rnd=math.random +sin=math.sin +cos=math.cos + +grt={"F","I","E","L","D","F","X"} + +function subpx(i,a) + local p=peek4(i) + poke4(i,max(p-a,0)) +end +function subpx2(i,a) + local p=peek4(i) + poke4(i-(1-rnd(2)*2),max(p-a,0)) +end +cls(0) + +function TIC() +poke(0x3FFB,0) + t=time()//320 + for i=0,255 do + fc[i]=sfft(i,(256-i)/32+1)*.1 + if fc[i]>fm[i] then + fm[i]=fc[i] + else + fm[i]=fm[i]*0.999 + end + fn[i]=fc[i]/fm[i] + end + for i=1,240*136 do + subpx(i,rnd(5)) + end + for y=0,136 do + for x=0,240 do + X=x/W-.5 + Y=y/H-.5 + X=X*W + Y=Y*H + d=min(255,max(0,abs(X*2.1))) + dy=min(255,max(0,abs(X*2.1))) + ff=fn[d//1]*30 + fy=fn[dy//1]*30 + p=max(0,min(15,abs(Y/fy)+rnd(2))) + if abs(Y)>ff*2 then + pix(x,y,min(ff//1,p)) + elseif abs(Y)>ff*2-2 then + pix(x,y,15) + else + pix(x,y,1) + end + end + end + + for i=0,15 do + r = i*(32*sin(t)) + g = i*(32*sin(t*1.1+.25)) + b = i*(32*sin(t*.8+9)) + pal(i,r,g,b) + end + pal(15,255,255,255) + + vbank(1) + for i=1,240*136 do + subpx2(i,rnd(5)) + end + for i=0,14 do + r = i*(32*-sin(t)) + g = i*(32*-sin(t*1.1+.25)) + b = i*(32*-sin(t*.8+9)) + pal(i,r,g,b) + end + for i=1,7 do + w=W/2-80+(i-1)*23 + h=10+fn[(2+i*16)]*20 + ox=fn[i*16]*4 + oy=fn[i*16]*5 + print(grt[i],w+ox,h+oy,2,1,4) + print(grt[i],w,h,10,1,4) + print(grt[i],w-ox,h-oy,15,1,4) + end + vbank(0) + +end \ No newline at end of file diff --git a/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/vurpo.lua b/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/vurpo.lua new file mode 100644 index 000000000..442291c61 --- /dev/null +++ b/shader_file_sources/2024_04_15_byte_jam_monday_night_bytes/vurpo.lua @@ -0,0 +1,119 @@ +-- greeting to pumpuli and muffintrap +-- and to mintimperial +-- and to aldroid +-- and to everyone watching the jam +-- vurpo + +m=math + +p={} +p2={} + +function r() + return m.random()-0.5 +end + +function newp() + table.insert(p, { + x=r()*300, + y=r()*200, + z=r()*5, + c=m.floor(m.random()*16) + }) +end + +function jam(x,y,s,c) + line( + x-6*s,y-5*s, + x-6*s,y+5*s, + 12 + ) + line( + x+6*s,y-5*s, + x+6*s,y+5*s, + 12 + ) + line( + x-5*s,y+6*s, + x+5*s,y+6*s, + 12 + ) + line( + x-6*s,y+5*s, + x-5*s,y+6*s, + 12 + ) + line( + x+6*s,y+5*s, + x+5*s,y+6*s, + 12 + ) + line( + x-6*s,y-5*s, + x-5*s,y-6*s, + 12 + ) + line( + x+6*s,y-5*s, + x+5*s,y-6*s, + 12 + ) + rect( + x-4*s,y-2*s, + 9*s,7.5*s, + c) + rect( + x-5*s,y-9*s, + 11*s,3*s, + 2) +end + +function BOOT() + poke(0x3fc0,0) + poke(0x3fc1,0) + poke(0x3fc2,0) +end + +function TIC() + t=time()/1000 + + while #p<200 do newp() end + cls(0) + + --jam(10,10,1) + center={x=120,y=68} + table.sort(p,function(a,b)return a.z50 then + table.remove(p2,i) + end + end + for i=#p,1,-1 do + if p[i].z > 5 then + if p[i].y>-20 and r()>0.3 then + local jar=p[i] + jar.yv=0 + table.insert(p2,jar) + end + table.remove(p,i) + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.glsl b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.glsl new file mode 100644 index 000000000..cb4d9ee5d --- /dev/null +++ b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_Marex.glsl @@ -0,0 +1,66 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float sdBox( in vec2 p, in vec2 b) +{ + vec2 q = abs(p) - b; + return min(max(q.x,q.y),0.0) + length(max(q,0.0)); +} + +float shape(vec2 p, in vec2 id) +{ + float a = 10.* fGlobalTime; + return sdBox(mat2x2(cos(a),-sin(a),sin(a),cos(a))*p, vec2(0.4,0.4) ) - sin(fGlobalTime*20.)/10.; +} + +float map(in vec2 p) +{ + const float s = 1.5; + const vec2 rep = vec2(2,1); + + vec2 id = round(p/s); + vec2 r = p - s*id; + return shape( r*2., id ); + +} + +mat2 rotated2d(float r){return mat2(cos(r),sin(r),-sin(r),cos(r));} + +void main() +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 rotatedUV=uv*rotated2d(fGlobalTime/2.); + + vec2 rotatedUV2=uv*rotated2d(-fGlobalTime/1.); + + vec2 p = 4.25*(sin(fGlobalTime)*20./fGlobalTime*v2Resolution.xy)/v2Resolution.xy; + + float d = map(p/rotatedUV*20); + + float d2 = map(p+rotatedUV2*1.5); + + float pattern = ceil(sin(fGlobalTime+uv.x*uv.y*10)); + + vec3 col = (d*d2>.0) ? vec3(0,0,0) : vec3(.5+.5*cos(fGlobalTime+uv.xyx+vec3(0,3,3))); + + out_color =vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ToBach.glsl b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ToBach.glsl new file mode 100644 index 000000000..ae177b9ee --- /dev/null +++ b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_ToBach.glsl @@ -0,0 +1,28 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( v.y ) * 20.0 ); + return vec4( sin(c * 0.2), c * 0.15, cos( c * 0.1) * .25, 1.0 ); +} +void main(void) +{ + float t = fGlobalTime; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float xv=32+sin(uv.y*(sin(t)*8)+t*3)*8; + float sv = (sin(uv.x*xv+sin(uv.y*3)+t*2*2)*sin(uv.y*xv))+1; + float sv2 = (sin(uv.x*xv+sin(uv.y*3)+t*2*2+sin(t*8)/2)*sin(uv.y*xv))+1; + + //i have no clue what i am doing, its not going well sadly :( + //think that's me for tonight + + out_color = vec4(int(sv*sv2),int(sv),int(sv),1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_alkama.glsl b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_alkama.glsl new file mode 100644 index 000000000..516737fe0 --- /dev/null +++ b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_alkama.glsl @@ -0,0 +1,135 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +uniform sampler2D texAkm; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +const float MAXX=2; +const float pi = acos(-1); + +float aaa = floor(fGlobalTime*.33); +float t = 40+aaa+(mod(.05*fGlobalTime, .1*pi)); + +#define rep(p, r) mod(p, r) - r*.5 +#define sat(a) clamp(a, 0., 1.) + +float sphere(vec3 p, float r) { return length(p)-r; } +float cube(vec3 p, vec3 s) { vec3 b=abs(p)-s; return max(max(b.x, b.y), b.z); } + +float t1=abs(sin(t*2)); +float t2=abs(cos(t*2)); +float t3=cos(t*10); +float t4=1; + +float scene(vec3 p) { + vec3 pp=p; + float scale=1.; + for(int i=0;i<7;i++) { + float a=.6+.3*t1; + float b=.7+.1*t2; + p = 2.*clamp(p, -vec3(a*b), vec3(a*b))-p; + float k = max((.5+.2*t1)/dot(p,p), 1.); + p *= k; + scale *= k; + } + return max(cube(p, vec3(.5+.1*t3))/scale, sphere(pp, .3+.0325*t4)); +} + +vec3 cameraDir(vec2 uv, vec3 o, vec3 t, float z) { + vec3 forward = normalize(t-o); + vec3 side = normalize(cross(vec3(-0.4,1,0), forward)); + vec3 up = normalize(cross(forward, side)); + + return normalize(forward*z + side*uv.x + up*uv.y); +} + +vec3 normal(vec3 p) { + vec2 e = vec2(0.001, 0); + return normalize(scene(p)-vec3(scene(p-e.xyy), scene(p-e.yxy), scene(p-e.yyx))); +} + +vec3 march(vec3 og, vec3 dir, int it, float tresh, float maxd) { + float d=0; + int i=0; + for(i=0; imaxd) { return vec3(0,d,i); } + d += h; + } + vec3(0,d,i); +} + +#define ao(a) (scene(p+n*a)/a) + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 uv2 = uv; + + vec3 col = vec3(0); + + vec3 eye = 1.*vec3(.0,.21,.0); + eye.xz += .3 *vec2(sin(t), cos(t)); + vec3 target = vec3(0); + target.xy += .05 *vec2(cos(t*3), sin(t*2)); + + float dist=0; + + for(float xx=0; xx 0.1) { + col = step(0.98, fract(p + fract(q))) * 8.; + col = vec3(max(col.x, max(col.y, col.z))); + } + return vec4(col, d); +} + +vec3 norm(vec3 p) { + vec2 e = vec2(1e-3, 0.); + return normalize(vec3( + df(p + e.xyy).w - df(p - e.xyy).w, + df(p + e.yxy).w - df(p - e.yxy).w, + df(p + e.yyx).w - df(p - e.yyx).w + )); +} + +vec3 rm(vec3 p, vec3 dir, float mDist) { + vec3 col = vec3(0.); + float td = 0.; + for (int i=0; i< 10; i++) { + vec4 d = df(p); + td += d.w; + if (d.w < 1e-3 || td > mDist) { + col = d.xyz; + vec3 n = norm(p); + col *= 1.-max(0., dot(-n, dir)); + break; + } + p += d.w * dir; + } + return col; +} + +const int samples = 16; +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.xy * 2. - v2Resolution.xy) / v2Resolution.yy; + + vec3 col = vec3(0.); + + for (int j=0;jsides) break; + } + return accum; +} + +vec3 mul3( in mat3 m, in vec3 v ){return vec3(dot(v,m[0]),dot(v,m[1]),dot(v,m[2]));} + +//luminance saturation hue +vec3 oklch_to_srgb( in vec3 c ) { + c = vec3(c.x, c.y*cos(c.z), c.y*sin(c.z)); + mat3 m1 = mat3( + 1,0.4,0.2, + 1,-0.1,-0.06, + 1,-0.1,-1.3 + ); + + vec3 lms = mul3(m1,c); + + lms = pow(lms,vec3(3.0)); + + + mat3 m2 = mat3( + 4, -3.3,0.2, + -1.3,2.6,-0.34, + 0.0,-0.7, 1.7 + ); + return mul3(m2,lms); +} + +void main(void) +{ + vec2 uncentered = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + float volume = texture(texFFT,uncentered.x*.3).r; + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float t = fGlobalTime*.2+volume; + + float px=1.5/v2Resolution.y; + float level = 0.; + for(float i=0.;i<24.;i++){ + float t_f = t+texture(texNoise, vec2(i*.282, .0)).r*8.; + float t_i = floor(t_f); + float size = mod(t_f,1.)*.1; + vec2 shift = uv; + shift *= rot( + texture(texNoise, vec2(i*.755, t_i*.246)).r + *PI*8.); + float dorto_pos = -pow(mod(t_f,1.),1.8)*1.2; + float sides = texture(texNoise, vec2(i*9.582, .0)).r*4.; + sides = 2.+floor(sides); + level+=1.-smoothstep(size, size+px, polygon(shift-vec2(dorto_pos,0.), sides)); + } + level = mix(0., 1., level-floor(level*2.)/2.); + vec3 col = oklch_to_srgb(vec3(1.,1.,mod(t*3.,2.*PI))); + + out_color.r = texture(texPreviousFrame, uncentered+vec2(-SQ2,SQ2)*px).b*0.98; + out_color.g = texture(texPreviousFrame, uncentered+vec2(SQ2,SQ2)*px).r*0.98; + out_color.b = texture(texPreviousFrame, uncentered+vec2(0.,1.)*px).g*0.98; + out_color.rgb = mix(out_color.rgb, col, level); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_dok.glsl b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_dok.glsl new file mode 100644 index 000000000..325d3b66b --- /dev/null +++ b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_dok.glsl @@ -0,0 +1,161 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds +#define time fGlobalTime +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +//READ / WRITE COMPUTE TEXTURE FUNCTIONS +void Add(ivec2 u, vec3 c){//add pixel to compute texture + ivec3 q = ivec3(c*1000);//squish float into int, we use this trick to keep it additive as floatToInt wouldn't work additively + imageAtomicAdd(computeTex[0], u,q.x); + imageAtomicAdd(computeTex[1], u,q.y); + imageAtomicAdd(computeTex[2], u,q.z); +} +vec3 Read(ivec2 u){ //read pixel from compute texture + return 0.001*vec3( //unsquish int to float + imageLoad(computeTexBack[0],u).x, + imageLoad(computeTexBack[1],u).x, + imageLoad(computeTexBack[2],u).x + ); +} +vec2 m2(vec2 a, vec2 b) { return a.x < b.x ? a : b; } +float sdb(vec3 p, vec3 e){ + p = abs(p)-e; + return length(max(p,0.))+min(max(max(p.x,p.y),p.z),0.); +} +#define r2(a) mat2(cos(a),-sin(a),sin(a),cos(a)) +const float pi = acos(-1); +vec2 map(vec3 q) +{ + float d; + vec2 r; + { + vec3 p = q; + float s = texture(texFFTSmoothed, .01).r*.5; + p -= clamp(round(p),-1.,1.); + float e = mix(.1,1.5,s); + float h = mix(.1,1.5,s)*2; + p.xz*=r2(p.y+pow(.5+.5*sin(time),4)); + d = sdb(p,vec3(e,h,e)); + r=vec2(d,1); + } + { + vec3 p = q; + d=1e9; + for (float i=0;i<2;i+=.2) { + float a = i*pi+time; + vec3 o = vec3(sin(a),0,cos(a))*2; + o.xy*=r2(.25); + o=p-o; + o.yz*=r2(.12+a+time); + d = min(d, sdb(o,vec3(.1))); + } + r = m2(r, vec2(d,2)); + } + { + vec3 p = q; + p=abs(p); + p.xy-=2; + p.xy*=r2(0.5); + d=sdb(p, vec3(1,.1,1)); + r = m2(r, vec2(d,3)); + } + return r; +} +vec3 nrm(vec3 p) { + vec2 e=vec2(1e-4,0); + return normalize(vec3(map(p+e.xyy).x-map(p-e.xyy).x, + map(p+e.yxy).x-map(p-e.yxy).x, + map(p+e.yyx).x-map(p-e.yyx).x + )); +} +vec4 raym(vec3 rd, vec3 ro, out float om) { + float i,d,r=0,N=42; + vec3 col = vec3(1); + float s = sign(map(ro+rd*r).x); + float m; + for (r=i=0; i0.)r+=d; + if (d<1e-4&&m==1.0) { + p = ro+rd*r; + vec3 n = nrm(p); + ro = ro+rd*r; + rd = refract(rd,n,1.-.1*s); + r=1e-4; + s=-s; + continue; + } + if (d<1e-4&&m==2.0) { + p = ro+rd*r; + vec3 n = nrm(p); + ro = ro+rd*r; + rd = reflect(rd,n); + r=1e-4; + continue; + } + + if (d<1e-4||r>1e5)break; + } + om = m; + return vec4(ro+rd*r,r); +} +float gt(vec2 uv) { + uv*=r2(pi*.25); + uv=abs(uv); + return max(uv.x,uv.y); +} + +void main(void) +{ + vec2 uv = (gl_FragCoord.xy - .5 * v2Resolution.xy) / v2Resolution.y; + vec3 col = vec3(1); + float bps= 123/60.; + float s = time/bps; + float t = fract(s/16); + float fv = .75; + vec3 ro = vec3(.5+0.5*cos(time),.5+.5*sin(time),2.5); + if (t>.5) + ro = vec3(.5+0.5*cos(time),5+pow(.5+.5*sin(time),4),2.5); + if (t>.75) + { ro = vec3(4+cos(time),1,2.5); fv = mix(.75, .2, pow(t,4)); } + vec3 cf = normalize(-ro), + cl=normalize(cross(cf,vec3(0,1,0))), + cu=normalize(cross(cf,cl)), + rd=mat3(cl,cu,cf)*normalize(vec3(uv, + .75)); + float m; + vec4 p = raym(rd,ro, m); + if (p.w<1e4) { + if (m < 3) { + col *= max(0, dot(nrm(p.xyz),-vec3(0,1,0))); + } + } else { + col *=0; + } + + col = mix(col, 1-col, step(.5,fract(gt(uv*1.5)-time*.1))); + + out_color = vec4(mix(col,texture(texPreviousFrame,gl_FragCoord.xy/v2Resolution.xy).xyz,.2), 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_nusan.glsl b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_nusan.glsl new file mode 100644 index 000000000..65c043756 --- /dev/null +++ b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_nusan.glsl @@ -0,0 +1,212 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time=mod(fGlobalTime, 300); + +// 26 letters + some numbers +const int Letters[31] = int[31](23535,31471,25166,31595,29391,4815,31310,23533,29847,13463,23277,29257,23423,23403,15214,5103,26474,23279,14798,9367,27501,12141,32621,23213,31213,29351,31727,448,5393,29671,31599); + +float textcolor=7.; +void String6(inout float prev, inout vec2 uv, int val) { + float a = 0.; + uv = floor(uv); + for(int i=0; i<6; ++i) { + int cdig = int(val)%32; + if(cdig!=0) { + vec2 mask = step(abs(uv-vec2(1.3,2.5)),vec2(1.5,2.5)); + a += float((Letters[cdig-1]>>int(uv.x+uv.y*3.))&1)*mask.x*mask.y; + } + uv.x -= 4.; + val/=32; + } + + if(a>.1) prev=textcolor; +} + +// TIC-80 palette + +const vec3 Paltic[16] = vec3[16](vec3(0.1, 0.11, 0.17), vec3(0.36, 0.15, 0.36), vec3(0.69, 0.24, 0.33), vec3(0.94, 0.49, 0.34) + , vec3(1.0, 0.8, 0.46), vec3(0.65, 0.94, 0.44), vec3(0.22, 0.72, 0.39), vec3(0.15, 0.44, 0.47) + , vec3(0.16, 0.21, 0.44), vec3(0.23, 0.36, 0.79), vec3(0.25, 0.65, 0.96), vec3(0.45, 0.94, 0.97) + , vec3(0.96, 0.96, 0.96), vec3(0.58, 0.69, 0.76), vec3(0.34, 0.42, 0.53), vec3(0.2, 0.24, 0.34)); + + + +const vec3 Palpico[16] = vec3[16](vec3(0),vec3(0.125,0.2,0.48),vec3(0.494,0.145,0.325),vec3(0,0.513,0.192), + vec3(0.74,0.321,0.211),vec3(0.27),vec3(0.76,0.764,0.78),vec3(1,0.945,0.91), + vec3(1,0,0.3),vec3(1,0.639,0),vec3(1,0.925,0.153),vec3(0,0.886,0.196), + vec3(0.16,0.678,1),vec3(0.513,0.463,0.611),vec3(1,0.467,0.659),vec3(1,0.8,0.667)); + + +const vec3[16] palAppleII = vec3[16]( + vec3(217, 60, 240)/255., + vec3(64, 53, 120)/255., + vec3(108, 41, 64)/255., + vec3(0, 0, 0)/255., + + vec3(236, 168, 191)/255., + vec3(128, 128, 128)/255., + vec3(217, 104, 15)/255., + vec3(64, 75, 7)/255., + + vec3(191, 180, 248)/255., + vec3(38, 151, 240)/255., + vec3(128, 128, 128)/255., + vec3(19, 87, 64)/255., + + vec3(255, 255, 255)/255., + vec3(147, 214, 191)/255., + vec3(191, 202, 135)/255., + vec3(38, 195, 15)/255. +); + +vec3 Pal[16] = Paltic; + +vec3 pal(float t) { + return Pal[int(t)%16]; +} + +float fft(float t) { + return texture(texFFTSmoothed, fract(t)*.1+.001).x; +} +float ffti(float t) { + return texture(texFFTIntegrated, fract(t)*.1+.001).x; +} + +float rnd(float t) { + return fract(sin(t*452.312)*714.541); +} + +vec2 rnd(vec2 t) { + return fract(sin(t*452.312+t.yx*814.724)*714.541); +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +void circ(inout float prev, vec2 uv, float x, float y, float s, float c) { + if(length(uv-vec2(x,y))<=s) prev = c; +} + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +float map(vec3 p) { + + float t=time; + for(int i=0; i<3; ++i) { + p.xy *= rot(ffti(0.04)*.33+p.z*.1); + p.xz *= rot(ffti(0.06)*.23+p.y*.1); + p.xy=abs(p.xy)-.3-sin(t+i)*.5; + } + float d=box(p,vec3(.3)); + + p=abs(p)-3-sin(time/5+p.x/10.)*2.7; + d=min(d, length(p.xy)-.2); + d=min(d, length(p.xz)-.1); + d=min(d, length(p.zy)-.1); + + return abs(d)*.7; +} + + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv.y=1-uv.y; + uv = floor(uv * vec2(240,136)); + uv -= vec2(120,68); + + vec2 fuv=uv/136.0; + + time = mod(fGlobalTime, 300); + float tm=floor(time/2-length(fuv)*.1); + float sec=rnd(tm); + time += sec*300.0; + + float ss=mod(tm,3); + if(ss<1) Pal = palAppleII; + else if(ss<2) Pal = Palpico; + + vec2 m; + m.x = atan(fuv.x / fuv.y) / 3.14; + m.y = 1 / length(fuv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + vec4 cola = f + t; + + float value = texture(texPreviousFrame, gl_FragCoord.xy / v2Resolution.xy).a*16; + if(rnd(uv+fract(time)).x<0.5) { + value *= 0.9; + } + + //value += clamp(cola.x,0,1)*16.; + /* + for(int i=0; i<10; ++i) { + vec2 id=rnd(floor(time*20)*vec2(1,0.3)+i*100.0); + circ(value, uv, id.x*240-120, id.y*136-68, 10, 7+i); + } + */ + if (mod(time,8)<2) { + vec2 ruv=uv*rot(time*.1); + value = (ruv.x+ruv.y)*16.0/240.0+ffti(.05)*.3; + } + + + for(int i=0; i<30; ++i) { + textcolor = time*3+i; + float t1=ffti(0.02)*.05+i; + vec2 tuv=uv+vec2(sin(t1)*100,sin(t1*.7)*64); + String6(value, tuv, 4592934); + String6(value, tuv, 774); + } + + vec3 s=vec3(0,0,-5); + s.xy += (rnd(sec)-.5)*vec2(2,4); + vec3 r=normalize(vec3(fuv, 1)); + vec3 p=s; + for(int i=0; i<100; ++i) { + float d=map(p); + if(d<0.001) { + value=7+map(p-r)*6; + break; + } + if(d>100) break; + p+=r*d; + } + + out_color = vec4(pal(value), float(int(value)%16)/16.0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.glsl b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.glsl new file mode 100644 index 000000000..9ae365660 --- /dev/null +++ b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_pumpuli.glsl @@ -0,0 +1,163 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float gt=fGlobalTime; +float gtt=texture(texFFTIntegrated,0.002).r*.12; +float gttf=texture(texFFT,0.002).r*4; + +vec3 glow=vec3(0.0); +const float E = 0.001; +const int STEPS = 100; +const float FAR = 800; + +float cir(vec2 uv, float r) { + return length(uv)-r; +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(-p.y,p.x); +} +float sdRBox(vec3 p, vec3 b, float r) { + vec3 q = abs(p)-b+r; + return length(max(q,0.0)+min(max(q.x,max(q.y,q.z)),0.0)); +} + +float scene(vec3 p, vec3 ro, vec3 rd){ + vec3 pp = p; + float pft=texture(texFFTSmoothed,length(p)*.01).r*.02; + + float bft=gttf*300; + for(int i=0;i<8;++i){ + pp=abs(pp)-vec3(0,1,2); + rot(pp.zy,.3+pft*40); + pp=abs(pp)-vec3(2,0,0); + rot(pp.xy,.3+gtt*.5); + } + pp=floor(pp*bft)/bft; + float d = distance(p,pp); + float b = sdRBox(pp,vec3(1,1,1)+vec3(8)*pft*10,.2); + vec3 g = vec3(.2)*.1/(abs(b)+100); + glow+=g; + glow*=d*.03; + return b; +} + +float march(vec3 ro, vec3 rd){ + float t = E; + vec3 p = ro; + for(int i=0; i < STEPS;++i){ + float d = scene(p,ro,rd); + t+=d; + p = ro+rd*t; + if(d <=E || t >= FAR){ + break; + } + } + return t; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 zom=uv; + vec2 zom2=uv; + vec2 rat=vec2(v2Resolution.y / v2Resolution.x, 1); + uv -= 0.5; + uv /= rat; + float gft=texture(texFFTIntegrated,0.005).r; + float ft=texture(texFFT,0.002).r; + float res=8800-ft*16000; + res=max(res,50); + uv=floor(uv*res)/res; + + + zom-=.5; + zom*=1.-ft*.05; + zom+=.5; + + vec2 q = uv; + vec3 rg = vec3(0); + vec3 ro = vec3(10,0,0)*2; + //ro=rg; + + vec3 rt = vec3(0,0,0); + vec3 up=vec3(0.0,1.0,0.0); + //rot(ro.xy,gft*.15); + //rot(ro.zx,gft*gft*.0001); + vec3 z = normalize(rt-ro); + vec3 x = normalize(cross(z,up)); + vec3 y = normalize(cross(x,z)); + + vec3 rd = normalize(mat3(x,y,z)*vec3(q, 1/radians(90.0))); + float mr = march(ro,rd); + vec3 pos = ro+rd*mr; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFTSmoothed, abs(pos.x)*.01 ).r * 10; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec3 prev=texture(texPreviousFrame,zom).rgb; + zom2=zom; + zom2-=.5; + zom2*=.8-ft*.2; + rot(zom2,3.14/2); + zom2*=rat; + zom2/=rat.yx; + zom2+=.5; + vec3 prev2=texture(texPreviousFrame,zom2).rgb; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + + vec3 pink=vec3(1,1,1); + + vec3 c=vec3(.1); + if(mr2.9){ + c=1-prev*pink*4; + } + //rot(prev.xy,.2); + c+=prev*.5; + + if(c.r+c.g+c.b<0.3){ + c=prev*2; + } + rot(pos.xz,gt*.1); + out_color = vec4(c-prev/pink+vec3(normalize(abs(pos))),0); + if(distance(clamp(out_color.rgb,0,1),vec3(0))<.1){ + out_color=vec4(prev2*.5,0); + } +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.glsl b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.glsl new file mode 100644 index 000000000..4a1c1a38d --- /dev/null +++ b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_totetmatt.glsl @@ -0,0 +1,142 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float bpm = 160*fGlobalTime/60; +vec3 mul3( in mat3 m, in vec3 v ){return vec3(dot(v,m[0]),dot(v,m[1]),dot(v,m[2]));} + +vec3 oklch_to_srgb( in vec3 c ) { + c = vec3(c.x, c.y*cos(c.z), c.y*sin(c.z)); + mat3 m1 = mat3( + 1,0.4,0.2, + 1,-0.1,-0.06, + 1,-0.1,-1.3 + ); + + vec3 lms = mul3(m1,c); + + lms = pow(lms,vec3(3.0)); + + + mat3 m2 = mat3( + 4, -3.3,0.2, + -1.3,2.6,-0.34, + 0.0,-0.7, 1.7 + ); + return mul3(m2,lms); +} +vec3 pcg3d(vec3 p){ + uvec3 q=floatBitsToUint(p)*1234567+1234567890u; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + q^=q>>16u; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + return vec3(q)/float(-1u); + } +float frw = bpm*.125; +mat3 orth(vec3 p){ + vec3 z = normalize(p),x=vec3(z.z,0.,-z.x); + return mat3(x,cross(z,x),z); +} +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +vec2 sdf(vec3 p){ + vec3 hp=p; + vec2 h; + vec3 rnd = pcg3d(floor(p)); + hp= erot(hp,vec3(0.,0.,1),hp.z*.1); + hp=abs(hp)-5.5; + float sc= 1.; + for(float i=0.;i++<4.;){ + hp=abs(hp)-5.5; + sc*=1.5; + hp= erot(hp,vec3(0.,0.,1),hp.z*.1+dot(sin(hp),cos(hp.yzx))*.1+.5*tanh(sin(floor(bpm*2)+hp.z*.1))); + hp*=1.5; + } + float lol = sqrt(texture(texFFTSmoothed,length(rnd)).r)*2; + h.x = length(hp.xy)-1.-lol;;; + h.x/=sc; + h.y = 1.+lol; + return h; +} +#define q(s) s*sdf(p+s).x +vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +vec3 pal(float t){return .5+.5*cos(6.28*(1*t+vec3(.0,.3,.7)));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + float ratio = v2Resolution.y / v2Resolution.x; + uv /= vec2(ratio, 1); + + uv *= 1+1.5+1.5*sin(bpm)*step(.35,abs(uv.y)); + uv = erot(uv.xyy,vec3(0.,0.,1.),tanh(cos(bpm)*5)).xy; + + + + vec3 frnd = pcg3d(floor(vec3(uv*5,bpm*.25))); +vec3 rnd = pcg3d(vec3(uv,bpm)); + frw += texture(texFFTIntegrated,.3).r*8+rnd.x*.01; + frw = floor(frw)+pow(fract(frw),.25); + vec3 col = vec3(0.); + vec3 ro = vec3(0.,0.,-5+frw),rt=vec3(0.,0.,0.+frw); + float aaa; + ro.x +=(aaa=tanh(sin(bpm*0.5+rnd.y*.1)*5))*.1; + ro.y +=tanh(cos(bpm*1.5)*5); + vec3 rd = orth(rt-ro)*normalize(vec3(uv,1.-.5*exp(-fract(bpm+.5)))); + + vec3 rp=ro; + float rl = 0.,i=0.; + vec2 d; + vec3 light = vec3(1.,2,-3.+frw); + vec3 acc=vec3(0.); + + + + for(;i++<128;){ + d=sdf(rp); + acc+=pal(rp.z*.1)*exp(5*-fract((rp.z*.001+bpm)))*exp(-abs(d.x))/(10-5*exp(-fract(d.y*3.33+bpm))); + //d.x = max(0.001,abs(d.x)); + rl+=d.x; + rp=ro+rl*rd; + if(d.x< .001){break;} + } + /*if(d.x<.001){ + vec3 n = norm(rp,.001); + vec3 ld = normalize(light-rp); + float dif = max(0.,dot(ld,n)); + col =vec3(1.)*dif; + + }*/ + + acc = mix(acc,10*pal(rp.z*.1),step(.9,fract(rp.z))); + ivec2 gl = ivec2(gl_FragCoord.xy); + ivec2 off= ivec2(erot(vec2(1.,0).xyy,vec3(0.,0.,1),bpm).xy*10); + vec3 pcol =vec3( + texelFetch(texPreviousFrame,gl+off,0).x, + texelFetch(texPreviousFrame,gl-off,0).y, + texelFetch(texPreviousFrame,gl-off,0).z + ); + + col = mix(acc,sin(pcol-bpm*4+rp.z),.5+aaa*.1); + col = mix(col,vec3(1.-exp(5*-fract(bpm+.5))),1-exp(-.001*rl*rl*rl)); + if(fract(bpm+frnd.x)>.9) {col = .1/(.1+col);} + col = mod(bpm+frnd.z+uv.y,10) <5 ? oklch_to_srgb(col) : col; + out_color = vec4(col*col,(acc,0.,1.)); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_wrighter.glsl b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_wrighter.glsl new file mode 100644 index 000000000..7f7de3c73 --- /dev/null +++ b/shader_file_sources/2024_04_22_shader_jam_monday_night_bytes/grabber_fieldfx_wrighter.glsl @@ -0,0 +1,308 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define T fGlobalTime +#define R v2Resolution +#define U gl_FragCoord.xy +#define pi acos(-1.) +#define tau (acos(-1.)*2.) + + +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + +vec3[4*4] palAppleII = vec3[]( + vec3(217, 60, 240)/255., + vec3(64, 53, 120)/255., + vec3(108, 41, 64)/255., + vec3(0, 0, 0)/255., + + vec3(236, 168, 191)/255., + vec3(128, 128, 128)/255., + vec3(217, 104, 15)/255., + vec3(64, 75, 7)/255., + + vec3(191, 180, 248)/255., + vec3(38, 151, 240)/255., + vec3(128, 128, 128)/255., + vec3(19, 87, 64)/255., + + vec3(255, 255, 255)/255., + vec3(147, 214, 191)/255., + vec3(191, 202, 135)/255., + vec3(38, 195, 15)/255. +); + + +// hashes +uint seed = 12512; +uint hashi( uint x){ + x ^= x >> 16;x *= 0x7feb352dU;x ^= x >> 15;x *= 0x846ca68bU;x ^= x >> 16; + return x; +} + +#define hash_f_s(s) ( float( hashi(uint(s)) ) / float( 0xffffffffU ) ) +#define hash_f() ( float( seed = hashi(seed) ) / float( 0xffffffffU ) ) +#define hash_v2() vec2(hash_f(),hash_f()) +#define hash_v3() vec3(hash_f(),hash_f(),hash_f()) +#define hash_v4() vec3(hash_f(),hash_f(),hash_f(),hash_f()) + +vec2 sample_disk(){ + vec2 r = hash_v2(); + return vec2(sin(r.x*tau),cos(r.x*tau))*sqrt(r.y); +} +vec3 mul3( in mat3 m, in vec3 v ){return vec3(dot(v,m[0]),dot(v,m[1]),dot(v,m[2]));} + +vec3 oklch_to_srgb( in vec3 c ) { + c = vec3(c.x, c.y*cos(c.z), c.y*sin(c.z)); + mat3 m1 = mat3( + 1,0.4,0.2, + 1,-0.1,-0.06, + 1,-0.1,-1.3 + ); + + vec3 lms = mul3(m1,c); + + lms = pow(lms,vec3(3.0)); + + + mat3 m2 = mat3( + 4, -3.3,0.2, + -1.3,2.6,-0.34, + 0.0,-0.7, 1.7 + ); + return mul3(m2,lms); +} +float TT; + + +mat3 orth(vec3 tar, vec3 or){ + vec3 dir = normalize(tar - or); + vec3 right = normalize(cross(vec3(0,1,0),dir)); + vec3 up = normalize(cross(dir, right)); + return mat3(right, up, dir); +} + +#define h(x) fract(sin(x*25.67)*125.6) + +float Bayer2(vec2 a) { + a = floor(a); + return fract(a.x / 2. + a.y * a.y * .75); +} + +#define Bayer4(a) (Bayer2 (.5 *(a)) * .25 + Bayer2(a)) +#define Bayer8(a) (Bayer4 (.5 *(a)) * .25 + Bayer2(a)) +#define Bayer16(a) (Bayer8 (.5 *(a)) * .25 + Bayer2(a)) +#define Bayer32(a) (Bayer16(.5 *(a)) * .25 + Bayer2(a)) +#define Bayer64(a) (Bayer32(.5 *(a)) * .25 + Bayer2(a)) + + +void get(out vec4 C, vec2 u, float tt){ + vec2 uv = (u - 0.5*R.xy)/R.y; + + C = vec4(0); + + float md = 0.02; + + vec2 puv = vec2(atan(uv.y,uv.x),length(uv)); + + //float tt = T; + puv.y += (tt+sin(tt))*0.1; + //puv.y += 0. + clamp((puv.x + 2.5)*5.,0.,1.0)*0.025; + //puv.y-= 0. + clamp((puv.x - .3)*5.,0.,1.0)*0.025; + float id = floor(puv.y/md); + + float offs = id + T + sin(T + id*0.1); + + uv.xy *= rot(id + offs); + puv.x = atan(uv.y,uv.x); + + + //#defien pmod() + + + + + + puv.y = mod(puv.y,md); + + C += 1.-clamp(mod(id,2.),0.,1.0); + + if(puv.x < pi/2.0){ + C = 1.-C; + } + +} + +void main(void){ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float dmd = 0.001; + + vec2 uvid = floor(uv/dmd*0.1); + uv = floor(uv/dmd)*dmd; + vec2 marchu = uv; + + vec3 ro = vec3(0,0,-4.); + vec3 rd = normalize(vec3(uv,3.7)); + + seed = 2151225; + seed += hashi(uint(U.x)) + hashi(uint(U.y)*125); + + vec3 p = vec3(0); + + vec3 col = vec3(0); + + vec2 u = uv; + + + TT = floor(T*0.3 + sin(T*0.6)); + ro = normalize(sin((T + TT*111.0)*vec3(0.8,0.3,0.79)))*4.0; + + float md = 1/2.0; + float X = 0.0; + if(true){ + for(float i = 0.; i < 35.0; i++){ + marchu = floor(uv/md); + X = h(marchu.x*44.21 + h(marchu.y + 1256.1)*12.5 + floor(T*1)); + //X *= + + //if(marchu) + md *= 0.5; + if( X > 0.97){ + break; + } + X *= exp(-i); + } + marchu *= md; + } + + vec3 tar = sin((T)*vec3(0.8,0.3,0.79)*2.)*0.4; + + rd = normalize(vec3(marchu,0.8 + sin(T+sin(T))*0.)); + + mat3 mat = orth(tar, ro); + rd = mat * rd; + + col = max(col,0.); + if (false){ + #define has(x) fract(sin(x*125.5)*125.6) + #define has2(X) has(has(X.x*35.6 +T*0.0 + 4 + floor(T))*415.5 + has(X.y*32.6+T*0.00)*53.6) + vec2 tmd = 0.5*vec2(1,R.x/R.y); + vec2 u = vec2(U/R); + for(float i = 0; i < 20; i++){ + vec2 fluv = floor(u/tmd); + + //col = vec3(1)*2.0 - read_pixel(ivec2(fluv*tmd*R))*2.0; + float X = has2(fluv); + if(X <0.01 * (length(col))){ + break; + } + tmd /= 2.0; + } + } + + float bpm = 174; + float tb = T/60*bpm*0.25; + float tid = mod(floor(tb),3); + float env = mod(tb,1.); + env = exp(-env*2.) * smoothstep(0.,0.1,env); + + float sz = env; + if(tb < 0.5){ + sz *= 0.; + } + { + float t = 100.0; + for(float i = 0.; i < 70.; i++){ + vec3 q = normalize(sin(i*vec3(421.,15.6,120.352)+T*0.1 + env)); + q = mat * q; + q.xy /= q.z*18.0; + float sd; + if(mod(i,8.0) < 3.0){ + sd = length(q.xy - marchu); + sd -= 0.1*sin(i+T); + } else { + q.xy -= marchu; + q.xy *= rot(i); + sd = abs((q.xy).x) - 0.001; + } + sd -= 0.0001; + vec3 cc = 0.5 + 0.5 * sin(i) * vec3(1); + cc = palAppleII[int(16.*cc.x + T + env)%16]; + + if(mod(i,9) < 2){ + + } else { + + col = mix(col,cc*(1-col),smoothstep(fwidth(sd),0.,sd)); + } + } + } + + if(false){ + float bpm = 174; + float tb = T/60*bpm*0.25; + float tid = mod(floor(tb),3); + float env = mod(tb,1.); + env = exp(-env*2.) * smoothstep(0.,0.1,env); + + float sz = env; + if(tb < 0.5){ + sz *= 0.; + } + for(float i = 0.; i < 3; i++){ + float d = length(uv) - sz*0.2; + + if(d < 0.){ + col = 1.-col; + col *= 0.2; + //col *= 0.; + } + uv = abs(uv) - 0.2; + uv *= 2.; + //uv = abs(uv); + } + + } + + vec4 prev = texture(texPreviousFrame,U/R); + vec2 dr = vec2(dFdx((prev.g)),dFdy((prev.g))); + + prev = texture(texPreviousFrame,U/R+dr*100); + //col += dr.xyx*110.4; + + float bay = Bayer16(uvid); + col = max(col,0); + //col = col/(1+col); + col = pow(col,vec3(0.554545)); + if(mod(T/4,2.) < 1.0){ + col = mix(col,prev.xyz,(clamp(dot(col,col)*1,0.,1.))*0.99*pow(0.5 + 0.5*sin(T),0.01)); + } else { + col = mix(col,prev.xyz,(1.-clamp(dot(col,col)*1,0.,1.))*0.99*pow(0.5 + 0.5*sin(T),0.01)); + } + float dithmd = 0.2; + col += (bay*0.5 - 0.5)*dithmd*0.5; + col = round(col/dithmd)*dithmd; + //for() + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/bfox.asm b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/bfox.asm new file mode 100644 index 000000000..253268553 --- /dev/null +++ b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/bfox.asm @@ -0,0 +1,316 @@ + org 0x8000 + +atrbuf1 equ #a000 +atrbuf2 equ #a800 +atrbuf3 equ #b000 + +loop + call one + call two + + halt + + + + + + + + + + + ld l,0 + ld de,#5800 + ld lx,atrbuf1/256 + ld c,atrbuf2/256 + ld b,atrbuf3/256 + ld hx,3 +prnt1 + ld a,lx : ld h,a + ld a,(hl) + ld h,c + or (hl) + ld h,b + or (hl) + ld (de),a + inc de + inc l + jp nz,prnt1 + inc h + inc lx + inc c + inc b + dec hx + jp nz,prnt1 + + jr loop + +;--------------------------------------- +one + ld a,1 +txt1 equ $-1 + dec a + ld (txt1),a + jr nz,nxt1 + ld a,8 + ld (txt1),a + + ld hl,text1-1 +tx1 equ $-2 + inc hl + ld a,(hl) : or a + jr nz,tt1 + ld hl,text1-1 +tt1 ld (tx1),hl + + ld l,(hl) + ld h,0 + add hl,hl + add hl,hl + add hl,hl + ld bc,15616-256 + add hl,bc + ld de,txt1buf + ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi +nxt1 + + ld hl,atrbuf1+1 + ld de,atrbuf1 + ld a,255 +ld1 ldi + dec a + jp nz,ld1 + + ld hl,txt1buf + ld de,atrbuf1+31 + ld b,8 +lp1 + rlc (hl) + inc hl + sbc a,a + and 4*8+64 + ld (de),a + ld a,32 + add a,e + ld e,a + djnz lp1 + ret +;-------------------------- +two + ld a,1 +txt2 equ $-1 + dec a + ld (txt2),a + jr nz,nxt2 + ld a,8 + ld (txt2),a + + ld hl,text2-1 +tx2 equ $-2 + inc hl + ld a,(hl) : or a + jr nz,tt2 + ld hl,text2-1 +tt2 ld (tx2),hl + + ld l,(hl) + ld h,0 + add hl,hl + add hl,hl + add hl,hl + ld bc,15616-256 + add hl,bc + ld de,txt2buf + ldi:ldi:ldi:ldi:ldi:ldi:ldi:ldi +nxt2 + + ld hl,atrbuf2+1 + ld de,atrbuf2 + ld a,255 +ld2 ldi + dec a + jp nz,ld2 + + ld hl,txt2buf + ld de,atrbuf2+31 + ld b,8 +lp2 + rlc (hl) + inc hl + sbc a,a + and 1*8+64 + ld (de),a + ld a,32 + add a,e + ld e,a + djnz lp2 + ret + + + + jr $ + +text1 db " MULTIMATOGRAF ",0,0 +text2 db " DEMOPARTY ",0,0 + +txt1buf equ #c000 +txt2buf equ #c100 +txt3buf equ #c200 +;---------------------------------------- +; Snippets: +; down_hl +; up_hl +; hl_to_scr +; scr_to_attrs +; set_point +; rnd16 +; gen_sin +;---------------------------------------- + +;---------------------------------------- +; Next screen line address in HL +;---------------------------------------- +down_hl + inc h + ld a, h + and #07 + ret nz + ld a, l + sub #e0 + ld l, a + sbc a, a + and #f8 + add a, h + ld h, a + ret + +;---------------------------------------- +; Previous screen line address in HL +;---------------------------------------- +up_hl + dec h + ld a, h + cpl + and #07 + ret nz + ld a, l + sub #20 + ld l, a + ret c + ld a, h + add a, #08 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +; out: HL = addr in screen [4000..57FF] +; C = pixel number [0..7] +;---------------------------------------- +hl_to_scr + ld c, l + ld a, l + rlca : rlca : rlca + xor h + and #c7 + xor h + rlca : rlca + ld l, a + ld a, h + and #c0 + inc a + rra : rra : rra + xor h + and #f8 + xor h + ld h, a + ld a, c + and 7 + ret + +;---------------------------------------- +; in: HL = addr in screen [4000..57FF] +; out: HL = addr in attrs [5800..5AFF] +;---------------------------------------- +scr_to_attrs + ld a, h + rrca : rrca : rrca + and #03 + or #58 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +;---------------------------------------- +set_point + call hl_to_scr + ld de, pixel_tbl + add a, e + ld e, a + ld a, (de) + ld (hl), a + ret + + align 8 +pixel_tbl + db #80,#40,#20,#10,#08,#04,#02,#01 + +;---------------------------------------- +; in: none +; out: HL = random 16bit value +;---------------------------------------- +rnd16 +.sd equ $+1 + ld de, 0 + ld a, d + ld h, e + ld l, 253 + or a + sbc hl, de + sbc a, 0 + sbc hl, de + ld d, 0 + sbc a, d + ld e, a + sbc hl, de + jr nc, .st + inc hl +.st ld (.sd), hl + ret + +;---------------------------------------- +; in: IX = addr of 256b buffer +; out: generated sin table +;---------------------------------------- +gen_sin + ld de, #7fbc + ld hl, #ff7f +.g0 ld a, d + xor #80 ; uncomment for unsigned + ld (ix), a + xor #80 ; uncomment for unsigned + rla + sbc a, a + ld b, a + ld c, d + adc hl, bc + rr c + rrca + rr c + add hl, bc + ld b, h + ld a, l + ex de, hl + sra b : rra + sra b : rra + sra b : rra + ld c, a + ;or a + sbc hl, bc + ex de, hl + inc ixl + jr nz, .g0 + ret diff --git a/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/gogin.asm b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/gogin.asm new file mode 100644 index 000000000..da937ae3f --- /dev/null +++ b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/gogin.asm @@ -0,0 +1,445 @@ + org 0x8000 + + ld ix, sintable + call gen_sin + + ld hl, #5800 + ld de, #5801 + ld bc, #02ff + ld (hl), l + ldir + +loop + ei + halt + ld a, 0 + out (254), a + +counter: equ $+1 + ld a, 0 + + + ld b, 192 +sfloop: + push bc + + + ; TODO + ld a, 192 + sub b + ld h, a + + ld e, a + ld d, 5 + ld a, (de) + ld l, a ; coord Y + + and 3 + jr z, mx0 + dec a + jr z, mx1 + dec a + jr z, mx2 +mx2 + ld a, (counter) + add a, a + add a, a + add a, a + jr set_x + +mx1 + ld a, (counter) + add a, a + add a, a + jr set_x + +mx0 + ld a, (counter) + add a, a + +set_x: + add a, l + cpl + ld l, a ; coord X + + call set_point + inc l + ld (hl), 0 + push hl + + call scr_to_attrs + ld a, r + and 7 + or #44 + ld (hl), a + + pop hl + ld a, l + and %11100000 + ld l, a + ld (hl), 0 + + pop bc + djnz sfloop + +;---------------------------------- + + + ld b, 192 + ld hl, #4005 +wloop: + push bc + push hl + + + ld a, (counter) + rrca + rrca + and 7 + ld de, pulse + ld e, a + ld a, (de) + ;ld (hl), a ; pulse + ld (cx1), a + + + ld de, sintable + ld a, (counter) + and %00001110 + rrca : rrca : rrca : rrca + add a, b + ld e, a + ld a, (de) + + ;inc l + ;inc l + ;ld (hl), a ; bsin + ld (cx2), a + + ld a, (counter) + and %00000111 + rrca :rrca :rrca + add a, b + ld e, a + ld a, (de) + + ;inc l + ;inc l + ;ld (hl), a ; msin + ld (cx3), a + + + ld d, 6 + ld a, (de) + + inc l + inc l + ;ld (hl), a ; musor + ;ld (cx4), a + + +;cx4: equ $+1 +; add a, 0 + +cx1: equ $+1 + ld a, 0 +cx2: equ $+1 + add a, 0 +cx3: equ $+1 + add a, 0 + + and %11111000 + rrca : rrca : rrca + ld (hl), a + ld c, a + + ld a, r + and 3 + add a, c + or #90 + ld d, a + ld e, 0 + ld (#4000), de + ex de, hl + push hl + ldi : ldi : ldi : ldi : ldi : ldi : ldi : ldi + pop hl + ldi : ldi : ldi : ldi : ldi : ldi : ldi : ldi + + + + + + pop hl + call down_hl + + pop bc + djnz wloop + + + + ld hl, counter + inc (hl) + + xor a + out (254), a + jp loop + + + align 256 +pulse: + db 19,18,17,16,15,14,13,12 + + + align 256 +sintable: + ds 256 + + + + org #9000 + + ; 0 + align 256 + db #00,#00,#00,#01,#80,#00,#00,#00 + align 256 + db #00,#00,#00,#03,#c0,#00,#00,#00 + align 256 + db #00,#00,#00,#07,#e0,#00,#00,#00 + align 256 + db #00,#00,#00,#0f,#f0,#00,#00,#00 + + ; 4 + align 256 + db #00,#00,#00,#1f,#f8,#00,#00,#00 + align 256 + db #00,#00,#00,#3f,#fc,#00,#00,#00 + align 256 + db #00,#00,#00,#7f,#fe,#00,#00,#00 + align 256 + db #00,#00,#00,#ff,#ff,#00,#00,#00 + + ; 8 + align 256 + db #00,#00,#03,#ff,#ff,#c0,#00,#00 + align 256 + db #00,#00,#0f,#ff,#ff,#f0,#00,#00 + align 256 + db #00,#00,#3f,#ff,#ff,#fc,#00,#00 + align 256 + db #00,#00,#ff,#ff,#ff,#ff,#00,#00 + + ; 12 + align 256 + db #00,#03,#ff,#ff,#ff,#ff,#00,#00 + align 256 + db #00,#0f,#ff,#ff,#ff,#ff,#c0,#00 + align 256 + db #00,#3f,#ff,#ff,#ff,#ff,#fc,#00 + align 256 + db #00,#ff,#ff,#ff,#ff,#ff,#ff,#00 + + ; 16 + align 256 + db #03,#ff,#ff,#ff,#ff,#ff,#ff,#c0 + align 256 + db #0f,#ff,#ff,#ff,#ff,#ff,#ff,#f0 + align 256 + db #3f,#ff,#ff,#ff,#ff,#ff,#ff,#fc + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + + ; 20 + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff + + + + + + align 256 + +;---------------------------------------- +; Snippets: +; down_hl +; up_hl +; hl_to_scr +; scr_to_attrs +; set_point +; rnd16 +; gen_sin +;---------------------------------------- + +;---------------------------------------- +; Next screen line address in HL +;---------------------------------------- +down_hl + inc h + ld a, h + and #07 + ret nz + ld a, l + sub #e0 + ld l, a + sbc a, a + and #f8 + add a, h + ld h, a + ret + +;---------------------------------------- +; Previous screen line address in HL +;---------------------------------------- +up_hl + dec h + ld a, h + cpl + and #07 + ret nz + ld a, l + sub #20 + ld l, a + ret c + ld a, h + add a, #08 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +; out: HL = addr in screen [4000..57FF] +; C = pixel number [0..7] +;---------------------------------------- +hl_to_scr + ld c, l + ld a, l + rlca : rlca : rlca + xor h + and #c7 + xor h + rlca : rlca + ld l, a + ld a, h + and #c0 + inc a + rra : rra : rra + xor h + and #f8 + xor h + ld h, a + ld a, c + and 7 + ret + +;---------------------------------------- +; in: HL = addr in screen [4000..57FF] +; out: HL = addr in attrs [5800..5AFF] +;---------------------------------------- +scr_to_attrs + ld a, h + rrca : rrca : rrca + and #03 + or #58 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +;---------------------------------------- +set_point + call hl_to_scr + ld de, pixel_tbl + add a, e + ld e, a + ld a, (de) + ld (hl), a + ret + + align 8 +pixel_tbl + db #80,#40,#20,#10,#08,#04,#02,#01 + +;---------------------------------------- +; in: none +; out: HL = random 16bit value +;---------------------------------------- +rnd16 +.sd equ $+1 + ld de, 0 + ld a, d + ld h, e + ld l, 253 + or a + sbc hl, de + sbc a, 0 + sbc hl, de + ld d, 0 + sbc a, d + ld e, a + sbc hl, de + jr nc, .st + inc hl +.st ld (.sd), hl + ret + +;---------------------------------------- +; in: IX = addr of 256b buffer +; out: generated sin table +;---------------------------------------- +gen_sin + ld de, #7fbc + ld hl, #ff7f +.g0 ld a, d + xor #80 ; uncomment for unsigned + ld (ix), a + xor #80 ; uncomment for unsigned + rla + sbc a, a + ld b, a + ld c, d + adc hl, bc + rr c + rrca + rr c + add hl, bc + ld b, h + ld a, l + ex de, hl + sra b : rra + sra b : rra + sra b : rra + ld c, a + ;or a + sbc hl, bc + ex de, hl + inc ixl + jr nz, .g0 + ret diff --git a/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nikhotmsk.asm b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nikhotmsk.asm new file mode 100644 index 000000000..1d91ae9d7 --- /dev/null +++ b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nikhotmsk.asm @@ -0,0 +1,360 @@ + org 0x8000 + + ld a,0 + out (254),a + + ld hl, 0x3d00 ; where the font is + ld de, 0x5800 ; where the screen attributes are + + +;;;;;;;;;;;;;;;;;;;;;;; +; variables initialization here +;;;;;;;;;;;;;;;;;;;;;;; + + + +loop + + + ld de, 0x5800 ; TODO new location + push hl + ex hl,de + + ex hl,de + pop hl + + push hl + ld hl, (randomness) + ld a, (hl) + inc hl + ld (randomness), hl + ld (color_one), a + pop hl + + push hl + ld hl, (randomness) + ld a, (hl) + inc hl + ld (randomness), hl + ld (color_two), a + pop hl + + push hl + ld hl, (randomness) + ld a, h + and 0b00111111 + ld h, a + ld (randomness), hl + pop hl + + ld b, 8 +draw_cycle_glyph: + call draw_row + push hl + ex hl, de + ld de, 32 - 8 ; advance to next row + add hl, de + ex hl,de + pop hl + + dec b + jr nz, draw_cycle_glyph + + ld de, 0x4000 + or a ; clear carry flag + sbc hl, de + add hl, de ; this is super cool word compare method + jr c, draw_cycle_glyph_skip_no_wraparound + ld hl, 0x3d00 +draw_cycle_glyph_skip_no_wraparound: + + + + ld bc, 20000 +busy_loop: + dec bc + ld a, b + or c + jr nz, busy_loop + + jr loop + +;;;;;;;;;;;;;;;;;;;;;;;;; +; variables here +;;;;;;;;;;;;;;;;;;;;;;;;; +color_two: db 0b01000000 +color_one: db 0b01111111 +randomness: dw 0 + +;;;;;;;;;;;;;;;;;; +; draw_row +;;;;;;;;;;;;;;;;;; + +draw_row: + ld a, (hl) + ;;;;;;;;;;;;;;;; + ; draw column 0 + ;;;;;;;;;;;;;;;; + or a ; clear carry flag + rlca + push af + ld a, (color_one) ; color + jr c, color_skip_0 + ld a, (color_two) ; color +color_skip_0: + ld (de), a + pop af + inc de + ;;;;;;;;;;;;;;;; + ; draw column 1 + ;;;;;;;;;;;;;;;; + or a ; clear carry flag + rlca + push af + ld a, (color_one) ; color + jr c, color_skip_1 + ld a, (color_two) ; color +color_skip_1: + ld (de), a + pop af + inc de + ;;;;;;;;;;;;;;;; + ; draw column 2 + ;;;;;;;;;;;;;;;; + or a ; clear carry flag + rlca + push af + ld a, (color_one) ; color + jr c, color_skip_2 + ld a, (color_two) ; color +color_skip_2: + ld (de), a + pop af + inc de + ;;;;;;;;;;;;;;;; + ; draw column 3 + ;;;;;;;;;;;;;;;; + or a ; clear carry flag + rlca + push af + ld a, (color_one) ; color + jr c, color_skip_3 + ld a, (color_two) ; color +color_skip_3: + ld (de), a + pop af + inc de + ;;;;;;;;;;;;;;;; + ; draw column 4 + ;;;;;;;;;;;;;;;; + or a ; clear carry flag + rlca + push af + ld a, (color_one) ; color + jr c, color_skip_4 + ld a, (color_two) ; color +color_skip_4: + ld (de), a + pop af + inc de + ;;;;;;;;;;;;;;;; + ; draw column 5 + ;;;;;;;;;;;;;;;; + or a ; clear carry flag + rlca + push af + ld a, (color_one) ; color + jr c, color_skip_5 + ld a, (color_two) ; color +color_skip_5: + ld (de), a + pop af + inc de + ;;;;;;;;;;;;;;;; + ; draw column 6 + ;;;;;;;;;;;;;;;; + or a ; clear carry flag + rlca + push af + ld a, (color_one) ; color + jr c, color_skip_6 + ld a, (color_two) ; color +color_skip_6: + ld (de), a + pop af + inc de + ;;;;;;;;;;;;;;;; + ; draw column 7 + ;;;;;;;;;;;;;;;; + or a ; clear carry flag + rlca + push af + ld a, (color_one) ; color + jr c, color_skip_7 + ld a, (color_two) ; color +color_skip_7: + ld (de), a + pop af + inc de + inc hl + ret + + +;---------------------------------------- +; Snippets: +; down_hl +; up_hl +; hl_to_scr +; scr_to_attrs +; set_point +; rnd16 +; gen_sin +;---------------------------------------- + +;---------------------------------------- +; Next screen line address in HL +;---------------------------------------- +down_hl + inc h + ld a, h + and #07 + ret nz + ld a, l + sub #e0 + ld l, a + sbc a, a + and #f8 + add a, h + ld h, a + ret + +;---------------------------------------- +; Previous screen line address in HL +;---------------------------------------- +up_hl + dec h + ld a, h + cpl + and #07 + ret nz + ld a, l + sub #20 + ld l, a + ret c + ld a, h + add a, #08 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +; out: HL = addr in screen [4000..57FF] +; C = pixel number [0..7] +;---------------------------------------- +hl_to_scr + ld c, l + ld a, l + rlca : rlca : rlca + xor h + and #c7 + xor h + rlca : rlca + ld l, a + ld a, h + and #c0 + inc a + rra : rra : rra + xor h + and #f8 + xor h + ld h, a + ld a, c + and 7 + ret + +;---------------------------------------- +; in: HL = addr in screen [4000..57FF] +; out: HL = addr in attrs [5800..5AFF] +;---------------------------------------- +scr_to_attrs + ld a, h + rrca : rrca : rrca + and #03 + or #58 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +;---------------------------------------- +set_point + call hl_to_scr + ld de, pixel_tbl + add a, e + ld e, a + ld a, (de) + ld (hl), a + ret + + align 8 +pixel_tbl + db #80,#40,#20,#10,#08,#04,#02,#01 + +;---------------------------------------- +; in: none +; out: HL = random 16bit value +;---------------------------------------- +rnd16 +.sd equ $+1 + ld de, 0 + ld a, d + ld h, e + ld l, 253 + or a + sbc hl, de + sbc a, 0 + sbc hl, de + ld d, 0 + sbc a, d + ld e, a + sbc hl, de + jr nc, .st + inc hl +.st ld (.sd), hl + ret + +;---------------------------------------- +; in: IX = addr of 256b buffer +; out: generated sin table +;---------------------------------------- +gen_sin + ld de, #7fbc + ld hl, #ff7f +.g0 ld a, d + xor #80 ; uncomment for unsigned + ld (ix), a + xor #80 ; uncomment for unsigned + rla + sbc a, a + ld b, a + ld c, d + adc hl, bc + rr c + rrca + rr c + add hl, bc + ld b, h + ld a, l + ex de, hl + sra b : rra + sra b : rra + sra b : rra + ld c, a + ;or a + sbc hl, bc + ex de, hl + inc ixl + jr nz, .g0 + ret diff --git a/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nyuk.asm b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nyuk.asm new file mode 100644 index 000000000..0f15cf874 --- /dev/null +++ b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/finals/nyuk.asm @@ -0,0 +1,227 @@ + ; HI! + ; nyuk here agains! + + org 0x8000 + + call fill + call fill2 + + ld a,0 + out (254),a + + ld hl, #5800 + ld de, #5801 + ld bc, #02ff + ld (hl), %01000111 + ldir + +loop + call rl0 + call rl0 + call rl0 + call mve + halt + call rl0 + call rl0 + call rl0 + call rl0 + halt + + call rl0 + call rl0 + call rl0 + call rl0 + call mve + halt + call rl0 + call rl0 + call rl0 + call rl0 + halt + + call rl0 + call rl0 + call rl0 + call mve2 + halt + call rl0 + call rl0 + call rl0 + call rl0 + halt + + call rl0 + call rl0 + call rl0 + call rl0 + call mve2 + halt + call rl0 + call rl0 + call rl0 + call rl0 + halt + + jr loop + +mve + ld hl, #9000 + push hl + ld de, #5900 - 32 + ld bc, 256 + 32 + ldir + pop hl + inc hl + ld a, l : and %00011111 + ld (mve+1), a + ld (mve2+1), a + ret + +mve2 + ld hl, #a000 + push hl + ld de, #5900 - 32 + ld bc, 256 + 32 + ldir + pop hl + inc hl + ld a, l : and %00011111 + ld (mve+1), a + ld (mve2+1), a + ret + +fill + ld hl, #9000 + ld de, #9001 + ld (hl), %01000111 + ld bc, 512 + ldir + ld hl, #9000 + ld a, %01011011 + call f1 + ret + +fill2 + ld hl, #a000 + ld de, #a001 + ld (hl), %01000111 + ld bc, 512 + ldir + ld hl, #a000 + ld a, %01110110 + call f1 + + ld a, %01000111 + ld (#a0f1), a + ld (#a0f2), a + ld (#a0f3), a + ret + +f1 ld l, #32 : ld (hl), a + ld l, #33 : ld (hl), a + ld l, #34 : ld (hl), a + ld l, #35 : ld (hl), a + + ld l, #51 : ld (hl), a + ld l, #52 : ld (hl), a + ld l, #53 : ld (hl), a + ld l, #54 : ld (hl), a + ld l, #55 : ld (hl), a + ld l, #56 : ld (hl), a + + ld l, #70 : ld (hl), a + ld l, #71 : ld (hl), a + ld l, #73 : ld (hl), a + ld l, #74 : ld (hl), a + ld l, #75 : ld (hl), a + ld l, #76 : ld (hl), a + ld l, #77 : ld (hl), a + + ld l, #90 : ld (hl), a + ld l, #91 : ld (hl), a + ld l, #92 : ld (hl), a + ld l, #93 : ld (hl), a + ld l, #94 : ld (hl), a + ld l, #95 : ld (hl), a + ld l, #96 : ld (hl), a + ld l, #97 : ld (hl), a + + ld l, #b0 : ld (hl), a + ld l, #b1 : ld (hl), a + ld l, #b2 : ld (hl), a + ld l, #b3 : ld (hl), a + ld l, #b4 : ld (hl), a + ld l, #b5 : ld (hl), a + ld l, #b6 : ld (hl), a + ld l, #b7 : ld (hl), a + + ;ld l, #d3 : ld (hl), a + ld l, #d4 : ld (hl), a + ld l, #d5 : ld (hl), a + ld l, #d6 : ld (hl), a + ld l, #d7 : ld (hl), a + + ld l, #f1 : ld (hl), a + ld l, #f2 : ld (hl), a + ld l, #f3 : ld (hl), a + ld l, #f4 : ld (hl), a + ld l, #f5 : ld (hl), a + ld l, #f6 : ld (hl), a + + inc h + + ld l, #12 : ld (hl), a + ld l, #13 : ld (hl), a + ld l, #14 : ld (hl), a + ld l, #15 : ld (hl), a + + ret + +rl0 + ld b, #40 + call rl1 + + ld b, #48 + call rl1 + + ld b, #50 + +rl1 + call rnd16 + ld a, h : and %00000011 + rla + or b + ld d, a + + ld a, l : and %11100000 : ld e, a + ld bc, 32 + push de + call rnd16 + pop de + ld h, 0 + ldir + ret + +;---------------------------------------- +; in: none +; out: HL = random 16bit value +;---------------------------------------- +rnd16 +.sd equ $+1 + ld de, 0 + ld a, d + ld h, e + ld l, 253 + or a + sbc hl, de + sbc a, 0 + sbc hl, de + ld d, 0 + sbc a, d + ld e, a + sbc hl, de + jr nc, .st + inc hl +.st ld (.sd), hl + ret + diff --git a/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/bfox.asm b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/bfox.asm new file mode 100644 index 000000000..15951ebc8 --- /dev/null +++ b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/bfox.asm @@ -0,0 +1,246 @@ + org 0x8000 + +buff equ #c000 + + ld a,1 + out (254),a + + ld hl,#5800 + ld a,#0f +stripe + dec hl + ld (hl),a + cp (hl) + jr z,stripe + + ld ix,#a000 + call gen_sin + + +loop + ld hl,32 + ld (temp),hl + + + ld a,0 +counter equ $-1 + inc a + ld (counter),a + + ld h,#a0 + ld l,a + ld l,(hl) + add a,l + ld l,a + ld l,(hl) + + + ld lx,24 +lab2 + push hl + + ld de,56-27 + add hl,de + srl l + srl l + ld h,buff/256 + + ld bc,32 +temp equ $-2 + add hl,bc + + ex de,hl + + ld hl,data1 + jr nc,lab1 + ld hl,data2 +lab1 + ldi :ldi :ldi :ldi :ldi :ldi + inc c : inc c :inc c :inc c :inc c :inc c + + pop hl + inc hl + + ld hl,(temp) + ld bc,32 + add hl,bc + ld (temp),hl + + dec lx + jr nz,lab2 + + halt + + ld hl,buff + ld de,#5800 + ld bc,768 + ldir + + + jr loop + + +data1 + db 001,1*8+5,5*8+7 + 64, 6*8+2+64,2*8,0 +data2 + db 000,1*8+1,5*8+5+64,7*8+6+64,64+2*8+2,0,0 +edata + +;---------------------------------------- +; Snippets: +; down_hl +; up_hl +; hl_to_scr +; scr_to_attrs +; set_point +; rnd16 +; gen_sin +;---------------------------------------- + +;---------------------------------------- +; Next screen line address in HL +;---------------------------------------- +down_hl + inc h + ld a, h + and #07 + ret nz + ld a, l + sub #e0 + ld l, a + sbc a, a + and #f8 + add a, h + ld h, a + ret + +;---------------------------------------- +; Previous screen line address in HL +;---------------------------------------- +up_hl + dec h + ld a, h + cpl + and #07 + ret nz + ld a, l + sub #20 + ld l, a + ret c + ld a, h + add a, #08 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +; out: HL = addr in screen [4000..57FF] +; C = pixel number [0..7] +;---------------------------------------- +hl_to_scr + ld c, l + ld a, l + rlca : rlca : rlca + xor h + and #c7 + xor h + rlca : rlca + ld l, a + ld a, h + and #c0 + inc a + rra : rra : rra + xor h + and #f8 + xor h + ld h, a + ld a, c + and 7 + ret + +;---------------------------------------- +; in: HL = addr in screen [4000..57FF] +; out: HL = addr in attrs [5800..5AFF] +;---------------------------------------- +scr_to_attrs + ld a, h + rrca : rrca : rrca + and #03 + or #58 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +;---------------------------------------- +set_point + call hl_to_scr + ld de, pixel_tbl + add a, e + ld e, a + ld a, (de) + ld (hl), a + ret + + align 8 +pixel_tbl + db #80,#40,#20,#10,#08,#04,#02,#01 + +;---------------------------------------- +; in: none +; out: HL = random 16bit value +;---------------------------------------- +rnd16 +.sd equ $+1 + ld de, 0 + ld a, d + ld h, e + ld l, 253 + or a + sbc hl, de + sbc a, 0 + sbc hl, de + ld d, 0 + sbc a, d + ld e, a + sbc hl, de + jr nc, .st + inc hl +.st ld (.sd), hl + ret + +;---------------------------------------- +; in: IX = addr of 256b buffer +; out: generated sin table +;---------------------------------------- +gen_sin + ld de, #3bbc + ld hl, #ff7f +.g0 ld a, d + xor #80 ; uncomment for unsigned + ld (ix), a + xor #80 ; uncomment for unsigned + rla + sbc a, a + ld b, a + ld c, d + adc hl, bc + rr c + rrca + rr c + add hl, bc + ld b, h + ld a, l + ex de, hl + sra b : rra + sra b : rra + sra b : rra + ld c, a + ;or a + sbc hl, bc + ex de, hl + inc ixl + jr nz, .g0 + ret diff --git a/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/gogin.asm b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/gogin.asm new file mode 100644 index 000000000..90ea0ba97 --- /dev/null +++ b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/gogin.asm @@ -0,0 +1,372 @@ + + + + org 0x8000 + + ld ix, sin_table + call gen_sin + +loop + +.counter: equ $+1 + ld a, 0 + inc a + ld (.counter), a + + + ld hl, sin_table + ld l, a + ld a, (hl) + + and %00011100 + rrca : rrca + ld (.bglow), a + + /* + ld a, (.counter) + add a, 64 + ld hl, sin_table + ld l, a + ld a, (hl) + + and %11110000 + rlca :rlca :rlca :rlca + or #a0 + ;ld (.bghigh), a + */ + + ld b, 3 + ld de, #5800 + +.bgloop: + push bc + +.bglow equ $+1 +.bghigh equ $+2 + ld hl, bg + ld bc, 256 + ldir + + pop bc + djnz .bgloop + + + + di + ld (.sp), sp + + + + + ld hl, wave + ld de, #4008 + + ld a, (.counter) + ld (.temp), a + + ld b, 192 +.waveloop: + push bc + + +.temp: equ $+1 + ld a, 0 + inc a + ld (.temp), a + + ld hl, sin_table + ld l, a + ld a, (hl) + and %00111000 + rrca :rrca :rrca + + ;ld (#4000), a + + ld hl, wave + or #90 + ld h, a + + ld a, (.counter) + ld b, 0 + ld c, a + ld a, (bc) + and 3 + add a, h + ld h, a + + push de + ldi : ldi : ldi : ldi : ldi : ldi : ldi : ldi + ldi : ldi : ldi : ldi : ldi : ldi : ldi : ldi + pop de + + ex de, hl + call down_hl + ex de, hl + + pop bc + djnz .waveloop + + + + +.sp equ $+1 + ld sp, 0 + ei + + jp loop + + + +sin_table: equ #8800 + + + org #8800 +pulse: + db 5,4,3,2,2,1,0,0 + + + org #9000 +wave: + align 256 + db #00,#00,#00,#00,#00,#00,#00,#0f,#f0,#00,#00,#00,#00,#00,#00,#00 + align 256 + db #00,#00,#00,#00,#00,#00,#00,#ff,#ff,#00,#00,#00,#00,#00,#00,#00 + align 256 + db #00,#00,#00,#00,#00,#00,#0f,#ff,#ff,#f0,#00,#00,#00,#00,#00,#00 + align 256 + db #00,#00,#00,#00,#00,#00,#ff,#ff,#ff,#ff,#00,#00,#00,#00,#00,#00 + align 256 + db #00,#00,#00,#00,#00,#0f,#ff,#ff,#ff,#ff,#f0,#00,#00,#00,#00,#00 + align 256 + db #00,#00,#00,#00,#00,#ff,#ff,#ff,#ff,#ff,#ff,#00,#00,#00,#00,#00 + + align 256 + db #00,#00,#00,#00,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#00,#00,#00,#00 + align 256 + db #00,#00,#00,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#00,#00,#00 + + /* + + align 256 + db #00,#00,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#00,#00,#00 + align 256 + db #ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#ff,#00 + + */ + + + + + + +q equ #57 +w equ #4F +y equ #03 + + org #a000 +bg: + db q,q,q,q,y,w,w,w + db q,q,q,q,y,w,w,w + db q,q,q,q,y,w,w,w + db q,q,q,q,y,w,w,w + + db q,q,q,q,w,y,y,y + db q,q,q,q,w,y,y,y + db q,q,q,q,w,y,y,y + db q,q,q,q,w,y,y,y + + db q,q,q,q,w,y,y,y + db q,q,q,q,w,y,y,y + db q,q,q,q,w,y,y,y + db q,q,q,q,w,y,y,y + + db q,q,q,q,w,y,y,y + db q,q,q,q,w,y,y,y + db q,q,q,q,w,y,y,y + db q,q,q,q,w,y,y,y + + + db 0,w,w,w,q,q,q,q + db 0,w,w,w,q,q,q,q + db 0,w,w,w,q,q,q,q + db 0,w,w,w,q,q,q,q + + db 0,0,0,0,q,q,q,q + db w,0,0,0,q,q,q,q + db w,0,0,0,q,q,q,q + db w,0,0,0,q,q,q,q + + db w,0,0,0,q,q,q,q + db w,0,0,0,q,q,q,q + db w,0,0,0,q,q,q,q + db w,0,0,0,q,q,q,q + + db w,0,0,0,q,q,q,q + db w,0,0,0,q,q,q,q + db w,0,0,0,q,q,q,q + db w,0,0,0,q,q,q,q + + + + + + + +;---------------------------------------- +; Snippets: +; down_hl +; up_hl +; hl_to_scr +; scr_to_attrs +; set_point +; rnd16 +; gen_sin +;---------------------------------------- + +;---------------------------------------- +; Next screen line address in HL +;---------------------------------------- +down_hl + inc h + ld a, h + and #07 + ret nz + ld a, l + sub #e0 + ld l, a + sbc a, a + and #f8 + add a, h + ld h, a + ret + +;---------------------------------------- +; Previous screen line address in HL +;---------------------------------------- +up_hl + dec h + ld a, h + cpl + and #07 + ret nz + ld a, l + sub #20 + ld l, a + ret c + ld a, h + add a, #08 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +; out: HL = addr in screen [4000..57FF] +; C = pixel number [0..7] +;---------------------------------------- +hl_to_scr + ld c, l + ld a, l + rlca : rlca : rlca + xor h + and #c7 + xor h + rlca : rlca + ld l, a + ld a, h + and #c0 + inc a + rra : rra : rra + xor h + and #f8 + xor h + ld h, a + ld a, c + and 7 + ret + +;---------------------------------------- +; in: HL = addr in screen [4000..57FF] +; out: HL = addr in attrs [5800..5AFF] +;---------------------------------------- +scr_to_attrs + ld a, h + rrca : rrca : rrca + and #03 + or #58 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +;---------------------------------------- +set_point + call hl_to_scr + ld de, pixel_tbl + add a, e + ld e, a + ld a, (de) + ld (hl), a + ret + + align 8 +pixel_tbl + db #80,#40,#20,#10,#08,#04,#02,#01 + +;---------------------------------------- +; in: none +; out: HL = random 16bit value +;---------------------------------------- +rnd16 +.sd equ $+1 + ld de, 0 + ld a, d + ld h, e + ld l, 253 + or a + sbc hl, de + sbc a, 0 + sbc hl, de + ld d, 0 + sbc a, d + ld e, a + sbc hl, de + jr nc, .st + inc hl +.st ld (.sd), hl + ret + +;---------------------------------------- +; in: IX = addr of 256b buffer +; out: generated sin table +;---------------------------------------- +gen_sin + ld de, #7fbc + ld hl, #ff7f +.g0 ld a, d + xor #80 ; uncomment for unsigned + ld (ix), a + xor #80 ; uncomment for unsigned + rla + sbc a, a + ld b, a + ld c, d + adc hl, bc + rr c + rrca + rr c + add hl, bc + ld b, h + ld a, l + ex de, hl + sra b : rra + sra b : rra + sra b : rra + ld c, a + ;or a + sbc hl, bc + ex de, hl + inc ixl + jr nz, .g0 + ret diff --git a/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nikhotmsk.asm b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nikhotmsk.asm new file mode 100644 index 000000000..028fb5e7a --- /dev/null +++ b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nikhotmsk.asm @@ -0,0 +1,282 @@ +;;;;;;;;;;;;;;;;;;;;;; +; nikhotmsk livecoding at Multimatograf, day ONE +; Check chibiakumas.org Z80 tutorial +;;;;;;;;;;;;;;;;;;;;;; + + + + org 0x8000 + +;;;;;;;;;;;;;;;;;;;; +; init variables here +;;;;;;;;;;;;;;;;;;;; + ld a, 0 + ld hl, 1 + ld (border_counter), hl + ld (slide), hl + ld (border), a + +loop + + ld b, 0 ; DEBUG TODO + ; call do_spectrometer + + call do_random_colors + + call border_blink + jr loop + +;;;;;;;;;;;;;;;;;; +; variables here +;;;;;;;;;;;;;;;;;; +border_counter: dw 0 +border: db 0 + +border_blink: + ld de, (border_counter) + dec de + ld (border_counter), de + ld a, d + or e + jr nz, border_skip + ld a, (border) + inc a + and 0b00000111 + ld (border), a + out (254),a + ld de, 4 + + ld (border_counter), de +border_skip: + + ret + + +;;;;;;;;;;;;;;;;;;;;;;;;; +; do_random_colors +;;;;;;;;;;;;;;;;;;;;;;;;; + do_random_colors: + ld hl, 0x5800 + ;ld de, 0 ; read from ROM, yeah! + push hl + ld hl, (slide) + inc hl + ld (slide), hl + ld de, hl + pop hl + + ld bc, 256 + 256 + 256 + +do_random_colors_cycle: + ld a, (de) + and 0b11111111 ; drop blinking flag + ld (hl), a + + inc hl + inc de + dec bc + ld a, b + or c + jr nz, do_random_colors_cycle + + ret + +;;;;;;;;;;;;;;;;;;;;;;; +; do_spectrometer +; b - column number +;;;;;;;;;;;;;;;;;;;;;;; +do_spectrometer: + + ld de, 0x5800 + + ; TODO move de around + + ld hl, spectrometer_decay_array + + ; TODO move it around depending on b + + ld a, (hl) + and 0b00001111 + + ld b, a + or a + jr z, do_spectrometer_cycle_no_need_to_move +do_spectrometer_cycle1: + ; DO CYCLE HERE + + dec b + jr nz, do_spectrometer_cycle1 +do_spectrometer_cycle_no_need_to_move: + + ld a, 0b01101101 ; a color + + ; TODO compute color + + ld (de), a + ret + +;;;;;;;;;;;;;;;;;;;;;;;;; +; spectrometer_decay_array +;;;;;;;;;;;;;;;;;;;;;;;;; +spectrometer_decay_array: + .32 db 0 ; copy it 32 times, easy +slide: dw, 0 + +;---------------------------------------- +; Snippets: +; down_hl +; up_hl +; hl_to_scr +; scr_to_attrs +; set_point +; rnd16 +; gen_sin +;---------------------------------------- + +;---------------------------------------- +; Next screen line address in HL +;---------------------------------------- +down_hl + inc h + ld a, h + and #07 + ret nz + ld a, l + sub #e0 + ld l, a + sbc a, a + and #f8 + add a, h + ld h, a + ret + +;---------------------------------------- +; Previous screen line address in HL +;---------------------------------------- +up_hl + dec h + ld a, h + cpl + and #07 + ret nz + ld a, l + sub #20 + ld l, a + ret c + ld a, h + add a, #08 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +; out: HL = addr in screen [4000..57FF] +; C = pixel number [0..7] +;---------------------------------------- +hl_to_scr + ld c, l + ld a, l + rlca : rlca : rlca + xor h + and #c7 + xor h + rlca : rlca + ld l, a + ld a, h + and #c0 + inc a + rra : rra : rra + xor h + and #f8 + xor h + ld h, a + ld a, c + and 7 + ret + +;---------------------------------------- +; in: HL = addr in screen [4000..57FF] +; out: HL = addr in attrs [5800..5AFF] +;---------------------------------------- +scr_to_attrs + ld a, h + rrca : rrca : rrca + and #03 + or #58 + ld h, a + ret + +;---------------------------------------- +; in: L = x [0..255] +; H = y [0..191] +;---------------------------------------- +set_point + call hl_to_scr + ld de, pixel_tbl + add a, e + ld e, a + ld a, (de) + ld (hl), a + ret + + align 8 +pixel_tbl + db #80,#40,#20,#10,#08,#04,#02,#01 + +;---------------------------------------- +; in: none +; out: HL = random 16bit value +;---------------------------------------- +rnd16 +.sd equ $+1 + ld de, 0 + ld a, d + ld h, e + ld l, 253 + or a + sbc hl, de + sbc a, 0 + sbc hl, de + ld d, 0 + sbc a, d + ld e, a + sbc hl, de + jr nc, .st + inc hl +.st ld (.sd), hl + ret + +;---------------------------------------- +; in: IX = addr of 256b buffer +; out: generated sin table +;---------------------------------------- +gen_sin + ld de, #7fbc + ld hl, #ff7f +.g0 ld a, d + xor #80 ; uncomment for unsigned + ld (ix), a + xor #80 ; uncomment for unsigned + rla + sbc a, a + ld b, a + ld c, d + adc hl, bc + rr c + rrca + rr c + add hl, bc + ld b, h + ld a, l + ex de, hl + sra b : rra + sra b : rra + sra b : rra + ld c, a + ;or a + sbc hl, bc + ex de, hl + inc ixl + jr nz, .g0 + ret diff --git a/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nyuk.asm b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nyuk.asm new file mode 100644 index 000000000..8a40a72b1 --- /dev/null +++ b/shader_file_sources/2024_04_29_zx_spectrum_showdown_multimatograf/semis/nyuk.asm @@ -0,0 +1,224 @@ + ; hi + ; nyuk here + ; u menya konchilis idei :-) + + org 0x8000 + + ld a,0 + out (254),a + + ld hl, #5800 + ld de, #5801 + ld bc, #02ff + ld (hl), l + ldir + + ld hl, 0 + ld de, #4000 +s1 + ld a, (hl) + and %00111100 + ld (de), a + inc hl + inc de + ld a, d + cp #58 + jr nz, s1 + +loop + call mtx + + halt + ld a, %01000010 + ld (logoC + 1), a + call logo + + halt + ld a, %01000010 + ld (logoC + 1), a + call logo + + jr loop + + +logo + ld a, #00 : call lOne + ld a, #07 : call lOne + + ld a, #20 : call lOne + ld a, #21 : call lOne + ld a, #26 : call lOne + ld a, #27 : call lOne + + ld a, #40 : call lOne + ld a, #41 : call lOne + ld a, #42 : call lOne + ld a, #45 : call lOne + ld a, #46 : call lOne + ld a, #47 : call lOne + + ld a, #60 : call lOne + ld a, #61 : call lOne + ld a, #62 : call lOne + ld a, #63 : call lOne + ld a, #64 : call lOne + ld a, #65 : call lOne + ld a, #66 : call lOne + ld a, #67 : call lOne + + ld a, #80 : call lOne + ld a, #81 : call lOne + ld a, #82 : call lOne + ld a, #83 : call lOne + ld a, #84 : call lOne + ld a, #85 : call lOne + ld a, #86 : call lOne + ld a, #87 : call lOne + + ld a, #a0 : call lOne + ld a, #a1 : call lOne + ld a, #a2 : call lOne + ld a, #a3 : call lOne + ld a, #a4 : call lOne + ld a, #a5 : call lOne + ld a, #a6 : call lOne + ld a, #a7 : call lOne + + ld a, #c0 : call lOne + ld a, #c1 : call lOne + ld a, #c2 : call lOne + ld a, #c3 : call lOne + ld a, #c4 : call lOne + ld a, #c5 : call lOne + ld a, #c6 : call lOne + ld a, #c7 : call lOne + + ld a, #e1 : call lOne + ld a, #e2 : call lOne + ld a, #e3 : call lOne + ld a, #e4 : call lOne + ld a, #e5 : call lOne + ld a, #e6 : call lOne + + ret + +lOne + ld h, #48 + add 12 + ld l, a + push hl + + ld (hl), %11111110 : inc h + ld (hl), %11111110 : inc h + ld (hl), %11111110 : inc h + ld (hl), %11111110 : inc h + ld (hl), %11111110 : inc h + ld (hl), %11111110 : inc h + ld (hl), %11111110 : inc h + ld (hl), 0 + + pop hl + ld de, #5900 - #4800 + add hl, de + +logoC + ld (hl), %01000010 + + ret + + +mtx + ld b, 32 + ld iy, ADDR + ld ix, SPD + ld hl, #5800 - 32 +mtl + push hl + call mtxOne + pop hl + inc l + inc iy + inc ix + djnz mtl + ret + +mtxOne + ld a, (iy + 0) + add (ix + 0) + cp 62 + jr c, mtm1 + xor a +mtm1 + ld (iy + 0), a + ld de, 32 +mt0 add hl, de + dec a + jr nz, mt0 + + ld de, -32 + + ld a, h : cp #5c : jp z, mte + + ld a, (hl) : cp %01000010 : jr z, $+4 + ld (hl), %01000111 + + add hl, de + ld a, h : cp #5c : jp z, mte + ld a, (hl) : cp %01000010 : jr z, $+4 + ld (hl), %01000100 + + add hl, de + ld a, h : cp #5c : jp z, mte + ld a, (hl) : cp %01000010 : jr z, $+4 + ld (hl), %01000100 + + add hl, de + ld a, h : cp #5c : jr z, mte + ld a, (hl) : cp %01000010 : jr z, $+4 + ld (hl), %00000100 + + add hl, de + ld a, h : cp #5c : jr z, mte + ld a, (hl) : cp %01000010 : jr z, $+4 + ld (hl), %01000001 + + add hl, de + ld a, h : cp #5c : jr z, mte + ld a, (hl) : cp %01000010 : jr z, $+4 + ld (hl), %00000001 + + add hl, de + ld a, h : cp #5c : jr z, mte + ld a, (hl) : cp %01000010 : jr z, $+4 + ld (hl), 0 + + add hl, de + ld a, h : cp #5c : jr z, mte + ld a, (hl) : cp %01000010 : jr z, $+4 + ld (hl), 0 + + add hl, de + ld a, h : cp #5c : jr z, mte + ld a, (hl) : cp %01000010 : jr z, $+4 + ld (hl), 0 + + add hl, de + ld a, h : cp #5c : jr z, mte + ld a, (hl) : cp %01000010 : jr z, $+4 + ld (hl), 0 + +mte ret + +ADDR + db 01, 22, 33, 11, 17, 08, 34, 27 + db 07, 12, 43, 05, 04, 28, 36, 03 + db 10, 04, 47, 25, 14, 31, 03, 23 + db 20, 11, 13, 15, 24, 09, 13, 33 + + +SPD + db 1, 2, 3, 1, 1, 2, 1, 3 + db 1, 2, 2, 1, 3, 2, 1, 1 + db 1, 2, 2, 3, 1, 2, 1, 1 + db 1, 3, 2, 1, 1, 3, 1, 1 + diff --git a/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/alice.lua b/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/alice.lua new file mode 100644 index 000000000..8705ac04f --- /dev/null +++ b/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/alice.lua @@ -0,0 +1,63 @@ +-- by alice +-- +-- greets: +-- gasman, jtruk, catnip, pumpuli +-- +-- and of course reality404 + +-- pico8 the colors +pico8="0000001D2B537E2553008751AB52365F574FC2C3C7FFF1E8FF004DFFA300FFEC2700E43629ADFF83769CFF77A8FFCCAA" + +function palit(p) + for i=1,#p,6 do + for j=0,2 do + poke(0x3fc0+((i//6)*3)+j, + tonumber(p:sub(i+j*2,i+j*2+1),16)) + end + end +end + +palit(pico8) + + +m = "FieldFX" +t = 0 +w,h=120,68 +sin,cos=math.sin,math.cos +pi=math.pi +sub=string.sub +function TIC() + t = t+0.03 + cls(0) + hm = "OMG HI MOM" + -- get length + e=print(hm,0,-6) + print(hm,(240-e)//2,(130)//2-50,8) + s=sin(t)*29.9 + c=cos(t)*h*2/3.99 + --print("a", w+s, h+c, 5) + --print("b", w-s, h-c, 6) + -- for each fft bin (give or take) + for i=0,239 do + f = ffts(i*4) + rect(i,136-f*136,1,300,7) + --for j=0,10 do + print(m, w-20+(s*2), c+e+f*136, 1+i%15) + print("come to EMF", w-20-(s*2), c+e+f*136, 1+i%15) + --print(sub(m,1,j), w-50+s, c+f*136, 1+i%15) + --end + end + + print("hi from alice",174,0,7) +end + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 +-- + diff --git a/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/catnip.lua b/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/catnip.lua new file mode 100644 index 000000000..c2391deda --- /dev/null +++ b/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/catnip.lua @@ -0,0 +1,93 @@ +sin=math.sin +cos=math.cos +abs=math.abs + +for y=0,136 do + for x=0,240 do + pix(x,y,(x+y)>>3) + end +end + +t=0 +ft=0 + +fmax={} + +for j=0,47 do + poke(16320+j,sin(j)^2*255) +end +vbank(1) +memcpy(0x4000,0x3FC0,48) + +for j=0,47 do + poke(16320+j,peek(16320+j)*.7) +end +memcpy(0x4000+48,0x3FC0,48) + +function TIC() + for i=0,1023 do + local v=ffts(i) + fmax[i+1]=math.max(fmax[i+1] or 0, v) + end + + vbank(0) + memcpy(0,120,135*120) + + local lh=0 + local nh=0 + local intv=8 + for x=0,239 do + local h=0 + if x%intv==0 then + for i=0,intv do + h=h+(ffts(x+i)/fmax[x+i+1]) + end + lh=nh + nh=h + end + local m=(x%intv)/intv + h=nh*m+(lh*(1-m)) + --local h=ffts(x*4) --[x+1] + --rect(x*2,135-h,2,h*16,h*16) + --local h=ffts(x) + line(x,135,x,135-h*8,h*3) + --pix(x,135-h*8,h*16) + --end + --yL0=yL1 + end + + vbank(1) + cls() + for i=0,15 do + print("=^^=", + 25+sin(ft*.2+i/12)^7*15, + 20+sin(ft*.1+i/12)^7*15, + (i+11)%15+1,0,8) + end + + --vbank(0) + --poke(0x03FFa,-t%136-68) + + t=t+1 + local tft=0 + for i=0,32 do + tft=tft+fft(i) + end + + ft=ft+tft/16 +end + +function SCN(y) + vbank(1) + local f=0--ffts(y*3+t%1024)*100 + if y>68 then + local w=sin((y-67)^.25*16+t/10)*y + memcpy(0x3FC0,0x4000+48,48) + poke(0x03FFa,135-y*2-f+w/32) + poke(0x03FF9,w/8+f) + else + memcpy(0x3FC0,0x4000,48) + poke(0x03FF9,f) + poke(0x03FFa,f) + end +end diff --git a/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/gasman.lua b/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/gasman.lua new file mode 100644 index 000000000..c3621ba6c --- /dev/null +++ b/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/gasman.lua @@ -0,0 +1,91 @@ +-- gasman is here! +-- have a good jam everybody :-D + + poke(16320,0) + poke(16321,0) + poke(16322,0) + + +buf={} +for y=0,136 do + buf[y]={} + for x=0,240 do + buf[y][x]=0 + end +end + +dither={ + {0,8,2,10}, + {13,4,12,6}, + {3,11,1,9}, + {14,7,15,5}, +} + +function TIC()t=time() +for i=1,15 do + k=math.sin(i*math.pi/8) + h=(k/1.5+t/2345)%3 + if h<1 then + r=h + g=0 + b=1-h + elseif h<2 then + r=1-(h-1) + g=h-1 + b=0 + else + r=0 + g=1-(h-2) + b=h-2 + end + v=128+127*k + poke(16320+i*3,v*r) + poke(16321+i*3,v*g) + poke(16322+i*3,v*b) +end + + fx1=20*math.sin(t/800) + fy1=20*math.sin(t/812) + + for y=0,136 do + for x=0,240 do + cx=x-120-fx1 + cy=y-68-fy1 + r=math.sqrt(cx*cx+cy*cy) + v1=math.sin((r-t/100)/10) + cx=x-120+fx1 + cy=y-68+fy1 + r=math.sqrt(cx*cx+cy*cy) + v2=math.sin((r-t/100)/10) + buf[y][x]=128+127*(v1+v2)/2 + end + end + lx=120+120*math.sin(t/1000) + ly=68+68*math.sin(t/1212) + for y=0,135 do + for x=0,239 do + + cx=x-120 + cy=y-68 + a=math.atan(cx,cy) + rr=math.sqrt(cx*cx+cy*cy)+20*math.sin(a*6+t/456) + + if rr<120 then + + ldx=x-lx + ldy=y-ly + a=math.atan2(ldx,ldy) + nx=buf[y][x]-buf[y][x+1] + ny=buf[y][x]-buf[y+1][x] + v=nx*math.sin(a)+ny*math.cos(a) + + v=v+dither[y%4+1][x%4+1]/16 + + pix(x,y,v) + else + pix(x,y,0) + end + end + end + circ(lx,ly,3,4) +end diff --git a/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..c8843a204 --- /dev/null +++ b/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,72 @@ +W=240 +H=136 +function pal(i,r,g,b) + --sanity checks + if i<0 then i=0 end + if i>15 then i=15 end + --returning color r,g,b of the color + if r==nil and g==nil and b==nil then + return peek(0x3fc0+(i*3)),peek(0x3fc0+(i*3)+1),peek(0x3fc0+(i*3)+2) + else + if r==nil or r<0 then r=0 end + if g==nil or g<0 then g=0 end + if b==nil or b<0 then b=0 end + if r>255 then r=255 end + if g>255 then g=255 end + if b>255 then b=255 end + poke(0x3fc0+(i*3)+2,b) + poke(0x3fc0+(i*3)+1,g) + poke(0x3fc0+(i*3),r) + end +end +for i =0,15 do + pal(i,i*i,i*i,i*i) +end + + +ffo={} +ffn={} +ffm={} +for i=0,1023 do + ffo[i]=0 + ffn[i]=0 + ffm[i]=0 +end +min=math.min +max=math.max +rnd=math.random +exp=math.exp + +function subPix(i,a,f) + local p=peek4(i) + poke4(min(i-f,0x3fbf*2),max(p-a,0)) +end +function divPix(i,a,of) + local p=peek4(i) + if p/a<=2 then p=0 end + poke4(min(i-of,0x3fbf*2),min(p/a,15)) +end +cls(0) +f=0 +fx=0 +function TIC() + f=f+1 + for i =0,W*H,2 do + divPix(i+f%2,1,1) + end + for i=0,1023 do + local x=i/1023*136 + ffo[i]=fft(exp(i/200+1.5)/2) + if ffo[i]>ffm[i] then ffm[i]=ffo[i] else ffm[i]=ffm[i]*.9999 end + ffn[i]=ffo[i]/ffm[i] + + local fftsv=ffn[i]*10 + line(W,H-x,W-1,H-x,min(15,fftsv*15)) + end + vbank(1) + cls(0) + fx=fft(10)*50 + print("PUMPULI",40-fx,58-fx,3,1,4) + print("PUMPULI",40,58,0,1,4) + vbank(0) +end \ No newline at end of file diff --git a/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/pumpuli.lua b/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/pumpuli.lua new file mode 100644 index 000000000..c8843a204 --- /dev/null +++ b/shader_file_sources/2024_05_06_byte_jam_monday_night_bytes/pumpuli.lua @@ -0,0 +1,72 @@ +W=240 +H=136 +function pal(i,r,g,b) + --sanity checks + if i<0 then i=0 end + if i>15 then i=15 end + --returning color r,g,b of the color + if r==nil and g==nil and b==nil then + return peek(0x3fc0+(i*3)),peek(0x3fc0+(i*3)+1),peek(0x3fc0+(i*3)+2) + else + if r==nil or r<0 then r=0 end + if g==nil or g<0 then g=0 end + if b==nil or b<0 then b=0 end + if r>255 then r=255 end + if g>255 then g=255 end + if b>255 then b=255 end + poke(0x3fc0+(i*3)+2,b) + poke(0x3fc0+(i*3)+1,g) + poke(0x3fc0+(i*3),r) + end +end +for i =0,15 do + pal(i,i*i,i*i,i*i) +end + + +ffo={} +ffn={} +ffm={} +for i=0,1023 do + ffo[i]=0 + ffn[i]=0 + ffm[i]=0 +end +min=math.min +max=math.max +rnd=math.random +exp=math.exp + +function subPix(i,a,f) + local p=peek4(i) + poke4(min(i-f,0x3fbf*2),max(p-a,0)) +end +function divPix(i,a,of) + local p=peek4(i) + if p/a<=2 then p=0 end + poke4(min(i-of,0x3fbf*2),min(p/a,15)) +end +cls(0) +f=0 +fx=0 +function TIC() + f=f+1 + for i =0,W*H,2 do + divPix(i+f%2,1,1) + end + for i=0,1023 do + local x=i/1023*136 + ffo[i]=fft(exp(i/200+1.5)/2) + if ffo[i]>ffm[i] then ffm[i]=ffo[i] else ffm[i]=ffm[i]*.9999 end + ffn[i]=ffo[i]/ffm[i] + + local fftsv=ffn[i]*10 + line(W,H-x,W-1,H-x,min(15,fftsv*15)) + end + vbank(1) + cls(0) + fx=fft(10)*50 + print("PUMPULI",40-fx,58-fx,3,1,4) + print("PUMPULI",40,58,0,1,4) + vbank(0) +end \ No newline at end of file diff --git a/shader_file_sources/2024_05_10_byte_jam_outline/aldroid.lua b/shader_file_sources/2024_05_10_byte_jam_outline/aldroid.lua new file mode 100644 index 000000000..5325c0454 --- /dev/null +++ b/shader_file_sources/2024_05_10_byte_jam_outline/aldroid.lua @@ -0,0 +1,143 @@ +-- aldroid here +-- love to all at outline! +-- thanks to our fab orga team +-- havoc, zeno4ever, the poobrain +-- crew. and alice for making tic80 +-- 100% better for jams! glhf to +-- her, gasman and jtruk and dj +-- dojoe! +--------------- +function TIC1() +cls() +bnd=3 +wd = 240/8 +for x=0,240/8 do +rect(x*wd+bnd,bnd,wd-2*bnd,136-2*bnd,3) +end +for i=0,239 do +circ(i,110 - fft(i*2)*200,2,0) +end +for i=0,239 do +circ(i,110 - fft(i*2)*200,1,12) +end +end + +function TIC2(i) +cls(5) +pd=2 +nt=8 +bss = fft(0,10)*80 +offs = 68 + 40*math.sin(i) +for i=0,bss do + tri(i*240/nt+pd, offs-20, + (i+1)*240/nt-pd, offs, + i*240/nt+pd, offs+20, + 0) +end +end + +function TIC3() +cls(9) +circ(120,68,fft(0,10)*560,10) +circ(120,68,fft(0,10)*560-fft(10,40)*190,11) +end + +S=math.sin +C=math.cos + +bac=0 + +function TIC4() +cls(12) +bac = bac+ fft(5,10)*2 +for i=0,12 do + circ( + 120+40*S(bac+i*math.pi*2/12), + 68+40*C(bac+i*math.pi*2/12), + 8,0) +end +pkr = (bac // math.pi)%4 +x=240-40 +y=136-40 +if pkr==0 or pkr == 1 then +x=40 +end +if pkr==0 or pkr ==3 then +y=40 +end +circ(x,y,S(bac)*20,9) +end + +function TIC5() +cls(0) +circ(120,68,40,5) +for i=-2,2,0.1 do + circ( + 120+20*S(i*math.pi*2/12), + 68+20*C(i*math.pi*2/12), + 3,0) +end +circ(120-10,68-10,4,0) +circ(120+10,68-10,4,0) +end + +function TIC6() +cls() +bac = bac + fft(0,10) +bnd=3 +wd = 240/8 +for y=0,3 do +for x=0,240/8 do +rect( +x*wd+bnd,y*wd+bnd, +wd-2*bnd,wd-2*bnd,7) +end +end +t=(bac*5)//1 +y=t//8 +sh=(t+y*8)%3 +cx=(t%8-0.5)*wd +cy=(y%5-0.5)*wd +if sh==0 then +circ(cx,cy,5,0) +elseif sh==1 then +tri(cx,cy-4,cx-4,cy+4,cx+4,cy+4,0) +else +rect(cx-4,cy-4,8,8,0) +end +end + +function TIC7() +cls(14) +thx=240/6 +circ(thx,68,14+fft(0,10)*600,1) +trmt=20+fft(10,100)*100 +trmt = trmt*0.8 +tri(thx*3,68-trmt, + thx*3-trmt,68+trmt, + thx*3+trmt,68+trmt, + 1) +rcmt=10+fft(100,1000)*300 +rect(thx*5-rcmt,68-rcmt,rcmt*2,rcmt*2,1) +end + +function TIC() +t=time() +sc=t//500 +pc = sc %7 +if pc==0 then +TIC1() +elseif pc==1 then +TIC2(sc) +elseif pc==2 then +TIC3() +elseif pc==3 then +TIC4() +elseif pc==4 then +TIC5() +elseif pc==5 then +TIC6() +elseif pc==6 then +TIC7() +end +end \ No newline at end of file diff --git a/shader_file_sources/2024_05_10_byte_jam_outline/alice.lua b/shader_file_sources/2024_05_10_byte_jam_outline/alice.lua new file mode 100644 index 000000000..4c72735dc --- /dev/null +++ b/shader_file_sources/2024_05_10_byte_jam_outline/alice.lua @@ -0,0 +1,128 @@ +-- alice here +-- +-- greets: +-- aldroid, +-- jtruk, +-- gasman, +-- nusan +-- +-- and the entire FieldFX discord +-- +-- see you at EMF! + +------------------- + +-- pico8 the colors +pico8="0000001D2B537E2553008751AB52365F574FC2C3C7FFF1E8FF004DFFA300FFEC2700E43629ADFF83769CFF77A8FFCCAA" + +function palit(p) + for i=1,#p,6 do + for j=0,2 do + poke(0x3fc0+((i//6)*3)+j, + tonumber(p:sub(i+j*2,i+j*2+1),16)) + end + end +end + +palit(pico8) + +------------ + +pi,sin,cos=math.pi,math.sin,math.cos +PI=math.pi; TAU=PI*2 + +psin=function(a) + return -math.sin(a*TAU) +end + +pcos=function(a) + return math.cos(a*TAU) +end + +patan2=function(a,b) + return (math.atan2(-a,-b)/PI+1)/2 +end + +sqrt=function(a) + return math.sqrt(a) +end + +min,max,abs=math.min,math.max,math.abs +floor,ceil=math.floor,math.ceil + +function ptime() + return time()/1000 +end + +SCRW,SCRH,SCRWH,SCRHH=240,136,120,68 +MIDX=120 +MIDY=68 + +sub=string.sub + +--- + +t=0 +fwd=true +m="hello outline" +f={} +fs={} +c=0 +tt=0 +function TIC() + tt=tt+0.03 + if fwd then + t=t+1 + else + t=t-1 + end + cls() + for i=0,239 do + f[i]=fft(i) + fs[i]=ffts(i) + end + + for i=0,239 do + line(i,136,i*fft(i),10, i%15) + end + len=print(m,0,-1000) + print(m, t, 0, t//10%15) + if t == 236-len then + fwd=false + end + + if t == 0 then + fwd=true + end + + for j=1,19 do + if fft(j) > 0.3 then + --rect(150, 20+j*10, j*10, 4, j%15) + print("BEAT", 218, j*7, j%15) + end + end + + bx=150 + by=40 + bs=10 + cnt=8 + line(bx+10,by+24,bx+18,by+70,3) + + + --elli(bx+bs*2*psin(tt),by+bs*pcos(tt),bs,bs,8) + --elli(bx+bs*2*psin(tt),by+20+bs*-pcos(tt),bs,bs,8) + --elli(bx+20*2*psin(tt),by+bs*pcos(tt),bs,bs,8) + --elli(bx+20*2*psin(tt),by+20+bs*-pcos(tt),bs,bs,8) + + elli(bx,by,bs,bs,8) + elli(bx,by+20,bs,bs,8) + elli(bx+20,by,bs,bs,8) + elli(bx+20,by+20,bs,bs,8) + + elli(bx+10,by+10,cnt,cnt,9) + + print("i love pjanoo!!",30,30,7) + + --fftss=fftssum(0,239) + --rect(SCRW-fftss,50,fftss,4,8) +end diff --git a/shader_file_sources/2024_05_10_byte_jam_outline/gasman.lua b/shader_file_sources/2024_05_10_byte_jam_outline/gasman.lua new file mode 100644 index 000000000..2f40bbbe8 --- /dev/null +++ b/shader_file_sources/2024_05_10_byte_jam_outline/gasman.lua @@ -0,0 +1,118 @@ +-- hello from gasman!!! +-- WE HAVE THE POWER (for now) +-- greetings to all outline party peeps + +function flower(cx,cy,R,petals,rota,clr) + for y=-R,R do + for x=-R,R do + local a=math.atan2(x,y)+rota + local r=R*math.abs(math.sin(a*petals/2)) + local pr=math.sqrt(x*x+y*y) + if pr139 then + setRGB(0,0,0,0) + else + local linem=.5+S(y*.03+T*.02)*.5 + local line1m=1-linem + local r=linem*BG1R+line1m*BG2R + local g=linem*BG1G+line1m*BG2G + local b=linem*BG1B+line1m*BG2B + setRGB(0,r,g,b) + end + + vbank(1) + for c=1,14 do + local loop=LOOPS[c] + local r=loop.rb+(.5+.5*S(y*.012+c*.2+T*.05))*loop.ra + local g=loop.gb+(.5+.5*S(y*.02+c*.3+T*.03))*loop.ga + local b=loop.bb+(.5+.5*S(y*.017+c*.5-T*.04))*loop.ba + setRGB(c,r,g,b) + end + setRGB(15,60,60,60) +end + +function TIC() + cls() + + if T%100==0 then + rollDice() + end + + local xc0,yc0=nil,nil + local dSize=.8+S(T*.08)*.4 + for i=15,1,-1 do + local def=LOOPS[i] + local rz=.5+ffts(i*10)*.5 + local r=(10+i*dSize*10)*rz + local c=(i*def.mult)%14+1 + local a=T*(.02*def.aSpin) + local xc=120+S(T*.04+i*.1+OFS)*20 + local yc=68+S(T*.03+i*.08+OFS)*20 + drawLoop(xc,yc,r,c,def.petals,a) + if xc0==nil then + xc0,yc0=xc,yc + end + end + + vbank(0) + cls() + local nRings=15 + local nDots=10 + for ring=1,nRings do + local r=10+ring*10 + local ad=T*S(OFS)*.03+ring+(OFS*ring) + for i=1,nDots do + local a=i/nDots*TAU+ad + local x=xc0+S(a)*r + local y=yc0+C(a)*r + local fftL=ring*8 + local fftH=ring*8+7 + local r=4+ffts(fftL,fftH)*8 + circ(x,y,r,ring) + end + local r=((15-ring)/nRings)*S(OFS) + local g=((15-ring)/nRings)*S(OFS*2) + local b=((15-ring)/nRings)*S(OFS*3) + setRGB(ring,r*255,g*255,b*255) + end + + print("jtruk",209,129,12) + print("jtruk",208,128,1) + print("<3 Outline",3,129,12) + print("<3 Outline",2,128,1) + + vbank(1) + T=T+1 +end + +function drawLoop(xc,yc,r,c,steps,dr) + for i=0,steps do + local a=TAU/steps*i+dr + local da=.4 + drawPetal(xc,yc,r,a,da,10,c) + end +end + +function drawPetal(xc,yc,r,ca,da,steps,c) + local xl,yl=nil,nil + local xl2,yl2=nil,nil + local i=0 + for s=-steps,steps do + local dstep=s/steps + local a=ca+da*dstep + local sr=C(dstep)*r + local x=xc+S(a)*sr + local y=yc+C(a)*sr + local x2=xc+S(a)*sr*.97 + local y2=yc+C(a)*sr*.97 + if xl~=nil then + tri(xc,yc,xl,yl,x,y,15) + tri(xc,yc,xl2,yl2,x2,y2,c) + end + xl,yl=x,y + xl2,yl2=x2,y2 + i=i+1 + end +end + +function setRGB(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end \ No newline at end of file diff --git a/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/catnip.lua b/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/catnip.lua new file mode 100644 index 000000000..3ec2f763c --- /dev/null +++ b/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/catnip.lua @@ -0,0 +1,134 @@ +sin=math.sin +cos=math.cos +abs=math.abs +pi=math.pi + +t=0 + +cls() +vbank(1) +poke(16320+15+0,180) +poke(16320+15+1,30) +poke(16320+15+2,30) +p={x=120,y=68,dx=2,dy=0} +scroll={x=0,y=0} + +function rot(p,a) + --p=cos(a)*p+sin(a)*{-p.y,p.x} + local c=cos(a) + local s=sin(a) + return { + x=(c*p.x) + (s*-p.y), + y=(c*p.y) + (s*p.x) + } +end + +function rcirc() + local r=2+ffts(5,10)*5 + circ(p.x+2,p.y+2,r,0) + circ(p.x,p.y,r,t) + if p.x0.5 then rd=-rd end + vbank(1) + cls() + --y=ffts(10,15) + local by=136-44+sin(t/10)*24 + cat(120-80,by+10,30,25) + cat(120+80,by+10,30,35) + cat(120,by,40,5) + vbank(0) + + scroll.x=(sin(t/100+sin(t/90))*200)%240-120 + scroll.y=(sin(t/87+sin(t/96))*200)%240-120 + + t=t+.3 +end + +function SCN(y) + poke(0x3FF9,(scroll.x+ffts(y,y+10)*15//1)) + poke(0x3FFa,(scroll.y+ffts(y,y+10)*5//1)) +end \ No newline at end of file diff --git a/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..8b37bf2c4 --- /dev/null +++ b/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,112 @@ +-- jtruk +-- Greetz: +-- ToBach, Pumpuli +-- Catnip, Vurpo, +-- Polynomial and Reality! +-- (And You) (And You) + +local M=math +local S,C,A=M.sin,M.cos,M.atan2 +local ABS,PI=M.abs,M.pi +local TAU,MIN,MAX=PI*2,M.min,M.max +local R=M.random + +T=0 + +function TIC() + local xc=120 + local yc=35+S(T*.023)*10 + local wob1=.15+S(T*.01)*.1 + local wob2=.15+S(T*.015)*.1 + local dy=30 + local dy2=dy*2 + local dx=140 + local dx2=dx*2 + vbank(0) + cls(1) + for y=-dy,dy do + for x=-dx,dx do + local c=2+((y+dy)/dy2)*13 + local h=y*(.6+S(x*.02+T*.005)*.5) + local xd=xc + +x + +y*wob2 + local yd=yc + +h + +x*wob1 + +S(x*.01+T*.04)*10 + +S(x*.1+T*.2)*5 + if(R()>0.85) then + pix(xd,yd,c) + end + end + end + setAurRGBs() + reflect() + + vbank(1) + setRGB(1,0,0,0) + elli(20,100,80,30,1) + elli(-20,90,90,30,1) + elli(220,110,80,30,1) + elli(280,80,90,30,1) + rect(0,102,240,40,0) + reflect() + print("jtruk",208,128,15) + + T=T+1 +end + +function setAurRGBs() + local cstops={ + {i=0,r=255,g=0,b=0}, + {i=5,r=0,g=255,b=0}, + {i=9,r=255,g=0,b=255}, + {i=13,r=0,g=0,b=255}, + } + + local int=.5+S(T*.02)*.5 + + setRGB(0,0,0,0) + local br,bg,bb=20,20,60 + setRGB(1,br,bg,bb) + local lc=nil + for i,c in ipairs(cstops) do + if i>1 then + for ic=lc.i,c.i do + local iv=i/15 + local mul=int + local p=1-((ic-lc.i)/(c.i-lc.i)) + local r=lerp(p,lc.r,c.r)*mul + local g=lerp(p,lc.g,c.g)*mul + local b=lerp(p,lc.b,c.b)*mul + r=r+br*(1-mul) + g=g+bg*(1-mul) + b=b+bb*(1-mul) + setRGB(2+ic,r,g,b) + end + end + lc=c + end +end + +function reflect() + for y=0,35 do + local dy=100+y + local sy=100-y*2 + memcpy(dy*120,sy*120,120) + end +end + +function lerp(p,v0,v1) + local sp=v1-v0 + return p*v0+(1-p)*v1 +end + +function setRGB(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end + diff --git a/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/pumpuli.lua b/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/pumpuli.lua new file mode 100644 index 000000000..576b57f21 --- /dev/null +++ b/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/pumpuli.lua @@ -0,0 +1,134 @@ +W=240 +H=136 +RES=2 +FFT_LEN=1023 +VBK=0 +fc={} +fm={} +fn={} +function BOOT() + for i=0,FFT_LEN do + fc[i]=0 + fm[i]=0 + fn[i]=0 + end +end + +abs=math.abs +min=math.min +max=math.max +exp=math.exp +rnd=math.random + +function pal(i,r,g,b) + --sanity checks + if i<0 then i=0 end + if i>15 then i=15 end + --returning color r,g,b of the color + if r==nil and g==nil and b==nil then + return peek(0x3fc0+(i*3)),peek(0x3fc0+(i*3)+1),peek(0x3fc0+(i*3)+2) + else + if r==nil or r<0 then r=0 end + if g==nil or g<0 then g=0 end + if b==nil or b<0 then b=0 end + if r>255 then r=255 end + if g>255 then g=255 end + if b>255 then b=255 end + poke(0x3fc0+(i*3)+2,b) + poke(0x3fc0+(i*3)+1,g) + poke(0x3fc0+(i*3),r) + end +end + +for i =0,15 do + r=min(255,i*8.2+20) + g=min(255,i*i*.5) + b=min(255,i*i+i*8.5+20) + pal(i,r,g,b) +end +vbank(1) +for i =0,15 do + r=min(255,i*8.2+20) + b=min(255,i*i*.5) + g=min(255,i*i+i*8.5+20) + pal(i,r,g,b) +end +vbank(0) + + + +function subPix(i,a,f) + local p=peek4(i) + poke4(min(i-f,0x3fbf*2),max(p-a,0)) +end +function addPix(i,a,of) + local p=peek4(i-of) + poke4(min(i+of,0x3fbf*2),min(p+a,15)) +end +function flip() + if VBK==0 then + VBK=1 + for i =0,15 do + r=min(255,i*8.2+20) + b=min(255,i*i*.5) + g=min(255,i*i+i*8.5+20) + pal(i,r,g,b) + end + else + VBK=0 + for i =0,15 do + r=min(255,i*8.2+20) + g=min(255,i*i*.5) + b=min(255,i*i+i*8.5+20) + pal(i,r,g,b) + end + end +end +cls(0) +function TIC() + t=time()//32 + bm=fft(0,40)*.8 + --cls(bm//1) + RES=max(2,min(10,10-fft(0,40)*2))//1 + if RES>4 then + cls(16) + end + sn=fft(200,280)*50 + if min(15,sn*.01)>14 then + end + for i=0,FFT_LEN-2 do + fc[i]=fft(i,i+2) + if fc[i]>fm[i] then fm[i]=fc[i] else fm[i]=fm[i]*0.999 end + fn[i]=fc[i]/fm[i] + end + for i=0,W*H,(RES-1) do + subPix(i,rnd(2),bm*10) + end + for y=0,H,RES do + for x=0,W,RES do + X=x/W-.5 + Y=y/H-.5 + xx=X*200--exp(abs(X*10)+1.5) + f=fc[abs(xx)//1]*8 + fs=fc[abs(xx)//1]*8 + --fs=ffts(abs(xx),abs(xx)+5)*4 + if abs(Y)14 then + flip() + end + local ft=fft(ii,ii+2)*(11-sn) + poke(0x3FF9,ft*10) + poke(0x3FF8,ft*4) +end \ No newline at end of file diff --git a/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/tobach.lua b/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/tobach.lua new file mode 100644 index 000000000..990344d6a --- /dev/null +++ b/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/tobach.lua @@ -0,0 +1,77 @@ +--forgot to do starting text lol +--greetz to reality, pumpuli, catnip +--vurpo, jlorry and polynomial!! + +--also to superogue, blossom and +--dozer the cat who are in the room :) + +sin=math.sin +cos=math.cos +function TIC() + t=time()/500 + cls(10) + tv=sin(t*2)*2//1 + for i=0,11 do + sv=sin((2*(math.pi)*i/8+t))*90-6 + cv=cos((2*(math.pi)*i/8+t))*90-6 + print("*",119+sv,63+cv,15,true,3) + print("*",121+sv,65+cv,4,true,3) + end + tri(120-70,68,120,98,120+70,68,8) + tri(120-80,68,120-60,48,100,68,8) + tri(120-80+100,68,120-40+100,48,100+100,68,8) + + tri(120-80,68,120,188,120+80,68,8) + tri(120-50,138,120,68,120+50,138,8) + + tri(120-20,68,120,128,120+20,68,12) + + rect(45,68,23,80,8) + rect(173,68,23,80,8) + + for i=0,3 do + elli(120,68-i*2,10,4,3) + end + rect(98,48+tv,45,16,12) + + for i=4,13 do + circ(120,48-i+tv,22,12) + end + for i=0,12 do + circ(120,48-i+tv,20,4) + end + for i=-15,15 do + circ(120-i,24+sin(i/6-1.6)*3+tv,5,12) + end + + circ(120,52+tv,13,12) + rect(105,38+tv,30,18,4) + + rect(110,62+tv,20,4,4) + line(110,60+tv,130,60+tv,0) + + circ(120,46+tv,5,3) + circ(120,44+tv,5,4) + + for i=-4,4 do + circ(110-i,35+sin(i/2-1.6)+tv,1,2+i%2) + end + for i=-4,4 do + circ(130-i,35+sin(i/2-1.6)+tv,1,2+i%2) + end + + circ(110,42+tv,4,3) + circ(110,44+tv,4,4) + + circ(130,42+tv,4,3) + circ(130,44+tv,4,4) + + for i=-6,6 do + circ(120-i,52+tv,2,2+i%2) + end + tc={0,4,8,9} + for i=1,4 do + print("EURO PAPA",4-i,14-i+sin(t*4)*3,tc[i],true,4) + end + +end diff --git a/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/vurpo.lua b/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/vurpo.lua new file mode 100644 index 000000000..931f77788 --- /dev/null +++ b/shader_file_sources/2024_05_13_byte_jam_monday_night_bytes/vurpo.lua @@ -0,0 +1,65 @@ +--greetings to tobach, pumpuli, catnip, jtruk +--to polynomial and reality +--to joost, nemo, bambie thug, windows95man +--and to you! +-- vurpo + +poke(0x3fc0,0) +poke(0x3fc1,0) +poke(0x3fc2,0) + +m=math + +function f(x) +return { +x=80*m.cos(x*(7/8))+40*m.sin(x+m.sin(0.9*x)), +y=50*m.sin(x*(5/7))+10*m.cos(x+m.cos(1.1*x)) +} +end + +function palette(p) + for i=1,#p do + poke(0x3fc2+i,p[i]) + end +end + +s="JAM " + +p={ +{0x5b,0xce,0xfa,0xf5,0xa9,0xb8,0xff,0xff,0xff}, +{0xff,0xff,0xff,0x00,0x2f,0x6c}, +{0xc8,0x10,0x2e,0xff,0xff,0xff,0x00,0x3d,0xa5}, +{0xda,0x29,0x1c,0xff,0xff,0xff}, +{0xfc,0xf4,0x34,0xff,0xff,0xff,0x9c,0x59,0xd1,0x2c,0x2c,0x2c}, +{0x00,0x9a,0x44,0xff,0xff,0xff,0xff,0x82,0x00} +} +co={ +{1,2,3,2,1}, +{1,2}, +{1,2,3}, +{1,2}, +{1,2,3,4}, +{1,2,3} +} + +function TIC() +cls(0) +t=time()/1000 + +p0=m.floor((t/1)%#p+1) +trace(p0) +palette(p[p0]) +c0=co[p0] +trace(c0) + +for i=0,m.random()*50 do +pix(m.random()*240,m.random()*136,c0[i%#c0+1]) +end + +for i=0,60 do +c=f(t*2-i/3+0.3*fft(0,10)) +r=3+7*fft(i,i+3) +circ(120+c.x,68+c.y,r,c0[i%#c0+1]) +print(string.sub(s,i%#s+1,i%#s+1),118+c.x,66+c.y,0) +end +end \ No newline at end of file diff --git a/shader_file_sources/2024_05_14_shader_jam_atparty/2024-06-15-provod-atparty-improv.glsl b/shader_file_sources/2024_05_14_shader_jam_atparty/2024-06-15-provod-atparty-improv.glsl new file mode 100644 index 000000000..fa5a40ec0 --- /dev/null +++ b/shader_file_sources/2024_05_14_shader_jam_atparty/2024-06-15-provod-atparty-improv.glsl @@ -0,0 +1,125 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 E=vec3(0.,.001,1.); + +float smin(float a, float b, float k) { + float res = exp(-k * a) + exp(-k * b); + return -log(res) / k; +} + +float hash1(float f){return fract(sin(f)*53425.2349);} +float hash2(vec2 f){return hash1(dot(f,vec2(82.,129.)));} +float n2(vec2 v){ + vec2 V=floor(v);v-=V; + v*=v*(3.-2.*v); + return mix( + mix(hash2(V+E.xx),hash2(V+E.zx),v.x), + mix(hash2(V+E.xz),hash2(V+E.zz),v.x),v.y); +} + +float vmax(vec3 p){return max(max(p.x,p.y),p.z);} +#define box(p,s) vmax(abs(p)-(s)) + + +#define R(a) mat2(cos(a),sin(a),-sin(a),cos(a)) + +float t=fGlobalTime; +float ws=1.; +float mid=0.; +float w(vec3 p) { + float d=1e6; + p.xz *= R(t*.1); + float gd=p.y+1.+n2(p.xz)*.2; + for (float i=1;i<5;++i) { + vec3 pp = p + vec3( + sin(i*.3+t*.3), + cos(i+t*.4), + sin(i+1.+t*.2*i) + ) * .8; + pp.xz *= R(t*.23+i); + pp.xy *= R(t*.37+i); + d=smin(d,box(pp,vec3(.35)), 8.); + //d=min(d,box(pp,vec3(.35))); + //d=min(d,length(pp)-.5); + } + d*=ws; + + if (gd < d) { + mid = 0; + d = gd; + } else { + mid = 1; + } + return d; +} + +float tr(vec3 o,vec3 d,float l,float L){ + for(float i=0.;i<100;++i){ + float dd=w(o+d*l);l+=dd; + if (dd<.0001||l>L)break; + } + return l; +} + + +vec3 wn(vec3 p){ + return normalize(vec3( + w(p+E.yxx) - w(p-E.yxx), + w(p+E.xyx) - w(p-E.xyx), + w(p+E.xxy) - w(p-E.xxy))); +} + +void main(void){ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 o=vec3(0.,0.,5.),d=normalize(vec3(uv,-2.)); + vec3 C=vec3(0.); + vec3 ts=vec3(1.); + for (float b=0.;b<5;++b){ + float L=40.,l=tr(o,d,0.,L); + vec3 bc=vec3(d.y+.13)*vec3(.3,.5,.8); + if (l(B*B) ) break; + n += 1.0; + + if( z.x * z.x + z.y *z.y >10000.){ + + return i/maxIter; + + } + + } + + float sn = n -log(log(length(z))/log(B))/log(.0); + + return sn; + + return 1.; + + } + +mat2 R2d(float r){return mat2(cos(r),-sin(r),sin(r),cos(r));} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + + vec2 R2d = uv*R2d(ceil(fGlobalTime*1.1)); + + + vec2 p = f*0.0001*(gl_FragCoord.xy -.5 * vec2(v2Resolution.x,v2Resolution.y))/1000.; + + float sn =fractal(p-R2d); + + vec3 col = 0.5 + 0.5 * cos(fGlobalTime+ uv.xyx+vec3(0,3,3)); + vec3 col2 = vec3(f)*2.; + + float color = fractal(p-R2d*sn); + + vec3 color2 = vec3(color); + + vec3 color3 = vec3(f)*4.; + + vec3 color4 = min(color2,color2); + + vec3 final =min(col,color4); + + out_color =vec4(final,0.); +} + +///////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////THANKS YOU EVVVVIL////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_a1dr0idia.glsl b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_a1dr0idia.glsl new file mode 100644 index 000000000..8cc529646 --- /dev/null +++ b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_a1dr0idia.glsl @@ -0,0 +1,117 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float nz(vec2 uv) { + vec3 p = vec3(uv.x,uv.y,uv.x*uv.y) * vec3(345.23,213.32,456.23); + p = mod(p,vec3(3,5,7)); + p *= dot(p,p+32.2); + p=fract(p); + return fract(p.x*p.z+p.y*p.z); +} + +float bm(vec2 uv) { + vec2 i = floor(uv); + vec2 f = fract(uv); + + float a=nz(i); + float b = nz(i+vec2(1.,0)); + float c = nz(i+vec2(0,1.)); + float d = nz(i+vec2(1.)); + + vec2 u = f * f * (3.0 - 2. *f); + + return mix(a, b, u.x) + (c-a)*u.y * (1.0 - u.x)+ (d-b)*u.x*u.y; +} + +float fbm(vec2 uv) { + float ret = 0; + float a = .8; + float f = 0; + + for (int i=0; i<4; ++i) { + uv += vec2(fGlobalTime*0.2*i,0); + ret += a * bm(uv); + uv *= 2; + a *= 0.5; + } + return ret; +} + +float map(vec3 p) { + return length(p)-3-texture(texFFT,0.05).x*5; +} + +vec3 gn(vec3 p) { + vec2 e = vec2(0.001,0); + return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 tuv = uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + vec3 ro=vec3(0,0,-10), rd=normalize(vec3(uv,1)); + + vec3 ld = normalize(vec3(0.5,0.5,-1)); + + float d,t=0; + + for (int i=0; i < 100; ++i) { + d = map(ro+rd*t); + if (d<0.01)break; + t += d; + } + vec3 col = mix(vec3(0,0,0.5),vec3(0,0.1,0),smoothstep(0.5,0.4,fbm(10+uv*10))); + + col = mix(col,vec3(1),texture(texFFT,abs(uv.x)).x-abs(uv.y)); + + if (d< 0.01) { + vec3 p = ro+rd*t; + vec3 n = gn(p); + vec2 wuv = vec2(atan(p.z,p.x), p.y); + col = mix(vec3(0,0,0.7),vec3(0,0.3,0),smoothstep(0.5,0.4,fbm(10+wuv)))*dot(ld,n); + col += pow(max(dot(reflect(ld,n),rd),0),30)*0.1; + } else { + col += nz(uv+fGlobalTime)*texture(texFFT,0.05).x*30; + } + + col = pow(col,vec3(0.45)); + col += vec3( + texture(texPreviousFrame,tuv+vec2(0.004,0.)).g, + texture(texPreviousFrame,tuv+vec2(0.008,0.)).b, + texture(texPreviousFrame,tuv+vec2(0.012,0.)).r + )*.1; + col=mix(col,vec3(0),pow(length(uv),5)); + + if (uv.x>-2/6 || uv.y<-2/6) { + col -= texture(texPreviousFrame,(tuv-5/6)*3+vec2(fGlobalTime,0)).rgb*0.4; + } + + out_color=vec4(col,1); + +} \ No newline at end of file diff --git a/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroid.glsl b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroid.glsl new file mode 100644 index 000000000..326e19078 --- /dev/null +++ b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroid.glsl @@ -0,0 +1,150 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec3 COLOR_0 = vec3(0x1a/255., 0x1c/255., 0x2c/255.); +vec3 COLOR_1 = vec3(0x5d/255., 0x27/255., 0x5d/255.); +vec3 COLOR_2 = vec3(0xb1/255., 0x3e/255., 0x53/255.); +vec3 COLOR_3 = vec3(0xef/255., 0x7d/255., 0x57/255.); +vec3 COLOR_4 = vec3(0xff/255., 0xcd/255., 0x75/255.); +vec3 COLOR_5 = vec3(0xa7/255., 0xf0/255., 0x70/255.); +vec3 COLOR_6 = vec3(0x38/255., 0xb7/255., 0x64/255.); +vec3 COLOR_7 = vec3(0x25/255., 0x71/255., 0x79/255.); +vec3 COLOR_8 = vec3(0x29/255., 0x36/255., 0x6f/255.); +vec3 COLOR_9 = vec3(0x3b/255., 0x5d/255., 0xc9/255.); +vec3 COLOR_10 = vec3(0x41/255., 0xa6/255., 0xf6/255.); +vec3 COLOR_11 = vec3(0x73/255., 0xef/255., 0xf7/255.); +vec3 COLOR_12 = vec3(0xf4/255., 0xf4/255., 0xf4/255.); +vec3 COLOR_13 = vec3(0x94/255., 0xb0/255., 0xc2/255.); +vec3 COLOR_14 = vec3(0x56/255., 0x6c/255., 0x86/255.); +vec3 COLOR_15 = vec3(0x33/255., 0x3c/255., 0x57/255.); + +vec3 palette[16]; +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +vec3 fantasyScreen(vec2 uv) { + palette[0] = COLOR_0; +palette[1] = COLOR_1; +palette[2] = COLOR_2; +palette[3] = COLOR_3; +palette[4] = COLOR_4; +palette[5] = COLOR_5; +palette[6] = COLOR_6; +palette[7] = COLOR_7; +palette[8] = COLOR_8; +palette[9] = COLOR_9; +palette[10] = COLOR_10; +palette[11] = COLOR_11; +palette[12] = COLOR_12; +palette[13] = COLOR_13; +palette[14] = COLOR_14; +palette[15] = COLOR_15; + vec2 availRes=vec2(240,136); + vec2 screenRes = availRes + 20; + + uv = floor(uv*screenRes); + uv -= 20; + if (uv.x < 0 || uv.x > availRes.x-20 || uv.y < 0 || uv.y > availRes.y-20) { + return COLOR_0; + } + uv -= vec2(120-10,68-10); + uv /= 240; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec3 t = plas( m * 3.14, fGlobalTime ).rgb / d; + t = clamp( t, 0.0, 1.0 ); + + int i = int((length(t))*16); + if (f > 0.6) i = 12; + + t = palette[i]; + return t; +} + +void main(void) +{ + +palette[0] = COLOR_0; +palette[1] = COLOR_1; +palette[2] = COLOR_2; +palette[3] = COLOR_3; +palette[4] = COLOR_4; +palette[5] = COLOR_5; +palette[6] = COLOR_6; +palette[7] = COLOR_7; +palette[8] = COLOR_8; +palette[9] = COLOR_9; +palette[10] = COLOR_10; +palette[11] = COLOR_11; +palette[12] = COLOR_12; +palette[13] = COLOR_13; +palette[14] = COLOR_14; +palette[15] = COLOR_15; + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + //uv -= 0.5; + //uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec2 availRes=vec2(240,136); + vec2 screenRes = availRes + 20; + + uv = floor(uv*screenRes); + uv -= 20; + if (uv.x < 0 || uv.x > availRes.x-20 || uv.y < 0 || uv.y > availRes.y-20) { + out_color = vec4(COLOR_0,1); + return; + } + uv -= vec2(120-10,68-10); + uv /= 240; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec3 t = plas( m * 3.14, fGlobalTime ).rgb / d; + t = clamp( t, 0.0, 1.0 ); + + int i = int((length(t))*16); + if (f > 0.6) i = 12; + + t = palette[i]; + + out_color = vec4(t,1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroidia.glsl b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroidia.glsl new file mode 100644 index 000000000..1481802ab --- /dev/null +++ b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_aldroidia.glsl @@ -0,0 +1,140 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +// aldroid here! + +// <3 love shadow party + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rot(float a) { + return mat2(cos(a),-sin(a), sin(a),cos(a)); +} + +vec2 min2(vec2 a, vec2 b) { + return (a.x120) break; + t.x+=h.x;t.y=h.y; + } if(t.x>120) t.y=0; + return t; +} +#define a(d) clamp(mp(po+no*d,0).x/d,0.,1.) +#define s(d) smoothstep(0.,1.,mp(po+ld*d,0).x/d) +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + tt=mod(fGlobalTime,62.82); + fb = texture( texFFTSmoothed, .05 ).r*50; + fm = texture( texFFTSmoothed, .25 ).r*50; + //bb=max(0.,-3.+floor(tt*.25)+smoothstep(0.,1.,min(fract(tt*.25),.25)*4.)); + //b=smoothstep(0.,1.,clamp(sin(tt*.5),-.25,.25)*2.+.5); + + ///////////////////////// CCCCCCAAAAAAAAAAAAAMMMMMMMM + ro=mix(vec3(cos(tt*.3)*20.,c.y,sin(tt*.3)*5), + vec3(0,cos(tt*.3)*10.,sin(tt*.3)*2), + ceil(sin(tt*.3))); + vec3 cw=normalize(vec3(0)-ro), + cu=normalize(cross(cw,vec3(0,1,0))), + cv=normalize(cross(cu,cw)), + rd=mat3(cu,cv,cw)*normalize(vec3(uv,.5)),co,fo; + co=fo=vec3(.1)-length(uv)*.1-rd.y*.1; + + lp=ro+vec3(0,2,0); + z=tr(ro,rd);t=z.x; + if(z.y>0){ + po=ro+rd*t; + no=normalize(e.xyy*mp(po+e.xyy,0).x+ + e.yyx*mp(po+e.yyx,0).x+ + e.yxy*mp(po+e.yxy,0).x+ + e.xxx*mp(po+e.xxx,0).x); + al=mix(vec3(.0,0.5,.7),vec3(1.1,0.40,.5),sin(op.z*.5)*.5+.5); + if(z.y<5)al=vec3(0); + if(z.y>5)al=vec3(1); + ld=normalize(lp-po); + float attn=1.0-pow(min(1.0,length(lp-po)/20.),4.0), + dif=max(0,dot(no,ld)), + fr=pow(1+dot(no,rd),4), + sp=pow(max(dot(reflect(-ld,no),-rd),0),30); + co=mix((sp+al*(a(.1)*a(.3)+.2)*(dif+s(1)*.3))*attn,fo,min(fr,.5)); + co=mix(fo,co,exp(-.0002*t*t*t)); + } + cr=cmp(ro-1.); + cr=fract(dot(sin(uv*476.567+uv.yx*785.951+tt),vec2(984.156))); + for(int i=0;i<120;i++){ + cp=ro+rd*(cr+=1./3.);//(cr+=60./150.); + if(su.a>.99||cr>t) break; + float de=clamp(-cmp(cp)+2.*cno(cp,2.),0.,1.); //-0.2-mp(cp).x+0.5*cno(cp*0.5,1.) + su+=vec4(vec3(mix(1.,0.,de)*de),de)*(1.-su.a); + } + co=mix(co,su.xyz,su.a*0.8); //mix(su.xyz,fo,1.-exp(-.000005*cr*cr*cr)),su.a*.9) + //float light=clamp(-0.5-mp(cp-ld*.5).x+2.5*cno(cp*5,5),0.,1.);//cloud lighting + //su+=vec4(vec3(mix(de*de,light,de)),de)*(1-su.a); //co=su.xyz; + co=co+g*.2*vec3(.0,.1,.7)+gg*.2*vec3(.7,.1,.1)+ggg*.2; + //if(length(lp-ro)0.01;iters++){ + camRay.pos+=finalDist*camRay.dir; + totalDist+=finalDist; + finalDist=distToScene(camRay.pos); + } + vec3 normal=estimateNormal(camRay.pos); + + vec3 lightPos=vec3(2.0,1.0,1.0); + + float dotSN=dot(normal,normalize(lightPos-camRay.pos)); + + out_color = vec4(0.5+0.5*normal,1.0)*dotSN; + return; + + vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + float turn = fGlobalTime * -0.5; + m.x += turn; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t; +} diff --git a/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g33kou.glsl b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g33kou.glsl new file mode 100644 index 000000000..c5a430627 --- /dev/null +++ b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_g33kou.glsl @@ -0,0 +1,39 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float t = fGlobalTime*2; +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + float f = 1.-texture( texFFT, 1. ).r * 50; + + vec2 st = gl_FragCoord.xy/v2Resolution.xy; + + float c1 = 1.-smoothstep(.19,.21,distance(st,vec2(0.3))); + float c2 = 1.-smoothstep(.09,.11,distance(st,vec2(0.5))); + float c3 = 1.-smoothstep(.09,.11,distance(st,vec2(0.8))); + float sq = 1.-smoothstep(.02,.04*f,st.x) * smoothstep(.04,.06*f,st.y) * smoothstep(.02,.04*f,1.-st.x) * smoothstep(.04,.06*f,1.-st.y); + float geo = c1+c2+c3+sq; +// vec4 col = vec4(1.,1.*abs(sin(t)),1.*abs(cos(t)),1.); + vec4 col = vec4(1.*st.x,1.*st.y,1.,1.); + out_color = col*geo; +// out_color = col; +} \ No newline at end of file diff --git a/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_lamogui.glsl b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_lamogui.glsl new file mode 100644 index 000000000..5c5e089b2 --- /dev/null +++ b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_lamogui.glsl @@ -0,0 +1,373 @@ +#version 410 core + +#define DOWN_SCALE 6.0 + +#define MAX_INT_DIGITS 4 + +#define CHAR_SIZE vec2(8, 12) +#define CHAR_SPACING vec2(8, 12) + +#define STRWIDTH(c) (c * CHAR_SPACING.x) +#define STRHEIGHT(c) (c * CHAR_SPACING.y) + +#define NORMAL 0 +#define INVERT 1 +#define UNDERLINE 2 + +int TEXT_MODE = NORMAL; + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec4 ch_spc = vec4(0x000000,0x000000,0x000000,0x000000); +vec4 ch_exc = vec4(0x003078,0x787830,0x300030,0x300000); +vec4 ch_quo = vec4(0x006666,0x662400,0x000000,0x000000); +vec4 ch_hsh = vec4(0x006C6C,0xFE6C6C,0x6CFE6C,0x6C0000); +vec4 ch_dol = vec4(0x30307C,0xC0C078,0x0C0CF8,0x303000); +vec4 ch_pct = vec4(0x000000,0xC4CC18,0x3060CC,0x8C0000); +vec4 ch_amp = vec4(0x0070D8,0xD870FA,0xDECCDC,0x760000); +vec4 ch_apo = vec4(0x003030,0x306000,0x000000,0x000000); +vec4 ch_lbr = vec4(0x000C18,0x306060,0x603018,0x0C0000); +vec4 ch_rbr = vec4(0x006030,0x180C0C,0x0C1830,0x600000); +vec4 ch_ast = vec4(0x000000,0x663CFF,0x3C6600,0x000000); +vec4 ch_crs = vec4(0x000000,0x18187E,0x181800,0x000000); +vec4 ch_com = vec4(0x000000,0x000000,0x000038,0x386000); +vec4 ch_dsh = vec4(0x000000,0x0000FE,0x000000,0x000000); +vec4 ch_per = vec4(0x000000,0x000000,0x000038,0x380000); +vec4 ch_lsl = vec4(0x000002,0x060C18,0x3060C0,0x800000); +vec4 ch_0 = vec4(0x007CC6,0xD6D6D6,0xD6D6C6,0x7C0000); +vec4 ch_1 = vec4(0x001030,0xF03030,0x303030,0xFC0000); +vec4 ch_2 = vec4(0x0078CC,0xCC0C18,0x3060CC,0xFC0000); +vec4 ch_3 = vec4(0x0078CC,0x0C0C38,0x0C0CCC,0x780000); +vec4 ch_4 = vec4(0x000C1C,0x3C6CCC,0xFE0C0C,0x1E0000); +vec4 ch_5 = vec4(0x00FCC0,0xC0C0F8,0x0C0CCC,0x780000); +vec4 ch_6 = vec4(0x003860,0xC0C0F8,0xCCCCCC,0x780000); +vec4 ch_7 = vec4(0x00FEC6,0xC6060C,0x183030,0x300000); +vec4 ch_8 = vec4(0x0078CC,0xCCEC78,0xDCCCCC,0x780000); +vec4 ch_9 = vec4(0x0078CC,0xCCCC7C,0x181830,0x700000); +vec4 ch_col = vec4(0x000000,0x383800,0x003838,0x000000); +vec4 ch_scl = vec4(0x000000,0x383800,0x003838,0x183000); +vec4 ch_les = vec4(0x000C18,0x3060C0,0x603018,0x0C0000); +vec4 ch_equ = vec4(0x000000,0x007E00,0x7E0000,0x000000); +vec4 ch_grt = vec4(0x006030,0x180C06,0x0C1830,0x600000); +vec4 ch_que = vec4(0x0078CC,0x0C1830,0x300030,0x300000); +vec4 ch_ats = vec4(0x007CC6,0xC6DEDE,0xDEC0C0,0x7C0000); +vec4 ch_A = vec4(0x003078,0xCCCCCC,0xFCCCCC,0xCC0000); +vec4 ch_B = vec4(0x00FC66,0x66667C,0x666666,0xFC0000); +vec4 ch_C = vec4(0x003C66,0xC6C0C0,0xC0C666,0x3C0000); +vec4 ch_D = vec4(0x00F86C,0x666666,0x66666C,0xF80000); +vec4 ch_E = vec4(0x00FE62,0x60647C,0x646062,0xFE0000); +vec4 ch_F = vec4(0x00FE66,0x62647C,0x646060,0xF00000); +vec4 ch_G = vec4(0x003C66,0xC6C0C0,0xCEC666,0x3E0000); +vec4 ch_H = vec4(0x00CCCC,0xCCCCFC,0xCCCCCC,0xCC0000); +vec4 ch_I = vec4(0x007830,0x303030,0x303030,0x780000); +vec4 ch_J = vec4(0x001E0C,0x0C0C0C,0xCCCCCC,0x780000); +vec4 ch_K = vec4(0x00E666,0x6C6C78,0x6C6C66,0xE60000); +vec4 ch_L = vec4(0x00F060,0x606060,0x626666,0xFE0000); +vec4 ch_M = vec4(0x00C6EE,0xFEFED6,0xC6C6C6,0xC60000); +vec4 ch_N = vec4(0x00C6C6,0xE6F6FE,0xDECEC6,0xC60000); +vec4 ch_O = vec4(0x00386C,0xC6C6C6,0xC6C66C,0x380000); +vec4 ch_P = vec4(0x00FC66,0x66667C,0x606060,0xF00000); +vec4 ch_Q = vec4(0x00386C,0xC6C6C6,0xCEDE7C,0x0C1E00); +vec4 ch_R = vec4(0x00FC66,0x66667C,0x6C6666,0xE60000); +vec4 ch_S = vec4(0x0078CC,0xCCC070,0x18CCCC,0x780000); +vec4 ch_T = vec4(0x00FCB4,0x303030,0x303030,0x780000); +vec4 ch_U = vec4(0x00CCCC,0xCCCCCC,0xCCCCCC,0x780000); +vec4 ch_V = vec4(0x00CCCC,0xCCCCCC,0xCCCC78,0x300000); +vec4 ch_W = vec4(0x00C6C6,0xC6C6D6,0xD66C6C,0x6C0000); +vec4 ch_X = vec4(0x00CCCC,0xCC7830,0x78CCCC,0xCC0000); +vec4 ch_Y = vec4(0x00CCCC,0xCCCC78,0x303030,0x780000); +vec4 ch_Z = vec4(0x00FECE,0x981830,0x6062C6,0xFE0000); +vec4 ch_lsb = vec4(0x003C30,0x303030,0x303030,0x3C0000); +vec4 ch_rsl = vec4(0x000080,0xC06030,0x180C06,0x020000); +vec4 ch_rsb = vec4(0x003C0C,0x0C0C0C,0x0C0C0C,0x3C0000); +vec4 ch_pow = vec4(0x10386C,0xC60000,0x000000,0x000000); +vec4 ch_usc = vec4(0x000000,0x000000,0x000000,0x00FF00); +vec4 ch_a = vec4(0x000000,0x00780C,0x7CCCCC,0x760000); +vec4 ch_b = vec4(0x00E060,0x607C66,0x666666,0xDC0000); +vec4 ch_c = vec4(0x000000,0x0078CC,0xC0C0CC,0x780000); +vec4 ch_d = vec4(0x001C0C,0x0C7CCC,0xCCCCCC,0x760000); +vec4 ch_e = vec4(0x000000,0x0078CC,0xFCC0CC,0x780000); +vec4 ch_f = vec4(0x00386C,0x6060F8,0x606060,0xF00000); +vec4 ch_g = vec4(0x000000,0x0076CC,0xCCCC7C,0x0CCC78); +vec4 ch_h = vec4(0x00E060,0x606C76,0x666666,0xE60000); +vec4 ch_i = vec4(0x001818,0x007818,0x181818,0x7E0000); +vec4 ch_j = vec4(0x000C0C,0x003C0C,0x0C0C0C,0xCCCC78); +vec4 ch_k = vec4(0x00E060,0x60666C,0x786C66,0xE60000); +vec4 ch_l = vec4(0x007818,0x181818,0x181818,0x7E0000); +vec4 ch_m = vec4(0x000000,0x00FCD6,0xD6D6D6,0xC60000); +vec4 ch_n = vec4(0x000000,0x00F8CC,0xCCCCCC,0xCC0000); +vec4 ch_o = vec4(0x000000,0x0078CC,0xCCCCCC,0x780000); +vec4 ch_p = vec4(0x000000,0x00DC66,0x666666,0x7C60F0); +vec4 ch_q = vec4(0x000000,0x0076CC,0xCCCCCC,0x7C0C1E); +vec4 ch_r = vec4(0x000000,0x00EC6E,0x766060,0xF00000); +vec4 ch_s = vec4(0x000000,0x0078CC,0x6018CC,0x780000); +vec4 ch_t = vec4(0x000020,0x60FC60,0x60606C,0x380000); +vec4 ch_u = vec4(0x000000,0x00CCCC,0xCCCCCC,0x760000); +vec4 ch_v = vec4(0x000000,0x00CCCC,0xCCCC78,0x300000); +vec4 ch_w = vec4(0x000000,0x00C6C6,0xD6D66C,0x6C0000); +vec4 ch_x = vec4(0x000000,0x00C66C,0x38386C,0xC60000); +vec4 ch_y = vec4(0x000000,0x006666,0x66663C,0x0C18F0); +vec4 ch_z = vec4(0x000000,0x00FC8C,0x1860C4,0xFC0000); +vec4 ch_lpa = vec4(0x001C30,0x3060C0,0x603030,0x1C0000); +vec4 ch_bar = vec4(0x001818,0x181800,0x181818,0x180000); +vec4 ch_rpa = vec4(0x00E030,0x30180C,0x183030,0xE00000); +vec4 ch_tid = vec4(0x0073DA,0xCE0000,0x000000,0x000000); +vec4 ch_lar = vec4(0x000000,0x10386C,0xC6C6FE,0x000000); + +vec2 res = vec2(0); +vec2 print_pos = vec2(0); + +//Extracts bit b from the given number. +//Shifts bits right (num / 2^bit) then ANDs the result with 1 (mod(result,2.0)). +float extract_bit(float n, float b) +{ + b = clamp(b,-1.0,24.0); + return floor(mod(floor(n / pow(2.0,floor(b))),2.0)); +} + +//Returns the pixel at uv in the given bit-packed sprite. +float sprite(vec4 spr, vec2 size, vec2 uv) +{ + uv = floor(uv); + + //Calculate the bit to extract (x + y * width) (flipped on x-axis) + float bit = (size.x-uv.x-1.0) + uv.y * size.x; + + //Clipping bound to remove garbage outside the sprite's boundaries. + bool bounds = all(greaterThanEqual(uv,vec2(0))) && all(lessThan(uv,size)); + + float pixels = 0.0; + pixels += extract_bit(spr.x, bit - 72.0); + pixels += extract_bit(spr.y, bit - 48.0); + pixels += extract_bit(spr.z, bit - 24.0); + pixels += extract_bit(spr.w, bit - 00.0); + + return bounds ? pixels : 0.0; +} + +//Prints a character and moves the print position forward by 1 character width. +float print_char(vec4 ch, vec2 uv) +{ + if( TEXT_MODE == INVERT ) + { + //Inverts all of the bits in the character. + ch = pow(2.0,24.0)-1.0-ch; + } + if( TEXT_MODE == UNDERLINE ) + { + //Makes the bottom 8 bits all 1. + //Shifts the bottom chunk right 8 bits to drop the lowest 8 bits, + //then shifts it left 8 bits and adds 255 (binary 11111111). + ch.w = floor(ch.w/256.0)*256.0 + 255.0; + } + + float px = sprite(ch, CHAR_SIZE, uv - print_pos); + print_pos.x += CHAR_SPACING.x; + //print_pos.y += 10.0*cos( print_pos.x + 10.0*fGlobalTime); + return px; +} + + +//Returns the digit sprite for the given number. +vec4 get_digit(float d) +{ + d = floor(d); + + if(d == 0.0) return ch_0; + if(d == 1.0) return ch_1; + if(d == 2.0) return ch_2; + if(d == 3.0) return ch_3; + if(d == 4.0) return ch_4; + if(d == 5.0) return ch_5; + if(d == 6.0) return ch_6; + if(d == 7.0) return ch_7; + if(d == 8.0) return ch_8; + if(d == 9.0) return ch_9; + return vec4(0.0); +} + +mat2 rot( float a ) { + float c = cos( a ); + float s = sin( a ); + return mat2( c, s, -s, c); +} + +float map( vec3 g ) { + vec3 p = g; + p.xy *= rot( p.z * 0.6 ); + float d = cos( p.x) + cos(p.y) + cos(p.z); + d = min( d, p.x + 0.2 + texture( texNoise, p.yz*0.05 + fGlobalTime*0.1 ).r); + return d; +} +vec3 grad( vec3 p ) { + vec2 e = vec2( 0.01, 0.0 ); + float d = map( p ); + return normalize( vec3( d - map( p + e.xyy ), + d - map( p + e.yxy ), + d - map( p + e.yyx ) ) + ); +} + +float text(vec2 uv) +{ + float col = 0.0; + + vec2 center = res/2.0; + + //Greeting Text + + print_pos = floor(center - vec2(STRWIDTH(1.0),STRHEIGHT(1.0))/2.0) + vec2(-(1500.*(0.1*fGlobalTime - floor(0.1*fGlobalTime))) + 1500.*0.5 , 15.0*cos(fGlobalTime+0.02*uv.x)); + + col += print_char(ch_H,uv); + col += print_char(ch_a,uv); + col += print_char(ch_l,uv); + col += print_char(ch_l,uv); + col += print_char(ch_o,uv); + + col += print_char(ch_spc,uv); + + col += print_char(ch_S,uv); + col += print_char(ch_h,uv); + col += print_char(ch_a,uv); + col += print_char(ch_d,uv); + col += print_char(ch_o,uv); + col += print_char(ch_w,uv); + col += print_char(ch_exc,uv); + + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + + col += print_char(ch_W,uv); + col += print_char(ch_A,uv); + col += print_char(ch_S,uv); + col += print_char(ch_que,uv); + col += print_char(ch_que,uv); + col += print_char(ch_que,uv); + col += print_char(ch_que,uv); + + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + + col += print_char(ch_A,uv); + col += print_char(ch_L,uv); + col += print_char(ch_K,uv); + col += print_char(ch_A,uv); + col += print_char(ch_M,uv); + col += print_char(ch_A,uv); + col += print_char(ch_exc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_A,uv); + col += print_char(ch_L,uv); + col += print_char(ch_K,uv); + col += print_char(ch_A,uv); + col += print_char(ch_M,uv); + col += print_char(ch_A,uv); + col += print_char(ch_exc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_A,uv); + col += print_char(ch_L,uv); + col += print_char(ch_K,uv); + col += print_char(ch_A,uv); + col += print_char(ch_M,uv); + col += print_char(ch_A,uv); + col += print_char(ch_exc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_A,uv); + col += print_char(ch_L,uv); + col += print_char(ch_K,uv); + col += print_char(ch_A,uv); + col += print_char(ch_M,uv); + col += print_char(ch_A,uv); + col += print_char(ch_exc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_spc,uv); + col += print_char(ch_A,uv); + col += print_char(ch_L,uv); + col += print_char(ch_K,uv); + col += print_char(ch_A,uv); + col += print_char(ch_M,uv); + col += print_char(ch_A,uv); + col += print_char(ch_exc,uv); + + + + return col; +} + + + +vec3 rm( vec3 ro, vec3 rd ) { + vec3 p = ro; + for ( float st = 0.0; st < 100.0; ++st ) { + float d = map( p ) ; + if ( abs( d) < 0.01 ) { + break; + } + p+=rd * d; + } + return p; +} + +vec3 color( vec2 uv ) { + vec3 ro = vec3( 0.0, 0.0, fGlobalTime + texture( texFFTIntegrated, 0.05) * 5.0 ); + vec3 rd = normalize( vec3( uv, 0.7 ) ); + + vec3 p = rm( ro, rd ); + + vec3 n = grad( p ); + return n *0.5 + 0.5; +} + +void main(void) +{ + + res = v2Resolution.xy / DOWN_SCALE; + vec2 duv = floor(gl_FragCoord.xy / DOWN_SCALE); + + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec2 puv = uv; + //uv += 0.1 * texture( texTex4, uv + sin( cos( fGlobalTime + texture( texNoise, uv ).r ) ) ) .rg ; + + vec3 c = color( uv ); + for ( float s = 0.; s < 7.0; ++s ) { + vec2 off = vec2( cos( s * 2.39), sin( 2.39 ) ) * 0.2*texture( texNoise, puv).r; + c += color( uv + off ); + } + + float t = text(duv ); + c = mix( c / 8.0, vec3( 1.0), t ); + + out_color = vec4(c , 1.0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_nusan.glsl b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_nusan.glsl new file mode 100644 index 000000000..4003d6611 --- /dev/null +++ b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_nusan.glsl @@ -0,0 +1,180 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = mod(fGlobalTime, 300.0); + +float fft(float t) { + return texture(texFFTSmoothed, fract(t)*0.1+0.01).x; +} + +float ffti(float t) { + return texture(texFFTIntegrated, fract(t)*0.1+0.01).x*0.02; +} + +mat2 rot(float a) { + float ca=cos(a); + float sa=sin(a); + return mat2(ca,sa,-sa,ca); +} + +float box(vec3 p, vec3 s) { + p=abs(p)-s; + return max(p.x, max(p.y,p.z)); +} + +float rnd(float d) { + return fract(sin(d*342.034)*435.923); +} +vec3 rnd(vec3 d) { + return fract(sin(d*342.034+d.yzx*463.553+d.zxy*843.854)*435.923); +} +vec2 rnd(vec2 d) { + return fract(sin(d*342.034+d.yx*463.553)*435.923); +} + +float curve(float t, float d) { + t/=d; + return mix(rnd(floor(t)), rnd(floor(t)+1.0), pow(smoothstep(0,1,fract(t)),10.0)); +} + +float curvei(float t, float d) { + t/=d; + return mix(rnd(floor(t))+floor(t), rnd(floor(t)+1.0)+floor(t)+1.0, pow(smoothstep(0,1,fract(t)),10.0)); +} + +vec3 amb=vec3(0); +float map(vec3 p) { + + vec3 bp=p; + float ex=fft(0); + for(int i=0; i<3; ++i) { + p.xy *= rot(ffti(0.02+0.01*i)+time*0.1); + p.xz *= rot(ffti(0.032+0.01*i)+time*0.06); + p=abs(p)-0.3-pow(ex,0.2)*1.0; + } + + float d2=abs(length(p.xz)-0.01); + d2=max(d2,abs(p.y)-curve(time-p.x*20,0.2)*20.0); + float d=d2; + amb += vec3(1,0.3,0.5) * 0.0003/(0.01+d2); + + p=abs(p)-0.1; + p=abs(p)-0.05; + + p=abs(p-2.0)-2.0; + + p=abs(p-5.0)-5.0; + + float ll=max(1,length(bp)*0.3); + d=min(d, box(p, vec3(curve(time,0.5)*1.5,0.025,0.025)*ll)); + + d=min(d, length(bp)-3.0); + + return d; +} + +vec3 getnorm(float d, vec3 p) { + vec2 off=vec2(d,0.0); + return normalize(map(p)-vec3(map(p-off.xyy),map(p-off.yxy),map(p-off.yyx))); +} + +void cam(inout vec3 p) { + + p.xz *= rot(time*0.1); + p.yz *= rot(time*0.06); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + time = mod(fGlobalTime, 300.0); + time*=0.3; + time += rnd(floor(fGlobalTime/2.0-length(uv)*0.2))*300.0; + time += rnd(floor(fGlobalTime/2.0+0.5-abs(uv.x)*0.2))*300.0; + time += rnd(floor(uv*20+time)).x*(0.0+2.0*max(0,length(uv)*curve(time, 0.3)-0.3)); + time*=0.1+max(0,curve(floor(time), 3)-0.2); + + if(rnd(floor(time)+0.1)<0.3) uv.x=abs(uv.x); + if(rnd(floor(time)+0.2)<0.3) uv.y=abs(uv.y); + + vec3 col=vec3(0); + + vec3 p=vec3(0,0,-10-curve(time, 7.2)*10); + p.x+=(curve(time, 1.2)-0.5)*8.0; + p.y+=(curve(time, 1.4)-0.5)*3.0; + vec3 r=normalize(vec3(uv, 1*curve(time, 4.7)*1.6+0.2)); + + cam(r); + cam(p); + + float ligh=clamp(sin(fGlobalTime/10)*1.5+0.5,0,1); + + vec3 s=p; + vec3 alpha=vec3(1.0); + float first=-1; + for(int i=0; i<100; ++i) { + float d=map(p); + col += amb*alpha*(1-ligh); + if(abs(d)<0.001) { + vec3 n=getnorm(0.01,p); + //col += dot(n,vec3(0,1,0)); + float rough=rnd(floor(p*7.0)).y*0.3; + n=normalize(n+rough*rnd(vec3(uv,i))); + r=reflect(r,n); + if(first<0) first=length(p-s); + d=0.1; + alpha*=0.7; + //break; + } + if(d>100.0) break; + p+=r*d; + } + float dep=map(p); + if(dep>100.0) { + col += alpha * vec3(0.6,0.6,1.0)*1.0*(r.y*0.5+0.5) * ligh; + col += alpha * vec3(1.6,0.8,0.4)*4.6*pow(max(0,r.x),10.0); + + col *=0.8; + + col *= 1.2-length(uv); + + col = pow(col, vec3(0.4545)); + col = smoothstep(0,1,col); + + } + + if(first b.x ? a : b) +#define min2(a, b) (a.x < b.x ? a : b) +#define pos(x) ((x) * .5 + .5) +#define rep(p, r) mod((p) + .5 * (r), r) - .5 * (r) +#define repid(p, r) floor(((p) + .5 * (r))/(r)) +#define rot(a) mat2(cos(a), -sin(a), sin(a), cos(a)) +#define sat(x) clamp(x, 0., 1.) + +#define TR_MAX_STEPS 128 +#define TR_MAX_DIST 50. +#define GLOW_RADIUS .4 +#define GLOW_INTENSITY .1 +#define COLORBG vec3(0.) +#define COLOR01 rainbow(.3 * t) +#define COLOR02 rainbow(.3 * t + .33) + + +float hash21(vec2 p) { + p = fract(p * vec2(123.34, 234.34)); + p += dot(p, p + 23.43); + return fract(p.x * p.y); +} + +vec3 cos_palette(vec3 a, vec3 b, vec3 c, vec3 d, float x) { + return a + b * cos(TAU * (c * x + d)); +} + +vec3 rainbow(float x) { + return cos_palette(vec3(.5), vec3(.5), vec3(1.), vec3(0., .33, .67), x); +} + +float sdf_gyroid(vec3 p) { + float seq = mod(floor(t - length(p) - 2. * fft(0.).x ), 4.); + float scale = seq + 4.; + p *= scale; + p.xy *= rot(t + seq * PI/2.); + p.yz *= rot(t); + return (abs(dot(sin(p), cos(p.zxy))))/scale; +} + +float sdf_cube(vec3 p, float s) { + vec3 q = abs(p) - s; + return length(max(q, 0.)) + min(max(q.x, max(q.y, q.z)), 0.); +} + +float sdf_cylinder(vec3 p, vec3 c) { + return length(p.xz - c.xy) - c.z; +} + +vec2 sdf(vec3 p) { + vec2 di = vec2(TR_MAX_DIST, -1.); + vec3 op = p; + + p.yz *= rot(PI/2.); + di = min2(di, vec2(sdf_cylinder(p, vec3(.3, .3, 0.)), 1.)); + + p = op; + di = min2(di, vec2(length(p) - 1., 2.)); + di = max2(di, vec2(sdf_gyroid(p), 2.)); + vec3 r = vec3(fract(t) * .5), + rid = floor((p + r * .5)/r); + p = mod(p + r * .5, r) - r * .5; + p.xy *= rot(t); + di = max2(di, -vec2(sdf_cube(p, .1 + 3. * fft(.5)), 2.)); + + return di; +} + +vec3 glow; +vec2 trace(vec3 ro, vec3 rd) { + vec3 p = ro; + float td = 0.; + + glow = vec3(0.); + for (int i = 0; i < TR_MAX_STEPS && td < TR_MAX_DIST; i++) { + vec2 di = sdf(p); + if (di.x < EPSILON) + return vec2(td, di.y); + glow += COLOR01 * (1. - sat(di.x/GLOW_RADIUS)) * GLOW_INTENSITY; + p += di.x * rd; + td = distance(ro, p); + } + + return vec2(-1.); +} + +vec3 get_normal(vec3 p) { + vec2 e = EPSILON * vec2(1., -1.); + return normalize( + e.xyy * sdf(p + e.xyy).x + + e.yxy * sdf(p + e.yxy).x + + e.yyx * sdf(p + e.yyx).x + + e.xxx * sdf(p + e.xxx).x + ); +} + +float diffuse(vec3 p, vec3 n, vec3 lo) { + return max(dot(normalize(lo - p), n), 0.); +} + +vec3 get_raydir(vec2 uv, vec3 ro, vec3 ta) { + vec3 rd = normalize(ta - ro), + r = normalize(cross(vec3(0., 1., 0.), rd)), + u = normalize(cross(rd, r)); + return normalize(rd + r * uv.x + u * uv.y); +} + +float sdCircle(vec2 uv, float r) { + return length(uv) - r; +} + +// By Marex +vec3 background(vec2 uv) { + //vec3 col = vec3(0.5) * pos(cos(uv.x * PI)); + vec2 rotatedUV = uv * rot(t); + vec3 c = vec3(pos(cos(t+uv.xyx+vec3(0,3,3)))) * ceil(-sdCircle(uv*rotatedUV, sin(t)/2.+.5) * sin(t)*2.); + return c; +} + +vec3 render(vec2 uv) { + vec3 ro = vec3(0., 0., -2.), + ta = vec3(0.), + rd = get_raydir(uv, ro, ta), + lo = vec3(0.), + c = COLORBG; + + vec2 tdi = trace(ro, rd); + vec3 p = ro + tdi.x * rd; + if (tdi.x > 0.) { + vec3 n = get_normal(p); + if(tdi.y >= 2.) + c = mix(COLOR01, COLOR02, pos(sin(length(p) - .5 * t))) * diffuse(p, n, lo) + glow; + else if(tdi.y >= 1.) + c = mix(COLOR02, COLORBG, pos(sin(t))); + } else { + c = background(p.xy); + } + return c; +} + +void main(void) { + vec2 uv = (gl_FragCoord.xy - .5 * v2Resolution.xy) / v2Resolution.y; + vec3 c = render(uv); + + c = pow(sat(c), vec3(1./2.2)); // gamma + out_color = vec4(c, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt.glsl b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt.glsl new file mode 100644 index 000000000..02bb60c22 --- /dev/null +++ b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt.glsl @@ -0,0 +1,120 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texCIX; +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texLcdz; +uniform sampler2D texNfp; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texSession2024; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; +//************************ +// TOUS A POUALE ! //// TOUS A POUALE ! //// TOUS A POUALE ! //// TOUS A POUALE ! // +//************************ + + + + + + + + + + + + + + + + + + + + + + + + +////************************ +// TOUS A POUALE ! //// TOUS A POUALE ! //// TOUS A POUALE ! //// TOUS A POUALE ! // +//************************ +// TOUS A POUALE ! //// TOUS A POUALE ! //// TOUS A POUALE ! //// TOUS A POUALE ! // +//************************ +// TOUS A POUALE ! //// TOUS A POUALE ! //// TOUS A POUALE ! //// TOUS A POUALE ! // +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +vec3 pcg3d(vec3 p){ + + uvec3 q= floatBitsToUint(p)*123457u+1234567890u; + q.x +=q.y*q.z;q.y +=q.x*q.z;q.z +=q.y*q.x; + q^=q>>16u; + q.x +=q.y*q.z;q.y +=q.x*q.z;q.z +=q.y*q.x; + return vec3(q)/float(-1U); + } +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + + float bpm = 128*fGlobalTime/60.; + + float mbpm=bpm; + vec3 rrnd = pcg3d(vec3(uv.xy,bpm)); + + uv=erot(uv.xyy,vec3(0.,0.,1.),floor(bpm+rrnd.x*.1)).xy; + + vec2 uuv = uv; + vec2 id = floor(uv*5.); + vec3 irnd = pcg3d(id.xyy); + uv*=3-length(uv); + + +vec3 col = vec3(0.); + float t = fGlobalTime; + for(int c=0;c<3;c++){ + vec2 uuv = uv; + + bpm = floor(bpm)+smoothstep(.1,.9,fract(bpm)); + + uuv*=exp(-fract(bpm*.25)); + uuv =erot(uuv.xyy,vec3(0.,0.,1.),tanh(sin(bpm)*4)).xy; + vec3 rnd = pcg3d(floor(vec3(uuv.xy*20.,bpm))); + float v= texture(texFFTSmoothed,rnd.x).r; + float d = 5*sqrt(texture(texFFTSmoothed,rnd.x).r)*sqrt(v); + col[c]+=d; + } + + //if(fract(bpm+irnd.x+fGlobalTime)<.1) col = .01/(.01+col); + + + col = abs(uuv.y)>((step(abs(uuv.y)-.3,texture(texFFTSmoothed,log(1+abs(uuv.x)*.1)).r))) ? col*col+fwidth(col*5):col; + + ivec2 gl = ivec2(gl_FragCoord.xy); + ivec2 off= ivec2(sign(uv)*length(uv*.4)*5); + vec3 pcol = vec3( + texelFetch(texPreviousFrame,gl+off,0).r, + texelFetch(texPreviousFrame,gl-off,0).g, + texelFetch(texPreviousFrame,gl-off,0).b + ); + col = mix(sqrt(col),fwidth(pcol),.6*exp(-3*fract(bpm))); + + if(fract(bpm*4.)>.5) col = .01/(.01+col); + out_color = vec4((col),1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_alkama.glsl b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_alkama.glsl new file mode 100644 index 000000000..e5a8dfdc7 --- /dev/null +++ b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_alkama.glsl @@ -0,0 +1,165 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texCIX; +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texLcdz; +uniform sampler2D texNfp; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texSession2024; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +//////////////////////////////////////// +// HUG THE ALKAMA //// HUG THE ALKAMA // +//////////////////////////////////////// + +//////////////////////////////////////// +// HUG THE ALKAMA //// HUG THE ALKAMA // +//////////////////////////////////////// +vec3 noise; +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +mat3 ort(vec3 p){ + vec3 z = normalize(p); + vec3 x = vec3(z.z,0.,-z.x); + return mat3(x,cross(z,x),z); +} +vec3 pal(float t){return .5+.5*cos(6.28*(1.*t+vec3(.0,.1,.2)));} +vec3 cy(vec3 p,float pump){ + + vec4 s = vec4(0.); + mat3 o = ort(vec3(-1.,2.,-3.)); + for(float i=0.;i++<5.;){ + p*=o; + p+=sin(p.xyz); + s+=vec4(cross(sin(p),cos(p.yzx)),1.); + s*=pump; + p*=2.; + } + return s.xyz/s.w; + } +struct GridResult { + vec3 cell; + float d; + vec3 n; +}; GridResult grid; +GridResult gridTraversal( vec3 ro, vec3 rd ) { + GridResult r; + + r.cell = floor( ro + rd * 1E-3 ) + 0.5; + r.cell.y=0.; + vec3 src = -( ro - r.cell ) / rd; + vec3 dst = abs( 0.5 / rd ); + vec3 bv = src + dst; + r.d = abs(min( min( bv.x, bv.z), bv.z )); + + r.n = -step( bv, vec3( r.d ) ) * sign( rd ); + + return r; +} + +vec3 pcg3d(vec3 p){ + uvec3 q= floatBitsToUint(p)*1234567u+1234567890u; + q.x += q.y*q.z; q.y += q.x*q.z; q.z += q.y*q.x; + q^=q>>16u; + q.x+= q.y*q.z; q.y += q.x*q.z; q.z += q.y*q.x; + return vec3(q)/float(-1u); + } +float bpm= fGlobalTime *128/60.; + +float box(vec3 p,vec3 b){p=abs(p)-b;return length(max(vec3(0.),p))+min(0.,max(p.x,max(p.y,p.z)));} +vec2 sdf(vec3 p){ + vec2 h; + vec3 hp=p-grid.cell; + vec3 r = pcg3d(grid.cell); + float tx = sqrt(texture(texFFTSmoothed,r.x).x)*.5; + h.x = box(hp,vec3(.45,tx*50,.45)); + h.y= r.z; + + vec3 tp=p; + vec2 t; + //tp.xz=.5-abs(tp.xz); + tp.y -=5.; + tp=erot(tp,vec3(1.,0.,0.),floor(bpm+noise.z*.2+atan(tp.z,tp.x)*.1)); + float ag = atan(tp.x,tp.z)/3.1415; + vec2 q = vec2(length(tp.xz)-20.1,tp.y); + + t.x = length(q)-cy(tp+bpm,2.).x; + t.y = -fract(ag); + tp = erot(tp,cy(tp+bpm,2.)*.5,.785); + t.x = min(t.x,min(min(length(tp.yz),length(tp.xy)),length(tp.xz))-.1); + h = t.x < h.x ? t:h; + + return h; +} +#define q(s) s*sdf(p+s).x +vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 col = vec3(0); + noise = pcg3d(vec3(uv.xy,bpm)); + + float wheee= tanh(sin(bpm*.25+noise.x*.1)*16.); + vec3 ro=vec3(0.,16.,-40.+wheee*10),rt=vec3(0.+sin(bpm*.25)*5,cos(bpm*.5)*5,tan(bpm*.125))+noise*max(0.,length(uv)-.4)*2;; + ro = erot(ro,vec3(0.,1.,0),bpm*.1+floor(bpm*.5)+smoothstep(.0,.1+noise.z*.1,fract(bpm*.5))); + ro.y +=tanh(sin(bpm)*4); + vec3 rd= ort(rt-ro)*normalize(vec3(uv,1.-.5*wheee*.1)); + vec3 rp=ro; + float i=0.; + float rl=0.; + vec2 d; + vec3 light= vec3(1.,22.,-3.); + float gridlen = 0.0; +vec3 acc=vec3(0.); + for(;i++<70.;){ + if ( gridlen <= rl ) { + grid = gridTraversal( rp, rd ); + gridlen += grid.d; + } + d= sdf(rp); + if(d.y <=-0.){ + vec3 c = cy(rp,2.); + acc+=vec3(1.)*exp(-abs(d.x))/(100-95*exp(-9*fract(c*.12 +d.y+bpm))); + d.x = max(.001,abs(d.x)); + } + rl=min(rl+d.x,gridlen); + rp=ro+rd*rl; + if(d.x< .001) break; + } + if(d.x < .001) { + + vec3 n = norm(rp,.001); + vec3 ld = normalize(light-rp); + float dif = max(0.,dot(ld,n)); + float spc = pow(max(0.,dot(reflect(ld,n),rd)),32.); + float fre= pow(1+dot(rd,n),4); + float sss= clamp(sdf(rp+ld*.1).x/.1,0.,1.); + col +=exp(-5*fract(vec3(d.y)+floor(bpm)*5.5))*(dif+sss*.5)+spc; + col = mix(vec3(.1),col,1-fre); + } + col = mix(col,.5*pal(floor(bpm)*.1),1-exp(-.000005*rl*rl*rl)); + col =sqrt(col*.3)+2*acc; + + col = mix(col,fwidth(col*2.),smoothstep(.3,.4,abs(uv.y))); + //if(fract(bpm)>.9)col = fwidth(col*2); + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_nfp.glsl b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_nfp.glsl new file mode 100644 index 000000000..fb3bbcb9b --- /dev/null +++ b/shader_file_sources/2024_06_29_shader_jam_shadow_party/grabber_shadow2024_totetmatt_nfp.glsl @@ -0,0 +1,127 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texCIX; +uniform sampler2D texChecker; +uniform sampler2D texEwerk; +uniform sampler2D texLcdz; +uniform sampler2D texNfp; +uniform sampler2D texNoise; +uniform sampler2D texRevision; +uniform sampler2D texRevisionBW; +uniform sampler2D texSession2024; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float bpm = fGlobalTime*120./60.; +mat3 orth(vec3 p){ + vec3 z = normalize(p); + vec3 x = vec3(z.z,0.,-z.x); + return mat3(x,cross(z,x),z); +} +struct Grid { + float d; + vec3 id; +}; +Grid dogrid(vec3 ro,vec3 rd,float size){ + + Grid g; + g.id = floor((ro+rd*.001)/size+.5)*size; + vec3 src = -(ro-g.id)/rd; + src+= abs(.5*size/rd); + g.d = min(src.x,min(src.y,src.z)); + return g; +} +vec3 cy(vec3 p,float pump){ + + vec4 s = vec4(0.); + mat3 o = orth(vec3(-1.,2.,-3.)); + for(float i=0.;i++<5.;){ + p*=o; + p+=sin(p.xyz); + s+=vec4(cross(sin(p),cos(p.yzx)),1.); + s*=pump; + p*=2.; + } + return s.xyz/s.w; + } +vec3 pcg3d(vec3 p){ + uvec3 q=floatBitsToUint(p)*1234567u+123456789u; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + q^=q>>16; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + return vec3(q)/(float(-1u)); +} +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float zz = step(.40,abs(uv.y)); + + vec3 col = vec3(0); + vec3 rrnd = pcg3d(vec3(uv,bpm)); + + // float d= length(uv)-.1-sqrt(texture(texFFTSmoothed,3.).r); + // d = smoothstep(fwidth(d),0.,abs(d)-texture(texFFTSmoothed,atan(uv.x,uv.y)/6.28).r); + // col+=d; + + vec3 c = cy(vec3(bpm),4.)*.5; + vec3 ro=vec3(-bpm,0.,5.),rt=vec3(-bpm,vec2(0)); + float rbpm = bpm*.25; + rbpm = floor(rbpm)+smoothstep(.8-rrnd.x*.1,.9+rrnd.x*.01,fract(rbpm)); + vec3 rd = orth(rt-ro)*erot(normalize(vec3(uv,1.-zz*.9)),normalize(vec3(0.5,1.,-.25)),rbpm);; + + float i=0.,e=0.,g=0.; + vec3 p=ro; + float len = 0.; + Grid gr; + for(;i++<99;){ + if(len<=g){ + gr=dogrid(p,rd,1.); + len+=gr.d; + } + p +=cross(sin(p+bpm),cos(p.yzx))*.2; + + vec3 op=p; + + + + p-=gr.id; + + vec3 rnd = pcg3d(gr.id); + float zz = 100.; + vec3 pp=p; + pp=erot(pp,normalize(vec3(1.)),bpm+rrnd.x*.1); + for(int ax=0;ax<3;ax++){ + vec2 q = vec2(length(pp.xy)-.2,pp.z); + zz = min(zz,length(q)-.01); + pp.xyz=pp.yzx; + } + p=abs(p)-.0125;p=abs(p)-.0225; + float h = min(min(length(p.yz),length(p.xz)),length(p.xy))-.005; + + h= min(h,zz); + + e=max(0.001,rnd.y >.5 ? h:abs(h)); + g=min(g+e,len); + p = ro+rd*g; + col+=mix(vec3(1.,.5,.1),vec3(.1,.5,1.),exp(-3*fract(bpm+.5+rnd.z)))*(.5*exp(-5*fract(bpm+rrnd.x*.1+op.z*.1+rnd.x*.2+rnd.y*.5)))/exp(i*i*e); + } + + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_07_19_shader_jam_bornhack/CIOSAI_tw_booboobaba.html b/shader_file_sources/2024_07_19_shader_jam_bornhack/CIOSAI_tw_booboobaba.html new file mode 100644 index 000000000..ff6791848 --- /dev/null +++ b/shader_file_sources/2024_07_19_shader_jam_bornhack/CIOSAI_tw_booboobaba.html @@ -0,0 +1,867 @@ + + + + +Shader jam + + + + + + + + +
+
+ Force resolution: + +
+ + +
+ Other global variables: +
uniform vec2 iResolution; // screen size in pixels. note: in Shader Toy this is vec3
+uniform float iTime; // time since beginning, in seconds
+uniform float iTimeDelta; // time since last frame, in seconds
+uniform sampler2D iChannel0; // 2D, 3D or cubemap depending on selected input
+// likewise iChannel1, 2, 3
+
+Tabs which don't compile are highlighted red, and the viewport keeps running the last version which compiled.
+Sorry for no syntax highlighting! +
+
+ +
+
+
Common
+
Buffer A
+
Buffer B
+
Buffer C
+
Buffer D
+
Output image
+
Save/load
+
+ +
+ + + + + + + + + + + +
+ + + +
+ +
+
+
+
+ Title will be displayed alongside this shader. Include your name if you want to.
+ +
+ +
+ + Your shader as JSON for copy-pasting:
+ + +
+ Paste JSON here to load:
+ + + +
+ +
+ + + + \ No newline at end of file diff --git a/shader_file_sources/2024_07_19_shader_jam_bornhack/Mushbie_trans_wave.html b/shader_file_sources/2024_07_19_shader_jam_bornhack/Mushbie_trans_wave.html new file mode 100644 index 000000000..c0ea2b017 --- /dev/null +++ b/shader_file_sources/2024_07_19_shader_jam_bornhack/Mushbie_trans_wave.html @@ -0,0 +1,759 @@ + + + + +Shader jam + + + + + + + + +
+
+ Force resolution: + +
+ + +
+ Other global variables: +
uniform vec2 iResolution; // screen size in pixels. note: in Shader Toy this is vec3
+uniform float iTime; // time since beginning, in seconds
+uniform float iTimeDelta; // time since last frame, in seconds
+uniform sampler2D iChannel0; // 2D, 3D or cubemap depending on selected input
+// likewise iChannel1, 2, 3
+
+Tabs which don't compile are highlighted red, and the viewport keeps running the last version which compiled.
+Sorry for no syntax highlighting! +
+
+ +
+
+
Common
+
Buffer A
+
Buffer B
+
Buffer C
+
Buffer D
+
Output image
+
Save/load
+
+ +
iChannel0:
iChannel1:
iChannel2:
iChannel3:
+ + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/shader_file_sources/2024_07_19_shader_jam_bornhack/Okarin_neon_flow.html b/shader_file_sources/2024_07_19_shader_jam_bornhack/Okarin_neon_flow.html new file mode 100644 index 000000000..0ca28bf26 --- /dev/null +++ b/shader_file_sources/2024_07_19_shader_jam_bornhack/Okarin_neon_flow.html @@ -0,0 +1,847 @@ + + + + +Shader jam + + + + + + + + +
+
+ Force resolution: + +
+ + +
+ Other global variables: +
uniform vec2 iResolution; // screen size in pixels. note: in Shader Toy this is vec3
+uniform float iTime; // time since beginning, in seconds
+uniform float iTimeDelta; // time since last frame, in seconds
+uniform sampler2D iChannel0; // 2D, 3D or cubemap depending on selected input
+// likewise iChannel1, 2, 3
+
+Tabs which don't compile are highlighted red, and the viewport keeps running the last version which compiled.
+Sorry for no syntax highlighting! +
+
+ +
+
+
Common
+
Buffer A
+
Buffer B
+
Buffer C
+
Buffer D
+
Output image
+
Save/load
+
+ +
iChannel0:
iChannel1:
iChannel2:
iChannel3:
+ + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_advert_seed_shader.html b/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_advert_seed_shader.html new file mode 100644 index 000000000..5c7668f85 --- /dev/null +++ b/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_advert_seed_shader.html @@ -0,0 +1,867 @@ + + + + +Shader jam + + + + + + + + +
+
+ Force resolution: + +
+ + +
+ Other global variables: +
uniform vec2 iResolution; // screen size in pixels. note: in Shader Toy this is vec3
+uniform float iTime; // time since beginning, in seconds
+uniform float iTimeDelta; // time since last frame, in seconds
+uniform sampler2D iChannel0; // 2D, 3D or cubemap depending on selected input
+// likewise iChannel1, 2, 3
+
+Tabs which don't compile are highlighted red, and the viewport keeps running the last version which compiled.
+Sorry for no syntax highlighting! +
+
+ +
+
+
Common
+
Buffer A
+
Buffer B
+
Buffer C
+
Buffer D
+
Output image
+
Save/load
+
+ +
iChannel0:
iChannel1:
iChannel2:
iChannel3:
+ + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_and_anuril_another_neon_feedback_shader.html b/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_and_anuril_another_neon_feedback_shader.html new file mode 100644 index 000000000..e2b6c183b --- /dev/null +++ b/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_and_anuril_another_neon_feedback_shader.html @@ -0,0 +1,867 @@ + + + + +Shader jam + + + + + + + + +
+
+ Force resolution: + +
+ + +
+ Other global variables: +
uniform vec2 iResolution; // screen size in pixels. note: in Shader Toy this is vec3
+uniform float iTime; // time since beginning, in seconds
+uniform float iTimeDelta; // time since last frame, in seconds
+uniform sampler2D iChannel0; // 2D, 3D or cubemap depending on selected input
+// likewise iChannel1, 2, 3
+
+Tabs which don't compile are highlighted red, and the viewport keeps running the last version which compiled.
+Sorry for no syntax highlighting! +
+
+ +
+
+
Common
+
Buffer A
+
Buffer B
+
Buffer C
+
Buffer D
+
Output image
+
Save/load
+
+ +
iChannel0:
iChannel1:
iChannel2:
iChannel3:
+ + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_spiral_tunnel.html b/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_spiral_tunnel.html new file mode 100644 index 000000000..ae4cc0a2d --- /dev/null +++ b/shader_file_sources/2024_07_19_shader_jam_bornhack/immibis_spiral_tunnel.html @@ -0,0 +1,774 @@ + + + + +Shader jam + + + + + + + + +
+
+ Force resolution: + +
+ + +
+ Other global variables: +
uniform vec2 iResolution; // screen size in pixels. note: in Shader Toy this is vec3
+uniform float iTime; // time since beginning, in seconds
+uniform float iTimeDelta; // time since last frame, in seconds
+uniform sampler2D iChannel0; // 2D, 3D or cubemap depending on selected input
+// likewise iChannel1, 2, 3
+
+Tabs which don't compile are highlighted red, and the viewport keeps running the last version which compiled.
+Sorry for no syntax highlighting! +
+
+ +
+
+
Common
+
Buffer A
+
Buffer B
+
Buffer C
+
Buffer D
+
Output image
+
Save/load
+
+ +
iChannel0:
iChannel1:
iChannel2:
iChannel3:
+ + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/shader_file_sources/2024_07_19_shader_jam_bornhack/iron_spinning_circles.html b/shader_file_sources/2024_07_19_shader_jam_bornhack/iron_spinning_circles.html new file mode 100644 index 000000000..8ab96e719 --- /dev/null +++ b/shader_file_sources/2024_07_19_shader_jam_bornhack/iron_spinning_circles.html @@ -0,0 +1,928 @@ + + + + +Shader jam + + + + + + + + +
+
+ Force resolution: + +
+ + +
+ Other global variables: +
uniform vec2 iResolution; // screen size in pixels. note: in Shader Toy this is vec3
+uniform float iTime; // time since beginning, in seconds
+uniform float iTimeDelta; // time since last frame, in seconds
+uniform sampler2D iChannel0; // 2D, 3D or cubemap depending on selected input
+// likewise iChannel1, 2, 3
+
+Tabs which don't compile are highlighted red, and the viewport keeps running the last version which compiled.
+Sorry for no syntax highlighting! +
+
+ +
+
+
Common
+
Buffer A
+
Buffer B
+
Buffer C
+
Buffer D
+
Output image
+
Save/load
+
+ +
+ + + + + + + + + + + +
+ + + +
+ +
+
+
+
+ Title will be displayed alongside this shader. Include your name if you want to.
+ +
+ +
+ + Your shader as JSON for copy-pasting:
+ + +
+ Paste JSON here to load:
+ + + +
+ +
+ + + + \ No newline at end of file diff --git a/shader_file_sources/2024_07_19_shader_jam_bornhack/jn_Game_of_Life.html b/shader_file_sources/2024_07_19_shader_jam_bornhack/jn_Game_of_Life.html new file mode 100644 index 000000000..186f5056d --- /dev/null +++ b/shader_file_sources/2024_07_19_shader_jam_bornhack/jn_Game_of_Life.html @@ -0,0 +1,833 @@ + + + + +Shader jam + + + + + + + + +
+
+ Force resolution: + +
+ + +
+ Other global variables: +
uniform vec2 iResolution; // screen size in pixels. note: in Shader Toy this is vec3
+uniform float iTime; // time since beginning, in seconds
+uniform float iTimeDelta; // time since last frame, in seconds
+uniform sampler2D iChannel0; // 2D, 3D or cubemap depending on selected input
+// likewise iChannel1, 2, 3
+
+Tabs which don't compile are highlighted red, and the viewport keeps running the last version which compiled.
+Sorry for no syntax highlighting! +
+
+ +
+
+
Common
+
Buffer A
+
Buffer B
+
Buffer C
+
Buffer D
+
Output image
+
Save/load
+
+ +
+ + + + + + + + + + + +
+ + + +
+ +
+
+
+
+ Title will be displayed alongside this shader. Include your name if you want to.
+ +
+ +
+ + Your shader as JSON for copy-pasting:
+ + +
+ Paste JSON here to load:
+ + + +
+ +
+ + + + \ No newline at end of file diff --git a/shader_file_sources/2024_07_19_shader_jam_bornhack/unknown_fash2.html b/shader_file_sources/2024_07_19_shader_jam_bornhack/unknown_fash2.html new file mode 100644 index 000000000..72c34333c --- /dev/null +++ b/shader_file_sources/2024_07_19_shader_jam_bornhack/unknown_fash2.html @@ -0,0 +1,718 @@ + + + + +Shader jam + + + + + + + + +
+
+ Force resolution: + +
+ + +
+ Other global variables: +
uniform vec2 iResolution; // screen size in pixels. note: in Shader Toy this is vec3
+uniform float iTime; // time since beginning, in seconds
+uniform float iTimeDelta; // time since last frame, in seconds
+uniform sampler2D iChannel0; // 2D, 3D or cubemap depending on selected input
+// likewise iChannel1, 2, 3
+
+Tabs which don't compile are highlighted red, and the viewport keeps running the last version which compiled.
+Sorry for no syntax highlighting! +
+
+ +
+
+
Common
+
Buffer A
+
Buffer B
+
Buffer C
+
Buffer D
+
Output image
+
Save/load
+
+ +
iChannel0:
iChannel1:
iChannel2:
iChannel3:
+ + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/shader_file_sources/2024_07_19_shader_jam_bornhack/unknown_testbars.html b/shader_file_sources/2024_07_19_shader_jam_bornhack/unknown_testbars.html new file mode 100644 index 000000000..78e1c0c7f --- /dev/null +++ b/shader_file_sources/2024_07_19_shader_jam_bornhack/unknown_testbars.html @@ -0,0 +1,872 @@ + + + + +Shader jam + + + + + + + + +
+
+ Force resolution: + +
+ + +
+ Other global variables: +
uniform vec2 iResolution; // screen size in pixels. note: in Shader Toy this is vec3
+uniform float iTime; // time since beginning, in seconds
+uniform float iTimeDelta; // time since last frame, in seconds
+uniform sampler2D iChannel0; // 2D, 3D or cubemap depending on selected input
+// likewise iChannel1, 2, 3
+
+Tabs which don't compile are highlighted red, and the viewport keeps running the last version which compiled.
+Sorry for no syntax highlighting! +
+
+ +
+
+
Common
+
Buffer A
+
Buffer B
+
Buffer C
+
Buffer D
+
Output image
+
Save/load
+
+ +
iChannel0:
iChannel1:
iChannel2:
iChannel3:
+ + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/enfys-fieldfxmonday-1.lua b/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/enfys-fieldfxmonday-1.lua new file mode 100644 index 000000000..8587d6c44 --- /dev/null +++ b/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/enfys-fieldfxmonday-1.lua @@ -0,0 +1,137 @@ +vbank(0) +for i=0,3 do + a=0x3FC0+i*3 + v=i*255/15 + poke(a,v) + poke(a+1,(v/255)^0.1*64) + poke(a+2,v) +end +for i=4,7 do + a=0x3FC0+i*3 + v=i*255/15 + poke(a,(v/255)^0.8*255) + poke(a+1,(v/255)^0.3*64) + poke(a+2,(v/255)^0.3*64) +end +for i=8,11 do + a=0x3FC0+i*3 + v=i*255/15 + poke(a,(v/255)^0.3*255) + poke(a+1,v) + poke(a+2,(v/255)^0.1*128) +end +for i=12,15 do + a=0x3FC0+i*3 + v=i*255/15 + poke(a,(v/255)^1.1*64) + poke(a+1,(v/255)^2.1*48) + poke(a+2,v*4) +end + +vbank(1) +for i=0,3 do + a=0x3FC0+i*3 + v=i*255/15 + poke(a,v) + poke(a+1,(v/255)^0.1*64) + poke(a+2,v) +end +for i=4,7 do + a=0x3FC0+i*3 + v=i*255/15 + poke(a,(v/255)^0.8*255) + poke(a+1,(v/255)^0.3*64) + poke(a+2,(v/255)^0.3*64) +end +for i=8,11 do + a=0x3FC0+i*3 + v=i*255/15 + poke(a,(v/255)^0.3*255) + poke(a+1,v) + poke(a+2,(v/255)^0.1*128) +end +for i=12,15 do + a=0x3FC0+i*3 + v=i*255/15 + poke(a,(v/255)^1.1*64) + poke(a+1,(v/255)^2.1*48) + poke(a+2,v*4) +end + +sin=math.sin +function TIC() + cls(1) + t=time()/100 + vbank(0) + + rect(0,0,240,136,1) + for i=0,8 do + sv=sin(t/8+i/3)*48 + tweedbar2(sv) + end + + for i=0,8 do + sv=sin(t/8+i/4)*96 + tweedbar(sv) + end + + --tweedbar2(0) + + for j=0,136,2 do + for i=0,240,2 do + pix(i,j,7) + pix(i+1,j+1,7) + --pix(i+1,j+2,7) + --pix(i+1,j+3,7) + end + end + + vbank(1) + --cls(0) + rect(0,0,240,136,1) + for i=0,10 do + sv2=sin(i/16+t/4)*32 + tweedbar3(110-i*24+sv2) + end + for j=0,136,2 do + for i=0,240,2 do + pix(i,j,3) + pix(i+1,j+1,3) + end + end + + for i=0,16 do + rect(100+sin(i/3+t/7+sin(t/13))*128,48+sin(i/7+t/3+4)*48,40,40,0) + end + print(" I feel\nthe need,",40,16-math.abs(sin(t/4)*8),10,true,3) + print(" The need\nfor tweed!",30,96-math.abs(sin(t/4+1)*8),10,true,3) + + for i=0,15 do + --pix(i,0,i) + end +end + +function tweedbar(x) + rect(110+x,0,20,136,5) + rect(110+x,0,8,136,4) + rect(130+x,0,8,136,4) + + line(114+x,0,114+x,136,8) + line(134+x,0,134+x,136,8) + + rect(120+x,0,8,136,3) +end + +function tweedbar2(y) + rect(0,58+y,240,24,15) + rect(0,58+y,240,8,13) + rect(0,68+y,240,8,14) + rect(0,78+y,240,8,13) +end + +function tweedbar3(y) + rect(0,58+y,240,24,7) + rect(0,58+y,240,8,2) + rect(0,68+y,240,8,14) + rect(0,78+y,240,8,2) +end \ No newline at end of file diff --git a/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Catnip.glsl b/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Catnip.glsl new file mode 100644 index 000000000..4084c7c55 --- /dev/null +++ b/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Catnip.glsl @@ -0,0 +1,218 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define r2d(p,a) p=cos(a)*p + sin(a)*vec2(-p.y,p.x); +#define Eps 0.001 + +const float maxScale = 1024.; +const int steps = 4; +const float samples = 32.; + +vec3 hash(vec3 p) { + p = fract(p * vec3(443.537, 537.247, 247.428)); + p += dot(p, p.yxz + 19.19); + return fract((p.xxy + p.yxx) * p.zyx); +} + +float smin(float a, float b, float k) { + float h = clamp(.5 + .5 * (b-a)/k, 0., 1.); + return mix(b, a, h) - k * h * (1. - h); +} + +float lDist(vec3 p, vec3 a, vec3 b, float r) { + vec3 pa = p - a, ba = b - a; + float h = clamp(dot(pa, ba) / dot(ba, ba), 0., 1.); + return length(pa - ba * h) - r; +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float cat(vec2 p) { + p.x = abs(p.x); + vec2 q=p; + q.x = abs(q.x-.2); + q.y += q.x - .2; + float r = abs(q.y)<.05 && q.x<.15 ? 1. : 0.; + p.x -= .6; + p.y = abs(p.y) - .08; + r += abs(p.y)<0.03 && abs(p.x)<.15 ? 1. : 0.; + return r; +} + +float df(vec3 p, float t) { + vec3 c = hash(floor(p.xz / 6.).xyy); + t += c.x * 3.; + p.xz = mod(p.xz, 6.) - 3.; + //r2d(p.xz, c.y * 3.); + + p.y -= abs(sin(t)) - .5; + + // body + float d = lDist(p, vec3(0,.7,0), vec3(0), 0.4); + + // l1 + vec3 a = vec3(0,-.3,-.3), b = vec3(0,-.6, 0); + r2d(b.xy, sin(t)); + float e = lDist(p, a, a+b, 0.2); + d = smin(d, e, .2); + + // ll1 + a = a+b; + b = vec3(0, -.6, 0); + r2d(b.xy, sin(-t) / 4. - 1.); + e = lDist(p, a, a+b, 0.2); + d = smin(d, e, .2); + + + // l2 + a = vec3(0,-.3,.3); b = vec3(0,-.6, 0); + r2d(b.xy, sin(-t)); + e = lDist(p, a, a+b, 0.2); + d = smin(d, e, .2); + + // ll2 + a = a+b; + b = vec3(0, -.6, 0); + r2d(b.xy, cos(-t) / 2. - 1.); + e = lDist(p, a, a+b, 0.2); + d = smin(d, e, .2); + + // a1 + a = vec3(0, .6, -.4), b = vec3(.5, 0, 0); + r2d(b.xy, sin(-t) / 2. - 1.); + e = lDist(p, a, a+b, 0.15); + d = smin(d, e, .2); + + // a12 + a = a+b; + b = vec3(0, .6, 0); + r2d(b.xy, cos(-t) / 4. - 1.5); + e = lDist(p, a, a+b, 0.14); + d = smin(d, e, .2); + + // a2 + a = vec3(0, .6, .4), b = vec3(.5, 0, 0); + r2d(b.xy, sin(t) / 2. - 1.); + e = lDist(p, a, a+b, 0.15); + d = smin(d, e, .2); + + // a22 + a = a+b; + b = vec3(0, .6, 0); + r2d(b.xy, cos(t) / 4. - 1.5); + e = lDist(p, a, a+b, 0.14); + d = smin(d, e, .2); + + // head + p.xy -= vec2(.2, 1.3); + e = length(p) - .35; + d = smin(d, e, .1); + + p.z = abs(p.z); + e = length(p - vec3(.1, .3, .2)) - .1; + float f = length(p - vec3(.17, .3, .22)) - .1; + e = max(e, -f); + d = min(d, e); + + e = length(p - vec3(.25, -.75, .3)) - .15; + d = smin(d, e, .4); + return d; +} + +vec3 norm(vec3 p, float t) { + vec2 e = vec2(Eps, 0.); + return normalize(vec3( + df(p + e.xyy, t) - df(p - e.xyy, t), + df(p + e.yxy, t) - df(p - e.yxy, t), + df(p + e.yyx, t) - df(p - e.yyx, t) + )); +} + +vec3 light(vec3 n, vec3 dir) { + float h = dot(n, dir); + vec3 o = abs(h) < 0.6 ? vec3(1,.7,.3) : vec3(0); + //o = max(o, vec3(1, .7, .2) * dot(n, normalize(vec3(1,1,-1)))); + return o; +} + +vec4 rm(vec3 p, vec3 dir, float t) { + for (int i=0; i<100; i++) { + float d = df(p, t); + if (d < Eps) { + vec3 n = norm(p, t); + return vec4(light(n, dir), 1.); + } + p += dir * d; + } + return vec4(0.); +} + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 p = vec3(0, 0.5, -6), + dir = normalize(vec3(uv, 1.)); + //r2d(p.xz, time); + r2d(dir.xz, sin(time) / 3.); + p.x -= time; + //r2d(dir.yz, .5); + vec3 catC = vec3(0); +vec4 bkg = vec4(0.); + bool refine = true; + vec2 coords = gl_FragCoord.xy / 512. + time; + vec3 k; + for (float i=0.;i<10.;i++) { + //vec2 o = vec2(sin(i / 10.+time * 1.4284), cos(i/10.+time * 1.325)); + //o = pow(abs(o), vec2(7.)) * sign(o); + //catC[int(i)/3] += cat(uv + o / 4.) / 3.; + + if (refine) { + k = hash(floor(coords.xyy)); + if (k.x < .8) { + coords *= 2.; + } else { + break; + refine = false; + } + } + } + k = hash(k + floor(texture(texFFTIntegrated, 0.02).x / 2.) / 100.); + coords = gl_FragCoord.xy / v2Resolution.xy; + coords += (k.yz - .5) * 0.01;// * texture(texFFTSmoothed, k.x * .1).x; + //coords.x += 0.004; + bkg = texture(texPreviousFrame, coords); + //if (bkg.a == 1.) bkg.rgb = vec3(1.); + bkg.rgb *= hash(k) * .2 + .86; + + float t = time * 3. + k.z / 3.;// + texture(texFFTIntegrated, 0.001).x; + vec4 c2 = k.y > 0.5 ? rm(p, dir, t) : vec4(0.); + if (c2.a == 0.) { + c2.rgb = bkg.rgb; + } + out_color = c2; +} diff --git a/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Ciosai.glsl b/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Ciosai.glsl new file mode 100644 index 000000000..3be679c51 --- /dev/null +++ b/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_Ciosai.glsl @@ -0,0 +1,86 @@ +#version 410 core + +const float pi=acos(-1.); +const float tau=pi*2.; + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +/// 3 out, 3 in... +vec3 hash33(vec3 p3) +{ + p3 = fract(p3 * vec3(.1031, .1030, .0973)); + p3 += dot(p3, p3.yxz+33.33); + return fract((p3.xxy + p3.yxx)*p3.zyx); + +} + +float ease(float n){return smoothstep(0.,1.,smoothstep(0.,1.,n));} + +float level(vec2 p, float t) +{ + float val = step(.1,abs(length(p)-.4)); + float a=t*.6+atan(p.y,p.x)/tau+.5; + val+=step(.8,fract(a)); + + return smoothstep(0.,1.,1.-val); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + float t=fGlobalTime*1.3-hash33(vec3(gl_FragCoord.xy,0.)).x*.05; + + vec3 bg=vec3(.9,.9,.8); + vec3 pal[]=vec3[]( + vec3(.1,.02,.4), + vec3(.01,.4,.02), + vec3(.9,.001,.4) + ); + + uv+=vec2(t,t*.34)*.2; + + vec2 i_uv=floor(uv*2.); + vec2 f_uv=fract(uv*2.); + f_uv.y+=mod(i_uv.x,2.)*.5; + f_uv=fract(f_uv); + uv=f_uv*2.-1.; + + uv*=1.5; + + uv*=mat2(cos(-t),-sin(-t),sin(-t),cos(-t)); + + float f_t=fract(t); + float i_t=floor(t); + + + vec4 paint=vec4( + level(vec2(1.-ease(f_t),0)+uv*length(uv-hash33(vec3(i_t,0,0)).xy+sin(uv*vec2(74.,59.)-t*40.)*.1*mix(hash33(vec3(i_t,0,0)).x,hash33(vec3(i_t+1,0,0)).x,ease(f_t))),t), + level(vec2(0,1.-ease(f_t))+uv*length(uv-hash33(vec3(0,i_t,0)).xy+sin(uv*vec2(124.,39.)-t*20.)*.08*mix(hash33(vec3(0,i_t,0)).x,hash33(vec3(0,i_t+1,0)).x,ease(f_t))),t), + level(vec2(1.-ease(f_t))+uv*length(uv-hash33(vec3(0,0,i_t)).xy+sin(uv*vec2(23.,197.)-t*5.)*.01*mix(hash33(vec3(0,0,i_t)).x,hash33(vec3(0,0,i_t+1)).x,ease(f_t))),t), + 0); + paint.w=paint.x+paint.y+paint.z; + paint.xyz/=max(.0001,paint.w); + + vec3 col = (pal[0]*paint.x)+(pal[1]*paint.y)+(pal[2]*paint.z); + col=mix(bg,col,smoothstep(0.,1.,length(paint.xyz))); + + out_color=vec4(pow(max(col,0.),vec3(.454545)),1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_peregrine.glsl b/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_peregrine.glsl new file mode 100644 index 000000000..ab9e7a44d --- /dev/null +++ b/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/grabber_fieldfx_peregrine.glsl @@ -0,0 +1,165 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texCookie; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define PI 3.14159265358979 +#define TAU (2 * PI) +#define EPSILON .01 +#define MAX_DIST 50. + +#define FFT(f) texture(texFFTSmoothed, f).x +#define pos(x) ((x) * .5 + .5) +#define rot(a) mat2(cos(a), -sin(a), sin(a), cos(a)) +#define sat(x) clamp(x, 0., 1.) + +float t = fGlobalTime; + +vec3 cos_palette(vec3 a, vec3 b, vec3 c, vec3 d, float x) { + return a + b * cos(TAU * (c * x + d)); +} + +vec3 palette(float x) { + return cos_palette(vec3(pos(sin(t - PI/2)) * .5 + .5), + vec3(pos(sin(t)) * .5 + .5), + vec3(1., 1., .5), + vec3(.8, .9, .3), x); +} + +vec2 path(float x) { + return vec2(2 * sin(.2 * x), 2 * cos(.15 * x)); +} + +float sdf_gyroid(vec3 p, float scale) { + return dot(scale * sin(p), scale * cos(p.yzx)); +} + +float sdf(vec3 p) { + float d = MAX_DIST; + p.xy -= path(p.z); + p.xy *= rot(.1 * t); + + float period = mod(t/2, 4.); + float scale; + if (period >= 3.) + scale = pos(sin(.4 * t)) * .1 + .1; + else if (period >= 2.) + scale = pos(sin(.4 * t)) * .3 + .5; + else if (period >= 1.) + scale = pos(sin(.4 * t)) * .5 + .9 + .1 * pos(sin(t)); + else + scale = pos(sin(.4 * t)) * .3 + .5; + + + float tunnel = length(p.xy) - 3.; + tunnel += sin(.8 * p.x) * sin(.9 * p.y) * sin(.8 * p.z) * .1; + float gyr = sdf_gyroid(p, scale); + gyr = abs(gyr) - pos(sin(.5 * t)) * .2 - 1.1 * FFT(.01); + gyr = max(gyr, -tunnel); + d = min(d, gyr); + + return d; +} + +vec3 acc; +float trace(vec3 ro, vec3 rd, int steps) { + vec3 p = ro; + float td = 0.; + + acc = vec3(0.); + for (int i = 0; i < steps && td < MAX_DIST; i++) { + float d = sdf(p); + if (d < EPSILON) + return td; + acc += .08 * palette(p.z) * sat(p.y) * texture(texNoise, p.xz * .5 + t * .1).x; + p += d * rd; + td = distance(ro, p); + } + + return -1.; +} + +vec3 get_normal(vec3 p) { + vec2 e = EPSILON * vec2(-1, 1); + return normalize( + e.xyy * sdf(p + e.xyy) + + e.yxy * sdf(p + e.yxy) + + e.yyx * sdf(p + e.yyx) + + e.xxx * sdf(p + e.xxx) + ); +} + +float diffuse(vec3 p, vec3 n, vec3 lo) { + return max(0., dot(normalize(lo - p), n)); +} + +float specular(vec3 rd, vec3 n, vec3 lo) { + return pow(max(0., dot(normalize(rd + lo), n)), 128); +} + +vec3 get_camera(vec2 uv, vec3 ro, vec3 ta) { + vec3 f = normalize(ta - ro), + r = normalize(cross(vec3(0, 1, 0), f)), + u = cross(r, f); + return normalize(f + uv.x * r + uv.y * u); +} + +vec3 render(vec2 uv) { + vec3 ro = vec3(1, 1, 4. * t), + ta = ro + vec3(0, 0, 1); + ro.xy += path(ro.z); + ta.xy += path(ta.z); + vec3 rd = get_camera(uv, ro, ta); + vec2 swivel = path(ta.z); + rd.xy *= rot(swivel.x/32); + rd.yz *= rot(swivel.y/16); + vec3 lo = ta, + c = vec3(0); + + float td = trace(ro, rd, 128); + float depth = MAX_DIST; + vec3 acc_col = acc; + if (td > 0.) { + depth = td; + vec3 p = ro + rd * td, + n = get_normal(p); + c = palette(p.z * .1) * (diffuse(p, n, lo) + specular(rd, n, lo)); + vec3 ro_refl = p + 2. * EPSILON * n, + rd_refl = normalize(reflect(rd, n)); + float td_refl = trace(ro_refl, rd_refl, 64); + if (td_refl > 0.) { + vec3 p_refl = ro_refl + rd_refl * td_refl, + n_refl = get_normal(p_refl); + c += palette(p_refl.z * .1) * + (diffuse(p_refl, n_refl, lo) + specular(rd_refl, n_refl, lo)); + } + } + + c += acc_col * .5; + vec3 fog_col = palette(rd.y); + c = mix(fog_col, c, 1. - exp(-depth * 8.)); + return sat(c + acc_col); +} + +void main(void) { + vec2 uv = (2 * gl_FragCoord.xy - v2Resolution.xy) / v2Resolution.y; + vec3 c = render(uv); + out_color = vec4(c, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/roeltje-bytejam1.lua b/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/roeltje-bytejam1.lua new file mode 100644 index 000000000..e41326e71 --- /dev/null +++ b/shader_file_sources/2024_07_22_shader_byte_jam_monday_night_bytes/roeltje-bytejam1.lua @@ -0,0 +1,66 @@ +--hello this is Roeltje :D +--hyped for my first Byte Jam! +--shoutout to RaccoonViolet and +--all the other jammers! +W,H=240,136 +W2,H2=120,68 +sin,cos=math.sin,math.cos +rnd=math.random +min,max=math.min,math.max + +function circle(x,y,r,c,face,mirror) + circ(x,y,r,c) + + if face==true then + circ(x,y+3,r/5,0) + dy=ffts(0,100)*0.0+2 + circ(x,y+3-dy,r/5,c) + if ffts(0,100)>7 then + circ(x,y+3,r/5,0) + end + + + eye=ffts(0,100)*0.15+1 + l=x-3 + r=x+3 + + circ(l,y-3,eye,0) + circ(r,y-3,eye,0) + --rect(x-r/5,y+2-r/5,r/5*3,r/5,12) + end +end + +cls(1) +function TIC() + t=time()/1000 + + for y=0,136 do for x=0,240 do + c=pix(x+rnd(-3,3),y+rnd(0,1)) + if rnd()<0.5 then c=max(0,c-1) end + --if rnd()<0.1 then c=0 end + + + pix(x,y,c) + end end + + n=24 + for i=0,n do + --haha woops + tt=t+(i*sin(t)*0.1) + h=sin(tt*1.5)*sin(tt*0.325) + + size=900/(n+1) + r=ffts(size*i+50,size*(i+1)+50)*10 + + dx=sin(tt*0.5)*sin(tt*3.33) + local x=i*2.5+dx*50 + --x=x*(i/n) + + circle(W2+x,H2+h*50,10+r,i+2+tt,i==n,false) + circle(W2-x,H2+h*50,10+r,i+2+tt,i==n,true) + --circ(W2+i*6+dx*50,H2+h*50,10+r,i+2) + --circ(W2-i*6-dx*50,H2+h*50,10+r,i+2) + end + + --circ(120,68,fft(0,100),3) +end diff --git a/shader_file_sources/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_LittleTheremin.glsl b/shader_file_sources/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_LittleTheremin.glsl new file mode 100644 index 000000000..7471d888b --- /dev/null +++ b/shader_file_sources/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_LittleTheremin.glsl @@ -0,0 +1,111 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float PI=3.14; +float e=2.71828; + +float sdHex( in vec2 p, in float r ){ + const vec3 k = vec3(-0.866025404,0.5,0.577350269); + p = abs(p); + p -= 2.0*min(dot(k.xy,p),0.0)*k.xy; + p -= vec2(clamp(p.x, -k.z*r, k.z*r), r); + return length(p)*sign(p.y); +} +float sdBox( in vec2 p, in vec2 b ){ + vec2 d = abs(p)-b; + return length(max(d,0.0)) + min(max(d.x,d.y),0.0); +} +void rot(inout vec2 p, float a){ + p = cos(a)*p + sin(a)*vec2(-p.y,p.x); +} +float sum( in vec2 a) { + return a.x+a.y; +} +float sum( in vec3 a) { + return a.x+a.y+a.z; +} +float sum( in vec4 a) { + return a.x+a.y+a.z+a.w; +} +float sdEqTri( in vec2 p, in float r ){ + const float k = sqrt(3.0); + p.x = abs(p.x) - r; + p.y = p.y + r/k; + if( p.x+k*p.y>0.0 ) p = vec2(p.x-k*p.y,-k*p.x-p.y)/2.0; + p.x -= clamp( p.x, -2.0*r, 0.0 ); + return -length(p)*sign(p.y); +} + + +void main(void) +{ + float Gt=fGlobalTime; + float Ft=mod(texture(texFFTIntegrated,0.1).r*.5,PI); + float bm=pow(texture(texFFTSmoothed,0.001).r*5,2.0); + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + float reso=50+bm*3000; + uv=floor(uv*reso)/reso; + vec2 zom=uv; + vec2 zom2=uv; + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv*=.7; + // pol.x = r, .y = ang + vec2 uv_=uv; + vec2 pol=vec2(uv_.x*uv_.x+uv_.y*uv_.y,atan((uv_.y/uv_.x)/PI)); + pol=mod(pol+vec2(-Gt*.8,0),1.1); + zom-=.5; + zom*=1-bm*.5; + zom+=.5; + zom2-=.5; + zom2*=1+bm*.05; + zom2+=.5; + vec4 prev=texture(texPreviousFrame,zom); + vec4 prev2=texture(texPreviousFrame,zom2); + float d = abs((pol.x-.1)/(e*4)); + + float f = texture( texFFTSmoothed, exp(d) ).r ; + float f2 = texture( texFFTSmoothed, exp(abs(uv_.x*.7)/e) ).r*10 ; + rot(uv_,PI/2); + vec2 uu=abs(uv_)-vec2(0,.30); + float b = sdBox(uu,vec2(.2*f2,.4+f2)); + rot(uu,Gt*.1+Ft*3); + float he = sdHex(uu,.2+bm); + + vec4 t = vec4(0); + t = clamp( t, 0.0, 1.0 ); + if(abs(pol.y-f*2-abs(pol.x)) 0.5; + } + } + } + return edge; +} + +vec3 fb(vec2 uv) { + vec3 col = vec3(0); + for (int i=0; i<8; i++) { + vec3 tc = texture(texPreviousFrame, uv).rgb; + tc -= .5; + r2d(tc.xy, 0.2); + r2d(tc.xz, 0.2); + tc *= .9; + tc += .5; + col += tc; + + uv -= .5; + uv *= sin(texture(texFFTIntegrated, 0.01).x / 5.) * .02 + 1.; + r2d(uv, sin(texture(texFFTIntegrated, 0.01).x / 3.) * .03); + uv += .5; + } + return col / 8.; +} + +void main(void) { + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + float z = texture(texPreviousFrame, uv).w * zScale; + vec3 col = vec3(0); + + float tmp = 3.; + for (float x=0.; x<16.; x++) { + bool edge = getEdge(gl_FragCoord.xy - vec2(x * x * 2., 0.), v2Resolution.xy, z); + if (edge) col -= vec3(1,0,1) * tmp; + tmp *= 0.9 * min(1., texture(texFFT, gl_FragCoord.y / v2Resolution.y + time).r * 100.); + } + + col += fb(uv) * 0.98; + + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec3 p = vec3(0,0,-6), + dir = normalize(vec3(uv, 1.)); + tmp = length(uv); + float a = tmp * 2.5; + dir = -vec3(uv / tmp * sin(a), -cos(a)); + r2d(p.xy, time); + r2d(dir.xy, time); + r2d(p.xz, time); + r2d(dir.xz, time); + + vec4 d = rm(p, dir); + + if (d.w == maxDist) d.w = 0.1; + /*vec3 catC = vec3(0); + for (float i=0.;i<9.;i++) { + vec2 o = vec2(sin(i / 10.+time * 1.4284), cos(i/10.+time * 1.325)); + o = pow(abs(o), vec2(7.)) * sign(o); + catC[int(i)/3] += cat(uv + o / 4.) / 3.; + }*/ + out_color = vec4(d.xyz + col, d / zScale); +} diff --git a/shader_file_sources/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl b/shader_file_sources/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl new file mode 100644 index 000000000..73eb1bffe --- /dev/null +++ b/shader_file_sources/2024_08_12_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl @@ -0,0 +1,95 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +/* +* -- +* Surprise les potos ! +* -- + + + + + +WARNING : >>>> IT MIGHT FLASHES A LOT LATER IN THE JAM <<<< + +^^^^^^ +I TOLD YOU + + +C'EST QUOI LE BPM ? +*/ +float bpm = fGlobalTime*180/60.*3; +vec3 pcg3d(vec3 p){ + uvec3 q=floatBitsToUint(p)*1234567890u+1234567u; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + q^=q>>16u; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + return vec3(q)/float(-1u); +} +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 fuv = pcg3d(vec3(floor(uv.xy*20),floor(bpm*.25))); + float bbpm = floor(bpm)+smoothstep(.1,.9,fract(bpm+fuv.x*.1)); + float wheeee = tanh(sin(bbpm*.25)*5); + uv *= 1.5+.5*exp(-3*smoothstep(.1,.9,fract(bpm*.5))); + uv = erot(uv.xyy,vec3(0.,0.,1.),floor(wheeee*5)).xy; + fuv = pcg3d(floor(uv.xyx*20)); + vec3 col = vec3(0.); + + + float im=24.; + for(float i=0.;++i0.15 then + pix(x,y,math.max(0,c-1)) + end + end + end +end + +function star(y) + pix(math.random()*X,y,12) +end + +cls() + +function TIC() + vbank(0) + local t=time()*.001 + cls2() + + for i=1,5 do + star(math.random()*Y) + end + + SP(11,3000, 100+math.sin(t*5.142612)*10, 50+math.cos(t*3.7162)*12, math.sin(t*1.41735723/2.5)*50+50, t%360) + SP(3,3000, 110+math.cos(t*3.191281+800)*30, 80+math.sin(t*3.8122+4)*math.sin((t+2)*1.10001)*58*2, math.sin((t+801)*4.41735723/2.5)*50+50, (t*3*1.00003816+124)%360) + + + scroller(tx,(t*50)%2200, t, 15, X+41, 112) + scroller(tx,(t*50)%2200, t, 12, X+40, 110) + + vbank(1) + cls() + print("PotcFdk", + 6+math.sin(t*math.abs(math.sin(t*1))*20)*0.02, + 6+math.cos(t*math.abs(math.sin(t*1.112))*23)*0.019, + 12) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/Roeltje.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/Roeltje.lua new file mode 100644 index 000000000..5d8d18d47 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/Roeltje.lua @@ -0,0 +1,33 @@ +--Hi from Roeltje! +sin,cos=math.sin,math.cos +rnd=math.random +min,max=math.min,math.max + +cls() +function TIC() + vbank(0) + local t=time()/1000 + for y=0,135 do + for x=0,239 do + c=pix(x+rnd(-1,1),y) + --if rnd()<0.1 then c=max(c-3,0) end + if rnd()<0.001 then c=c~10 end + if rnd()<0.05 then c=0 end + pix(x,y,c) + end + end + + for i=0,50 do + tt=t+i*.05 + x=120+sin(tt*1.33)*sin(tt*0.55)*60 + y=68+sin(tt*0.88)*sin(tt*0.54)*40 + r=8+sin(tt*2)*7 + circ(x,y,10+r,10+((i+t)%10)) + end + + vbank(1) + cls() + local dy=sin(t*10)*2 + print("Hello Evoke!",23,59+dy,2,false,3) + print("Hello Evoke!",25,60+dy,4,false,3) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/aldroid.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/aldroid.lua new file mode 100644 index 000000000..eef90b2d0 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/aldroid.lua @@ -0,0 +1,36 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon + +ox=120 +oy=68 +a=0 + +function rrect(x1,y1,x2,y2,c) + sa=math.sin(a) + ca=math.cos(a) + rx1=ca*x1-sa*y1 + ry1=ca*y1+sa*x1 + rx2=ca*x2-sa*y1 + ry2=ca*y1+sa*x2 + rx3=ca*x1-sa*y2 + ry3=ca*y2+sa*x1 + rx4=ca*x2-sa*y2 + ry4=ca*y2+sa*x2 + tri(rx1+ox,ry1+oy,rx2+ox,ry2+oy,rx3+ox,ry3+oy,c) + tri(rx4+ox,ry4+oy,rx2+ox,ry2+oy,rx3+ox,ry3+oy,c) +end + +function TIC() +t=time()/800 +a = t+math.sin(t) +cls((a/math.pi-1) % 2 < 0.05 and 15 or 0) +for x=-15,15 do +for y=-15,15 do +rrect(x*10+math.sin(t+y)*10,y*10,x*10+8,y*10+8,2*(1+math.sin(x+y+t))) +end end +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug1.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug1.lua new file mode 100644 index 000000000..888151232 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug1.lua @@ -0,0 +1,48 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon + +function TIC() + cos=math.cos + sin=math.sin + max=math.max + min=math.min + local t=time()*.001 + local amt=math.floor(t*.6) + for y=0,135 do + for x=0,239 do + local dx=120-x + local pulse = 1/(t*2%1+.1) + local dy=68-y + --dy = dy+sin(dy/11+t)*cos(t*0.7)*4 + local d=(dx^2+dy^2)^.5 + local c=0 + if d<5 then + c=2.6+t + else + d=max(50,d) + local a=math.atan2(dy,dx) + local n=8 + c=100/d+sin(a*n+t)*0.6+t + end + c = math.floor(c%3)*3+1 + pix(x,y,c) + -- pix(x,y,8+math.sin(d*.1+a-t)*3) + end + end + + local text="foldr.moe" + for i=1,#text do + local y=75-math.abs(sin(t*3+i/3)*30) + for dx=-1,1 do for dy=-1,1 do + print(text:sub(i,i),30+i*16+dx,y+dy,dx+dy+1,false,3) + end end + + print(text:sub(i,i),30+i*16,y,12,false,3) + --print(text,x,y,12,false,3) + end +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug2.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug2.lua new file mode 100644 index 000000000..f5f1dba15 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug2.lua @@ -0,0 +1,73 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon + +function rnd(n) + return math.floor(math.random()*n) +end +function p(t,x,y,s) + print(t,x-1,y,0,false,s) + print(t,x+1,y,0,false,s) + print(t,x,y-1,0,false,s) + print(t,x,y+1,0,false,s) + print(t,x,y,12,false,s) + +end + +function TIC() + local t=time()*.002 + cos=math.cos sin=math.sin atan2=math.atan2 + min=math.min max=math.max + + local pal={4,3,5,1,12} + for yy=0,0 do + for x=0,239 do + c=0 + line(x,0,x,140,0) + for i=1,8 do + sx=60+5*i + mx=230-15*i + k=sin(t)+1.4 + h=(sin(t+x/sx)*.4+x/mx+i*k/14)*99-12 + -- if rnd(99)<3 then h=h+2-rnd(3) end + -- h=2*math.floor(h/2) + line(x,h,x,140,i) + --if h" or""),15,15,1) + minute = tstamp()/60%60 + hour = (tstamp()/3600+2)%24 + ts = ("%02d:%02d"):format(math.floor(hour),math.floor(minute)) + p("AUG 17 2024 "..ts, 15,115,1) + p(" foldr.moe", 170,15,1) + + poke(0x14604+62*8+0,2) + poke(0x14604+62*8+1,6) + poke(0x14604+62*8+2,14) + poke(0x14604+62*8+3,6) + poke(0x14604+62*8+4,2) + for y=0,135 do + if rnd(19)=1 then + return 1 + else + return 0 + end +end + +p={} +r=math.random +function addp(x,y) + p[#p+1]={x+r()*10-5,y+r()*10-5,r(),r(),r()} +end + +function step() + local new={} + for y=0,5 do + new[y+1]={} + for x=0,5 do + local n=alive(x,y)*9 + for dx=-1,1 do + for dy=-1,1 do + n=n+alive((x+dx+6)%6,(y+dy+6)%6) + end + end + if n==3 or n==12 or n==13 then + new[y+1][x+1]=1 + if grid[y+1][x+1]<1 then + new[y+1][x+1]=3 + end + else + new[y+1][x+1]=grid[y+1][x+1]*0.8 + if grid[y+1][x+1]>0.99 then + for j=1,5 do + addp((16*x-tt/4)%96+72,(16*y-tt/4)%96+20) + end + end + end + end + end + grid=new +end + +tt=0 +function TIC() + t=0 + rect(0,0,240,136,0) + for y=1,6 do + for x=1,6 do + if grid[y][x]<1 then + grid[y][x]=grid[y][x]*0.9 + end + s=7*math.sqrt(grid[y][x]) + elli((16*x-tt/4)%96+72, + (16*y-tt/4)%96+20,s,s, + (grid[y][x]*12)^2/12) + if grid[y][x]>1 then + grid[y][x]=math.sqrt(grid[y][x]) + end + end + for i=1,#p do + s=p[i][3]*5 + c=p[i][3]*15 + elli(p[i][1]+16,p[i][2]+16,s,s,c*c/16) + p[i][1]=p[i][1]-p[i][4]/3 + p[i][2]=p[i][2]-p[i][5]/3 + p[i][3]=p[i][3]-0.01 + end + + for i=1,#p do + if not p[i] then break end + if p[i][3]<0 then + p[i]=p[#p] + table.remove(p,#p) + end + end + + end + tt=tt+1 + if tt%16>14 then step() end + print("@chordbug",2,2) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug4.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug4.lua new file mode 100644 index 000000000..f5c12f4a5 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/chordbug4.lua @@ -0,0 +1,36 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon +cos=math.cos +for i=0,15 do + poke(0x3fc0+3*i,cos(1+i/3)*127+127) + poke(0x3fc1+3*i,cos(3+i/3)*127+127) + poke(0x3fc2+3*i,cos(5+i/3)*127+127) + --poke(0x3fc2+3*i,128) + --poke(0x3fc2+3*i,i*i) +end + +function TIC() + local t=time()*.0005 + local i = 0 + sin=math.sin cos=math.cos + for y=0,135,8 do + for x=0,239,6 do + c=sin(x/31+t)+cos(y/27-t*.8) + c=c+sin(x/42+t*2)+cos(y/17+t*1.4) + c=c*2 + rect(x,y,6,8,7+c) + i=math.floor(c%1*6)+1 + ch=(" evOKE"):sub(i,i) + if y>126 and x<76 then + ch=("chordbug 2024"):sub(x/6+1,x/6+1) + end + print(ch,x+1,y+1,8+c,false,1) + end + end + +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/enfys1.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/enfys1.lua new file mode 100644 index 000000000..878cf23da --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/enfys1.lua @@ -0,0 +1,18 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon +sin=math.sin +function TIC() + t=time()/100 + cls() + for y=0,135,2 do + for x=0,240,3 do + sv=sin(y/64+sin(x/43+t)+t/13)*sin(y/33+t/3)*32 + pix(x,y,sv%7) + end + end +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/enfys2.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/enfys2.lua new file mode 100644 index 000000000..0b0db2a5c --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/enfys2.lua @@ -0,0 +1,25 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon + +--enfys woz ere :3 + +rnd=math.random +function TIC() + cls() + for i=0,20 do + line(0,0+rnd()*30,240,0+rnd()*30,11) + line(0,30+rnd()*30,240,30+rnd()*30,1) + line(0,60+rnd()*30,240,60+rnd()*30,13) + line(0,90+rnd()*30,240,90+rnd()*30,1) + line(0,120+rnd()*30,240,120+rnd()*30,11) + end + for i=0,1 do + print("sorry mum",15+rnd()*4,28+rnd()*4+i*2,13-i,true,4) + print("i'm a catgirl",2+rnd()*4,78+rnd()*4+i*2,13-i,true,3) + end +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bouncing bytewall.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bouncing bytewall.lua new file mode 100644 index 000000000..3991382c3 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bouncing bytewall.lua @@ -0,0 +1,26 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /RaccoonViolet + +function TIC() + local t=time()*.001 + for y=0,135 do + for x=0,239 do + local dx=120-x + local dy=68-y + local d=(dx^2+dy^2)^.5 + local a=math.atan2(dy,dx) + pix(x,y,8+math.sin(d*.1+a-t)*3) + end + end + + local text="ByteWall!" + local x=50 + local y=75-math.abs(math.sin(t*3)*30) + print(text,x+1,y+1,15,false,3) + print(text,x,y,12,false,3) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bytewall ad.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bytewall ad.lua new file mode 100644 index 000000000..a044c3590 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - bytewall ad.lua @@ -0,0 +1,78 @@ +local T=0 +local M=math +local S=M.sin +local C=M.cos +local MAX=M.max +local PS_TITLE=nil +local PS_AT=nil +local PS_EVOKE=nil + + +function rgb(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end + +function BOOT() + PS_TITLE=getTextAsPs("ByteWall") + PS_AT=getTextAsPs("at") + PS_EVOKE=getTextAsPs("Evoke") + rgb(0,20,40,50) +end + +function TIC() + cls() + drawPs(PS_TITLE,110,30,4,2) + drawPs(PS_AT,65,50,2,3) + drawPs(PS_EVOKE,160,56,5,5) + sp=1+((T>>4)%2)*2 + spr(sp,20,62,14,3,0,0,2,2) + print("Know TIC-80?",80,70,12) + print("Want to party code?",80,80,12) + print("We need your effect!",80,90,12) + print("Play at the kiosk below",80,100,12) + + print("Idea & Install: RaccoonViolet ~ Code: jtruk",5,120,13) + print("Powered by Bytejammer",60,130,14) + T=T+1 +end + +function getTextAsPs(text) + cls() + local w=print(text,0,0,1) + local h=6 + local ps={} + for y=0,h-1 do + local pLine={} + for x=0,w-1 do + local c=pix(x,y) + if c>0 then + table.insert(ps,{x=x-w/2,y=y-h/2,c=c}) + end + end + end + return ps +end + +function rot(a,b,r) + return a*C(r)-b*S(r),a*S(r)+b*C(r) +end + +function drawPs(ps,ox,oy,sc,bc) + local csz=sc/2+1 + for i=1,#ps do + local p=ps[i] + local px=p.x + local py=p.y + px,py=rot(px,py,S(T*.02+px*.05+py*.05)*.2) + local dx=ox+sc*px + local dy=oy+sc*py + dx=dx+S(dx*.04+T*.06)*2 + dy=dy+S(dy*.04+T*.03)*2 + circ(dx+1,dy+1,csz,bc+p.c-1) + circ(dx,dy,csz,bc+p.c) + --rect(dx,dy,sc+1,sc+1,bc+p.c) + end +end diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - embossed-neon.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - embossed-neon.lua new file mode 100644 index 000000000..d33d7edf9 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - embossed-neon.lua @@ -0,0 +1,27 @@ +T=0 +M=math +S=M.sin +function TIC() + poke(0x3ffb,0) + cls() + style={ + {c=2,s=.3,m=1}, + {c=3,s=.2,m=1}, + {c=4,s=.1,m=1}, + {c=11,s=0,m=.9}, + {c=0,s=-.2,m=.7} + } + + local moveM=1+S(T*.004)*.1 + for i,s in ipairs(style) do + local dx,dy=i*s.m,i*s.s + for i=0,100 do + local x=120+S(i*moveM+T*0.016)*100 + local y=68+S(i+T*0.01)*50 + local sz=10*(1+s.s) + circ(x+dx,y+dy,sz,s.c) + end + end + + T=T+1 +end diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - grunge-spiral.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - grunge-spiral.lua new file mode 100644 index 000000000..0e0b04e52 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - grunge-spiral.lua @@ -0,0 +1,62 @@ +T=0 +M=math +S,C=M.sin,M.cos + +CAMX,CAMY,CAMZ=0,0,0 + +function rgb(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end + +function BDR(y) + vbank(0) + poke(0x3FF9,S(y*.2+T*.1)*3+S(y)*6) + local r=100+S(2+y*.4)*50+S(T*.1+y//8)*50 + rgb(0,r,0,0) + rgb(1,32,32,128) + rgb(2,128,32,32) + + vbank(1) + poke(0x3FF9,-S(y*.3+T*.1)*3) + rgb(1,64,64,128) + rgb(2,255,r,r) +end + +function TIC() + poke(0x3ffb,0) + local sp=10+S(T*.0002)*10 + local ofs=T*.2 + local nDots=50 + for v=0,1 do + vbank(v) + cls() + for i=0,nDots do + local a=i*sp + local x=S(a) + local y=C(a) + local z=(i-T*.1)%nDots + x,y,z=proj(x,y,z) + local sz=math.min(6*z^.5,20) + if v==1 then + x=x+z + y=y+z + end + circ((i+y+x+ofs*sp)%240,(i+y-x+ofs)%140,sz,1) + circ(x,y,sz,2) + end + end + T=T+1 +end + +function proj(x,y,z) + local projScale=2 + local zD=projScale/(z-CAMZ) + local pixScale=80 + return + 120+(x-CAMX)*zD*pixScale, + 68+(y-CAMY)*zD*pixScale, + zD +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - mosaic-mirage.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - mosaic-mirage.lua new file mode 100644 index 000000000..18d934bd6 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/jtruk - mosaic-mirage.lua @@ -0,0 +1,57 @@ +T=0 +M=math +S=M.sin + +function rgb(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end +function BOOT() + rgb(0,0,0,0) +end + +function BDR(y) + local tskew=S(T*.005)*.1 + for v=0,1 do + vbank(v) + local i=.4+v*.6 + for c=1,15 do + local xsh=S(y*tskew+T*.04)*30 + poke(0x3ff9,xsh) + local r=200+S(c*.1+T*.05+y*.04)*40 + local g=150+S(c*.1+T*.02+y*.03)*40 + local b=100 + if c==0 then + b=g + g=100 + end + rgb(c,r*i,g*i,b*i) + end + end +end + +function TIC() + poke(0x3ffb,0) + for v=0,1 do + vbank(v) + cls() + local s=100 + for i=0,s,7 do + for c=1,15 do + local w=(1+S(i*.01+T*.02)*.6)*.7 + local y=i+S(T*.06+v*1+c*.8)*2 + local x0=-w*(i+S(T*.04+v+c*.1)*5) + local x1=w*(i+S(T*.08+v*.2+c*.13)*5) + for x=x0,x1,10 do + local skew=S(T*.007)*x + local skew2=S(T*.005)*y + pix(120+x-skew2,y+skew,c) + end + end + end + end + + T=T+1 +end diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/pumpuli.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/pumpuli.lua new file mode 100644 index 000000000..40af1aa31 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/pumpuli.lua @@ -0,0 +1,121 @@ +-- hello and greetings from Finland ! + +W=240 +H=136 +cls() +STEP=4 +FBK=0 +abs=math.abs +min=math.min +max=math.max +rnd=math.random +sin=math.sin +flr=math.floor +function pal(i,r,g,b) + --sanity checks + if i<0 then i=0 end + if i>15 then i=15 end + --returning color r,g,b of the color + if r==nil and g==nil and b==nil then + return peek(0x3fc0+(i*3)),peek(0x3fc0+(i*3)+1),peek(0x3fc0+(i*3)+2) + else + if r==nil or r<0 then r=0 end + if g==nil or g<0 then g=0 end + if b==nil or b<0 then b=0 end + if r>255 then r=255 end + if g>255 then g=255 end + if b>255 then b=255 end + poke(0x3fc0+(i*3)+2,b) + poke(0x3fc0+(i*3)+1,g) + poke(0x3fc0+(i*3),r) + end +end + +function green(i) + local r,g,b=0,0,0 + b=min(255,i*10.2+20) + r=min(255,i*i*.5+(b/(16-i))*2) + g=min(255,i*i+i*2.5+20) + return {r,g,b} +end +function red(i) + local r,g,b=0,0,0 + b=min(255,i*8.2+20) + g=min(255,i*i*.5+(b/(16-i))*2) + r=min(255,i*i+i*8.5+20) + return {r,g,b} +end +c={} +for i =0,15 do + c=green(i) + pal(i,c[1],c[2],c[3]) +end +vbank(1) +for i =0,15 do + c=red(i) + pal(i,c[1],c[2],c[3]) +end +vbank(0) + +function subpix(i,a,f) + local p=peek4(i) + poke4(math.min(i-f,0x3fbf*2),math.max(p-a,0)) +end +function addpix(i,a,of) + local p=peek4(i-of) + poke4(math.min(i+of,0x3fbf*2),math.min(p+a,15)) +end +function flip() + if VBK==0 then + VBK=1 + for i =0,15 do + c=green(i) + pal(i,c[1],c[2],c[3]) + end + else + VBK=0 + for i =0,15 do + c=red(i) + pal(i,c[1],c[2],c[3]) + end + end +end + +function TIC() + t=time()//32 + b=fft(0.1)*20 + for i=0,W*H,STEP do + subpix(i-t%STEP,b,-1+flr(b)) + end + for y=0,H do + for x=0,W do + X=x/W-.5 + Y=y/H-.5 + d=abs(X*W/(1+sin(t))) + f=fft(d)*(2+d*.2) + if f>abs(Y) then + subpix(x+y*W,-3-f,0) + else + if (t/4)%3==0 then + subpix(x+y*W,1,W) + elseif (t/4)%3==1 then + subpix(x+y*W,1,0) + else + subpix(x+y*W,1,-W) + end + end + end + end +end + + +function BDR(i) + local ii=abs(H/2-i)*.4 + sn=fft(200,280)*100 + if sn>0.3 then + flip() + end + local ft=fft(ii,ii+2)*(11-sn) + poke(0x3FF9,ft*2) + --poke(0x3FF8,ft*4) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/rubix.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/rubix.lua new file mode 100644 index 000000000..bdd6adcc1 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/rubix.lua @@ -0,0 +1,41 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon +sin=math.sin +cos=math.cos +function TIC() + local t=time()*.001 + for y=0,135 do + for x=0,239 do + local dx=120-x + local dy=68-y + local d=(dx^2+dy^2)^.5 + local a=math.atan2(dy,dx) + d = math.sin(d*.1) + local c = math.sin(d*.1+a-t)*13 + + tt = t + a + dx2 = cos(tt) * dx + sin(tt) * dy + dy2 = cos(tt) * dy + sin(tt) * dx + dy=dy2 + dx=dx2 + + local z = 2 + math.sin(t*4) + dx = dx * z / 3 + dy = dy * z / 3 + c = math.sin(dx*.03+a+cos(t*3.2)) + +math.sin(dy*.03+a+sin(t*2)) + pix(x,y,c*16) + end + end + + local text="rubix" + local x=-150+cos(t)*300 + local y=-175-math.sin(t)*300 + print(text,x+1,y+1,15,false,3) + print(text,x,y,12,false,3) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox1.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox1.lua new file mode 100644 index 000000000..c6a681e1e --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox1.lua @@ -0,0 +1,26 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon + +function TIC() + local t=time()*.001 + for y=0,135 do + for x=0,239 do + local dx=120-x + local dy=68-y + local d=(dx^12+dy^12)^.5 + local a=math.atan2(dy,dx) + pix(x,y,8+math.sin(d*.1+a-t)*3) + end + end + + local text="ByteWall!" + local x=50 + local y=75-math.abs(math.sin(t*3)*30) + print(text,x+1,y+1,15,false,3) + print(text,x,y,12,false,3) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox2.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox2.lua new file mode 100644 index 000000000..4bc9c38f2 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox2.lua @@ -0,0 +1,26 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon + +function TIC() + local t=time()*.001 + for y=0,135 do + for x=0,239 do + local dx=120-x + local dy=68-y + local d=(dx^12+dy^12)^.5 + local a=math.atan2(dy,dx) + pix(x,y,18+math.sin(d*.1+a-t)*3) + end + end + + local text="ByteWall!" + local x=50 + local y=75-math.abs(math.sin(t*3)*30) + print(text,x+1,y+1,15,false,3) + print(text,x,y,12,false,3) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox3.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox3.lua new file mode 100644 index 000000000..4df0ce646 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox3.lua @@ -0,0 +1,30 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon + + +function triSin(x) +return (math.sin(x)+math.sin(x*2)+math.sin(x*4))/3 +end +function TIC() + local t=time()*.001 + for y=0,135 do + for x=0,239 do + local dx=120-x + local dy=68-y + local d=(dx^8+dy^2)^.25 + local a=math.atan2(dy,dx) + pix(x,y,8+triSin(d*.1+a-t)*3) + end + end + + local text="Abusinus!" + local x=35 + local y=75-math.abs(math.sin(t*3)*30) + print(text,x+1,y+1,15,false,3) + print(text,x,y,12,false,3) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox4.lua b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox4.lua new file mode 100644 index 000000000..88b2312f2 --- /dev/null +++ b/shader_file_sources/2024_08_16_byte_jam_byte_wall_evoke/trifox4.lua @@ -0,0 +1,63 @@ +-- Welcome to the Evoke ByteWall! +-- Please delete this code and play. +-- +-- Any issues? Find Violet =) +-- +-- Have fun! +-- /jtruk + /VioletRaccoon + +function TIC() + local t=time()*0.001 + local x0=-0.75 + local y0=0 + local r=math.sin(t)^8+1.4 + local a=t + local rr=r*math.cos(a)/68 + local ri=r*math.sin(a)/68 + for y=0,135 do + for x=0,239 do + local dx=x-120 + local dy=y-68 + local cr=dx*rr-dy*ri+x0 + local ci=dy*rr+dx*ri+y0 + local dr=-1 + local di=0 + local zr=0 + local zi=0 + local n=25 + local i=0 + for j=0,n do + if j < 10 then + local t2 = zr*zr-zi*zi+cr + zi = 2*zi*zr+ci + zr = t2 + else + local t2 = zr*zr-zi*zi+dr + zi = 2*zr*zi+di + zr = t2 + end + + if j>10 and j<20 then + zi=zi+math.sin(i*0.01+-t*3)*.5 + zr=zr+math.cos(i*0.01+t*2)*.5 + end + + if zr*zr + zi*zi > 16 then + break + end + i = j + end + local c = 0 + if i < n then + c = i + end + pix(x,y,c) + end + end + + local text="Mulia" + local x=35 + local y=75-math.abs(math.sin(t*3)*30) + print(text,x+1,y+1,15,false,3) + print(text,x,y,12,false,3) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/catnip.lua b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/catnip.lua new file mode 100644 index 000000000..dbcc03b83 --- /dev/null +++ b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/catnip.lua @@ -0,0 +1,150 @@ +-- pos: 0,0 +sin=math.sin +cos=math.cos +abs=math.abs +pi=math.pi +rand=math.random +max=math.max + +for i=0,15 do + if i==15 then + poke(16320+i*3+0,255) + poke(16320+i*3+1,200) + poke(16320+i*3+2,0) + else + poke(16320+i*3+0,i*8) + poke(16320+i*3+1,i*8) + poke(16320+i*3+2,i*7.5) + end +end +vbank(1) +for i=0,15 do + if i==15 then + poke(16320+i*3+0,255) + poke(16320+i*3+1,200) + poke(16320+i*3+2,0) + else + poke(16320+i*3+0,i*8) + poke(16320+i*3+1,i*8) + poke(16320+i*3+2,i*7.5) + end +end + +t=0 + +function cl() + --if fft(0,10)<0.7 then + --memcpy(0,120,16320-120) + --for i=0,5000 do + --pix(rand()*240, rand()*136,0) + --end + for y=0,135 do + for x=t%2,240,2 do + pix(x,y,max(0,pix(x,y)+rand()*2-1)) + end + end + --else + --cls() + --end +end + +bt=0 + +function owl() + -- now draw the rest of the fucking + -- owl + + -- wings + local y=sin(t/12+.1)*30+60 + local yo=cos(t/12) + local yt=0 + for i=0,17 do + --local sx=6-(i/17)*2 + local x=36+i*4 + local yp=y-yt + yt=i<10 and yt+yo or yt+yo*3 + local h=abs(i-10) --10..0..7 + h=(10-h)/20+.5 + for j=0,8 do + elli(120-x,yp+4-j*2*h,6,4,1+j*1.5) + elli(120+x,yp+4-j*2*h,6,4,1+j*1.5) + end + end + + -- body + y=sin(t/12-.1)*30+60 + elli(120,y+5,36,23,10) + + -- head + y=sin(t/12)*30+60 + elli(120,y,30,20,14) + elli(120-10,y-5,5,5,15) + elli(120+10,y-5,5,5,15) + elli(120-10,y-5,3,3,0) + elli(120+10,y-5,3,3,0) + tri(120,y+10,120-4,y,120+4,y,5) + tri( + 120-10,y-15, + 120-15,y-13, + 120-27,y-30, + 12) + tri( + 120-15,y-13, + 120-19,y-12, + 120-28,y-30, + 10) + tri( + 120+10,y-15, + 120+15,y-13, + 120+27,y-30, + 12) + tri( + 120+15,y-13, + 120+19,y-12, + 120+28,y-30, + 10) + --for i=0,15 do + --rect(i*10,0,10,10,i) + --end +end +vbank(0) +cls() + +function TIC() + vbank(0) + memcpy(0,0x4000,16320) + + + vbank(1) + local p0={x=sin(bt/25)*4,y=sin(bt/26)*4} + local p1={x=240+sin(bt/27)*4,y=sin(bt/28)*4} + local p2={x=sin(bt/29)*4,y=136+sin(bt/30)*4} + local p3={x=240+sin(bt/31)*4,y=136+sin(bt/32)*4} + ttri( + 0,0, + 240,0, + 0,136, + p0.x,p0.y, + p1.x,p1.y, + p2.x,p2.y, + 2) + ttri( + 240,0, + 0,136, + 240,136, + p1.x,p1.y, + p2.x,p2.y, + p3.x,p3.y, + 2) + cl() + local b=fft(0,10) + --print("=^^=",5,50-b*30,12,0,10) + owl() + memcpy(0x4000,0,16320) + t=t+1.5 + bt=bt+fft(5,10) +end + +function SCN(y) + --poke(0x3FF9,fft(y,y+10)*50) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/enfys.lua b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/enfys.lua new file mode 100644 index 000000000..e69de29bb diff --git a/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/g33kou.lua b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/g33kou.lua new file mode 100644 index 000000000..3c4a7da91 --- /dev/null +++ b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/g33kou.lua @@ -0,0 +1,46 @@ +-- pos: 0,0 +b={ +x=120, +y=68, +vx=0.5, +vy=0.5, +s=16, +} +p={} +pp=1 +c=1 +function TIC() + t=time()//32 + -- ball + b.x = b.x+b.vx*b.s + b.y = b.y+b.vy*b.s + if b.x>230 or b.x<10 then + b.vx = -b.vx + end + if b.y>126 or b.y<10 then + b.vy = -b.vy + end + r=math.min(fft(0,20)*3,10) + -- color + if fft(100,300) > 2 then -- tune fft for color here + c=c+1 + end + if c%16==0 then c=1 end + -- tail + p[pp] = {x=b.x, y=b.y, r=r, c=c} + pp=pp+1 + if pp>300 then pp=1 end + -- draw + cls() + for _,v in ipairs(p) do + circb(v.x,v.y,v.r,v.c) + end + circ(b.x,b.y,r,c) + circb(b.x,b.y,r,c+1) + -- angle + if t~=0 and t%1000==0 then + a = math.random()*3.14 + b.vx = math.cos(a) + b.vy = math.sin(a) + end +end diff --git a/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/henearxn.lua b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/henearxn.lua new file mode 100644 index 000000000..677473f62 --- /dev/null +++ b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/henearxn.lua @@ -0,0 +1,86 @@ +-- pos: 4,85 +sin=math.sin +cos=math.cos +t=0 + +h={0,0,0,0,0,0,0,0} +cls(0) +function BOOT() + for i=-255,255 do +-- line(i,bl,i,bl-fft(i)*100,0) + h[math.floor(i)]=0. + end +end +c=0 +t=0 + x=1 + y=1 + + xd=1 + yd=1 +function TIC() + vbank(1) + cls(0) + if t%100<80 then + cprint("BYTEJAM",120,136/2,8,5) + end + + vbank(0) + + +-- cls(13) +-- spr(1+t%60//30*2,x,y,14,3,0,0,2,2) + t=t+1 + bl=y + for i=0,47 do + poke(16320+i,sin(i)^2*255) + end + for i=0,150 do + xx=math.random(0,240) + yy=math.random(0,136) + pix(xx,yy,0) + end + scale=50 + for i=0,240 do + f=fft((i-x)%240) + if f>0.01 then + line(i,bl+f*scale, + i,bl-f*scale,t) + end +-- h[i]=0. + end + if y>136 then yd=-1 end + if y<0 then yd=1 end + if x>240 then xd=-1 end + if x<0 then xd=1 end + --circ(x,y,5,0) + x=x+xd + y=y+yd +end + +function b() + x0=120 + y0=140--(140-t)%(136+50) + steps=41 + div=(20+math.sin(t/100)*10) + r=40 + vbank(1) + for i=-steps/2,steps/2 do + id=i/div + ip=i+steps//2 + f=fft(255/steps*ip,255/steps*(ip+1)) + f=f+1 + +-- print(diff) + c=7 + line(x0+sin(id)*r,y0-cos(id)*r, + x0+sin(id)*(r+f*30),y0-cos(id)*(r+f*30) + ,t//10) +-- h[ip]=p + end +end + +function cprint(text,x,y,c,s) + width=print(text,0,-200,c,false,s) + print(text,x-width/2,y,c,false,s) +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/jtruk.lua b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/jtruk.lua new file mode 100644 index 000000000..ba2b1377b --- /dev/null +++ b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/jtruk.lua @@ -0,0 +1,203 @@ +-- pos: 0,0 +local M=math +local S,C,A,R=M.sin,M.cos,M.abs,M.random +local MIN,MAX,PI=M.min,M.max,M.pi +local TAU=2*PI +local CAMX,CAMY,CAMZ=0,0,0 + +local GRAB={} + +function BOOT() + vbank(1) + rgb(0,0,0,0) + rgb(1,255,0,0) + rgb(2,0,255,255) + rgb(3,255,255,255) +end + +function rgb(i,r,g,b) + local a=16320+i*3 + poke(a,r) + poke(a+1,g) + poke(a+2,b) +end + +T=0 +function TIC() + local ofs1=TAU*.33 + local ofs2=TAU*.67 + local objs={{ + m="heart", + x=S(T*.01)*5,y=0,z=4+C(T*.01)*2, + rx=T*.04,ry=T*.05,rz=T*.03, + },{ + m="heart", + x=S(ofs1+T*.01)*5,y=0,z=4+C(ofs1+T*.01)*2, + rx=T*.04,ry=T*.05,rz=-T*.03, + },{ + m="heart", + x=S(ofs2+T*.01)*5,y=0,z=4+C(ofs2+T*.01)*2, + rx=T*.04,ry=T*.05,rz=-T*.03, + },{ + m="two-rings", + x=0,y=0,z=2, + rx=0,ry=T*.02,rz=T*.03, + }} + + local txt1="jtruk" + local txt2="Put your 3D glasses on now" + + for e=0,1 do + vbank(e) + cls() + local c=1+e + local xsh=e*8 + for i=1,#objs do + local o=objs[i] + local prims=nil + if o.m=="heart" then + prims=getPrimsHeart() + elseif o.m=="two-rings" then + prims=getPrimsTwoRings() + end + + local tr={x=0,y=0,z=2} + prims=movePrims(prims, + o.rx,o.ry,o.rz,{ + x=o.x,y=o.y,z=o.z, + }) + drawPrims(prims,c,xsh) + end + + local sep=S(T*.08)*2 + if e==0 then + print(txt1,202+sep,128,1) + print(txt2,5-sep,128,1) + grab() + cls() + else + print(txt1,202-sep,128,2) + print(txt2,5+sep,128,2) + mix() + end + end + + T=T+1 +end + +function grab() + for i=0,16319 do + GRAB[i]=peek(i) + end +-- for i=0,32639 do +-- GRAB[i]=peek4(i) +-- end +end + +function mix() + for i=0,16319 do + poke(i,GRAB[i]|peek(i)) + end +-- for i=0,32639 do +-- poke4(i,GRAB[i]|peek4(i)) +-- end +end + +function getPrimsRing() + local prims={} + local steps=50 + for i=1,steps do + local a=i/steps*TAU + prims[#prims+1]={ + x=S(a), + y=C(a), + z=0, + r=3, + } + end + return prims +end + +function getPrimsTwoRings() + local prims={} + local steps=100 + for i=1,steps do + local a=i/steps*TAU + prims[#prims+1]={ + x=S(a), + y=C(a)+.5, + z=0, + r=3, + } + + prims[#prims+1]={ + x=0, + y=C(a)-.5, + z=S(a), + r=3, + } + end + return prims +end + +function getPrimsHeart() + local prims={} + local steps=100 + local sc=.07 + for i=1,steps do + local a=i/steps*TAU + prims[#prims+1]={ + x=sc*(16*S(a)^3), + y=sc*(13*C(a)-5*C(2*a)-2*C(3*a)-C(4*a)), + z=0, + r=5, + } + end + return prims +end + + +function drawPrims(prims,c,xsh) + for i=1,#prims do + local prim=prims[i] + local p=proj(prim,xsh) + if p.z>0 then + local r=MIN(80,p.r*p.z) + circ(p.x,p.y,r,c) + end + end +end + +function movePrims(prims,rx,ry,rz,tr) + for i=1,#prims do + local p=prims[i] + local x,y=r(p.x,p.y,rz) + local x,z=r(x,p.z,ry) + local y,z=r(y,z,rx) + prims[i]=trans({x=x,y=y,z=z,r=p.r},tr) + end + return prims +end + +function r(a,b,r) + return a*C(r)-b*S(r),a*S(r)+b*C(r) +end + +function trans(p,t) + return { + x=p.x+t.x, + y=p.y+t.y, + z=p.z+t.z, + r=p.r + } +end + +function proj(p,xsh) + local zD=2/(p.z-CAMZ) + return { + x=120+(p.x-CAMX)*zD*30+xsh*zD, + y=68+(p.y-CAMY)*zD*30, + z=zD, + r=p.r, + } +end \ No newline at end of file diff --git a/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/lynn.lua b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/lynn.lua new file mode 100644 index 000000000..b3dfba737 --- /dev/null +++ b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/lynn.lua @@ -0,0 +1,34 @@ +-- pos: 0,0 +v={} +d=0 +function TIC() T=time()*2.083/1000 +d=d+1 +if d==2 then +d=0 +l="" +for i=0,fft(10,10+30)*9 do +ch=string.char(math.floor(fft(i,i+30)+61)) +l=l..ch +end +table.insert(v,1,l) +if #v>20 then table.remove(v,20) end + +end +c=math.cos s=math.sin +cls(12) +for y=1,17 do +print(v[y],4,y*8-4,13) +end +for t=0,6280 do +b=30+c(t*0.05+T*0.5)*5 +m=0 +for i=0,3 do + m=m+s(t*0.01*(6-i)+i+T)*fft(i+1,i+10)*5 +end +for k=0,3 do +local n=b+k*m/4+fft(20,30)*10 +x=c(t*0.01)*n+120 +y=s(t*0.01)*n+65 +pix(x,y,k+13) +end +end end diff --git a/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/stormcaller.lua b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/stormcaller.lua new file mode 100644 index 000000000..85996e448 --- /dev/null +++ b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/stormcaller.lua @@ -0,0 +1,84 @@ +-- pos: 0,0 +wgl=0 +clk=0 +txtclr=0 +mov=1 +wglr=0 +movr=1 + +function TIC() + +t=time()//32 +fftvar=fft(3,10)+2 + +for y=0,136 do for x=0,240 do +pix(x,y,(x^2+y^2+t)>>5) +end end + + +clk=clk+1 +if clk%30==0 then + txtclr=math.random(0,15) + end + +-- text doofer + +print('Patarty!',60-2*fftvar,28,txtclr,false,3) + +-- wiggler + +wgl=wgl+mov +if wgl>5 then + mov=-mov + end +if wgl<0 then + mov=-mov + end + +-- wiggler2 + +wglr=wglr+movr +if wglr>10 then + movr=-movr + end +if wglr<0 then + movr=-movr + end + + +-- Patarto + +circ(120,68+wgl,12,4) +circ(119,74+wgl,12,4) +circ(119,80+wgl,12,4) +circ(118,86+wgl,12,4) +circ(125,68+wgl,3,0) +circ(115,68+wgl,3,0) +pix(126,67+wgl,3,12) +pix(116,67+wgl,3,12) +circ(113,76+wgl,3,3) +circ(124,82+wgl,3,3) +circ(127,80+wgl,3,3) +circ(110,89+wgl,3,3) + +-- patomatos + +circ(50,90-wgl,15+2*fftvar,2) +circ(45,85-wgl,2*fftvar,12) +circ(55,85-wgl,2*fftvar,12) +pix(46,85-wgl,0) +pix(54,85-wgl,0) + + +circ(190,90-wgl,15+2*fftvar,2) +circ(185,85-wgl,2*fftvar,12) +circ(195,85-wgl,2*fftvar,12) +pix(186,85-wgl,0) +pix(194,85-wgl,0) + +print('I have no idea what Im doing',50,115,txtclr,false,1) + + + + +end diff --git a/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/vurpo.lua b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/vurpo.lua new file mode 100644 index 000000000..9e89a9851 --- /dev/null +++ b/shader_file_sources/2024_08_26_byte_jam_monday_night_bytes/vurpo.lua @@ -0,0 +1,61 @@ +-- pos: 0,0 +-- greetings to +-- jtruk henearxn g33kou catnip +-- lynn stormcaller enfys +-- aldroid pumpuli +-- and everyone watching + +-- from vurpo +-- this is a jumalauta demo victory lap!!! + +m=math +int=m.floor + +function BOOT() + cls(0) +end + +n=20 +s=32 + +f=0 +fm=30 + +tx=0 +ty=0 +ti=1 + +text={"too late","too late","it's not","too late"} + +function TIC() + t=time() + for x=0,240 do for y=0,136 do + if m.random() > 0.8 then + pix(x,y,0) + end + end end + + for i=0,n do + z=(i+(0.007*t%1))/(n/1.5707) + d=20*m.tan(z) + wx=(d*0.5+20)*0.55*m.sin(2*z-0.006*t) + wy=(d*0.5+20)*0.55*m.cos(3*z-0.004*t) + for j=0,s do + a=j*(6.2832/s)+3*z + circ(120+wx+d*m.cos(a), 68+wy+d*m.sin(a), d/20, d/7+j%16) + end + end + f=(f+1)%fm + if f==0 then + tx=m.random()*40-85 + ty=m.random()*40-30 + ti=ti+1 + if ti>4 then ti=1 end + end + if f<5 then + for x=-1,1 do for y=-1,1 do + print(text[ti],120+tx+x,68+ty+y,0,false,3) + end end + print(text[ti],120+tx,68+ty,12,false,3) + end +end diff --git a/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_CIOSAI_tw.glsl b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_CIOSAI_tw.glsl new file mode 100644 index 000000000..4f10ccc9c --- /dev/null +++ b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_CIOSAI_tw.glsl @@ -0,0 +1,118 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define U gl_FragCoord.xy +#define R vec2(v2Resolution.xy) +#define T fGlobalTime + +#define pi acos(-1.) +#define tau (acos(-1.)*2.) + + +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + +vec3 hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +vec3 rgb2hsv(vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + + +// hashes +uint seed = 12512; +uint hashi( uint x){ + x ^= x >> 16;x *= 0x7feb352dU;x ^= x >> 15;x *= 0x846ca68bU;x ^= x >> 16; + return x; +} + +#define hash_f_s(s) ( float( hashi(uint(s)) ) / float( 0xffffffffU ) ) +#define hash_f() ( float( seed = hashi(seed) ) / float( 0xffffffffU ) ) +#define hash_v2() vec2(hash_f(),hash_f()) +#define hash_v3() vec3(hash_f(),hash_f(),hash_f()) +#define hash_v4() vec3(hash_f(),hash_f(),hash_f(),hash_f()) +void store_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + // no clue why it wants ivec4() here... + imageStore(computeTex[0], px_coord, ivec4(quant_col.x)); + imageStore(computeTex[1], px_coord, ivec4(quant_col.y)); + imageStore(computeTex[2], px_coord, ivec4(quant_col.z)); +} + +void add_to_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + imageAtomicAdd(computeTex[0], px_coord, quant_col.x); + imageAtomicAdd(computeTex[1], px_coord, quant_col.y); + imageAtomicAdd(computeTex[2], px_coord, quant_col.z); +} + +vec3 read_pixel(ivec2 px_coord){ + return 0.001*vec3( + imageLoad(computeTexBack[0],px_coord).x, + imageLoad(computeTexBack[1],px_coord).x, + imageLoad(computeTexBack[2],px_coord).x + ); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + ivec2 coord = ivec2(gl_FragCoord.xy); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + seed = coord.y*1920+coord.x; + + float REP = abs(floor(sin(T*.2)*sin(T+3.3)*6.+cos(T*.3)))+1.; + + float ang = floor(length(uv)*6.+1.); + uv*=rot(mix(0.,sign(mod(ang,2.)-.5)*ang,pow(fract(T),3.)/pow(ang,2.))); + + vec2 f_uv=fract(uv*REP)*2.-1.; + vec2 i_uv=floor(uv*REP); + if(int(i_uv.x+i_uv.y)%2==0){f_uv.y+=1.;} + if(int(i_uv.x+i_uv.y)%2==1){i_uv.y-=1.;} + f_uv *= -log(1.+length(f_uv))*2.; + + vec3 co; + + for(int i=0; i<8; i++){ + vec2 q=f_uv; + q*=sin((i_uv.y*REP/2.+i_uv.x)*.88456)*rot(i*cos(T)+smoothstep(0.,1.,fract(T))+floor(T)); + co=mix(co,hsv2rgb(vec3((i_uv.y*REP/2.+i_uv.x)*.48456+i*.03+floor(T)*.2871,.7,sign(sin(i*2.378))*.4+.5)),step(0.,max(abs(q.x),abs(q.y))-3.*float(i)/8.)); + } + + out_color.rgb = co; +} \ No newline at end of file diff --git a/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl new file mode 100644 index 000000000..13df505b3 --- /dev/null +++ b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl @@ -0,0 +1,104 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +mat2 rot(float a) { + return mat2(cos(a), -sin(a), sin(a),cos(a)); +} + +vec2 n2(vec2 uv) { + vec3 p = vec3(uv.x*342.12,uv.y*324.21,(uv.x+uv.y)*346.12); + p = mod(p,vec3(3,5,7)); + p += dot(p,p+34); + return fract(vec2(p.x+p.z,p.y+p.z)); +} + +vec3 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec3( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25); +} + + + +vec3 bricks(vec2 uv) { + float r = floor(uv.y/3.14+fGlobalTime); + float bp = smoothstep(1.9,1.91,n2(vec2(r,17)).x*10+sin(uv.x/2+fGlobalTime*2)); + return mix(vec3(0.88),plas(vec2(r,1),fGlobalTime+r),bp); +} + +float map(vec3 p) { + float t = fGlobalTime*10; + p.x += t+sin(t); + float rt = p.x+5; + p.x = mod(p.x+5,10)-5; + rt -= p.x; + p.yz *= rot(fGlobalTime*rt*0.0001+rt*2); + vec2 q = vec2(length(p.xz)-2.5,p.y); + return length(q)-0.3; +} + +vec3 gn(vec3 p) { + vec2 e= vec2(0.001,0); + return normalize( + map(p) - + vec3( + map(p-e.xyy),map(p-e.yxy), map(p-e.yyx) + ) + ); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + +vec3 ro=vec3(0,0,-10),rd=normalize(vec3(uv,1)); + rd.x *= mix(-1,1,floor(mod(texture(texFFTIntegrated,0.1).x/2,2))); + float t=0,d; + + for (int i=0; i<100; ++i) { + d = map(ro+rd*t); + if (d<0.01) { + ro = ro+rd*t; + rd = reflect(rd,gn(ro)); + t += 0.1; + } + t += d; + if (length(ro+rd*t) > 100) break; + } + + vec2 m; + vec3 p = ro+rd*t; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = length(uv); + vec2 bgm = mix(rd.yx,rd.xz,floor(mod(texture(texFFTIntegrated,0.1).x,2))); + vec3 col = bricks(bgm*vec2(-1,1)*3.14*5); + + if (d < 0.01) { + col=vec3(0); + } + + out_color=vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.glsl b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.glsl new file mode 100644 index 000000000..fcdb5d0f4 --- /dev/null +++ b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.glsl @@ -0,0 +1,155 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define r2d(p,a) p=cos(a)*p + sin(a)*vec2(-p.y,p.x); + +const float maxScale = 1024.; +const int steps = 4; +const float samples = 32.; + +vec3 hash(vec3 p) { + p = fract(p * vec3(443.537, 537.247, 247.428)); + p += dot(p, p.yxz + 19.19); + return fract((p.xxy + p.yxx) * p.zyx); +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} + +float cat(vec2 p) { + p.x = abs(p.x); + vec2 q=p; + q.x = abs(q.x-.2); + q.y += q.x - .2; + float r = abs(q.y)<.05 && q.x<.15 ? 1. : 0.; + p.x -= .6; + p.y = abs(p.y) - .08; + r += abs(p.y)<0.03 && abs(p.x)<.15 ? 1. : 0.; + return r; +} + +vec3 fb(vec2 uv, vec2 ps) { + uv += (hash(vec3(floor(uv) * 160., 0.1)).xy - .5+vec2(sin(time), cos(time))*texture(texFFTSmoothed, 0.01).x*.2) * .1; + uv = (uv - .5) * (1. - fract(texture(texFFTIntegrated, 0.01).x*.03)*.03); + r2d(uv, sin(texture(texFFTIntegrated, 0.01).x*.1)*.03); + uv += .5; + vec3 ma = vec3(0.), mi = vec3(1.), md = vec3(0.); + float maxL = 0.; + for (float y=-1.;y<=1.;y++) { + for (float x=-1.;x<=1.;x++) { + vec3 q = texture(texPreviousFrame, uv + ps * vec2(x,y)).rgb; + ma += q; + if (x==0. && y==0.) mi = q; + if (q != ma && q != mi) md = q; + } + } + return max(mi, ma/9); +} + +vec3 glitter(vec3 p, float s) { + p *= s; + p += sin(p.yzx + sin(p.zxy)); + vec3 col = hash(floor(p)); + float size = col.x / 1.; + col = hash(col); + col = pow(col, vec3(2.)); + p = fract(p); + col *= max(p.x, max(p.y, p.z)) < size ? 1. : 0.; + return col * vec3(1,texture(texFFT, 0.05).x*30.,1); +} + +float smin(float a,float b,float k) { + float h = clamp(.5+.5*(b-a)/k, 0., 1.); + return mix(b,a,h) - k*h*(1.-h); +} + +float df(vec3 p) { + vec3 op = p, q; + // body + p.z = max(abs(p.z) - 1., 0.); + float d = length(p) - 1.; + + // head + p = op; + p -= vec3(0,1,1.5); + d = smin(d, length(p) - .9, .4); + q = p; + p -= vec3(0,-.1,.9); + d = smin(d, length(p) - .5, .3); + p = q; + + // ear + p.x = abs(p.x); + p -= vec3(.5, .8, 0); + p.z *= 3.; + d = min(d, (length(p) - .3) / 3.); + + p = op; + // leg + p.x = abs(p.x); + p.z = abs(p.z); + p -= vec3(.8, -.8, 1.); + p.y = max(0., abs(p.y) - .5); + d = min(d, length(p) - .4); + return d; +} + +vec4 rm(vec3 p, vec3 d) { + for (int i=0; i<50; i++) { + float dist = df(p); + if (dist < 1e-3) { + vec3 g = glitter(p, 15.); + return vec4(g, length(g)); + } + p += d * dist; + } + + return vec4(0.); +} + +void main(void) { + vec2 uv = gl_FragCoord.xy / v2Resolution.xy; + //uv -= 0.5; + //uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + //uv *= 2.; + bool clear = false; + vec3 catC = clear ? vec3(0.) :fb(uv, 1. / v2Resolution.xy) * (1.-texture(texFFTSmoothed, 0.03).x / 1.); + uv = uv * 2. - 1.; + uv.y *= v2Resolution.y / v2Resolution.x; + + vec3 p = vec3(0,0,-7+texture(texFFTSmoothed, 0.05).x * 20.); + vec3 d = normalize(vec3(uv, 1.)); + r2d(p.xz, time/2.); + r2d(d.xz, time/2.); + + vec4 tmp = rm(p, d); + catC = mix(catC, tmp.rgb, tmp.a); + for (float i=0.;i<9.;i++) { + vec2 o = vec2(sin(i / 10.+time * 1.4284), cos(i/10.+time * 1.325)); + o = pow(abs(o), vec2(7.)) * sign(o); + //catC[int(i)/3] += cat(uv + o / 4.) / 3.; + } + out_color = vec4(catC, 0.); +} diff --git a/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.glsl b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.glsl new file mode 100644 index 000000000..9fc68b0d0 --- /dev/null +++ b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_nusan.glsl @@ -0,0 +1,243 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +float time = mod(fGlobalTime, 300); + + +void add(vec2 pos, vec3 v) { + v*=10000; + imageAtomicAdd(computeTex[0], ivec2(pos), int(v.x)); + imageAtomicAdd(computeTex[1], ivec2(pos), int(v.y)); + imageAtomicAdd(computeTex[2], ivec2(pos), int(v.z)); +} + +vec3 read(vec2 pos) { + vec3 c=vec3(0); + c.x += imageLoad(computeTexBack[0], ivec2(pos)).x; + c.y += imageLoad(computeTexBack[1], ivec2(pos)).x; + c.z += imageLoad(computeTexBack[2], ivec2(pos)).x; + return c/10000.0; +} + + +float rnd(float t) { + return fract(sin(t*452.312)*921.424); +} +vec2 rnd(vec2 t) { + return fract(sin(t*452.312+t.yx*332.714)*921.424); +} +vec3 rnd(vec3 t) { + return fract(sin(t*452.312+t.yzx*332.714+t.zxy*324.147)*921.424); +} + +vec2 circ(vec2 seed) { + vec2 rr = rnd(seed); + rr.x*=6.28; + rr.y=sqrt(rr.y); + return vec2(cos(rr.x)*rr.y,sin(rr.x)*rr.y); +} + +void line(vec2 a, vec2 b, vec3 c, float seed) { + vec2 mpos = mix(a,b,rnd(seed)); + add(mpos, c); +} + +void line2(vec2 a, vec2 b, vec3 c) { + float dd=ceil(max(abs(a.x-b.x),abs(a.y-b.y))); + dd=min(dd,600); + for (int i=0; i100.0) break; + p+=r*d; + col += vec3(0.8,0.5,.9) * 0.01 * 0.3/(0.01+d); + } + + col *= 0.3; + + col += read(gl_FragCoord.xy) * bright; + + add(gl_FragCoord.xy, min(col,1)*vec3(1.3, 0.6, 1)*max(0, sin(time*0.3)*0.7+0.3)); + + col = smoothstep(0,1,col); + col = pow(col, vec3(0.4545)); + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_peregrine.glsl b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_peregrine.glsl new file mode 100644 index 000000000..f6aab6912 --- /dev/null +++ b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_peregrine.glsl @@ -0,0 +1,215 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texCookie; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define fft(f) texture(texFFTSmoothed, f).x +#define min2(a,b) (a.x < b.x ? a : b) +#define pos(x) ((x) * .5 + .5) +#define sat(x) clamp(x, 0., 1.) + +const float T = fGlobalTime; +const float EPSILON = 0.01; +const float PI = atan(1.) * 4.; +const float TAU = atan(1.) * 8.; +const float MAX_DIST = 10.; +const float SPEED = .25; + +float beat = 2. * fft(0.) + .5; + +mat2 rot2D(float a) { + float s = sin(a), c = cos(a); + return mat2(c, -s, s, c); +} + +vec3 full_rot(vec3 p, float a) { + p.xz *= rot2D(a); + p.yz *= rot2D(a); + p.xy *= rot2D(a); + return p; +} + +float smooth_max(float a, float b, float k) { + float h = sat(.5 - .5 * ((a - b) / k)); + return mix(a, b, h) - k * h * (1. - h); +} + +float sdf_unit_cube(vec3 p) { + vec3 q = abs(p) - 1. + .1; + return length(max(q, 0.)) + min(max(q.x, max(q.y, q.z)), 0.) - .1; +} + +float sdf_capsule(vec3 p, float h, float r) { + p.y -= clamp(p.y, 0., h); + return length(p) - r; +} + +float sdf_torus(vec3 p, vec2 t) { + vec2 q = vec2(length(p.xz) - t.x, p.y); + return length(q) - t.y; +} + +//special dedication to NuSan, kifs master +//this specific kaliset kifs was designed by an anonymous artist +float kifs_kaliset(vec3 p, float niter, float s, float bv) { + vec4 q = vec4(p - 1., 1.); + + for(float i = 0.; i < niter; i++) { + q.xyz = abs(q.xyz + 1.) - 1.; + q /= clamp(dot(q.xyz, q.xyz), .25, 1.); + q *= s; + } + + float ks = (length(q.xy) - 1.5) / q.w; + return max(ks, bv); +} + +vec2 de(vec3 p) { + vec2 di = vec2(MAX_DIST, -1.); + vec3 op = p; + float period = mod(T * .5, 4.); + + //centerlightbars + float l = 1.5 + fft(.0) - .5; + p = full_rot(p, T * SPEED * .5); + di = min2(di, vec2(sdf_capsule(p - vec3(-.15, -l/2., .15), l, .01), 1.)); + p = op; + p = full_rot(p, PI/4.); + p = full_rot(p, -T * SPEED * .5); + di = min2(di, vec2(sdf_capsule(p - vec3(.1, -l/2., -.2), l, .01), 1.)); + + //some rings!! + p = op; + p.yz *= rot2D(PI/2); + p = full_rot(p, T * SPEED * .7); + di = min2(di, vec2(sdf_torus(p, vec2(2.2 + beat, .0025)), 1.)); + p = op; + p.xy *= rot2D(PI/2); + p = full_rot(p, T * SPEED * .8); + di = min2(di, vec2(sdf_torus(p, vec2(2.2 + beat, .0025)), 1.)); + p = op; + p.xz *= rot2D(PI/2); + p = full_rot(p, T * SPEED * .9); + di = min2(di, vec2(sdf_torus(p, vec2(2.2 + beat, .0025)), 1.)); + + //kalicubes + float bv = sdf_unit_cube(p); + p = op; + bv = abs(bv) - EPSILON * 2. - beat * .025; + p = full_rot(p, T * SPEED); + float cube1 = kifs_kaliset(p, period + 1., pos(sin(T * SPEED + PI/2.)) + 1.3, bv); + p = op; + p = full_rot(p, PI/5.); + p = full_rot(p, -T * SPEED * .66); + float cube2 = kifs_kaliset(p, period + 1., pos(sin(T * SPEED * .9)) + 1.5, bv); + di = min2(di, vec2(smooth_max(cube1, cube2, .1), 2.)); + return di; +} + +vec3 get_normal(vec3 p) { + vec2 e = EPSILON * vec2(1., -1.); + return normalize( + e.xyy * de(p + e.xyy).x + + e.yxy * de(p + e.yxy).x + + e.yyx * de(p + e.yyx).x + + e.xxx * de(p + e.xxx).x + ); +} + +struct Raymarch { + vec3 p; + vec3 n; + float td; + float id; +}; + +float glow; +Raymarch trace(vec3 ro, vec3 rd, float steps) { + vec3 p = ro; + vec2 di; + float i, td = 0.; + + glow = 0.; + for(i = 0.; i < steps && td < MAX_DIST; i++) { + di = de(p); + if(di.x < EPSILON) + break; + if(di.y == 1.) { + glow += (1. - sat(di.x/(.025 * beat))) * beat; + } + p += di.x * rd; + td += di.x; + } + + Raymarch r; + r.p = p; + r.n = get_normal(p); + if(i >= steps || td >= MAX_DIST) td = 0.; + r.td = td; + r.id = di.y; + + return r; +} + +vec3 get_raydir(vec2 uv, vec3 ro, vec3 ta) { + vec3 f = normalize(ta - ro), + r = normalize(cross(vec3(0., 1., 0.), f)), + u = cross(f, r); + return normalize(f + uv.x * r + uv.y * u); +} + +float lighting(vec3 p, vec3 n, vec3 lo, vec3 rd) { + vec3 h = normalize(lo - rd); + float ambient = sat(pos(n.y)), + diffuse = sat(dot(lo, n)), + specular = pow(sat(dot(h, n)), 64.); + return ambient + diffuse + specular; +} + +vec3 render(vec2 uv) { + vec3 ro = vec3(0., 0., -3.5), + ta = vec3(0.), + rd = get_raydir(uv, ro, ta), + c = vec3(0.); + Raymarch r = trace(ro, rd, 128.); + + if(r.td > 0.) { //special dedication to dok the shiny monochrome master + if(r.id >= 2.) { //kalicubes + c = vec3(0.) * lighting(r.p, r.n, ta, rd) + glow; + vec3 ro_refl = r.p + r.n * EPSILON * 2., + rd_refl = normalize(reflect(rd, r.n)); + Raymarch refl = trace(ro_refl, rd_refl, 64.); + if(refl.td > 0.) { + c = vec3(1.) * lighting(refl.p, refl.n, ta, rd_refl) + glow; + } + } else if(r.id >= 1.) { //bars + c = vec3(1.) + (1. + glow); + } + } + + return c + glow; +} + +void main(void) { + vec2 uv = (gl_FragCoord.xy - .5 * v2Resolution.xy) / max(v2Resolution.x, v2Resolution.y); + vec3 c = render(uv); + c = pow(1. - exp(-c), vec3(1./2.2)); + out_color = vec4(c, 1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl new file mode 100644 index 000000000..943bfa474 --- /dev/null +++ b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl @@ -0,0 +1,171 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texDR; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +float bpm = fGlobalTime*135/60; +mat3 orth(vec3 p){ + vec3 z = normalize(p); + vec3 x = vec3(z.z,0.,-z.x); + return mat3(x,cross(z,x),z); +} +vec3 rnd(vec3 p){ + uvec3 q = floatBitsToUint(p)*1234567890u+123456789; + q.x*=q.y+q.z;q.y*=q.x+q.z;q.z*=q.y+q.x; + q^=q>>16u; + q.x*=q.y+q.z;q.y*=q.x+q.z;q.z*=q.y+q.x; + return vec3(q)/float(-1U); + } + float sdCrystal(vec3 p) { + float c = cos(3.1415/5.), s=sqrt(0.75-c*c); // magic numbers + vec3 n = vec3(-0.5, -c, s); // magic direction + + // fold the space to add symmetry + p = abs(p); + // fold along the n direction + p -= 2.*min(0., dot(p, n))*n; + + // fold the space again and along the n direction + p.xy = abs(p.xy); + p -= 2.*min(0., dot(p, n))*n; + + // repeat the process + p.xy = abs(p.xy); + p -= 2.*min(0., dot(p, n))*n; + + // distance to the surface + float d = p.z -7.; + + d = min(length(p.xy),d); + return d; +} +vec2 sdf(vec3 p){ + vec3 hp=p; + vec2 h; + hp = erot(hp,normalize(vec3(1.,1.,1.)),fGlobalTime); + vec2 st = vec2(hp.x/(5.-hp.y),hp.y/(5.-hp.z)); + float a = texture(texFFTSmoothed,sqrt(texture(texNoise,st).r)*.1).r*.56; + h.x = length(hp)-1.-a; + h.y = 0.+a; + + vec3 hhp= p; + vec3 rr = rnd(floor(vec3(bpm*.25))); + hhp = erot(hhp,normalize(rr-.5),exp(-3*fract(bpm*.25))); + h.x = min(-sdCrystal(hhp),h.x); + + vec3 tp=p; + tp+=cross(sin(tp*7),cos(tp.yzx*12))/12; + tp=abs(tp)-.5; + vec3 r = tanh(rnd(tp))*.5; + float tt = floor(bpm+r.x)+smoothstep(.1,.9,fract(bpm+r.x)); + tp = erot(tp,normalize(sin(vec3(.3,.4,.5)+bpm)),tt); + vec2 t; + + vec2 q = vec2(length(tp.xz)-2.,tp.y); + t.x = length(q)+.1-step(.0,sin(atan(tp.x,tp.z)*5+bpm*5))*.2; + t.y = 10.; + h=t.x < h.x ? t:h; + + return h; +} +#define q(s) s*sdf(p+s).x +vec3 norm(vec3 p,float ee){vec2 e=vec2(-ee,ee);return normalize(q(e.xyy)+q(e.yxy)+q(e.yyx)+q(e.xxx));} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 col = vec3(0.); + col +=step(uv.y+.5,texture(texFFTSmoothed,uv.x).r); + + vec3 ro=vec3(1.,1.,-5.),rt=vec3(0.); + ro=erot(ro,normalize(vec3(0.5,1.,.2)),tanh(sin(bpm)*5)+bpm*.125); + rt=-5*ro+ro.yzx; + vec3 rd= orth(rt-ro)*normalize(vec3(uv,1.-.2*exp(-3*fract(bpm)))); + + vec3 rp=ro; + vec3 light = vec3(1.,2.,-3.); + vec2 d; + float rl; + vec3 acc=vec3(0.); + for(float i=0.;i++<99;){ + + d = sdf(rp); + if(d.y==10.){ + acc+=vec3(.1,.2,.3)*exp(-fract(bpm))*exp(-abs(d.x))/exp(i*d.x*d.x); + d.x = max(abs(d.x),.01); + } + if(d.x < .001) break; + rl+=d.x; + rp=ro+rd*rl; + } + if(d.x<.001 && d.y <10.){ + col+=vec3(.05); + vec3 n=norm(rp,.001); + rd=reflect(rd,n); + rp+=n*.1; + ro=rp; + rl=0.; + for(float i=0.;i++<99;){ + + d = sdf(rp); + if(d.y==10.){ + acc+=vec3(.1,.2,.3)*exp(-fract(bpm))*exp(-abs(d.x))/exp(i*d.x*d.x); + d.x = max(abs(d.x),.01); + } + if(d.x < .001) break; + rl+=d.x; + rp=ro+rd*rl; + } + + } + if(d.x<.001){ + vec3 n = norm(rp,.001); + vec3 ld = normalize(light); + float dif = max(0.,dot(ld,n)); + float spc = pow(max(0.,dot(reflect(ld,n),rd)),32.); + float fre = pow(1+dot(rd,n),4.); + col = mix(vec3(.1),vec3(.2),step(.1,d.y*40))*dif+spc; + col+=fre; + } + vec3 r = rnd(floor(vec3(uv.xy*10,bpm*4))); + col = col+acc; + if(fract(bpm+.5)>.5) col = fwidth(col); + + ivec2 gl = ivec2(gl_FragCoord.xy); + ivec2 off = ivec2(10.*(r.xy-.5)); + vec3 pcol = vec3( + texelFetch(texPreviousFrame,gl+off,0).r, + + texelFetch(texPreviousFrame,gl-off,0).g, + + texelFetch(texPreviousFrame,gl-off,0).b + ); + col = mix(sqrt(col),pcol,(.3+r.z*.7)*exp(-fract(bpm))); + + /* + + Don't forget to come to SESSIONS + + */ + out_color = vec4(col,1.); +} \ No newline at end of file diff --git a/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.glsl b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.glsl new file mode 100644 index 000000000..6020c1561 --- /dev/null +++ b/shader_file_sources/2024_09_02_shader_jam_monday_night_bytes/grabber_mondaynightbytes_wrighter.glsl @@ -0,0 +1,278 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +#define T fGlobalTime +#define R v2Resolution +#define U gl_FragCoord.xy +#define pi acos(-1.) +#define tau (acos(-1.)*2.) + + +#define rot(a) mat2(cos(a),-sin(a),sin(a),cos(a)) + + +// hashes +uint seed = 12512; +uint hashi( uint x){ + x ^= x >> 16;x *= 0x7feb352dU;x ^= x >> 15;x *= 0x846ca68bU;x ^= x >> 16; + return x; +} + + +#define hash_f_s(s) ( float( hashi(uint(s)) ) / float( 0xffffffffU ) ) +#define hash_f() ( float( seed = hashi(seed) ) / float( 0xffffffffU ) ) +#define hash_v2() vec2(hash_f(),hash_f()) +#define hash_v3() vec3(hash_f(),hash_f(),hash_f()) +#define hash_v4() vec3(hash_f(),hash_f(),hash_f(),hash_f()) + +vec2 sample_disk(){ + vec2 r = hash_v2(); + return vec2(sin(r.x*tau),cos(r.x*tau))*sqrt(r.y); +} + +float TT; + + +mat3 orth(vec3 tar, vec3 or){ + vec3 dir = normalize(tar - or); + vec3 right = normalize(cross(vec3(0,1,0),dir)); + vec3 up = normalize(cross(dir, right)); + return mat3(right, up, dir); +} + +void add_to_pixel(ivec2 px_coord, vec3 col){ + // colour quantized to integer. + ivec3 quant_col = ivec3(col * 1000); + imageAtomicAdd(computeTex[0], px_coord, quant_col.x); + imageAtomicAdd(computeTex[1], px_coord, quant_col.y); + imageAtomicAdd(computeTex[2], px_coord, quant_col.z); +} + +vec3 read_pixel(ivec2 px_coord){ + return 0.001*vec3( + imageLoad(computeTexBack[0],px_coord).x, + imageLoad(computeTexBack[1],px_coord).x, + imageLoad(computeTexBack[2],px_coord).x + ); +} + +vec3 ro; +mat3 mat; + +// point projection +ivec2 proj_p(vec3 p){ + p -= ro; + p *= mat; + + p.xy /= p.z*1.; + + // depth of field + p.xy += sample_disk() * abs(p.z - 5. + sin(T))*0.003; + + if(p.z < 0){ + return ivec2(-1); + } + ivec2 q = ivec2((p.xy + vec2(R.x/R.y,1)*0.5)*vec2(R.y/R.x,1)*R); + return q; +} + + +vec3 erot(vec3 p, vec3 ax, float ro) { + return mix(dot(ax, p)*ax, p, cos(ro)) + cross(ax,p)*sin(ro); +} +vec3 cyclic(vec3 p, float pers, float lacu) { + vec4 sum = vec4(0); + //mat3 rot = orthBas(vec3(2, -3, 1)); + + for(int i = 0; i <1; i++) { + //p *= rot; + p = erot(p,normalize(vec3(1)),14.); + p += sin(p.zxy + sin(T*0.3))*1.5; + sum += vec4(cross(cos(p), sin(p.yzx)), 0.8); + sum /= pers; + p *= lacu; + } + + return sum.xyz / sum.w; +} +float map(vec3 p){ + p.xz *= rot(p.y + T + sin(T + p.y*2.)); + p -= cyclic(p*2., 1.4, 1.)*3.; + + float d = length(p.xz) - 1.5 + (clamp(abs(p.y)*0.4,0.,1.)) ; + + return d; +} + +vec3 get_normal(vec3 p){ + vec2 t = vec2(0.001,0.); + return normalize(vec3( + map(p + t.xyy) - map(p - t.xyy), + map(p + t.yxy) - map(p - t.yxy), + map(p + t.yyx) - map(p - t.yyx) + )); +} +vec3 hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +vec3 rgb2hsv(vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +void main(void){ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + vec4 t_prev = texture(texPreviousFrame,vec2(gl_FragCoord.xy / v2Resolution.xy)); + vec2 off = vec2(dFdx(t_prev.x),dFdy(t_prev.x)); + + vec2 marchu = uv; + + ro = vec3(0,0,-4.); + vec3 rd = normalize(vec3(uv,0.7)); + + seed = 2151225; + seed += hashi(uint(U.x)) + hashi(uint(U.y)*125); + + vec3 p = vec3(0); + + vec3 col = vec3(0); + + + vec2 u = uv; + + + + //TT = floor(T*0.3 + sin(T*0.6)); + + //ro = normalize(sin(T*vec3(0.8,0.3,0.79)))*4.0; + float tt = T; + tt += floor(T/5); + ro = vec3( + sin(tt*0.2), + sin(tt*0.15), + cos(tt*0.2) + )*3.; + vec3 tar = sin((T)*vec3(0.8,0.3,0.79)*2.)*0.1; + + rd = normalize(vec3(marchu,1)); + + mat = orth(tar, ro); + rd = mat * rd; + ro += sin(vec3(3,2,1)*T*0.2)*0.2; + ro += sin(vec3(3,2,1)*T*1.2)*0.02; + col = vec3(1); + + bool hit = false; + if(gl_FragCoord.x < 50){ + //vec3 p = vec3(sample_disk(),0); + + + for(float i = 0; i < 92; i++){ + float idx =hash_f()*0.1 * sin(gl_FragCoord.y)*3.; + vec3 p = cyclic(vec3(1,4.4,idx*2. + (mod(gl_FragCoord.y,140.)*4.)), 4., .8)*3.; + + vec3 q = vec3(p); + + vec3 n = cyclic(p, 0.4, 0.8); + //p += n*1.2; + + ivec2 pp = proj_p(q); + pp += ivec2( sample_disk()*4.* sin(p.z*5. + T*5)); + add_to_pixel(pp, vec3(pow(0.5 + 0.5*sin(idx*50. + T)*0.5,2.))*5550); + } + } + + p = ro; + float t = 0.; + for(int i = 0; i < 425; i++){ + float d = map(p)*0.02; + if(d < 0.001){ + hit = true; + break; + } + if(t > 5.){ + break; + } + p = ro + rd * (t+=d); + } + if(hit){ + vec3 n = get_normal(p); + // + #define A(a) smoothstep(0.,1.,map(p + a)/a) + float ao = A(0.3) * A(0.05) * A(0.2) * A(0.1); + //ao *= dot(n,normalize(vec3(1))); + //col -= step(ao,0.4); + col.rg -= smoothstep(0.4,0.,ao)*6.; + //col += n; + } + + vec3 s = read_pixel(ivec2(gl_FragCoord.xy))*0.1; + + if(hit){ + s *= 0.0001; + } + col -=s; + col *= 2.; + col = max(col,0); + col = col/(1+col); + col = pow(col,vec3(0.454545)); + + col = hsv2rgb(col); + + //col.r += floor(T)*0.2; + col.g *= 0.5; + col = rgb2hsv(col); + + col = rgb2hsv(col); + col.r += floor(T)*0.2; + col.r = mod(col.r,6); + col = hsv2rgb(col); + + //col = 1.-col; + + uv = vec2(gl_FragCoord.xy / v2Resolution.xy); + uv +=off*0.002; + t_prev = texture(texPreviousFrame,uv); + + //uv += fwidth(); + //col = 1.-col; + + col.rgb = mix(col.rgb,t_prev.rbg,vec3(0.1,0.7,0.9)*0. + 0.95*smoothstep(1.,0.,fract(T*0.3))); + if(abs(uv.x + sin(floor(T))) < 0.2){ + col = 1.-col; + } + + //for() + out_color = vec4(col,0); +} \ No newline at end of file diff --git a/shader_file_sources/2024_09_13_byte_jam_skrolli/aldroid.lua b/shader_file_sources/2024_09_13_byte_jam_skrolli/aldroid.lua new file mode 100644 index 000000000..6ab632b6c --- /dev/null +++ b/shader_file_sources/2024_09_13_byte_jam_skrolli/aldroid.lua @@ -0,0 +1,80 @@ +function SCN(l) + vbank(0) + mg=l/135 + mg=mg^2 + for c1=0,3 do + o = 40 + for c2=0,3 do + c=o+c1+c2*40 + c = c* mg + poke(0x3fc0+c1*4*3+c2*3,c) + poke(0x3fc1+c1*4*3+c2*3,c) + poke(0x3fc2+c1*4*3+c2*3,c) + end + end + end + + function r(x,y,a) + ca=C(a) + sa=S(a) + return (x*ca-y*sa),(y*ca+x*sa) + end + + function pt(x,y,z) + tr=time()/500 + dst=8 + scl=400 + x=x-5 + y=y+2 + x,z=r(x,z,0.15+S(tr/13)*0.04) + y,z=r(y,z,0.5) + z = z + C(tr/7) + X=x*scl/(dst+z) + Y=y*scl/(dst+z) + return 120+X,68+Y + end + + S=math.sin + C=math.cos + + hf=2 + + function drawcube(x,y,h,c) + x1,y1=pt(x ,h,y) + x2,y2=pt(x+1,h,y) + x3,y3=pt(x+1,h,y+1) + x4,y4=pt(x, h,y+1) + tri(x1,y1,x2,y2,x3,y3,c+2) + tri(x4,y4,x1,y1,x3,y3,c+2) + x5,y5=pt(x ,hf,y) + x6,y6=pt(x ,hf,y+1) + tri(x4,y4,x1,y1,x5,y5,c+0) + tri(x4,y4,x6,y6,x5,y5,c+0) + x7,y7=pt(x+1,hf,y) + tri(x1,y1,x2,y2,x7,y7,c+1) + tri(x5,y5,x1,y1,x7,y7,c+1) + end + + + function TIC() + vbank(0) + t=time()/429 + cls() + + x,y=pt(C(t),1,S(t)) + for y=22,0,-1 do + for x=22,0,-1 do + drawcube(x,y,S((x+t/120)+C(y+t))/2,x*4+1) + end + end + vbank(1) + print("Skrolli",40,19,15,false,4) + print("PARTY 2024",130,40,15) + for x=19,190 do for y=10,80 do + fz=fft(((x-15)*2//8))*100 + yz=60-y + if pix(x,y)==15 and fz > yz then + pix(x,y,p) + end + end end + end \ No newline at end of file diff --git a/shader_file_sources/2024_09_13_byte_jam_skrolli/g33kou.lua b/shader_file_sources/2024_09_13_byte_jam_skrolli/g33kou.lua new file mode 100644 index 000000000..298c74866 --- /dev/null +++ b/shader_file_sources/2024_09_13_byte_jam_skrolli/g33kou.lua @@ -0,0 +1,72 @@ +cos=math.cos +sin=math.sin +p={ +{x1=-20,y1=20,x2=20,y2=20,c=3}, +{x1=20,y1=20,x2=20,y2=-20,c=3}, +{x1=20,y1=-20,x2=-20,y2=-20,c=3}, +{x1=-20,y1=-20,x2=-20,y2=20,c=3}, +} +t1={ +{x=-50,y=50}, +{x=0,y=50}, +{x=50,y=50}, +{x=-50,y=0}, +{x=50,y=0}, +{x=-50,y=-50}, +{x=0,y=-50}, +{x=50,y=-50}, +} +t2={ +{x=0,y=0}, +--{x=-100,y=50}, +--{x=-100,y=0}, +--{x=-100,y=-50}, +--{x=100,y=50}, +--{x=100,y=0}, +--{x=100,y=-50}, +} +t=0 +a=0 +function rot(x1,y1,x2,y2,a) + nx1 = x1*cos(a)-y1*sin(a) + ny1 = x1*sin(a)+y1*cos(a) + nx2 = x2*cos(a)-y2*sin(a) + ny2 = x2*sin(a)+y2*cos(a) + return {nx1,ny1,nx2,ny2} +end +function TIC() + t=t+1 + a=t/40 + cls() + for _,v in ipairs(p) do + for _,w in ipairs(t1) do + nv = rot(v.x1,v.y1,v.x2,v.y2,-a) + nv[1]=nv[1]+w.x + nv[2]=nv[2]+w.y + nv[3]=nv[3]+w.x + nv[4]=nv[4]+w.y + nv = rot(nv[1],nv[2],nv[3],nv[4],a/2) + nv[1]=nv[1]+120 + nv[2]=nv[2]+68 + nv[3]=nv[3]+120 + nv[4]=nv[4]+68 + line(nv[1],nv[2],nv[3],nv[4],(v.c+t>>3)%14+2) + end + for _,w in ipairs(t2) do + nv = rot(v.x1,v.y1,v.x2,v.y2,-a) + nv[1]=nv[1]+w.x + nv[2]=nv[2]+w.y + nv[3]=nv[3]+w.x + nv[4]=nv[4]+w.y + nv[1]=nv[1]+120 + nv[2]=nv[2]+68 + nv[3]=nv[3]+120 + nv[4]=nv[4]+68 + line(nv[1],nv[2],nv[3],nv[4],(v.c+t>>3)%14+2) + end + end + txt={'H','e','l','l','o',' ','S','k','r','o','l','l','i',' ','\\','o','/'} + for i=1,#txt do + print(txt[i],i*10+30,68+sin(t/10+40*i),(t>>3)%13+3) + end +end diff --git a/shader_file_sources/2024_09_13_byte_jam_skrolli/moziz.lua b/shader_file_sources/2024_09_13_byte_jam_skrolli/moziz.lua new file mode 100644 index 000000000..10230c694 --- /dev/null +++ b/shader_file_sources/2024_09_13_byte_jam_skrolli/moziz.lua @@ -0,0 +1,62 @@ + + +function eye(p, t, kfft) + circ( + p.x, p.y, math.max(3, kfft/2), 12 + ) + + circ( + p.x + math.sin(t)*kfft/4, + p.y + math.cos(t)*kfft/4, + kfft/3, + 0 + ) +end + +function kisu(p, t) + kfft = fft(0, 8) * 32 + kfft_2 = kfft/2 + + tri( + p.x - 35 - kfft/3, p.y + -30 - kfft, + p.x - 30 - kfft/2, p.y + 20 - kfft/2, + p.x - 10, p.y + 0 - kfft/2, + 2 + ) + + tri( + p.x + 35 + kfft/3, p.y + -30 - kfft, + p.x + 30 + kfft/2, p.y + 20 - kfft/2, + p.x + 10, p.y + 0 - kfft/2, + 2 + ) + + circ(p.x, p.y + 20, + 30 + kfft / 2, + 2 + ) + + eye({x=p.x + 15 + kfft/2, y=p.y + 20},t, kfft) + eye({x=p.x - 15 - kfft/2, y=p.y + 20},-t, kfft) + + tri( + p.x - 5 - kfft/2, p.y + 30 + kfft/2, + p.x + 5 + kfft/2, p.y + 30 + kfft/2, + p.x, p.y + 40 + kfft/2, + 1 + ) + +end + +function TIC() + t=time()//32 + cls() + + kisu( + { + x = 120 + math.sin(t / 3 + fft(0,8)) * 20, + y = 64 + math.cos(t / 2 + fft(0, 12)) * 20 + }, t + ) + +end diff --git a/shader_file_sources/2024_09_13_byte_jam_skrolli/muffintrap.lua b/shader_file_sources/2024_09_13_byte_jam_skrolli/muffintrap.lua new file mode 100644 index 000000000..3521b7911 --- /dev/null +++ b/shader_file_sources/2024_09_13_byte_jam_skrolli/muffintrap.lua @@ -0,0 +1,73 @@ +S=math.sin +C=math.cos + +l=60 +rot=0 +sign=1 +bw=40 +bwx=0 +bwy=0 +function TIC() +cls(0) +t=time()//32 +rot=rot+0.01 + rx=S(rot+t*0.01)*l + ry=C(rot+t*0.01)*l*2 + + +fftw=20 +for fb=0,68,6 do + RANGE=fft(fb,fb+6) + rect(120-RANGE*fftw, + fb*2+bwy*0.5, + RANGE*2*fftw,10,10) +end + +x=120 +y=68 + sign=1--sign*-1 + rx=rx*sign + ry=ry*sign + bwx=bw*S(t*y*0.001) + bwy=bw*C(t*y*0.002) + + for lx=0,240,60 do + tri(lx,0, + bwy+lx+bwx,136,bwy+lx+bwx+10,136, + (t//10)) + end + + for ukkox=bwx, 240,50 do + circ(ukkox+S(t/4)*2-1,85-1, 7, t//10) + circ(ukkox+S(t/4)*2,85, 6, 8) + circ(ukkox+S(t/10)*fft(0,6)*4-1,100-1, 9,t//10) + circ(ukkox+S(t/10)*fft(0,6)*4,100, 8,8) + circ(ukkox,120,11,t//10) + circ(ukkox,120,10,8) + + end + + line(bwx/rx+x,bwy+y, + x+rx,y+ry,(x+t)>>4) + + line(bwx+x,bwy+y, + x+ry,y+rx,(y+t)>>4) + + circb(x+ry,y+rx,6+fft(0,10)*20,(x+t)>>4) + circb(x+rx,y+ry,6+fft(0,10)*20,(x+t)>>4) + + for cx=0,240,4 do + rect(bwx+cx, + 0+C(t*cx*0.05), + 4,S(t*cx*0.005)*20, + cx) + end + + for cx=0,240,4 do + rect(bwx+cx, + 130-C(t*cx*0.05)*2, + 4,C(t*cx*0.005)*20, + cx) + end + +end diff --git a/shader_file_sources/2024_09_13_byte_jam_skrolli/pumpuli.lua b/shader_file_sources/2024_09_13_byte_jam_skrolli/pumpuli.lua new file mode 100644 index 000000000..fd70551ea --- /dev/null +++ b/shader_file_sources/2024_09_13_byte_jam_skrolli/pumpuli.lua @@ -0,0 +1,289 @@ +--greets from Finland :D +W=240 +H=136 +STEP=2 + +rnd=math.random +flr=math.floor +abs=math.abs +max=math.max +min=math.min +sin=math.sin +cos=math.cos +atan=math.atan + +skr_s={ +{0,0,0,0,0,0,0,0,0,0,0,0,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,0,0,0,0,0,0,0,0,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,0,0,0,0,0,0,0,0,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,0,1,1,0}, +{0,1,1,1,1,1,1,1,0,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,0,1,1,0}, +{0,0,0,0,0,0,0,0,0,0,0,0,0}} + +skr_k={ +{0,0,0,0,0,0,0,0,0,2,2,2,2}, +{0,1,1,1,0,1,1,1,0,2,2,2,2}, +{0,1,1,1,0,1,1,1,0,2,2,2,2}, +{0,1,1,1,0,1,1,1,0,2,2,2,2}, +{0,1,1,1,0,1,1,1,0,0,0,0,0}, +{0,1,1,1,1,0,1,1,1,1,1,1,0}, +{0,1,1,1,0,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,0,1,1,1,1,1,1,0}, +{0,1,1,1,0,0,0,0,0,1,1,1,0}, +{0,1,1,1,0,2,2,2,0,1,1,1,0}, +{0,1,1,1,0,2,2,2,0,1,1,1,0}, +{0,1,1,1,0,2,2,2,0,1,1,1,0}, +{0,0,0,0,0,2,2,2,0,0,0,0,0}} + + +skr_r={ +{0,0,0,0,0,0,0,0,0,0,0,0,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,0,0,0,0,0,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,0,1,1,0}, +{0,1,1,1,1,1,1,1,0,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,0,1,1,0}, +{0,1,1,1,0,1,1,1,0,0,0,0,0}, +{0,1,1,1,0,1,1,1,0,2,2,2,2}, +{0,1,1,1,0,1,1,1,0,2,2,2,2}, +{0,1,1,1,0,1,1,1,0,2,2,2,2}, +{0,0,0,0,0,0,0,0,0,2,2,2,2}} + +skr_o={ +{0,0,0,0,0,0,0,0,0,0,0,0,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,0,0,0,0,0,1,1,1,0}, +{0,1,1,1,0,2,2,2,0,1,1,1,0}, +{0,1,1,1,0,2,2,2,0,1,1,1,0}, +{0,1,1,1,0,2,2,2,0,1,1,1,0}, +{0,1,1,1,0,0,0,0,0,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,0,1,1,0}, +{0,1,1,1,1,1,1,1,0,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,0,1,1,0}, +{0,0,0,0,0,0,0,0,0,0,0,0,0}} + +skr_l={ +{0,0,0,0,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,0,0,0,0,0,0,0,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,1,1,1,1,1,1,1,1,1,1,1,0}, +{0,0,0,0,0,0,0,0,0,0,0,0,0}} + + +skr_i={ +{0,0,0,0,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,1,1,1,0,2,2,2,2,2,2,2,2}, +{0,0,0,0,0,2,2,2,2,2,2,2,2}} + + +f=0 +cyan={ + 0x04,0x0d,0x0c,0x1c,0x13,0x2b, + 0x22,0x19,0x3a,0x26,0x1e,0x49, + 0x28,0x24,0x58,0x2a,0x2d,0x67, + 0x2f,0x3a,0x77,0x35,0x4a,0x86, + 0x3a,0x5c,0x96,0x3f,0x70,0xa5, + 0x45,0x87,0xb5,0x50,0x9d,0xbe, + 0x5f,0xb1,0xc4,0x6e,0xc3,0xcb, + 0xa3,0xdc,0xb9,0xde,0xee,0xd7} + +orange={ + 0x1a,0x0c,0x0a,0x2e,0x15,0x10, + 0x43,0x1e,0x15,0x59,0x27,0x19, + 0x70,0x31,0x1b,0x88,0x3d,0x1c, + 0xa1,0x49,0x1d,0xbb,0x57,0x1c, + 0xd7,0x66,0x1a,0xeb,0x79,0x20, + 0xf1,0x8d,0x32,0xf7,0xa0,0x46, + 0xfc,0xb3,0x5b,0xff,0xc3,0x70, + 0xe8,0xf1,0xaa,0xde,0xee,0xd7} + +white={ + 0x00,0x00,0x00,0x10,0x10,0x10, + 0x20,0x20,0x20,0x30,0x30,0x30, + 0x40,0x40,0x40,0x50,0x50,0x50, + 0x60,0x60,0x60,0x70,0x70,0x70, + 0x80,0x80,0x80,0x90,0x90,0x90, + 0xa0,0xa0,0xa0,0xb0,0xb0,0xb0, + 0xc0,0xc0,0xc0,0xd0,0xd0,0xd0, + 0xe0,0xe0,0xe0,0xf0,0xf0,0xf0} +black={ + 0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00} + + +function palset(bnk,pal) + local curbnk=vbank() + vbank(bnk) + loadpal(pal) + vbank(curbnk) +end +function loadpal(pal) + for i=1,48 do + poke(0x3fc0+i-1,pal[i]) + end +end +function palmix(bnk,p1,p2,t) + local curbnk=vbank() + local pal={} + for i=1,#p1 do + pal[i]=lerp(p1[i],p2[i],t) + end + vbank(bnk) + loadpal(pal) + vbank(curbnk) +end +function distance(p1,p2) + local dx,dy=p2.x-p1.x,p2.y-p1.y + return dx*dx+dy*dy +end +function slen(a) + return a[1]*a[1]+a[2]*a[2] +end +function clr(c1,c2) + local curbnk=vbank() + vbank(0) + cls(c1) + vbank(1) + cls(c2) + vbank(curbnk) +end +function subpix(i,a,f) + local p=peek4(i+f) + poke4(math.min(i-f,0x3fbf*2+1),math.max(p-a,0)) +end +function frnd(a,b,s) + return rnd(a*s,b*s)/s +end +function lerp(a, b, t) + return a + (b - a) * t +end + + +function BOOT() + palset(0,orange) + palset(1,cyan) + clr(0,0) +end + +BPM=126 +s={} +s.b=0 +s.p=0 +s.fl=0 + +skr={skr_s,skr_k,skr_r,skr_o,skr_l,skr_l,skr_i} + +function TIC() + local lt={} + t=time()//32 + s.b=time()/60000*BPM%4 + s.op=s.p + s.p=s.b//1 + if s.op==s.p then + s.mm=0 + s.fl=s.fl*.8 + else + s.mm=1 + if s.p==1 or s.p==3 then + s.sn=1 + s.fl=15 + else + s.sn=0 + end + end + f=f+1 + bm=min(1,s.fl/2) + palmix(0,cyan,orange,bm) + palmix(1,orange,white,bm) + vbank(0) + for i=0,W*H,STEP do + subpix(i+f%STEP,rnd(-1,2),rnd(-1,1)) + end + if s.mm==1 then + x=W/4*s.p + rect(x,0,W/4,H,15) + end + for y=0,H,STEP do + for x=0,W,STEP do + X=x-W/2 + Y=y-H/2+sin(x*.02+t*.011)*sin(t*.01+sin(abs(X+t*-1)*.2+t*.1)*abs(X*.02))*40 + f=fft(abs(X),abs(X)+2)*(20+abs(X)*.8) + if f>abs(Y) then + rect(x,y,STEP,STEP,15-min(14,abs(X*.2))) + else + end + -- pix(x,y,(x+y+t)>>3+f//1) + end + end + vbank(1) + cls(0) + --for y=0,H do + for x=0,W,STEP do + X=x-W/2 + Y=sin(x*.02+t*.011)*sin(t*.01+sin(abs(X+t*-1)*.2+t*.1)*abs(X*.02))*40 + f=fft(abs(X),abs(X)+2)*(20+abs(X)*.8) + pix(x,H/2+f-Y,15) + pix(x+1,H/2+f-Y,15) + pix(x,H/2-f-Y,15) + pix(x+1,H/2-f-Y,15) + -- pix(x,y,(x+y+t)>>3+f//1) + end + + x=4 + sc=3 + y=H/2+H/3-sc*7 + for i=1,7 do + lt=skr[i] + for xx=1,13 do + f=fft(7*13-(xx+(i-1)*13))*(8*(1+s.fl)) + for yy=1,13 do + if lt[yy][xx]==1 then + rect(x+(xx-1)*sc+(i-1)*12*sc,y+(yy-1)*sc-f*f,sc,sc,2+(xx+yy)/2) + elseif lt[yy][xx]==0 then + rect(x+(xx-1)*sc+(i-1)*12*sc,y+(yy-1)*sc-f*f,sc,sc,1+s.fl) + end + end + end + end +-- end +end + +function BDR(i) + vbank(0) + poke(0x3ff8,s.fl) +end \ No newline at end of file diff --git a/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl b/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl new file mode 100644 index 000000000..0b400b172 --- /dev/null +++ b/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_aldroid.glsl @@ -0,0 +1,79 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texSessions; +uniform sampler2D texSessionsShort; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent restrict uimage2D[3] computeTex; +layout(r32ui) uniform coherent restrict uimage2D[3] computeTexBack; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +vec2 n2(vec2 uv) { + vec3 p=vec3(uv.x,uv.y,uv.x+uv.y) *vec3(234.32,431.34,324.2); + p = mod(p,vec3(3,5,7)); + p *= dot(p,p+34); + return fract(vec2(p.x+p.z,p.y+p.z)); +} + +mat2 rot(float a) { + return mat2(cos(a),-sin(a),sin(a),cos(a)); +} + +vec3 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec3( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25 ); +} + +float map(vec3 p) { + p+=vec3(texture(texFFTIntegrated,0.05).x*10,0,0); + p=sin(p/10+sin(p)/cos(fGlobalTime)*0.01)*10; + p.xy *= rot(fGlobalTime/7); + p.xz *= rot(fGlobalTime/5); + vec3 q = abs(p)-3; + return max(q.x,max(q.y,q.z)); +} + +vec3 gn(vec3 p) { + vec2 e=vec2(0.001,0); + return normalize(map(p)-vec3(map(p-e.xyy),map(p-e.yxy),map(p-e.yyx))); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + vec3 ro=vec3(0,0,-10),rd=normalize(vec3(uv,1)); + float t=0,d; + for (int i=0; i<100;++i) { + d=map(ro+rd*t); + if (d<0.01) break; + t += d; + } + vec3 bgcol=plas(uv/4,fGlobalTime/6)+vec3(n2(floor(uv*200)/200+sin(fGlobalTime)).x)*0.5; + vec3 col = bgcol; + if (d<0.01) { + vec3 n = gn(ro+rd*t); + col = plas(vec2(1.1,floor(texture(texFFTIntegrated,0.1).x)*10),3.3)*dot(n,rd)*1.2; + ; + } + + col = mix(bgcol, col,exp(-0.0000001*pow(t,3))); + + out_color = vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.glsl b/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.glsl new file mode 100644 index 000000000..ddb7f5bdc --- /dev/null +++ b/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_catnip.glsl @@ -0,0 +1,113 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texInercia; +uniform sampler2D texInerciaBW; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define r2d(p,a) p=cos(a)*p + sin(a)*vec2(-p.y,p.x); + +const float maxScale = 1024.; +const int steps = 4; +const float samples = 32.; + +vec3 hash(vec3 p) { + p = fract(p * vec3(443.537, 537.247, 247.428)); + p += dot(p, p.yxz + 19.19); + return fract((p.xxy + p.yxx) * p.zyx); +} + +float cat(vec2 p) { + p.x = abs(p.x); + vec2 q=p; + q.x = abs(q.x-.2); + q.y += q.x - .2; + float r = abs(q.y)<.05 && q.x<.15 ? 1. : 0.; + p.x -= .6; + p.y = abs(p.y) - .08; + r += abs(p.y)<0.03 && abs(p.x)<.15 ? 1. : 0.; + return r; +} + +float pDist(vec3 p, vec3 dir) { + if (dir.y > 0.) return distance(p.y, 4.) / -dir.y; + return distance(p.y, -4.) / dir.y; +} + +vec2 coord(vec3 p, vec3 dir) { + float d = pDist(p, dir); + p += dir * d; + + return p.xz / 8.; +} + +float map(vec2 c) { + float t = texture(texFFTIntegrated, 0.02).x * 1.5; + for (float i=16.; i>1.; i /= 2.) { + vec3 k = hash(vec3(floor(c / i), .1)); + if (k.x < 0.25 || i < 3.) { + c = fract((c / i) * i) * 2. - 1.; + if (k.y < 1./3.) { + return 1. - step(0.1, abs(fract(length(c) - time / 3.))); + }else if (k.y < 2./3.) { + //c = abs(fract(c + time)); + return 1. - step(0.1, distance(c.y, sin(c.x * 3. + time * 8.) * texture(texFFTSmoothed, 0.03).x)); + }else { + c = abs(c); + return 1. - step(0.1, min(c.x, c.y)); + } + } + } + + return 0.; +} + +void main(void) +{ + vec2 uv = (gl_FragCoord.xy * 2. - v2Resolution.xy) / v2Resolution.y; + + vec3 catC = vec3(0); + /*for (float i=0.;i<9.;i++) { + vec2 o = vec2(sin(i / 10.+time * 1.4284), cos(i/10.+time * 1.325)); + o = pow(abs(o), vec2(7.)) * sign(o); + catC[int(i)/3] += cat(uv * .5 + o / 4.) / 3.; + }*/ + + const int samples = 16; + for (int i=0; i100.0) break; + col += vec3(0.3,0.9,.7) * 0.01 * 0.3/(0.01+d); + p+=r*d; + } + + col *= 0.03; + + col += read(gl_FragCoord.xy); + + add(gl_FragCoord.xy+vec2(1,0)*sin(time+gl_FragCoord.y/2)*20, min(col,1)*1.1*exp(-fract(fGlobalTime/4))); + col *= 0.5; + + col *= 1.2-length(uv); + + col = smoothstep(0,1,col); + col = pow(col, vec3(0.4545)); + + + out_color = vec4(col, 1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl b/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl new file mode 100644 index 000000000..c916cbd96 --- /dev/null +++ b/shader_file_sources/2024_09_16_shader_jam_monday_night_bytes/grabber_mondaynightbytes_totetmatt.glsl @@ -0,0 +1,85 @@ +#version 420 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texRevisionBW; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(r32ui) uniform coherent uimage2D[3] computeTex; +layout(r32ui) uniform coherent uimage2D[3] computeTexBack; +float bpm = fGlobalTime*118/60; +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +float box(vec2 p,vec2 b){p=abs(p)-b;return length(max(p,vec2(0.)))+min(0.,max(p.x,p.y));} +vec3 erot(vec3 p,vec3 ax,float t){return mix(dot(ax,p)*ax,p,cos(t))+cross(ax,p)*sin(t);} +vec3 pcg3d(vec3 p){ + uvec3 q = floatBitsToUint(p)*1234567891u+12345678u; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + q^=q>>16u; + q.x+=q.y*q.z;q.y+=q.x*q.z;q.z+=q.y*q.x; + return vec3(q)/float(-1u); + } +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + uv=erot(uv.xyy,vec3(0.,0.,1.),tanh(cos(bpm*.25+uv.y)*25)/6.28).xy; + uv*=1-.5*step(.5,step(-abs(uv.x)+.7,texture(texFFTSmoothed,abs(uv.y*.25)).r)); + vec3 rrnd = pcg3d(vec3(uv,fGlobalTime)); + vec3 srnd = pcg3d(floor(vec3(uv.xyy*10))); + uv*=4.+1*tanh(sin(bpm+srnd.x*.5)*5); + vec3 col = vec3(0.); + for(float i=0,im=255;i>16; + s.x+=s.y*s.z; + s.y+=s.z*s.x; + s.z+=s.x*s.y; + return s; +} + +vec3 hash3f(vec3 f){ + return vec3(hash3u(floatBitsToUint(f)))/float(-1u); +} + +uvec3 seed; +vec3 random3(){ + seed=hash3u(seed); + return vec3(seed)/float(-1u); +} + +vec3 calcgrad(float t){ + return 3.*(.5-.5*cos(TAU*saturate(1.5*t-vec3(0,.25,.5)))); +} + +mat2 r2d(float t){ + float c=cos(t); + float s=sin(t); + return mat2(c,s,-s,c); +} + +float ease(float t,float k){ + float k1=k+1.; + t=1.-t; + float v=k1*pow(t,k)-k*pow(t,k1); + return 1.-v; +} + +mat3 orthbas(vec3 z){ + z=normalize(z); + vec3 up=abs(z.y)<.99?vec3(0,1,0):vec3(0,0,1); + vec3 x=normalize(cross(up,z)); + return mat3(x,cross(z,x),z); +} + +vec3 cyclic(vec3 p,vec3 warpoff,float pers){ + mat3 b=orthbas(vec3(-3,2,-1)); + vec4 sum=vec4(0); + repeat(i,5){ + p*=b; + p+=sin(p.yzx+warpoff); + sum+=vec4( + cross(sin(p.zxy),cos(p)), + 1 + ); + sum/=pers; + p*=2.; + } + return sum.xyz/sum.w; +} + +float calcdens(vec3 p,float t){ + float tt=t; + tt=mix( + tt, + ease(fract(t),4.)+floor(t), + .8 + ); + + vec3 p1=p; + p1.y-=20.; + p1.yz*=r2d(-.5*tt); + p1.yz*=r2d(log(length(p1.yz))); + + vec3 p2=p; + p2.y+=15.; + p2.z+=5.; + p2.xy*=r2d(0.6); + p2.yz*=r2d(-.7*tt); + p2.yz*=r2d(2.*log(length(p2.yz))); + + p=mix(p1,p2,step(4.,mod(time,8.))); + + vec3 warpoff=vec3(2); + warpoff.xy*=r2d(.4*tt); + warpoff.yz*=r2d(.5*tt); + + float d=cyclic(p,warpoff,.5).x; + d=mix(d,sin(20.*d),.1); + d=pow(saturate(.5+.5*d),6.); + return .5*d; +} + +float sdtorus(vec3 p,float R,float r){ + vec2 pt=vec2(length(p.xy)-R,p.z); + return length(pt)-r; +} + +float map(vec3 p){ + float d=1E9; + vec3 pt=p; + + p=mix(p,p.yzx,step(4.,mod(time,8.))); + + pt=p; + pt.y-=2.; + pt.yz*=r2d(-.6+.1*cos(time)); + pt.zx*=r2d(-.6+.1*sin(time)-1.9); + d=min(d,sdtorus(pt,1.6,.1)); + + pt=p; + pt-=vec3(-.1,.2,0); + pt.yz*=r2d(-.6+.1*cos(time)); + pt.zx*=r2d(-.6+.1*sin(time)); + d=min(d,sdtorus(pt,1.6,.1)); + + pt=p; + pt.y+=2.; + pt.yz*=r2d(-.6+.1*cos(time)); + pt.zx*=r2d(-.6+.1*sin(time)+1.5); + d=min(d,sdtorus(pt,1.6,.1)); + + return d; +} + +vec3 nmap(vec3 p){ + vec2 d=vec2(0,1E-4); + return normalize(vec3( + map(p+d.yxx)-map(p-d.yxx), + map(p+d.xyx)-map(p-d.xyx), + map(p+d.xxy)-map(p-d.xxy) + )); +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + vec2 p=uv*2.-1.; + p.x*=v2Resolution.x/v2Resolution.y; + float deltap=2./v2Resolution.y; + + time=fGlobalTime; + seed=floatBitsToUint(vec3(p,time)); + p+=deltap*(random3().xy-.5); + + vec2 p0=p; + float glt=mod(time,4.); + float glf=1.; + repeat(i,6){ + float fi=float(i); + vec2 cell=floor(p/vec2(.8,.2)*glf/1.); + vec3 xi=hash3f(vec3(cell,fi+floor(7.*fi+time*30.))); + vec2 off=.5*(xi.xy-.5)/glf; + off*=step(glt,.5*pow(xi.z,10.)); + p+=off; + glf*=1.4; + } + + vec3 col=vec3(0); + vec3 colrem=vec3(1); + + float side=1.; + vec3 ro=vec3(0,0,5); + vec3 rd=normalize(vec3(p,-3)); + float rl=0.; + vec3 rp=ro+rd*rl; + + repeat(i,100){ + float fi=float(i); + vec3 xi=random3(); + float delay=xi.y; + + float tt=time-.3*delay; + + float dist=.1*exp2(xi.x); + dist=min(dist,side*map(rp)); + rl+=dist; + rp=ro+rd*rl; + + float dens=calcdens(rp,tt); + col+=colrem*calcgrad(delay)*dist*dens; + + if(dist<.001){ + vec3 n=side*nmap(rp); + + ro=rp; + + vec3 rdt=refract(rd,n,exp2(-side*log2(1.5))); + if(rdt==vec3(0)){ + rdt=reflect(rd,n); + }else{ + side=-side; + } + rd=rdt; + + rl=.002/abs(dot(rd,n)); + rp=ro+rd*rl; + + colrem*=mix( + vec3(1), + .5+.5*cos(3.*abs(dot(rd,n))+vec3(0,2,4)), + .2 + ); + } + } + + col=pow(col,vec3(.4545)); + + vec2 pt=p; + pt.x-=sign(pt.x)*min(abs(pt.x),.4); + float d=length(pt)-.2; + col*=mix(1.,.5,linearstep(deltap,-deltap,d)); + pt.y+=.03; + d=length(pt)-.2; + col*=mix(1.,.5,smoothstep(.05,-.05,d)); + + repeat(i,100){ + float fi=float(i); + vec3 xi=random3(); + float delay=(fi+xi.x)/100.; + float tt=time-.3*delay-.1; + + float r=.16; + float d=1E9; + float ani=ease(fract(tt),5.); + vec2 ani2=vec2(r*ani,0); + d=min(d, abs(length(p)-r) ); + d=min(d, abs(length(p-.5*ani2)-r) ); + d=min(d, abs(length(p+.5*ani2)-r) ); + d=min(d, abs(length(p-ani2)-r) ); + d=min(d, abs(length(p+ani2)-r) ); + d=min(d, abs(length(p-2.*ani2)-r) ); + d=min(d, abs(length(p+2.*ani2)-r) ); + + d=min(d, abs(length(p-r*vec2(2.9,0.9))-.02*r) ); + d=min(d, abs(length(p+r*vec2(2.9,0.9))-.02*r) ); + + vec2 cell=vec2(0); + cell.x=clamp(round(p.x/.04)*.04,-.12,.12); + d=min(d, length(abs(p-cell)-r*vec2(0,1.5))-.02*r ); + + vec2 pt=abs(p); + pt-=r*vec2(3.,1.5); + cell=clamp(round(pt/.02)*.02,.0,.06); + pt-=cell; + float show=step(.5,hash3f(vec3(cell,floor((ani+floor(tt))*10.))).x); + d=min(d, length(pt)-.02*r+1.*show ); + + d-=.001; + + col+=calcgrad(delay)*linearstep(deltap,-deltap,d)/100.; + } + + col=mix( + col, + abs(sin(5.*col)), + saturate(length(p-p0)/.1) + ); + + col*=1.-.3*length(p); + col=smoothstep( + vec3(0,-.1,-.2), + vec3(1,1.1,1.2), + col + ); + + out_color=vec4(col,1); +} \ No newline at end of file diff --git a/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_Kamoshika.glsl b/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_Kamoshika.glsl new file mode 100644 index 000000000..464526344 --- /dev/null +++ b/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_Kamoshika.glsl @@ -0,0 +1,274 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define hash(x) fract(sin(x) * 43758.5453123) +const float PI = acos(-1.); +const float PI2 = PI * 2.; +const float BPM = 145.; +const float quadScale = 1.; +const int numSamples = 8; +float Time; +float reTime; + +const uvec4 ch_W = uvec4(0x00C6C6,0xC6C6D6,0xD66C6C,0x6C0000); +const uvec4 ch_e = uvec4(0x000000,0x0078CC,0xFCC0CC,0x780000); +const uvec4 ch_b = uvec4(0x00E060,0x607C66,0x666666,0xDC0000); +const uvec4 ch_G = uvec4(0x003C66,0xC6C0C0,0xCEC666,0x3E0000); +const uvec4 ch_L = uvec4(0x00F060,0x606060,0x626666,0xFE0000); +const uvec4 ch_lov = uvec4(0x0044EE,0xFEFEFE,0x7C3838,0x100000); +const uvec4 ch_1 = uvec4(0x001030,0xF03030,0x303030,0xFC0000); +const uvec4 ch_0 = uvec4(0x007CC6,0xD6D6D6,0xD6D6C6,0x7C0000); +const uvec4 ch_crs = uvec4(0x000000,0x18187E,0x181800,0x000000); +const uvec4 ch_3 = uvec4(0x0078CC,0x0C0C38,0x0C0CCC,0x780000); + +bool extract_bit(uint n, int b) { + return bool(1U & (n >> b)); +} + +bool sprite(uvec4 spr, vec2 uv) { + ivec2 I = ivec2(floor(uv)); + bool bounds = 0 <= I.x && I.x < 8 && 0 <= I.y && I.y < 12; + int h = I.y / 3; + if(h < 2) { + spr.xy = spr.zw; + } + if(h % 2 == 0) { + spr.x = spr.y; + } + int bit = 7 - I.x + (I.y % 3) * 8; + return bounds && extract_bit(spr.x, bit); +} + +vec3 hud(vec2 uv, vec3 col, float scale) { + bool webgl = mod(Time, 2.) < 1.; + uvec4[] str = webgl ? uvec4[](ch_W, ch_e, ch_b, ch_G, ch_L) : + uvec4[](ch_1, ch_0, ch_crs, ch_3, ch_crs); + int len = webgl ? 5 : 4; + + uv *= 12. / scale; + uv += vec2(8 * len, 12) * 0.5; + int ix = int(floor(uv.x / 8.)); + ix = clamp(ix, 0, len - 1); + uv.x -= float(ix * 8); + + if(sprite(str[ix], uv)) { + col = min(col + 0.7, 1.); + } else if(-5. < uv.x && uv.x < 11. && 0. < uv.y && uv.y < 13.) { + col *= 0.3; + } + return col; +} + +vec3 rayDir(vec2 uv, vec3 dir, float fov) { + dir = normalize(dir); + vec3 u = abs(dir.y) < 0.999 ? vec3(0, 1, 0) : vec3(0, 0, 1); + vec3 side = normalize(cross(dir, u)); + vec3 up = cross(side, dir); + return normalize(uv.x * side + uv.y * up + dir / tan(fov / 360. * PI)); +} + +void dof(inout vec3 ro, inout vec3 rd, inout float seed, float L, float factor) { + float r = sqrt(hash(seed++)); + float a = hash(seed++) * PI2; + vec3 v = vec3(r * vec2(cos(a), sin(a)) * factor, 0); + ro += v; + rd = normalize(rd * L - v); +} + +float plaIntersect(vec3 oc, vec3 rd, vec3 normal) { + return -dot(oc, normal) / dot(rd, normal); +} + +bool sphIntersect(vec3 oc, vec3 rd, float ra2) { + float b = dot(oc, rd); + float c = dot(oc, oc) - ra2; + return b * b > c; +} + +float hash13(vec3 p) { + return hash(dot(p, vec3(127.1, 311.7, 74.7))); +} + +vec3 hsv(float h, float s, float v) { + vec3 res = fract(h + vec3(0, 2, 1) / 3.); + res = clamp(abs(res * 6. - 3.) - 1., 0., 1.); + res = (res - 1.) * s + 1.; + return res * v; +} + +float smoothSqWave(float x, float factor) { + x -= 0.5; + float odd = mod(floor(x), 2.); + factor *= odd * 2. - 1.; + float res = smoothstep(0.5 - factor, 0.5 + factor, fract(x)); + return res * 2. - 1.; +} + +float luma(vec3 col) { + return dot(col, vec3(0.299, 0.587, 0.114)); +} + +mat2 rotate2D(float a) { + float s = sin(a); + float c = cos(a); + return mat2(c, s, -s, c); +} + +float triWave(float x) { + x -= 0.5; + x *= 0.5; + float res = abs(fract(x) - 0.5) - 0.25; + return res * 4.; +} + +float confettiIntersect(vec3 ro, vec3 rd, out vec3 normal, out float hue) { + float t = -1.; + + for(int i = -1; i < 10; i++) { + float pZ = floor(ro.z) - float(i); + float tp = plaIntersect(ro - vec3(0, 0, pZ), rd, vec3(0, 0, 1)); + vec2 p = ro.xy + tp * rd.xy; + + float zID = mod(pZ, 500.); + vec2 dis = vec2(sin(zID * 2.2), 0); + p.x += dis.x; + dis.y = hash(floor(p.x) + zID * 50.3218) * 500.; + p.y += dis.y; + + vec3 ID = vec3(floor(p), zID); + vec3 ce = vec3(ID.xy + 0.5 - dis, pZ); + vec3 oc = ro - ce; + + vec2 maxQuadSize = normalize(vec2(8, 12)) * 0.5; + vec2 quadSize = maxQuadSize * quadScale; + float ra2 = dot(quadSize, quadSize); + if(!sphIntersect(oc, rd, ra2)) { + continue; + } + + ID.xy = mod(ID.xy, 500.); + float h = hash13(ID); + hue = h; + float a = (fract(reTime * 0.4) + h * 1e1) * PI2; + mat2 rotA = rotate2D(a); + normal = vec3(0, rotA[0].yx); + + float phi = fract(h * 1e2) * PI2; + mat2 rotPhi = rotate2D(phi); + float theta = acos(fract(h * 1e3) * 2. - 1.); + theta += sign(fract(h * 1e4) - 0.5) * reTime * 0.1517; + mat2 rotTheta = rotate2D(theta); + normal.yx *= rotPhi; + normal.xz *= rotTheta; + + float tc = plaIntersect(oc, rd, normal); + if(tc < 0.) { + continue; + } + + vec3 P = oc + tc * rd; + P.zx *= rotTheta; + P.xy *= rotPhi; + P.y = dot(P.zy, rotA[1]); + P.xy *= rotate2D(h * 1e5); + + vec2 q = P.xy; + q *= 12. / quadSize.y * 0.5; + q += vec2(8, 12) * 0.5; + + //p -= 0.25; + //p = fract(p) * 15.; + + uvec4[] str = uvec4[](ch_W, ch_e, ch_b, ch_G, ch_L, ch_lov); + //uvec4[] str = uvec4[](ch_1, ch_0, ch_crs, ch_3); + int len = str.length(); + int ix = int(floor(fract(h * 1e6) * float(len))); + if(sprite(str[ix], q)) { + //if(sprite(uvec4(-1), q)) { + t = tc; + break; + } + } + + if(dot(rd, normal) > 0.) { + normal = -normal; + } + + return t; +} + +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1) * 0.5; + vec3 col = vec3(0); + + Time = time * BPM / 60. * 0.5; + reTime = Time + triWave(Time - 0.5) * 0.47; + //reTime = Time + triWave(Time) * 0.47; + //reTime = sin(Time * PI); + + vec3 ro = vec3(1, 1, -1) * reTime; + float fov = 60.; + fov += smoothSqWave(Time, 0.15) * 20.; + vec3 dir = vec3(0, 0, -1); + vec3 rd = rayDir(uv, dir, fov); + + float seed = hash13(vec3(uv, fract(time * 0.1))); + float L = 3. + sin(time) * 2.; + for(int i = 0; i < numSamples; i++) { + vec3 ros = ro; + vec3 rds = rd; + dof(ros, rds, seed, L, 0.1); + + vec3 normal; + float hue; + float t = confettiIntersect(ros, rds, normal, hue); + if(t > 0.) { + vec3 albedo = hsv(hue, 0.7, 1.); + vec3 ld = normalize(vec3(1, 5, 2)); + float diff = max(dot(normal, ld), 0.); + float spec = pow(max(dot(reflect(ld, normal), rd), 0.), 30.); + col += albedo * (mix(diff, spec, 0.5) * 7. + 0.3) * exp(-t * t * 0.02); + } + } + col /= float(numSamples); + col = clamp(col, 0., 1.); + + col = pow(col, vec3(1. / 2.2)); + + //col += float(sprite(ch_W, uv * 15.)); + //col += fract(atan(uv.y, uv.x) / 6. + 0.5 - Time); + + float lu = luma(1. - col); + if(mod(Time - 1., 2.) < 1.) { + vec2 pos = gl_FragCoord.xy / v2Resolution; + vec2 dis = (pos - 0.5) * 0.07; + col.r = texture(texPreviousFrame, pos - dis).a; + col.g = texture(texPreviousFrame, pos).a; + col.b = texture(texPreviousFrame, pos + dis).a; + } + + float s = 0.25 + pow(sin(Time * PI2 * 2.) * 0.5 + 0.5, 5.) * 0.3; + col = hud(uv, col, s); + + out_color = vec4(col, lu); +} \ No newline at end of file diff --git a/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_gam0022.glsl b/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_gam0022.glsl new file mode 100644 index 000000000..218a98252 --- /dev/null +++ b/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_gam0022.glsl @@ -0,0 +1,206 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds + +uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq +uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients +uniform sampler1D texFFTIntegrated; // this is continually increasing +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +uniform sampler2D texChecker; +uniform sampler2D texNoise; +uniform sampler2D texTex1; +uniform sampler2D texTex2; +uniform sampler2D texTex3; +uniform sampler2D texTex4; + +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything + +#define time fGlobalTime +#define PI acos(-1) +#define TAU (2. * PI) +#define saturate(x) clamp(x, 0, 1) +#define VOL 0.0 +#define SOL 1.0 +#define phase(x) (floor(x) + .5 + .5 * cos(TAU * .5 * exp(-5. * fract(x)))) + +float beat, beatTau, beatPhase; +float scene; + +vec4 map(vec3 p); + +float sdBox(vec3 p, vec3 b) { + vec3 q = abs(p) - b; + return length(max(q, 0)) + min(0, max(q.x, max(q.y, q.z))); +} + +void U(inout vec4 m, float d, float a, float b, float c) { + if (d < m.x) m = vec4(d, a, b, c); +} + +void rot(inout vec2 p, float a) { p *= mat2(cos(a), sin(a), -sin(a), cos(a)); } + +void pmod(inout vec2 p, float s) { + float n = TAU / s; + float a = PI / s - atan(p.x, p.y); + a = floor(a / n) * n; + rot(p, a); +} + +vec3 normal(vec3 p) { + vec2 e = vec2(0, .0005); + return normalize(map(p).x - vec3(map(p - e.yxx).x, map(p - e.xyx).x, map(p - e.xxy).x)); +} + +vec3 pal(float h) { + vec3 col = vec3(0.5) + 0.5 * cos(TAU * (vec3(0.0, 0.33, 0.67) + h)); + return mix(col, vec3(1), 0.1 * floor(h)); +} + +vec3 evalLight(vec3 p, vec3 normal, vec3 view, vec3 light, vec3 baseColor, float metallic, float roughness) { + vec3 ref = mix(vec3(0.04), baseColor, metallic); + vec3 h = normalize(light + view); + vec3 diffuse = mix(1.0 - ref, vec3(0.0), metallic) * baseColor / PI; + float eps = 6e-8; + float m = clamp(2.0 * (1.0 / (roughness * roughness)) - 2.0, eps, 1.0 / eps); + vec3 specular = ref * pow(max(0.0, dot(normal, h)), m) * (m + 2.0) / (8.0 * PI); + return (diffuse + specular) * max(0.0, dot(light, normal)); +} + +float sdN(vec3 p, float z) { + rot(p.xy, -0.07 * TAU); + if (p.x < 0) p.y = -p.y; + p.x = abs(p.x); + float w = 0.13; + float h = 0.07; + float s = 4; + float a = w/h/s*p.y; + return min(sdBox(p, vec3(0.2, h, z)), sdBox(p - vec3(0.25 - a, h * (s-1), 0), vec3(w - a, h * s, z))); +} + +vec4 map(vec3 pos) { + vec4 m = vec4(1); + + if (scene == 0) { + vec3 p = pos; + rot(p.xz, beatTau / 8); + U(m, sdN(p, 0.1), SOL, 10, 1); + } else if (scene == 1) { + vec3 p = pos; + float a = 2; + rot(p.xz, beatTau / 32); + p -= 0.5 * a; + p = mod(p, a) - 0.5 * a; + rot(p.xz, beatTau / 8); + U(m, sdN(p, 0.1), SOL, 10, 1); + } else if (scene == 3) { + vec3 p = pos; + float a = 2; + + // rot(p.xz, beatTau / 32); + p -= 0.5 * a; + vec3 grid = floor(p / a); + p = mod(p, a) - 0.5 * a; + pmod(p.xy, 8); + p.y -= 0.6 + 0.3 * cos(beatTau / 32); + rot(p.xz, beatTau / 8); + float e = saturate(cos(beatTau + TAU * pos.z / 16)); + if (e > 0.9) { + U(m, sdN(p, 0.1), VOL, 10 * e, fract(dot(grid, vec3(0.2)))); + } else { + U(m, sdN(p, 0.1), SOL, 10, fract(dot(grid, vec3(0.2)))); + } + } else { + vec3 p = pos; + float a = 2; + vec3 of = vec3(0.32, 0, 0); + float s = 1; + // rot(p.xy, pos.z * 0.2); + // p.y -= cos(p.z * TAU / 8) * 0.5; + p = mod(p, a) - 0.5*a; + p -= of; + for (int i = 0; i < 3; i++) { + p = abs(p + of) - of; + U(m, sdN(p * 2, 0.02) / 2, VOL, 1, 0.4); + rot(p.xz, TAU * 0.8); + rot(p.yz, TAU * 0.3 + beatPhase + pos.z); + } + + float scale = 1.01; + s *= scale; + p *= scale; + + float e = saturate(cos(beatTau + TAU * pos.z / 16)); + U(m, sdN(p, 0.02) / s, VOL, 10 * e, 0 * fract(pos.z / 8)); + U(m, sdN(p, 0.1) / s, SOL, 1, 0); + } + return m; +} + +vec3 render(vec3 ro, vec3 rd) { + vec3 col = vec3(0); + float t = 0; + for (int i = 0; i < 100; i++) { + vec3 p = ro + rd * t; + vec4 m = map(p); + float d = m.x; + if (m.y == SOL) { + t += d * 0.5; + if (d < t * 0.001) { + vec3 n = normal(p); + // col += saturate(dot(n, normalize(vec3(1, 1, -1)))); + col += evalLight(p, n, -rd, normalize(vec3(1, 1, -1)), vec3(1), 0.7, 0.5) * pal(m.w) * m.z; + break; + } + } else { + t += abs(d) * 0.5 + 0.01; + col += saturate(0.001 * pal(m.w) * m.z / abs(d)); + } + } + col = mix(vec3(0), col, exp(-0.01 * t)); + return col; +} + +vec4 plas( vec2 v, float time ) +{ + float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); + return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); +} +void main(void) +{ + vec2 uv = vec2(gl_FragCoord.x / v2Resolution.x, gl_FragCoord.y / v2Resolution.y); + uv -= 0.5; + uv /= vec2(v2Resolution.y / v2Resolution.x, 1); + + /*vec2 m; + m.x = atan(uv.x / uv.y) / 3.14; + m.y = 1 / length(uv) * .2; + float d = m.y; + + float f = texture( texFFT, d ).r * 100; + m.x += sin( fGlobalTime ) * 0.1; + m.y += fGlobalTime * 0.25; + + vec4 t = plas( m * 3.14, fGlobalTime ) / d; + t = clamp( t, 0.0, 1.0 ); + out_color = f + t;*/ + + beat = time * 145 / 60; + beat = mod(beat, 8 * 32); + beatTau = beat * TAU; + beatPhase = phase(beat); + float len = 1.; + scene = floor(mod(beat, len * 4) / len); + // scene = 4; + + vec3 ro = vec3(0, 0, -1); + if (scene >= 2) ro = vec3(0, 0, beat); + vec3 rd = vec3(uv, 1.1 + 0 * cos(beatTau / 8) + 0 * texture(texFFT, 0.1)); + rd = normalize(rd); + // rot(rd.xz, beatTau / 8); + // rot(rd.xy, beatTau / 8); + vec3 col = render(ro, rd); + col += (1 - saturate(5 * abs(uv.y) - 4 * texture(texFFT, saturate(0.2 * abs(0.9 * uv.x))).r)) * pal(fract(beat / 8 + uv.x / 2)); + out_color = vec4(col, 1); +} diff --git a/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_renard.glsl b/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_renard.glsl new file mode 100644 index 000000000..87151397c --- /dev/null +++ b/shader_file_sources/2024_09_28_shader_jam_normalizefm/grabber_normalizefm_renard.glsl @@ -0,0 +1,122 @@ +#version 410 core + +uniform float fGlobalTime; // in seconds +#define time fGlobalTime +uniform vec2 v2Resolution; // viewport resolution (in pixels) +uniform float fFrameTime; // duration of the last frame, in seconds +uniform sampler2D texPreviousFrame; // screenshot of the previous frame +#define backbuffer texPreviousFrame +layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything +int bt; +float alt,lt,tr,atr; +#define sc(x) hash(vec3(x,1.4,bt)) +#define rep(i,n) for(int i=0;i>8)^x.yzx)*k;x=((x>>8)^x.yzx)*k;x=((x>>8)^x.yzx)*k; + return vec3(x)/-1u; +} +mat3 bnt(vec3 t) +{ + vec3 b,n=vec3(0,1,0);t=norm(t);b=norm(cross(n,t));n=norm(cross(t,b));return mat3(b,n,t); +} +vec3 erot(vec3 p,vec3 ax,float a){return mix(dot(ax,p)*ax,p,cos(a))+sin(a)*cross(ax,p);} +vec3 pl(vec3 ro,vec3 rd,vec3 pd,float w) +{ + float l=-(dot(ro,pd)-w)/dot(rd,pd); + vec3 p=rd*l+ro;mat3 b=bnt(pd); + vec2 uv=vec2(dot(b[0],p),dot(b[1],p)); + return vec3(uv,l<0?1e5:l); +} +vec3 cyc(vec3 x) +{ + float q=1.5; + vec4 v=vec4(0); + rep(i,5) + { + x+=sin(x.yzx); + v=v*q+vec4(cross(cos(x),sin(x.zxy)),1); + x*=q; + } + return v.xyz/v.w; +} + +vec3 s0(vec2 suv) +{ + vec3 c=pow(sat(cyc(vec3(suv,alt))*.5+.5),vec3(2,1,.5)); + //suv+=vec2(0,alt*.1); + rep(i,4) + { + vec3 h=hash(vec3(floor(suv),i+bt/4)); + if(h.x<.5)break; + suv*=2; + } + vec3 h=hash(vec3(floor(suv),5)); + vec2 fuv=fract(suv); + c+=step(abs(length(fuv-.5)-.3),length(fwidth(fuv))*2); + if(h.y<.5)c*=0; + else c*=step(length(fuv-.5),.3); + return c; +} +float n0(vec2 uv) +{ + return step(fract(uv.y+alt),.1); +} +vec3 s1(vec2 suv) +{ + int v=bt%2; + vec3 rp,rd,ro,dir; + float z=1,l=1e5; + ro=erot(vec3(3),norm(tan(sc(1)-.5)),alt); + dir=-ro; + rd=bnt(dir)*norm(vec3(suv,z)); + vec3 res; + int n=int(sc(1.7).x*4)*2+1; + rep(i,n) + { + float f=float(i+.5)/8.; + vec3 uvl; + if(v==0)uvl=pl(ro,rd,norm(tan(hash(vec3(1,i,bt))-.5)),1); + else if(v==1) + { + uvl=pl(ro,rd,norm(dir),i); + uvl=erot(uvl,vec3(0,0,1),(f*sc(1.2).x*2.4*alt)); + } + float s=n0(uvl.xy); + if(0",id:"{k}-{e}-{ee}"}}'), + +print(',\n'.join(entries)) diff --git a/timeline/index.html b/timeline/index.html new file mode 100644 index 000000000..8e55db72f --- /dev/null +++ b/timeline/index.html @@ -0,0 +1,530 @@ + + + + + + + ..:: Timeline ::.. + + +

+ + +

+
+ + + + \ No newline at end of file diff --git a/tool/actimatic/FileSaver.min.js b/tool/actimatic/FileSaver.min.js new file mode 100644 index 000000000..6d493b298 --- /dev/null +++ b/tool/actimatic/FileSaver.min.js @@ -0,0 +1,3 @@ +(function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Deprecated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open("GET",a),d.responseType="blob",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error("could not download file")},d.send()}function d(a){var b=new XMLHttpRequest;b.open("HEAD",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||("object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),"string"==typeof b)return c(b,d,e);var h="application/octet-stream"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\/[\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&"undefined"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,"undefined"!=typeof module&&(module.exports=g)}); + +//# sourceMappingURL=FileSaver.min.js.map \ No newline at end of file diff --git a/tool/actimatic/README.md b/tool/actimatic/README.md new file mode 100644 index 000000000..906f75c3c --- /dev/null +++ b/tool/actimatic/README.md @@ -0,0 +1,9 @@ +# Actimatic +Web based tool to follow activity of folks on bonzomatic network + download the shader. + +Will works locally wil a local sever +``` +python -m http.server +``` + +Might have some issue with online verison, especially Https / non-https mixed content. \ No newline at end of file diff --git a/tool/actimatic/index.html b/tool/actimatic/index.html new file mode 100644 index 000000000..946f813dc --- /dev/null +++ b/tool/actimatic/index.html @@ -0,0 +1,574 @@ + + + + + + + Actimatic + + + + + + + +
+
+ Informations + host + room (ws://host.tld/room) : + +
+ + Currently have in localStorage : +
+
+
+ List of participants : + + +
+ + +
+ + \ No newline at end of file diff --git a/tool/actimatic/jszip.min.js b/tool/actimatic/jszip.min.js new file mode 100644 index 000000000..131b697d6 --- /dev/null +++ b/tool/actimatic/jszip.min.js @@ -0,0 +1,13 @@ +/*! + +JSZip v3.6.0 - A JavaScript class for generating and reading zip files + + +(c) 2009-2016 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/master/LICENSE +*/ + +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,u){function h(r,e){if(!o[r]){if(!a[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(f)return f(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return h(t||e)},i,i.exports,s,a,o,u)}return o[r].exports}for(var f="function"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),h[u++]=t,64!==s&&(h[u++]=r),64!==a&&(h[u++]=n);return h}},{"./support":30,"./utils":32}],2:[function(e,t,r){"use strict";var n=e("./external"),i=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),a=e("./stream/DataLengthProbe");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){"use strict";var n=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(e){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){"use strict";var n=e("./utils"),a=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==n.getTypeOf(e)?function(e,t,r){var n=a,i=0+r;e^=-1;for(var s=0;s>>8^n[255&(e^t[s])];return-1^e}(0|t,e,e.length):function(e,t,r){var n=a,i=0+r;e^=-1;for(var s=0;s>>8^n[255&(e^t.charCodeAt(s))];return-1^e}(0|t,e,e.length):0}},{"./utils":32}],5:[function(e,t,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){"use strict";var n;n="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako"),s=e("./utils"),a=e("./stream/GenericWorker"),o=n?"uint8array":"array";function u(e,t){a.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic="\b\0",s.inherits(u,a),u.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},u.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},u.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},u.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new u("Deflate",e)},r.uncompressWorker=function(){return new u("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){"use strict";function I(e,t){var r,n="";for(r=0;r>>=8;return n}function i(e,t,r,n,i,s){var a,o,u=e.file,h=e.compression,f=s!==B.utf8encode,l=O.transformTo("string",s(u.name)),d=O.transformTo("string",B.utf8encode(u.name)),c=u.comment,p=O.transformTo("string",s(c)),m=O.transformTo("string",B.utf8encode(c)),_=d.length!==u.name.length,g=m.length!==c.length,v="",b="",w="",y=u.dir,k=u.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),f||!_&&!g||(S|=2048);var z,E=0,C=0;y&&(E|=16),"UNIX"===i?(C=798,E|=((z=u.unixPermissions)||(z=y?16893:33204),(65535&z)<<16)):(C=20,E|=63&(u.dosPermissions||0)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v+="up"+I((b=I(1,1)+I(T(l),4)+d).length,2)+b),g&&(v+="uc"+I((w=I(1,1)+I(T(p),4)+m).length,2)+w);var A="";return A+="\n\0",A+=I(S,2),A+=h.magic,A+=I(a,2),A+=I(o,2),A+=I(x.crc32,4),A+=I(x.compressedSize,4),A+=I(x.uncompressedSize,4),A+=I(l.length,2),A+=I(v.length,2),{fileRecord:R.LOCAL_FILE_HEADER+A+l+v,dirRecord:R.CENTRAL_FILE_HEADER+I(C,2)+A+I(p.length,2)+"\0\0\0\0"+I(E,4)+I(n,4)+l+v+p}}var O=e("../utils"),s=e("../stream/GenericWorker"),B=e("../utf8"),T=e("../crc32"),R=e("../signature");function n(e,t,r,n){s.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}O.inherits(n,s),n.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,s.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},n.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=i(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},n.prototype.closedSource=function(e){this.accumulate=!1;var t,r=this.streamFiles&&!e.file.dir,n=i(e,r,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(n.dirRecord),r)this.push({data:(t=e,R.DATA_DESCRIPTOR+I(t.crc32,4)+I(t.compressedSize,4)+I(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:n.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},n.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(e){},lastIndexOfSignature:function(e){},readAndCheckSignature:function(e){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,r){"use strict";var n=e("./Uint8ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){"use strict";var n=e("./DataReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){"use strict";var n=e("./ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){"use strict";var n=e("../utils"),i=e("../support"),s=e("./ArrayReader"),a=e("./StringReader"),o=e("./NodeBufferReader"),u=e("./Uint8ArrayReader");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),"string"!==t||i.uint8array?"nodebuffer"===t?new o(e):i.uint8array?new u(n.transformTo("uint8array",e)):new s(n.transformTo("array",e)):new a(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../utils");function s(e){n.call(this,"ConvertWorker to "+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../crc32");function s(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){"use strict";function n(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r "+e:e}},t.exports=n},{}],29:[function(e,t,r){"use strict";var h=e("../utils"),i=e("./ConvertWorker"),s=e("./GenericWorker"),f=e("../base64"),n=e("../support"),a=e("../external"),o=null;if(n.nodestream)try{o=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function u(e,t,r){var n=t;switch(t){case"blob":case"arraybuffer":n="uint8array";break;case"base64":n="string"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s("error"),this._worker.error(e)}}u.prototype={accumulate:function(e){return o=this,u=e,new a.Promise(function(t,r){var n=[],i=o._internalType,s=o._outputType,a=o._mimeType;o.on("data",function(e,t){n.push(e),u&&u(t)}).on("error",function(e){n=[],r(e)}).on("end",function(){try{var e=function(e,t,r){switch(e){case"blob":return h.newBlob(h.transformTo("arraybuffer",t),r);case"base64":return f.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return u.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(u.uint8array?"uint8array":"array",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(u.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(u.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+h[e[r]]>t?r:t}(t),i=t;n!==t.length&&(u.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(f,n),f.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=f},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,o){"use strict";var u=e("./support"),h=e("./base64"),r=e("./nodejsUtils"),n=e("set-immediate-shim"),f=e("./external");function i(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(e){if(this.extraFields[1]){var t=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=t.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=t.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=t.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=t.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return f(e,e.length)},r.binstring2buf=function(e){for(var t=new u.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return f(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+h[e[r]]>t?r:t}},{"./common":41}],43:[function(e,t,r){"use strict";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){"use strict";var u,d=e("../utils/common"),h=e("./trees"),c=e("./adler32"),p=e("./crc32"),n=e("./messages"),f=0,l=0,m=-2,i=2,_=8,s=286,a=30,o=19,g=2*s+1,v=15,b=3,w=258,y=w+b+1,k=42,x=113;function S(e,t){return e.msg=n[t],t}function z(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(d.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function A(e,t){h._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,C(e.strm)}function I(e,t){e.pending_buf[e.pending++]=t}function O(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function B(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-y?e.strstart-(e.w_size-y):0,h=e.window,f=e.w_mask,l=e.prev,d=e.strstart+w,c=h[s+a-1],p=h[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(h[(r=t)+a]===p&&h[r+a-1]===c&&h[r]===h[s]&&h[++r]===h[s+1]){s+=2,r++;do{}while(h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&su&&0!=--i);return a<=e.lookahead?a:e.lookahead}function T(e){var t,r,n,i,s,a,o,u,h,f,l=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=l+(l-y)){for(d.arraySet(e.window,e.window,l,l,0),e.match_start-=l,e.strstart-=l,e.block_start-=l,t=r=e.hash_size;n=e.head[--t],e.head[t]=l<=n?n-l:0,--r;);for(t=r=l;n=e.prev[--t],e.prev[t]=l<=n?n-l:0,--r;);i+=l}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,u=e.strstart+e.lookahead,f=void 0,(h=i)<(f=a.avail_in)&&(f=h),r=0===f?0:(a.avail_in-=f,d.arraySet(o,a.input,a.next_in,f,u),1===a.state.wrap?a.adler=c(a.adler,o,f,u):2===a.state.wrap&&(a.adler=p(a.adler,o,f,u)),a.next_in+=f,a.total_in+=f,f),e.lookahead+=r,e.lookahead+e.insert>=b)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=b&&(e.ins_h=(e.ins_h<=b)if(n=h._tr_tally(e,e.strstart-e.match_start,e.match_length-b),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=b){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=b&&(e.ins_h=(e.ins_h<=b&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-b,n=h._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-b),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(T(e),0===e.lookahead&&t===f)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,A(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-y&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(A(e,!1),e.strm.avail_out),1)}),new F(4,4,8,4,R),new F(4,5,16,8,R),new F(4,6,32,32,R),new F(4,4,16,16,D),new F(8,16,32,32,D),new F(8,16,128,128,D),new F(8,32,128,256,D),new F(32,128,258,1024,D),new F(32,258,258,4096,D)],r.deflateInit=function(e,t){return L(e,t,_,15,8,0)},r.deflateInit2=L,r.deflateReset=P,r.deflateResetKeep=U,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,l):m},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),I(n,n.gzhead.time>>16&255),I(n,n.gzhead.time>>24&255),I(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),I(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(I(n,255&n.gzhead.extra.length),I(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(I(n,0),I(n,0),I(n,0),I(n,0),I(n,0),I(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),I(n,3),n.status=x);else{var a=_+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=x,O(n,a),0!==n.strstart&&(O(n,e.adler>>>16),O(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending!==n.pending_buf_size));)I(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&C(e),n.pending+2<=n.pending_buf_size&&(I(n,255&e.adler),I(n,e.adler>>8&255),e.adler=0,n.status=x)):n.status=x),0!==n.pending){if(C(e),0===e.avail_out)return n.last_flush=-1,l}else if(0===e.avail_in&&z(t)<=z(r)&&4!==t)return S(e,-5);if(666===n.status&&0!==e.avail_in)return S(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==f&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(T(e),0===e.lookahead)){if(t===f)return 1;break}if(e.match_length=0,r=h._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=w){if(T(e),e.lookahead<=w&&t===f)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=b&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=b?(r=h._tr_tally(e,1,e.match_length-b),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=h._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}(n,t):u[n.level].func(n,t);if(3!==o&&4!==o||(n.status=666),1===o||3===o)return 0===e.avail_out&&(n.last_flush=-1),l;if(2===o&&(1===t?h._tr_align(n):5!==t&&(h._tr_stored_block(n,0,0,!1),3===t&&(E(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),C(e),0===e.avail_out))return n.last_flush=-1,l}return 4!==t?l:n.wrap<=0?1:(2===n.wrap?(I(n,255&e.adler),I(n,e.adler>>8&255),I(n,e.adler>>16&255),I(n,e.adler>>24&255),I(n,255&e.total_in),I(n,e.total_in>>8&255),I(n,e.total_in>>16&255),I(n,e.total_in>>24&255)):(O(n,e.adler>>>16),O(n,65535&e.adler)),C(e),0=r.w_size&&(0===s&&(E(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new d.Buf8(r.w_size),d.arraySet(h,t,f-r.w_size,r.w_size,0),t=h,f=r.w_size),a=e.avail_in,o=e.next_in,u=e.input,e.avail_in=f,e.next_in=0,e.input=t,T(r);r.lookahead>=b;){for(n=r.strstart,i=r.lookahead-(b-1);r.ins_h=(r.ins_h<>>=w=b>>>24,p-=w,0==(w=b>>>16&255))E[s++]=65535&b;else{if(!(16&w)){if(0==(64&w)){b=m[(65535&b)+(c&(1<>>=w,p-=w),p<15&&(c+=z[n++]<>>=w=b>>>24,p-=w,!(16&(w=b>>>16&255))){if(0==(64&w)){b=_[(65535&b)+(c&(1<>>=w,p-=w,(w=s-a)>3,c&=(1<<(p-=y<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function u(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,C,2,0),f=h=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",r.mode=30;break}if(8!=(15&h)){e.msg="unknown compression method",r.mode=30;break}if(f-=4,k=8+(15&(h>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0)),f=h=0,r.mode=3;case 3:for(;f<32;){if(0===o)break e;o--,h+=n[s++]<>>8&255,C[2]=h>>>16&255,C[3]=h>>>24&255,r.check=B(r.check,C,4,0)),f=h=0,r.mode=4;case 4:for(;f<16;){if(0===o)break e;o--,h+=n[s++]<>8),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0)),f=h=0,r.mode=5;case 5:if(1024&r.flags){for(;f<16;){if(0===o)break e;o--,h+=n[s++]<>>8&255,r.check=B(r.check,C,2,0)),f=h=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(c=r.length)&&(c=o),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,c,k)),512&r.flags&&(r.check=B(r.check,n,c,s)),o-=c,s+=c,r.length-=c),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(c=0;k=n[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;f<32;){if(0===o)break e;o--,h+=n[s++]<>>=7&f,f-=7&f,r.mode=27;break}for(;f<3;){if(0===o)break e;o--,h+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;h>>>=2,f-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}h>>>=2,f-=2;break;case 14:for(h>>>=7&f,f-=7&f;f<32;){if(0===o)break e;o--,h+=n[s++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&h,f=h=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(c=r.length){if(o>>=5,f-=5,r.ndist=1+(31&h),h>>>=5,f-=5,r.ncode=4+(15&h),h>>>=4,f-=4,286>>=3,f-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=R(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<>>=_,f-=_,r.lens[r.have++]=v;else{if(16===v){for(z=_+2;f>>=_,f-=_,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&h),h>>>=2,f-=2}else if(17===v){for(z=_+3;f>>=_)),h>>>=3,f-=3}else{for(z=_+7;f>>=_)),h>>>=7,f-=7}if(r.have+c>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;c--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=R(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=R(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=u){e.next_out=a,e.avail_out=u,e.next_in=s,e.avail_in=o,r.hold=h,r.bits=f,T(e,d),a=e.next_out,i=e.output,u=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,h=r.hold,f=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(E=r.lencode[h&(1<>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<>b)])>>>16&255,v=65535&E,!(b+(_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<>>=b,f-=b,r.back+=b}if(h>>>=_,f-=_,r.back+=_,r.length=v,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;f>>=r.extra,f-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(E=r.distcode[h&(1<>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<>b)])>>>16&255,v=65535&E,!(b+(_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<>>=b,f-=b,r.back+=b}if(h>>>=_,f-=_,r.back+=_,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=v,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;f>>=r.extra,f-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===u)break e;if(c=d-u,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p=c>r.wnext?(c-=r.wnext,r.wsize-c):r.wnext-c,c>r.length&&(c=r.length),m=r.window}else m=i,p=a-r.offset,c=r.length;for(uc?(m=T[R+a[b]],A[I+a[b]]):(m=96,0),u=1<>S)+(h-=u)]=p<<24|m<<16|_|0,0!==h;);for(u=1<>=1;if(0!==u?(C&=u-1,C+=u):C=0,b++,0==--O[v]){if(v===y)break;v=t[r+a[b]]}if(k>>7)]}function x(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function S(e,t,r){e.bi_valid>i-r?(e.bi_buf|=t<>i-e.bi_valid,e.bi_valid+=r-i):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function C(e,t,r){var n,i,s=new Array(_+1),a=0;for(n=1;n<=_;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=E(s[o]++,o))}}function A(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function I(e){8>1;1<=r;r--)B(e,s,r);for(i=u;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],B(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,B(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,u=t.dyn_tree,h=t.max_code,f=t.stat_desc.static_tree,l=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=_;s++)e.bl_count[s]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<573;r++)p<(s=u[2*u[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),u[2*n+1]=s,h>=7;n<30;n++)for(w[n]=i<<7,e=0;e<1<>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),R(e,e.l_desc),R(e,e.d_desc),a=function(e){var t;for(D(e,e.dyn_ltree,e.l_desc.max_code),D(e,e.dyn_dtree,e.d_desc.max_code),R(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*f[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?U(e,t,r,n):4===e.strategy||s===i?(S(e,2+(n?1:0),3),T(e,l,d)):(S(e,4+(n?1:0),3),function(e,t,r,n){var i;for(S(e,t-257,5),S(e,r-1,5),S(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(p[r]+256+1)]++,e.dyn_dtree[2*k(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){var t;S(e,2,3),z(e,256,l),16===(t=e).bi_valid?(x(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}},{"../utils/common":41}],53:[function(e,t,r){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){"use strict";t.exports="function"==typeof setImmediate?setImmediate:function(){var e=[].slice.apply(arguments);e.splice(1,0,0),setTimeout.apply(null,e)}},{}]},{},[10])(10)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}); \ No newline at end of file diff --git a/tool/ezbonzo/README.md b/tool/ezbonzo/README.md new file mode 100644 index 000000000..b1a8bc1c5 --- /dev/null +++ b/tool/ezbonzo/README.md @@ -0,0 +1,37 @@ +# EzBonzo +Script that generate launcher pre-configured as sender to the correct bonzomatic server url. + +This is supposed to ease the preparation of online shader event. + +``` +usage: ezbonzo.py [-h] [--schema SCHEMA] [--host HOST] [--port PORT] [--room ROOM] [--config CONFIG] + +optional arguments: + -h, --help show this help message and exit + --schema SCHEMA Schema of the server url + --host HOST Host of the server url + --port PORT Port of the server url + --room ROOM Room of the server url + --config CONFIG Configuration file +``` + +It only needs python. + +`--config CONFIG Configuration file` is based on the Bonzomatic Launcher configuration files. It's expecting to have at least this format : + +```json +{ + # ... Whatever before ... + + "coders": [ + "Coder_01", + "Coder_02", + "Coder_03", + "Coder_04" + ], + + # ... Whatever after ... +} +``` + +If you are using the Bonzomatic Launcher as a host, just running `ezbonzo.py` aside the `launcher.json` should generate all the zip files for the participants. \ No newline at end of file diff --git a/tool/ezbonzo/ezbonzo.py b/tool/ezbonzo/ezbonzo.py new file mode 100644 index 000000000..a9b298284 --- /dev/null +++ b/tool/ezbonzo/ezbonzo.py @@ -0,0 +1,79 @@ +#!python3 + +import argparse +import codecs +import json +from zipfile import ZipFile +from datetime import datetime +from pathlib import Path + + +def server_url_builder(schema: str, host: str, port: str, room: str): + """ + Create a factory to build server url based on the coder handle + """ + + def _function(handle: str): + return f"{schema}://{host}:{port}/{room}/{handle}" + + return _function + + +def bonzo_arguments(server_url: str): + """ + Argument use to launch bonzomatic + """ + return f"skipdialog networkMode=sender serverURL={server_url}" + + +def _generate_launcher(filename: str, bonzo_cmd: str, bonzo_args): + """ + Write in a file a command line that should run bonzomatic + """ + with codecs.open(filename, "w", "UTF-8") as f: + f.write(f"{bonzo_cmd} {bonzo_args}") + return filename + + +def generate_launcher(host: str, room: str, coder: str, server_url): + """ + Generate a zip for a coder that contains a windows launcher, a unix launcher and the info.txt + """ + date = datetime.today().strftime("%Y_%m_%d") + id = f"{date}_{host.replace('.','_')}_{room}_{coder}" + files = [ + _generate_launcher( + f"{id}.bat", + ".\\Bonzomatic_W64_GLFW.exe ", + bonzo_arguments(server_url(coder)), + ), + _generate_launcher( + f"{id}.sh", "./Bonzomatic_W64_GLFW", bonzo_arguments(server_url(coder)) + ), + ] + with ZipFile(f"{id}.zip", "w") as zip_obj: + for f in files: + zip_obj.write(f) + zip_obj.write("info.txt") + + for f in files: + Path(f).unlink() + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--schema", default="ws", help="Schema of the server url") + parser.add_argument( + "--host", default="drone.alkama.com", help="Host of the server url" + ) + parser.add_argument("--port", default="9000", help="Port of the server url") + parser.add_argument("--room", default="roomtest", help="Room of the server url") + parser.add_argument("--config", default="launcher.json", help="Configuration file") + + args = parser.parse_args() + + data = json.load(open(args.config)) + + url_builder = server_url_builder(args.schema, args.host, args.port, args.room) + for coder in data["coders"]: + generate_launcher(args.host, args.room, coder, url_builder) diff --git a/tool/ezbonzo/info.txt b/tool/ezbonzo/info.txt new file mode 100644 index 000000000..e111ca8f9 --- /dev/null +++ b/tool/ezbonzo/info.txt @@ -0,0 +1,7 @@ +Hello and thank you participating to the event. + +Here is your launcher to use to get bonzomatic connected directly to the correct server. + +Copy the launcher (.bat for windows, .sh for Unix) on the same directory as bonzomatic and then run it. + +Good luck and have fun ! \ No newline at end of file diff --git a/tool/ezbonzo/launcher.json b/tool/ezbonzo/launcher.json new file mode 100644 index 000000000..ff94faf1b --- /dev/null +++ b/tool/ezbonzo/launcher.json @@ -0,0 +1,55 @@ +{ + "font": { + "file": "ProFontWindows.ttf", + "size": 16 + }, + "coders": [ + "Coder_01", + "Coder_02", + "Coder_03", + "Coder_04" + ], + "bonzo": { + "delay_between_spawn": 2000, + "commandline": "skipdialog networkMode=grabber", + "exename": "Bonzomatic_W64_GLFW.exe" + }, + "mosaic": { + "startpercent_x": 0.05, + "startpercent_y": 0.05, + "sizepercent_x": 0.9, + "sizepercent_y": 0.9, + "border_x": 10, + "border_y": 10, + "forceratio": true, + "wantedratio": 1.7777, + "MosaicFixed": true + }, + "fullscreen": { + "startpercent_x": 0.0, + "startpercent_y": 0.0, + "sizepercent_x": 1.0, + "sizepercent_y": 1.0, + "forceratio": true, + "wantedratio": 1.7777 + }, + "diaporama": { + "delay": 3, + "loops": 1, + "infiniteloop": false + }, + "network": { + "receiveuserlist": false, + "serverURL": "ws:\/\/drone.alkama.com:9000\/roomtest\/" + }, + "theme": { + "background": "202020", + "text": "FFFFFF", + "button": "333333", + "buttonUncheck": "CC3333", + "buttonBorder": "808080", + "buttonBorderHover": "FF8080", + "buttonBorderPress": "FFFFFF" + } + } + \ No newline at end of file diff --git a/tool/isonline/isonline.html b/tool/isonline/isonline.html new file mode 100644 index 000000000..383aded09 --- /dev/null +++ b/tool/isonline/isonline.html @@ -0,0 +1,181 @@ + + + + + + + Is Online on Bonzomatic + + + + +
+

Drag and Drop the launcher.json here

+
+
+ +
+ + + + \ No newline at end of file