feat: new src: dungeon
This commit is contained in:
+19
-3
@@ -49,6 +49,9 @@ sentences.txt:
|
||||
project/inc_sentences.glsl: sentences.txt
|
||||
$(MAKE) glsl-glyphs-sentences
|
||||
|
||||
project/inc_dungeon.glsl:
|
||||
$(MAKE) glsl-glyphs-dungeon
|
||||
|
||||
# ACTIONS
|
||||
|
||||
.PHONY: init
|
||||
@@ -120,7 +123,7 @@ ty: .venv ## ty check
|
||||
$(TY) check
|
||||
|
||||
.PHONY: git-submodule-update
|
||||
git-submodule-update: ## prepare git submodules
|
||||
git-submodule-update: ## git submodule update
|
||||
git submodule update --init --recursive
|
||||
|
||||
.PHONY: glsl-glyphs-sentences
|
||||
@@ -134,8 +137,21 @@ glsl-glyphs-sentences: sentences.txt ## glsl-glyphs --sentences-only
|
||||
--sentences-input ../../sentences.txt \
|
||||
--sentences-output ../../project/inc_sentences.glsl
|
||||
|
||||
.PHONY: glsl-glyphs-dungeon
|
||||
glsl-glyphs-dungeon: ## glsl-glyphs --name dungeon
|
||||
$(GLSL_GLYPHS) \
|
||||
--name dungeon \
|
||||
--functions \
|
||||
--includes \
|
||||
--add-empty \
|
||||
--add-all \
|
||||
--input sample/pmlomb_8x8.png \
|
||||
--glyph-names sample/pmlomb_names.txt \
|
||||
--sets sample/pmlomb_sets.csv \
|
||||
--output ../../project/inc_dungeon.glsl
|
||||
|
||||
.PHONY: forge-run
|
||||
forge-run: $(BUILD_DIR)/$(TARGET) ## run locally
|
||||
forge-run: $(BUILD_DIR)/$(TARGET) ## ./build/forge
|
||||
$(BUILD_DIR)/$(TARGET) $(RUN_ARGS)
|
||||
|
||||
.PHONY: rasp-chmod-opt
|
||||
@@ -143,7 +159,7 @@ rasp-chmod-opt: ## chmod remote project
|
||||
sudo chmod -R a+rwx $(RASP_ROOTFS)/opt
|
||||
|
||||
.PHONY: rasp-remove-motd
|
||||
rasp-remove-motd: ##
|
||||
rasp-remove-motd: ## rm remote project motd
|
||||
sudo rm -rf $(RASP_ROOTFS)/etc/motd
|
||||
sudo rm -rf $(RASP_ROOTFS)/etc/issue
|
||||
sudo rm -rf $(RASP_ROOTFS)/etc/update-motd.d/*
|
||||
|
||||
@@ -0,0 +1,241 @@
|
||||
#ifndef INC_DUNGEON
|
||||
#define INC_DUNGEON
|
||||
|
||||
#define DUNGEON_COUNT 193
|
||||
|
||||
const int dungeon_glyphs[] = int[772](
|
||||
0x0000, 0x0000, 0x0000, 0x0000, // 0x00, EMPTY
|
||||
0xC480, 0x6530, 0x0088, 0x0033, // 0x01, TODO
|
||||
0xCC80, 0x7730, 0x4C2A, 0x569B, // 0x02
|
||||
0xC800, 0x7300, 0x04C4, 0x0575, // 0x03
|
||||
0xAEEA, 0x5775, 0x26EE, 0x4677, // 0x04
|
||||
0xECD6, 0xBB60, 0x2EE7, 0x4371, // 0x05
|
||||
0xC400, 0x7100, 0x4CEE, 0x27FF, // 0x06
|
||||
0xEAEC, 0x7AB9, 0x26FE, 0xABBB, // 0x07
|
||||
0xEAE2, 0xB232, 0x26FF, 0x233F, // 0x08
|
||||
0x8400, 0x7200, 0xA698, 0x207A, // 0x09
|
||||
0x9A80, 0xA724, 0x5E69, 0x2307, // 0x0A
|
||||
0x4C40, 0x532C, 0x4C2A, 0x2767, // 0x0B
|
||||
0xEC80, 0xF730, 0x4E62, 0x4FD9, // 0x0C
|
||||
0x4EA0, 0x5FB0, 0x08AC, 0x02A7, // 0x0D
|
||||
0x0000, 0x0000, 0x7EC8, 0x7331, // 0x0E
|
||||
0x0000, 0x0000, 0xFC00, 0xEF70, // 0x0F
|
||||
0x0000, 0x0000, 0xFE80, 0xF730, // 0x10
|
||||
0x5E48, 0x7110, 0x07BE, 0x9760, // 0x11
|
||||
0xEEC8, 0xFF73, 0xCEE2, 0x6EE8, // 0x12
|
||||
0xACC4, 0x5332, 0x24CD, 0x423B, // 0x13
|
||||
0xAD12, 0x5B84, 0x56C6, 0xA636, // 0x14
|
||||
0xACC7, 0x533E, 0x478E, 0x2E17, // 0x15
|
||||
0xA2E3, 0x547C, 0x4AE2, 0x2574, // 0x16
|
||||
0xE421, 0x7248, 0x5EBF, 0xA7DF, // 0x17
|
||||
0xE153, 0x78AC, 0x2E6A, 0x4765, // 0x18
|
||||
0x0000, 0x0000, 0x8484, 0x3530, // 0x19
|
||||
0x8400, 0x0000, 0xCE6C, 0x3753, // 0x1A
|
||||
0x6C80, 0xB700, 0x44EE, 0x44FF, // 0x1B
|
||||
0xE6C0, 0x7530, 0x3FDF, 0xFEFF, // 0x1C
|
||||
0xF880, 0xF320, 0x08CE, 0x0037, // 0x1D
|
||||
0xCA94, 0x7210, 0xCE5D, 0x3482, // 0x1E
|
||||
0x4000, 0x5500, 0xEC82, 0xE778, // 0x1F
|
||||
0xCC80, 0x2310, 0x008C, 0x0303, // 0x20
|
||||
0xC800, 0x3133, 0x48AA, 0x2253, // 0x21
|
||||
0xAC00, 0x3133, 0x448A, 0x2215, // 0x22
|
||||
0xDE88, 0x2011, 0x24FE, 0x1135, // 0x23
|
||||
0x2A62, 0x8BC8, 0x842A, 0x349A, // 0x24
|
||||
0xFEC8, 0x7000, 0x4880, 0x0013, // 0x25
|
||||
0xA553, 0x1236, 0xD3EC, 0x3872, // 0x26
|
||||
0x22C0, 0x8960, 0x0084, 0x0124, // 0x27
|
||||
0x22C0, 0xEF60, 0x0084, 0x0126, // 0x28
|
||||
0xEEC0, 0xFF60, 0x008C, 0x0137, // 0x29
|
||||
0xCC00, 0x7600, 0x0008, 0x0013, // 0x2A
|
||||
0x1000, 0x1A40, 0x004A, 0x0000, // 0x2B
|
||||
0xC800, 0x7210, 0x0008, 0x0013, // 0x2C
|
||||
0xA248, 0x2210, 0xFF15, 0x7754, // 0x2D
|
||||
0x9E00, 0x8700, 0xF99F, 0xF8AF, // 0x2E
|
||||
0x0E00, 0x1E00, 0x0088, 0x0133, // 0x2F
|
||||
0x0800, 0x1200, 0x0088, 0x0133, // 0x30
|
||||
0x0000, 0x5640, 0x284A, 0x1012, // 0x31
|
||||
0x4000, 0x5EC0, 0x248C, 0x0312, // 0x32
|
||||
0x22A4, 0x88B4, 0x0842, 0x1248, // 0x33
|
||||
0x4C00, 0x4700, 0x0844, 0x1244, // 0x34
|
||||
0x4287, 0x5258, 0x2348, 0x8A94, // 0x35
|
||||
0x0000, 0xDA98, 0x1248, 0x007E, // 0x36
|
||||
0x8000, 0x3760, 0x08EC, 0x3335, // 0x37
|
||||
0xCC80, 0x1100, 0x0C0C, 0x0101, // 0x38
|
||||
0x2240, 0x1248, 0x128C, 0x0340, // 0x39
|
||||
0x4000, 0x7EC8, 0xD258, 0x0113, // 0x3A
|
||||
0x2C80, 0x9970, 0x8422, 0x34CE, // 0x3B
|
||||
0x0FFE, 0x0111, 0x68EE, 0xF300, // 0x3C
|
||||
0xC800, 0x7700, 0x8CAA, 0x3777, // 0x3D
|
||||
0xEEC0, 0x7730, 0xC2EE, 0x7477, // 0x3E
|
||||
0xF1F0, 0xF9F0, 0xF3F9, 0xF9F8, // 0x3F
|
||||
0xCC80, 0x7731, 0x00EC, 0x10F7, // 0x40
|
||||
0x8000, 0x3100, 0x224C, 0x8847, // 0x41
|
||||
0x8000, 0x7FF6, 0x2340, 0x0001, // 0x42
|
||||
0xC800, 0x33C4, 0x23CC, 0x0013, // 0x43
|
||||
0x0000, 0x5E68, 0xF95B, 0x0000, // 0x44
|
||||
0x2000, 0xDE48, 0x75FC, 0x0102, // 0x45
|
||||
0x9C00, 0x9300, 0x8CAE, 0x1357, // 0x46
|
||||
0x8C00, 0x1300, 0xCED8, 0x37B1, // 0x47
|
||||
0x080C, 0x1317, 0x08C0, 0x1371, // 0x48
|
||||
0x0000, 0x0000, 0x0000, 0x0001, // 0x49
|
||||
0x0000, 0x1100, 0x000C, 0x0116, // 0x4A
|
||||
0x0000, 0x0010, 0x0002, 0x1008, // 0x4B
|
||||
0x0000, 0xA620, 0x8C80, 0x13BA, // 0x4C
|
||||
0x0000, 0x5110, 0x4444, 0x5555, // 0x4D
|
||||
0x0000, 0x2000, 0x0084, 0x0001, // 0x4E
|
||||
0x8000, 0x2000, 0x0080, 0x0021, // 0x4F
|
||||
0x2C00, 0x1ACE, 0x0C22, 0x0122, // 0x50
|
||||
0x8448, 0x3443, 0x08C0, 0x1371, // 0x51
|
||||
0xC448, 0x7553, 0x8444, 0x3444, // 0x52
|
||||
0xCCC8, 0x7553, 0x8444, 0x3444, // 0x53
|
||||
0xC448, 0x7773, 0x8444, 0x3444, // 0x54
|
||||
0x2480, 0x8421, 0xC444, 0x7444, // 0x55
|
||||
0xC800, 0x7310, 0x0888, 0x0333, // 0x56
|
||||
0xE0E0, 0x7070, 0x00E0, 0x0070, // 0x57
|
||||
0xFAC0, 0xF730, 0xC211, 0x3488, // 0x58
|
||||
0x8000, 0x6DE0, 0x16A4, 0x0017, // 0x59
|
||||
0x0000, 0x1010, 0xCE10, 0x7B51, // 0x5A
|
||||
0x0800, 0x16E0, 0xCEEC, 0x3773, // 0x5B
|
||||
0x0000, 0xEC88, 0xCE80, 0x377F, // 0x5C
|
||||
0x8000, 0x3160, 0x8CC8, 0x3773, // 0x5D
|
||||
0x4888, 0x4221, 0x4EE4, 0x4EE4, // 0x5E
|
||||
0x8420, 0x2480, 0x2480, 0x8421, // 0x5F
|
||||
0x2480, 0x8430, 0x8422, 0x3488, // 0x60
|
||||
0x111F, 0x888F, 0xF111, 0xF888, // 0x61
|
||||
0x0117, 0x088E, 0x7110, 0xE880, // 0x62
|
||||
0x0013, 0x008C, 0x3100, 0xC800, // 0x63
|
||||
0x0137, 0x08CE, 0x7310, 0xEC80, // 0x64
|
||||
0x0032, 0x00C4, 0x2300, 0x4C00, // 0x65
|
||||
0x0764, 0x0E62, 0x4670, 0x26E0, // 0x66
|
||||
0x113E, 0x88C7, 0xE311, 0x7C88, // 0x67
|
||||
0x174D, 0x8E2B, 0xD471, 0xB2E8, // 0x68
|
||||
0x111E, 0x8887, 0xE111, 0x7888, // 0x69
|
||||
0x0116, 0x0886, 0x6110, 0x6880, // 0x6A
|
||||
0x101D, 0x880D, 0xB011, 0xB808, // 0x6B
|
||||
0x101B, 0x808D, 0xB101, 0xD808, // 0x6C
|
||||
0x112C, 0x8843, 0xC211, 0x3488, // 0x6D
|
||||
0x4800, 0x2100, 0x0084, 0x0012, // 0x6E
|
||||
0xB7EC, 0xDE73, 0xCE7B, 0x37ED, // 0x6F
|
||||
0xC800, 0x3100, 0x008C, 0x0013, // 0x70
|
||||
0x0105, 0x8085, 0xA101, 0xA080, // 0x71
|
||||
0x101A, 0x080A, 0x5010, 0x5808, // 0x72
|
||||
0x22C0, 0x4430, 0x0CE2, 0x0374, // 0x73
|
||||
0x0020, 0x0040, 0x0020, 0x0401, // 0x74
|
||||
0xDCC0, 0xFF10, 0x08DD, 0x0133, // 0x75
|
||||
0xDCC8, 0x3300, 0x08DD, 0x0133, // 0x76
|
||||
0xA888, 0x7300, 0x80CC, 0x7077, // 0x77
|
||||
0xDC44, 0xFBB3, 0xC0EF, 0x3077, // 0x78
|
||||
0x0000, 0x0000, 0x26E0, 0x0000, // 0x79
|
||||
0xEC00, 0x7700, 0x26EE, 0x0037, // 0x7A
|
||||
0xEEEC, 0xFFF7, 0x4CEE, 0x007F, // 0x7B
|
||||
0xAEEC, 0xFFF7, 0x4CEE, 0x007F, // 0x7C
|
||||
0xAEEC, 0xEFF7, 0x4CEE, 0x007F, // 0x7D
|
||||
0xAEEC, 0xAFF7, 0x4CEE, 0x007F, // 0x7E
|
||||
0xEEEC, 0xFEE7, 0x4CEE, 0x007E, // 0x7F
|
||||
0xEEEC, 0xFDC7, 0x4CEE, 0x007E, // 0x80
|
||||
0xEEEC, 0x9EE7, 0x4CEE, 0x007F, // 0x81
|
||||
0x622C, 0xC897, 0x4CEE, 0x007E, // 0x82
|
||||
0x22AC, 0x88A7, 0x4CE2, 0x0078, // 0x83
|
||||
0xE6EC, 0xECE7, 0x4CEE, 0x007E, // 0x84
|
||||
0x152C, 0x8A43, 0xC295, 0x349A, // 0x85
|
||||
0x152C, 0x8A43, 0xC29D, 0x349B, // 0x86
|
||||
0x152C, 0x8A43, 0xC21D, 0x348B, // 0x87
|
||||
0x152C, 0x8A43, 0xC259, 0x34A9, // 0x88
|
||||
0x152C, 0x8A43, 0xC21D, 0x3488, // 0x89
|
||||
0x152C, 0x8A43, 0xC299, 0x3499, // 0x8A
|
||||
0x152C, 0x8A43, 0xC2D9, 0x34B9, // 0x8B
|
||||
0x152C, 0x8A43, 0xC259, 0x349A, // 0x8C
|
||||
0x352C, 0xCA43, 0xC291, 0x3498, // 0x8D
|
||||
0x512C, 0xA843, 0xC211, 0x3488, // 0x8E
|
||||
0x552C, 0xAA43, 0xC655, 0x36AA, // 0x8F
|
||||
0x152C, 0x8A43, 0xC291, 0x34BA, // 0x90
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x91
|
||||
0x585A, 0x1A4A, 0x0040, 0x0204, // 0x92
|
||||
0x5A5A, 0x5A5A, 0x5A5A, 0x5A5A, // 0x93
|
||||
0x50FF, 0x50FF, 0x5A5A, 0x5A5A, // 0x94
|
||||
0x5A0F, 0x5A0F, 0x5A5A, 0x5A5A, // 0x95
|
||||
0x10FF, 0xE0FF, 0x7591, 0x889A, // 0x96
|
||||
0x70FF, 0xE0FF, 0x7599, 0xE99A, // 0x97
|
||||
0x10FF, 0x80FF, 0x11D7, 0x8CB8, // 0x98
|
||||
0x10FF, 0x80FF, 0xE311, 0x7888, // 0x99
|
||||
0x10FF, 0x00FF, 0x000E, 0x000F, // 0x9A
|
||||
0x00FF, 0x00FF, 0x000F, 0x000F, // 0x9B
|
||||
0x0000, 0x0000, 0x000F, 0x000F, // 0x9C
|
||||
0xFEFF, 0x7EFB, 0xFEFF, 0x7EFF, // 0x9D
|
||||
0x0A5B, 0x52DB, 0x2051, 0x0272, // 0x9E
|
||||
0x7EDB, 0x7EDB, 0x7EDB, 0x7EDB, // 0x9F
|
||||
0x7E0F, 0x7E0F, 0x7EDB, 0x7EDB, // 0xA0
|
||||
0x7E05, 0x7E05, 0x7EDB, 0x7EDB, // 0xA1
|
||||
0x3E0F, 0x4E0F, 0x729B, 0x7CD9, // 0xA2
|
||||
0x5D1F, 0xBA8F, 0xF1D9, 0xF8A9, // 0xA3
|
||||
0x5C0F, 0x2B0F, 0x70D5, 0x78BA, // 0xA4
|
||||
0x135F, 0x000B, 0x1011, 0x0000, // 0xA5
|
||||
0xF8BB, 0x0C9F, 0x7513, 0x0001, // 0xA6
|
||||
0x153E, 0x0078, 0x1222, 0x0000, // 0xA7
|
||||
0x0117, 0x000B, 0x1011, 0x0000, // 0xA8
|
||||
0x0000, 0x0000, 0x0000, 0x0000, // 0xA9
|
||||
0xFFCD, 0x0000, 0x0000, 0x0000, // 0xAA
|
||||
0x0000, 0xFF3B, 0x0000, 0x0000, // 0xAB
|
||||
0x0000, 0x0000, 0xDCFF, 0x0000, // 0xAC
|
||||
0x0000, 0x0000, 0x0000, 0xB3FF, // 0xAD
|
||||
0xFF0F, 0xFF0F, 0x0000, 0x0000, // 0xAE
|
||||
0xDDDD, 0x0000, 0xDDDD, 0x0000, // 0xAF
|
||||
0x7BCD, 0x1000, 0x0008, 0xB3DE, // 0xB0
|
||||
0x8000, 0xED3B, 0xDCB7, 0x0001, // 0xB1
|
||||
0x0000, 0xBBBB, 0x0000, 0xBBBB, // 0xB2
|
||||
0x0000, 0x0000, 0xF0FF, 0xF0FF, // 0xB3
|
||||
0xDD1F, 0xFF0F, 0xDDDD, 0x0000, // 0xB4
|
||||
0xFF0F, 0xBB8F, 0x0000, 0xBBBB, // 0xB5
|
||||
0xDDDD, 0x0000, 0xF1DD, 0xF0FF, // 0xB6
|
||||
0x0000, 0xBBBB, 0xF0FF, 0xF8BB, // 0xB7
|
||||
0x0000, 0x1248, 0x1248, 0x0000, // 0xB8
|
||||
0x8421, 0x0000, 0x0000, 0x8421, // 0xB9
|
||||
0x4801, 0x5A5A, 0x5A5A, 0x8012, // 0xBA
|
||||
0x111E, 0x8887, 0xE111, 0x7888, // 0xBB
|
||||
0xDD1E, 0xBB87, 0xE1DD, 0x78BB, // 0xBC
|
||||
0xD91E, 0xB987, 0xE111, 0x7888, // 0xBD
|
||||
0xD91E, 0xB987, 0xE19D, 0x789B, // 0xBE
|
||||
0xD51E, 0x8887, 0xE1DD, 0x78B9, // 0xBF
|
||||
0x151E, 0xBA87, 0xE1D9, 0x78BA // 0xC0
|
||||
);
|
||||
|
||||
#define DUNGEON_SETS 9
|
||||
|
||||
const int dungeon_sets[] = int[18](
|
||||
0x01, 192, // ALL
|
||||
0x01, 36, // ENTITIES
|
||||
0x27, 3, // HEARTS
|
||||
0x25, 36, // OBJECTS
|
||||
0x61, 20, // SELECT
|
||||
0x7B, 10, // CHAT
|
||||
0x85, 12, // EMOTION
|
||||
0x91, 42, // TILES
|
||||
0xBB, 6 // SQUARES
|
||||
);
|
||||
|
||||
bool dungeon(vec2 pos, int code)
|
||||
{
|
||||
if (pos.x < .0 || pos.y < .0 || pos.x >= 1. || pos.y >= 1. || code < 0 || code >= DUNGEON_COUNT) {
|
||||
return false;
|
||||
}
|
||||
ivec2 pos2 = ivec2(pos.x * 8., (1 - pos.y) * 8.);
|
||||
ivec2 subpos = pos2 % 4;
|
||||
int v = int(pow(2., subpos.y * 4. + subpos.x));
|
||||
int d = int(pos2.y * .25) * 2 + int(pos2.x * .25);
|
||||
return (dungeon_glyphs[code * 4 + d] & v) > 0;
|
||||
}
|
||||
|
||||
float dungeon_at(vec2 uv, vec2 pos, int code)
|
||||
{
|
||||
return dungeon(uv - pos, code) ? 1. : 0.;
|
||||
}
|
||||
|
||||
int dungeon_set_glyph(int set, float v)
|
||||
{
|
||||
if (v < .0 || v >= 1. || set < 0. || set >= DUNGEON_SETS) {
|
||||
return 0;
|
||||
}
|
||||
return dungeon_sets[set * 2] + int(v * dungeon_sets[set * 2 + 1]);
|
||||
}
|
||||
|
||||
#endif /* INC_DUNGEON */
|
||||
+50
-187
@@ -158,7 +158,7 @@ vec4 src_5(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
|
||||
return vec4(f);
|
||||
}
|
||||
|
||||
// SRC 6 : circuit
|
||||
// SRC 6 : cp437
|
||||
vec4 src_6(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
{
|
||||
// start
|
||||
@@ -169,138 +169,6 @@ vec4 src_6(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
|
||||
|
||||
// controls
|
||||
|
||||
float z = 10. + magic(f1, b1, 123.) * 20.;
|
||||
float h = magic(f2, b2, seed + 20.) * .8 + .1;
|
||||
float v = magic_reverse(f3, b3, seed + 30.) * .8 + .1;
|
||||
|
||||
// logic
|
||||
|
||||
uv1 *= z;
|
||||
uv1 += iBeats;
|
||||
|
||||
float s0 = rand(floor(mod(uv1, 1000.))) * 1000.;
|
||||
float s1 = rand(floor(mod(uv1 + vec2(0., 1.), 1000.))) * 1000.;
|
||||
float s2 = rand(floor(mod(uv1 - vec2(1., 0.), 1000.))) * 1000.;
|
||||
|
||||
bool up = rand(s1 + 1.) < h;
|
||||
bool left = rand(s2 + 2.) < v;
|
||||
bool down = rand(s0 + 1.) < h;
|
||||
bool right = rand(s0 + 2.) < v;
|
||||
bool up_down = up && down;
|
||||
bool left_right = left && right;
|
||||
|
||||
uv1 = mod(uv1, 1.) - .5;
|
||||
|
||||
const float t = .1;
|
||||
|
||||
float f = 0.;
|
||||
int c = 0;
|
||||
|
||||
if (up) {
|
||||
f += stripe(uv1.x, -t * .5, t * .5) * step(-t * .5, uv1.y);
|
||||
c += 1;
|
||||
}
|
||||
|
||||
if (down) {
|
||||
f += stripe(uv1.x, -t * .5, t * .5) * istep(t * .5, uv1.y);
|
||||
c += 1;
|
||||
}
|
||||
|
||||
if (left) {
|
||||
f += stripe(uv1.y, -t * .5, t * .5) * istep(t * .5, uv1.x);
|
||||
c += 1;
|
||||
}
|
||||
|
||||
if (right) {
|
||||
f += stripe(uv1.y, -t * .5, t * .5) * step(-t * .5, uv1.x);
|
||||
c += 1;
|
||||
}
|
||||
|
||||
if (c == 1) {
|
||||
f += istep(t, length(uv1));
|
||||
}
|
||||
|
||||
f = min(f, 1.);
|
||||
|
||||
if ((up_down ^^ left_right) && c == 2) {
|
||||
if (up_down) {
|
||||
uv1.xy = uv1.yx;
|
||||
}
|
||||
if (rand(s0 + 3.) < .5) {
|
||||
uv1.x = -uv1.x;
|
||||
}
|
||||
float k = rand(s0 + 4.) * 60;
|
||||
f -= rect(uv1, vec2(0.), vec2(t * 3., t));
|
||||
f = max(0., f);
|
||||
if (k < 10.) { // resistor
|
||||
f += line(uv1, vec2(-t * 3.25, -t * .5), vec2(-t * 2.5, t * 2.), t * .75);
|
||||
f += line(uv1, vec2(-t * 2.5, t * 2.), vec2(-t * 1.5, -t * 2.), t * .75);
|
||||
f += line(uv1, vec2(-t * 1.5, -t * 2.), vec2(-t * .5, t * 2.), t * .75);
|
||||
f += line(uv1, vec2(-t * .5, t * 2.), vec2(t * .5, -t * 2.), t * .75);
|
||||
f += line(uv1, vec2(t * .5, -t * 2.), vec2(t * 1.5, t * 2.), t * .75);
|
||||
f += line(uv1, vec2(t * 1.5, t * 2.), vec2(t * 2.5, -t * 2.), t * .75);
|
||||
f += line(uv1, vec2(t * 2.5, -t * 2.), vec2(t * 3.25, t * .5), t * .75);
|
||||
} else if (k < 20.) { // capacitor
|
||||
f += rect(uv1, vec2(-t * 2., 0.), vec2(t, t * .5));
|
||||
f += rect(uv1, vec2(t * 2., 0.), vec2(t, t * .5));
|
||||
f += rect(uv1, vec2(t, 0.), vec2(t * .5, t * 3.5));
|
||||
f += rect(uv1, vec2(-t, 0.), vec2(t * .5, t * 3.5));
|
||||
} else if (k < 30.) { // diode
|
||||
f += line(uv1, vec2(-t * 2., t * 2.5), vec2(t * 2., 0.), t);
|
||||
f += line(uv1, vec2(-t * 2., -t * 2.5), vec2(t * 2., 0.), t);
|
||||
f += rect(uv1, vec2(t * 2.5, 0.), vec2(t * .5, t * 3.));
|
||||
f += rect(uv1, vec2(-t * 2.5, 0.), vec2(t * .5, t * 3.));
|
||||
} else if (k < 40.) { // lamp
|
||||
f += istep(t * 3.5, length(uv1));
|
||||
f -= istep(t * 2.5, length(uv1));
|
||||
f += line(uv1, vec2(-t * 2.), vec2(t * 2.), t);
|
||||
f += line(uv1, vec2(-t * 2., t * 2.), vec2(t * 2., -t * 2.), t);
|
||||
} else if (k < 50.) { // inductor
|
||||
f += istep(t * 2., length(uv1 - vec2(t * 2.5, 0.)));
|
||||
f += istep(t * 2., length(uv1 - vec2(0., 0.)));
|
||||
f += istep(t * 2., length(uv1 - vec2(-t * 2.5, 0.)));
|
||||
f -= 2. * istep(t, length(uv1 - vec2(t * 2.5, 0.)));
|
||||
f -= 2. * istep(t, length(uv1 - vec2(0., 0.)));
|
||||
f -= 2. * istep(t, length(uv1 - vec2(-t * 2.5, 0.)));
|
||||
f *= step(-t * .5, uv1.y);
|
||||
} else if (k < 60.) { // switch
|
||||
f += istep(t, length(uv1 - vec2(t * 2.5, 0.)));
|
||||
f += istep(t, length(uv1 + vec2(t * 2.5, 0.)));
|
||||
f += line(uv1, vec2(t * 2., 0.), vec2(-t * 2.5, t * (k < 55. ? 3. : 1.)), t);
|
||||
}
|
||||
} else if (c == 3) {
|
||||
if (left_right) {
|
||||
uv1.xy = uv1.yx;
|
||||
if (up) {
|
||||
uv1.x = -uv1.x;
|
||||
}
|
||||
} else if (right) {
|
||||
uv1.x = -uv1.x;
|
||||
}
|
||||
float k = rand(s0 + 4.) * 20.;
|
||||
if (k < 10.) {
|
||||
f -= rect(uv1, vec2(0.), vec2(t * 3.));
|
||||
f = max(0., f);
|
||||
f += rect(uv1, vec2(-t * 3., 0.), vec2(t * .5, t * 3.));
|
||||
f += line(uv1, vec2(t * .25, t * 3.25), vec2(-t * 3., t), t);
|
||||
f += line(uv1, vec2(t * .25, -t * 3.25), vec2(-t * 3., -t), t);
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(f);
|
||||
}
|
||||
|
||||
// SRC 7 : cp437
|
||||
vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
{
|
||||
// start
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float zoom = magic(f1, b1, seed + 10.);
|
||||
vec2 charset = magic_f(f2, b2, seed + 20.);
|
||||
vec3 charset_ctrl = magic_b(b2, seed + 20.);
|
||||
@@ -324,9 +192,9 @@ vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
|
||||
return vec4(f);
|
||||
}
|
||||
|
||||
// SRC 8 : sentences
|
||||
// SRC 7 : sentences
|
||||
|
||||
vec4 src_8(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
{
|
||||
// start
|
||||
|
||||
@@ -354,8 +222,8 @@ vec4 src_8(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
|
||||
return vec4(f);
|
||||
}
|
||||
|
||||
// SRC 9 : sentences repeat
|
||||
vec4 src_9(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
// SRC 8 : sentences repeat
|
||||
vec4 src_8(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
{
|
||||
// start
|
||||
|
||||
@@ -389,8 +257,49 @@ vec4 src_9(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
|
||||
return vec4(f);
|
||||
}
|
||||
|
||||
// SRC 10 : isometric grid
|
||||
// SRC 9 : dungeon
|
||||
vec4 src_9(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
{
|
||||
// start
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float zoom = magic(f1, b1, seed + 10.);
|
||||
vec2 charset = magic_f(f2, b2, seed + 20.);
|
||||
vec3 charset_ctrl = magic_b(b2, seed + 20.);
|
||||
float char_delta = magic(f3, b3, seed + 30.);
|
||||
|
||||
// logic
|
||||
|
||||
vec2 uv2 = uv1;
|
||||
uv2 *= zoom * 20. + 3.;
|
||||
uv2 += iBeats;
|
||||
uv2 = mod(uv2, 100.) + 100.;
|
||||
int charset_index = int(charset.x * (DUNGEON_SETS - 1));
|
||||
int start_char = charset_ctrl.x > 0. ? dungeon_sets[charset_index * 2] : 0x01;
|
||||
int char_span = int((charset_ctrl.x > 0. ? dungeon_sets[charset_index * 2 + 1] : DUNGEON_COUNT - 1));
|
||||
char_span = int(char_span * max(1. - charset.y, 1. / (char_span * .75)));
|
||||
ivec2 uv2i = ivec2(uv2);
|
||||
int code = ((charset_ctrl.y < 1. || (uv2i.x % 2 ^ uv2i.y % 2) > 0) ? 1 : 0) * (start_char + int((rand(uv2i) + char_delta) * char_span) % char_span);
|
||||
uv2 = mod(uv2, 1.);
|
||||
float f = cp437(uv2, code) ? 1. : 0.;
|
||||
|
||||
return vec4(f);
|
||||
}
|
||||
|
||||
// SRC 10 :
|
||||
vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
{
|
||||
// TODO
|
||||
return src_1(vUV, seed, b1, f1, b2, f2, b3, f3);
|
||||
}
|
||||
|
||||
// SRC 11 : isometric grid
|
||||
vec4 src_11(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
{
|
||||
// start
|
||||
|
||||
@@ -441,13 +350,6 @@ vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
|
||||
return vec4(f);
|
||||
}
|
||||
|
||||
// SRC 11 : video in 2 + thru
|
||||
vec4 src_11(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
{
|
||||
// TODO find another source
|
||||
return src_1(vUV, seed, b1, f1, b2, f2, b3, f3);
|
||||
}
|
||||
|
||||
// SRC 12 : Scales
|
||||
vec4 src_12(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
{
|
||||
@@ -523,50 +425,11 @@ vec4 src_13(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
|
||||
return vec4(f);
|
||||
}
|
||||
|
||||
// SRC 14 : Cursor
|
||||
// SRC 14 :
|
||||
vec4 src_14(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
{
|
||||
// start
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float size = magic(f1, b1, seed + 10.) * 2. + .1;
|
||||
float dx = (fmagic(f2, b2, seed + 20.) * (1. - size * .06) - .5) * ratio;
|
||||
bool flip_x = magic_trigger(b2, seed + 20.);
|
||||
float dy = fmagic(f3, b3, seed + 30.) * (1. - size * .17) - .5;
|
||||
bool flip_y = magic_trigger(b3, seed + 30.);
|
||||
|
||||
// logic
|
||||
|
||||
vec2 uv2 = uv1;
|
||||
|
||||
if (flip_x) {
|
||||
uv2.x = -uv2.x;
|
||||
}
|
||||
|
||||
if (flip_y) {
|
||||
uv2.y = -uv2.y;
|
||||
}
|
||||
|
||||
uv2 -= vec2(dx, -dy);
|
||||
|
||||
uv2 /= size;
|
||||
|
||||
uv2 *= -rot(-PI * 0.5);
|
||||
|
||||
float f = istep(0., (uv2.x * 2. + uv2.y) * (uv2.x * 2. - uv2.y)) * istep(0., uv2.y);
|
||||
|
||||
uv2.y += .1;
|
||||
|
||||
f -= istep(0., (uv2.x + uv2.y * 3.) * (uv2.x - uv2.y * 3.)) * istep(0., uv2.y);
|
||||
|
||||
f += rect(uv2, vec2(0., -.04), vec2(.01, .04));
|
||||
|
||||
return vec4(f);
|
||||
// TODO
|
||||
return src_1(vUV, seed, b1, f1, b2, f2, b3, f3);
|
||||
}
|
||||
|
||||
vec4 src_stage(int src, vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||
|
||||
Reference in New Issue
Block a user