summaryrefslogtreecommitdiff
path: root/config/nvim-2/nvim/undodir/%home%coast%projects%c%vk%Valk%main.c
blob: dbdcffbd67f1e1352201452eda474424fa7fdebf (plain)
ofshex dumpascii
0000 56 69 6d 9f 55 6e 44 6f e5 00 03 df 2e 72 2a f6 13 0a be 4f 44 cc b9 58 fd 45 ef 33 70 e4 c2 7d Vim.UnDo.....r*....OD..X.E.3p..}
0020 9d 84 9c f8 54 8e 46 2d 73 bf 86 00 00 03 73 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 01 00 ....T.F-s.....s.................
0040 00 00 15 00 00 00 00 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 00 6a 08 f2 56 04 01 00 00 00 .......................j..V.....
0060 06 00 5f d0 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 .._.............................
0080 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 6a 08 f0 da 04 01 00 00 00 00 00 f5 18 00 00 00 d9 00 00 00 00 00 00 00 00 00 ......j.........................
0200 00 00 01 00 00 00 07 20 20 20 20 20 20 20 f5 18 00 00 00 da 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0220 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 ................................
0240 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........5.......................
0260 d9 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 ................................
0280 f5 18 00 00 00 00 d9 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 1a 00 00 00 00 00 00 00 f9 0f ................................
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 02 00 00 00 00 00 00 35 81 5f d0 00 00 00 01 00 00 ......................5._.......
02c0 00 03 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 f4 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 08 f0 db ............................j...
0440 04 01 00 00 00 00 00 f5 18 00 00 00 f3 00 00 00 f4 00 00 00 00 00 00 00 01 00 00 00 00 35 81 f5 .............................5..
0460 18 00 00 00 00 f3 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 12 00 ................................
0480 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 02 00 00 00 .....................5._........
04a0 04 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 f3 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 ................................
04c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
04e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
05e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 08 f0 dc 04 ...........................j....
0620 01 00 00 00 00 00 f5 18 00 00 00 f2 00 00 00 f3 00 00 00 00 00 00 00 01 00 00 00 03 60 60 60 35 ............................```5
0640 81 f5 18 00 00 00 00 f2 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 ................................
0660 12 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 03 00 .......................5._......
0680 00 00 05 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 ................................
06a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 08 f0 .............................j..
0800 de 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 06 6d 61 ..............................ma
0820 69 6e 2e 63 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 in.c5...........................
0840 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 ............................5._.
0860 00 00 00 04 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 00 ................................
0880 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09e0 00 00 6a 08 f0 de 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 ..j.............................
0a00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 ...5............................
0a20 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 ...........................5._..
0a40 00 00 05 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 01 00 00 00 00 00 00 00 00 ff ................................
0a60 ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0bc0 00 6a 08 f0 de 04 01 00 00 00 02 00 f5 18 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 .j..............................
0be0 00 04 60 60 60 63 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 ..```c5.........................
0c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 ..............................5.
0c20 5f d0 00 00 00 06 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 ea 00 00 00 00 00 00 _...............................
0c40 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d80 00 00 00 ef 00 00 00 00 00 00 00 00 00 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 76 00 00 00 00 ...........................v....
0da0 00 00 00 00 6a 08 f1 27 04 01 00 00 00 00 00 f5 18 00 00 00 e9 00 00 00 00 00 00 00 00 00 00 00 ....j..'........................
0dc0 06 00 00 00 0c 69 6e 74 20 6d 61 69 6e 28 29 20 7b 00 00 00 29 20 20 20 20 70 72 69 6e 74 66 28 .....int.main().{...)....printf(
0de0 22 72 65 77 72 69 74 65 20 66 6f 75 6e 64 61 74 69 6f 6e 20 72 65 61 64 79 5c 6e 22 29 3b 00 00 "rewrite.foundation.ready\n");..
0e00 00 2d 20 20 20 20 70 72 69 6e 74 66 28 22 74 65 72 72 61 69 6e 20 72 65 6e 64 65 72 65 72 20 69 .-....printf("terrain.renderer.i
0e20 6e 69 74 69 61 6c 69 7a 65 64 5c 6e 22 29 3b 00 00 00 4d 20 20 20 20 70 72 69 6e 74 66 28 22 63 nitialized\n");...M....printf("c
0e40 6f 6e 74 69 6e 75 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 76 75 6c 6b 61 6e 20 62 61 63 6b ontinue.implementing.vulkan.back
0e60 65 6e 64 20 66 72 6f 6d 20 70 72 65 76 69 6f 75 73 20 73 74 72 75 63 74 75 72 65 5c 6e 22 29 3b end.from.previous.structure\n");
0e80 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 30 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 e9 00 ........return.0;....}5.........
0ea0 00 00 00 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 37 11 00 00 00 00 00 00 c2 00 ......................7.........
0ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 07 00 00 00 09 00 00 00 00 00 00 ..............5._...............
0ee0 00 00 00 00 00 08 00 00 00 ea 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 ................................
0f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 ea ................................
1040 00 00 00 00 00 00 00 00 00 00 00 76 00 00 00 00 00 00 00 00 6a 08 f1 28 04 01 00 00 00 00 00 f5 ...........v........j..(........
1060 18 00 00 01 be 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 25 20 20 20 20 76 6b 44 65 73 74 72 ....................%....vkDestr
1080 6f 79 49 6e 73 74 61 6e 63 65 28 69 6e 73 74 61 6e 63 65 2c 4e 55 4c 4c 29 3b f5 18 00 00 01 bf oyInstance(instance,NULL);......
10a0 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 e9 00 00 00 00 00 00 00 00 00 00 00 01 00 00 ................................
10c0 00 00 f5 18 00 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 e9 00 00 00 ....................5...........
10e0 00 00 00 00 00 00 00 00 00 00 00 00 d5 00 00 00 25 00 00 00 37 11 00 00 00 00 00 00 00 00 00 00 ................%...7...........
1100 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 00 00 be 01 00 00 25 00 00 00 00 00 00 00 00 00 ......................%.........
1120 00 00 09 00 00 00 00 00 00 00 30 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4d 00 00 00 00 00 ..........0!..............M.....
1140 00 00 35 81 5f d0 00 00 00 08 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 09 00 00 01 c8 00 00 ..5._...........................
1160 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12a0 00 00 00 00 00 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 76 ...............................v
12c0 00 00 00 00 00 00 00 00 6a 08 f1 29 04 01 00 00 00 00 00 f5 18 00 00 01 c7 00 00 01 c8 00 00 00 ........j..)....................
12e0 00 00 00 00 01 00 00 00 00 35 81 f5 18 00 00 00 00 c7 01 00 00 00 00 00 00 01 00 00 00 00 00 00 .........5......................
1300 00 00 00 00 00 00 00 00 00 7d 21 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........}!.....................
1320 00 35 81 5f d0 00 00 00 09 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 01 c7 00 00 00 .5._............................
1340 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1480 00 00 00 00 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 76 00 ..............................v.
14a0 00 00 00 00 00 00 00 6a 08 f1 29 04 01 00 00 00 00 00 f5 18 00 00 01 c6 00 00 01 c7 00 00 00 00 .......j..).....................
14c0 00 00 00 01 00 00 00 03 60 60 60 35 81 f5 18 00 00 00 00 c6 01 00 00 00 00 00 00 01 00 00 00 00 ........```5....................
14e0 00 00 00 00 00 00 00 00 00 00 00 79 21 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 ...........y!...................
1500 00 00 00 35 81 5f d0 00 00 00 0a 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 ea 00 ...5._..........................
1520 00 00 03 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1660 00 00 00 00 00 00 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 ................................
1680 76 00 00 00 00 00 00 00 00 6a 08 f1 2f 04 01 00 00 00 03 00 f5 18 00 00 00 e9 00 00 00 ea 00 00 v........j../...................
16a0 00 00 00 00 00 01 00 00 00 04 60 60 60 63 35 81 f5 18 00 00 00 00 e9 00 00 00 00 00 00 00 01 00 ..........```c5.................
16c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 37 11 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 ..............7.................
16e0 00 00 00 00 00 00 35 81 5f d0 00 00 00 0b 00 00 00 0d 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 ......5._.......................
1700 00 01 00 00 00 12 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1860 00 00 00 00 00 00 00 00 00 00 00 00 6a 08 f1 cf 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 ............j...................
1880 02 00 00 00 00 00 00 01 c5 00 00 00 13 23 64 65 66 69 6e 65 20 5f 47 4e 55 5f 53 4f 55 52 43 45 .............#define._GNU_SOURCE
18a0 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 ....#include.<stdio.h>....#inclu
18c0 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6e de.<stdlib.h>....#include.<stdin
18e0 74 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 11 23 t.h>....#include.<string.h>....#
1900 69 6e 63 6c 75 64 65 20 3c 6d 61 74 68 2e 68 3e 00 00 00 11 23 69 6e 63 6c 75 64 65 20 3c 74 69 include.<math.h>....#include.<ti
1920 6d 65 2e 68 3e 00 00 00 00 00 00 00 20 23 64 65 66 69 6e 65 20 56 4b 5f 55 53 45 5f 50 4c 41 54 me.h>........#define.VK_USE_PLAT
1940 46 4f 52 4d 5f 58 4c 49 42 5f 4b 48 52 00 00 00 1a 23 69 6e 63 6c 75 64 65 20 3c 76 75 6c 6b 61 FORM_XLIB_KHR....#include.<vulka
1960 6e 2f 76 75 6c 6b 61 6e 2e 68 3e 00 00 00 00 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 n/vulkan.h>........#include.<X11
1980 2f 58 6c 69 62 2e 68 3e 00 00 00 16 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 75 74 69 6c 2e /Xlib.h>....#include.<X11/Xutil.
19a0 68 3e 00 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 6b 65 79 73 79 6d 2e 68 3e 00 00 00 h>....#include.<X11/keysym.h>...
19c0 00 00 00 00 12 23 64 65 66 69 6e 65 20 57 49 44 54 48 20 31 32 38 30 00 00 00 12 23 64 65 66 69 .....#define.WIDTH.1280....#defi
19e0 6e 65 20 48 45 49 47 48 54 20 37 32 30 00 00 00 00 00 00 00 14 23 64 65 66 69 6e 65 20 4d 41 58 ne.HEIGHT.720........#define.MAX
1a00 5f 46 52 41 4d 45 53 20 32 00 00 00 10 23 64 65 66 69 6e 65 20 47 52 49 44 20 32 35 36 00 00 00 _FRAMES.2....#define.GRID.256...
1a20 18 23 64 65 66 69 6e 65 20 50 49 20 33 2e 31 34 31 35 39 32 36 35 33 35 66 00 00 00 00 00 00 00 .#define.PI.3.1415926535f.......
1a40 10 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 00 00 00 10 20 20 20 20 66 6c 6f 61 74 20 78 .typedef.struct.{........float.x
1a60 2c 79 2c 7a 3b 00 00 00 07 7d 20 76 65 63 33 3b 00 00 00 00 00 00 00 10 74 79 70 65 64 65 66 20 ,y,z;....}.vec3;........typedef.
1a80 73 74 72 75 63 74 20 7b 00 00 00 10 20 20 20 20 66 6c 6f 61 74 20 6d 5b 31 36 5d 3b 00 00 00 07 struct.{........float.m[16];....
1aa0 7d 20 6d 61 74 34 3b 00 00 00 00 00 00 00 10 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 00 }.mat4;........typedef.struct.{.
1ac0 00 00 11 20 20 20 20 66 6c 6f 61 74 20 70 6f 73 5b 33 5d 3b 00 00 00 14 20 20 20 20 66 6c 6f 61 .......float.pos[3];........floa
1ae0 74 20 6e 6f 72 6d 61 6c 5b 33 5d 3b 00 00 00 13 20 20 20 20 66 6c 6f 61 74 20 63 6f 6c 6f 72 5b t.normal[3];........float.color[
1b00 33 5d 3b 00 00 00 0b 7d 20 76 65 72 74 65 78 5f 74 3b 00 00 00 00 00 00 00 10 74 79 70 65 64 65 3];....}.vertex_t;........typede
1b20 66 20 73 74 72 75 63 74 20 7b 00 00 00 0e 20 20 20 20 6d 61 74 34 20 76 69 65 77 3b 00 00 00 0e f.struct.{........mat4.view;....
1b40 20 20 20 20 6d 61 74 34 20 70 72 6f 6a 3b 00 00 00 11 20 20 20 20 66 6c 6f 61 74 20 63 61 6d 5b ....mat4.proj;........float.cam[
1b60 34 5d 3b 00 00 00 08 7d 20 75 62 6f 5f 74 3b 00 00 00 00 00 00 00 10 74 79 70 65 64 65 66 20 73 4];....}.ubo_t;........typedef.s
1b80 74 72 75 63 74 20 7b 00 00 00 12 20 20 20 20 56 6b 49 6d 61 67 65 20 69 6d 61 67 65 3b 00 00 00 truct.{........VkImage.image;...
1ba0 1a 20 20 20 20 56 6b 44 65 76 69 63 65 4d 65 6d 6f 72 79 20 6d 65 6d 6f 72 79 3b 00 00 00 15 20 .....VkDeviceMemory.memory;.....
1bc0 20 20 20 56 6b 49 6d 61 67 65 56 69 65 77 20 76 69 65 77 3b 00 00 00 0a 7d 20 64 65 70 74 68 5f ...VkImageView.view;....}.depth_
1be0 74 3b 00 00 00 00 00 00 00 10 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 00 00 00 20 20 20 t;........typedef.struct.{......
1c00 20 20 56 6b 53 65 6d 61 70 68 6f 72 65 20 69 6d 61 67 65 5f 61 76 61 69 6c 61 62 6c 65 3b 00 00 ..VkSemaphore.image_available;..
1c20 00 20 20 20 20 20 56 6b 53 65 6d 61 70 68 6f 72 65 20 72 65 6e 64 65 72 5f 66 69 6e 69 73 68 65 ......VkSemaphore.render_finishe
1c40 64 3b 00 00 00 16 20 20 20 20 56 6b 46 65 6e 63 65 20 69 6e 5f 66 6c 69 67 68 74 3b 00 00 00 18 d;........VkFence.in_flight;....
1c60 20 20 20 20 56 6b 43 6f 6d 6d 61 6e 64 42 75 66 66 65 72 20 63 6d 64 3b 00 00 00 11 20 20 20 20 ....VkCommandBuffer.cmd;........
1c80 56 6b 42 75 66 66 65 72 20 75 62 6f 3b 00 00 00 1b 20 20 20 20 56 6b 44 65 76 69 63 65 4d 65 6d VkBuffer.ubo;........VkDeviceMem
1ca0 6f 72 79 20 75 62 6f 5f 6d 65 6d 3b 00 00 00 12 20 20 20 20 76 6f 69 64 20 2a 75 62 6f 5f 6d 61 ory.ubo_mem;........void.*ubo_ma
1cc0 70 3b 00 00 00 0a 7d 20 66 72 61 6d 65 5f 74 3b 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 p;....}.frame_t;........static.v
1ce0 6f 69 64 20 64 69 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 29 20 7b 00 00 00 1d 20 20 20 20 oid.die(const.char.*s).{........
1d00 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 22 25 73 5c 6e 22 2c 73 29 3b 00 00 00 0c 20 20 20 fprintf(stderr,"%s\n",s);.......
1d20 20 65 78 69 74 28 31 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 17 23 64 65 66 69 6e 65 20 43 48 .exit(1);....}........#define.CH
1d40 45 43 4b 28 78 29 20 64 6f 20 7b 20 5c 00 00 00 17 20 20 20 20 56 6b 52 65 73 75 6c 74 20 72 20 ECK(x).do.{.\........VkResult.r.
1d60 3d 20 28 78 29 3b 20 5c 00 00 00 1c 20 20 20 20 69 66 20 28 72 20 21 3d 20 56 4b 5f 53 55 43 43 =.(x);.\........if.(r.!=.VK_SUCC
1d80 45 53 53 29 20 7b 20 5c 00 00 00 41 20 20 20 20 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 ESS).{.\...A........fprintf(stde
1da0 72 72 2c 22 76 75 6c 6b 61 6e 20 65 72 72 6f 72 20 25 64 20 6c 69 6e 65 20 25 64 5c 6e 22 2c 72 rr,"vulkan.error.%d.line.%d\n",r
1dc0 2c 5f 5f 4c 49 4e 45 5f 5f 29 3b 20 5c 00 00 00 12 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 ,__LINE__);.\............exit(1)
1de0 3b 20 5c 00 00 00 07 20 20 20 20 7d 20 5c 00 00 00 0a 7d 20 77 68 69 6c 65 28 30 29 00 00 00 00 ;.\........}.\....}.while(0)....
1e00 00 00 00 21 73 74 61 74 69 63 20 6d 61 74 34 20 6d 61 74 34 5f 69 64 65 6e 74 69 74 79 28 76 6f ...!static.mat4.mat4_identity(vo
1e20 69 64 29 20 7b 00 00 00 11 20 20 20 20 6d 61 74 34 20 6d 20 3d 20 7b 30 7d 3b 00 00 00 0d 20 20 id).{........mat4.m.=.{0};......
1e40 20 20 6d 2e 6d 5b 30 5d 3d 31 3b 00 00 00 0d 20 20 20 20 6d 2e 6d 5b 35 5d 3d 31 3b 00 00 00 0e ..m.m[0]=1;........m.m[5]=1;....
1e60 20 20 20 20 6d 2e 6d 5b 31 30 5d 3d 31 3b 00 00 00 0e 20 20 20 20 6d 2e 6d 5b 31 35 5d 3d 31 3b ....m.m[10]=1;........m.m[15]=1;
1e80 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 6d 3b 00 00 00 01 7d 00 00 00 00 00 00 00 46 73 74 ........return.m;....}.......Fst
1ea0 61 74 69 63 20 6d 61 74 34 20 6d 61 74 34 5f 70 65 72 73 70 65 63 74 69 76 65 28 66 6c 6f 61 74 atic.mat4.mat4_perspective(float
1ec0 20 66 6f 76 2c 66 6c 6f 61 74 20 61 73 70 65 63 74 2c 66 6c 6f 61 74 20 6e 2c 66 6c 6f 61 74 20 .fov,float.aspect,float.n,float.
1ee0 66 29 20 7b 00 00 00 11 20 20 20 20 6d 61 74 34 20 6d 20 3d 20 7b 30 7d 3b 00 00 00 00 00 00 00 f).{........mat4.m.=.{0};.......
1f00 24 20 20 20 20 66 6c 6f 61 74 20 74 20 3d 20 31 2e 30 66 20 2f 20 74 61 6e 66 28 66 6f 76 2a 30 $....float.t.=.1.0f./.tanf(fov*0
1f20 2e 35 66 29 3b 00 00 00 00 00 00 00 16 20 20 20 20 6d 2e 6d 5b 30 5d 20 3d 20 74 2f 61 73 70 65 .5f);............m.m[0].=.t/aspe
1f40 63 74 3b 00 00 00 10 20 20 20 20 6d 2e 6d 5b 35 5d 20 3d 20 2d 74 3b 00 00 00 16 20 20 20 20 6d ct;........m.m[5].=.-t;........m
1f60 2e 6d 5b 31 30 5d 20 3d 20 66 2f 28 6e 2d 66 29 3b 00 00 00 11 20 20 20 20 6d 2e 6d 5b 31 31 5d .m[10].=.f/(n-f);........m.m[11]
1f80 20 3d 20 2d 31 3b 00 00 00 1a 20 20 20 20 6d 2e 6d 5b 31 34 5d 20 3d 20 28 6e 2a 66 29 2f 28 6e .=.-1;........m.m[14].=.(n*f)/(n
1fa0 2d 66 29 3b 00 00 00 00 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 6d 3b 00 00 00 01 7d 00 00 -f);............return.m;....}..
1fc0 00 00 00 00 00 25 73 74 61 74 69 63 20 76 65 63 33 20 76 65 63 33 5f 73 75 62 28 76 65 63 33 20 .....%static.vec3.vec3_sub(vec3.
1fe0 61 2c 76 65 63 33 20 62 29 20 7b 00 00 00 2b 20 20 20 20 72 65 74 75 72 6e 20 28 76 65 63 33 29 a,vec3.b).{...+....return.(vec3)
2000 7b 61 2e 78 2d 62 2e 78 2c 61 2e 79 2d 62 2e 79 2c 61 2e 7a 2d 62 2e 7a 7d 3b 00 00 00 01 7d 00 {a.x-b.x,a.y-b.y,a.z-b.z};....}.
2020 00 00 00 00 00 00 27 73 74 61 74 69 63 20 76 65 63 33 20 76 65 63 33 5f 63 72 6f 73 73 28 76 65 ......'static.vec3.vec3_cross(ve
2040 63 33 20 61 2c 76 65 63 33 20 62 29 20 7b 00 00 00 12 20 20 20 20 72 65 74 75 72 6e 20 28 76 65 c3.a,vec3.b).{........return.(ve
2060 63 33 29 7b 00 00 00 18 20 20 20 20 20 20 20 20 61 2e 79 2a 62 2e 7a 2d 61 2e 7a 2a 62 2e 79 2c c3){............a.y*b.z-a.z*b.y,
2080 00 00 00 18 20 20 20 20 20 20 20 20 61 2e 7a 2a 62 2e 78 2d 61 2e 78 2a 62 2e 7a 2c 00 00 00 17 ............a.z*b.x-a.x*b.z,....
20a0 20 20 20 20 20 20 20 20 61 2e 78 2a 62 2e 79 2d 61 2e 79 2a 62 2e 78 00 00 00 06 20 20 20 20 7d ........a.x*b.y-a.y*b.x........}
20c0 3b 00 00 00 01 7d 00 00 00 00 00 00 00 26 73 74 61 74 69 63 20 66 6c 6f 61 74 20 76 65 63 33 5f ;....}.......&static.float.vec3_
20e0 64 6f 74 28 76 65 63 33 20 61 2c 76 65 63 33 20 62 29 20 7b 00 00 00 23 20 20 20 20 72 65 74 75 dot(vec3.a,vec3.b).{...#....retu
2100 72 6e 20 61 2e 78 2a 62 2e 78 2b 61 2e 79 2a 62 2e 79 2b 61 2e 7a 2a 62 2e 7a 3b 00 00 00 01 7d rn.a.x*b.x+a.y*b.y+a.z*b.z;....}
2120 00 00 00 00 00 00 00 1f 73 74 61 74 69 63 20 76 65 63 33 20 76 65 63 33 5f 6e 6f 72 6d 28 76 65 ........static.vec3.vec3_norm(ve
2140 63 33 20 76 29 20 7b 00 00 00 2d 20 20 20 20 66 6c 6f 61 74 20 6c 20 3d 20 73 71 72 74 66 28 76 c3.v).{...-....float.l.=.sqrtf(v
2160 2e 78 2a 76 2e 78 2b 76 2e 79 2a 76 2e 79 2b 76 2e 7a 2a 76 2e 7a 29 3b 00 00 00 25 20 20 20 20 .x*v.x+v.y*v.y+v.z*v.z);...%....
2180 72 65 74 75 72 6e 20 28 76 65 63 33 29 7b 76 2e 78 2f 6c 2c 76 2e 79 2f 6c 2c 76 2e 7a 2f 6c 7d return.(vec3){v.x/l,v.y/l,v.z/l}
21a0 3b 00 00 00 01 7d 00 00 00 00 00 00 00 35 73 74 61 74 69 63 20 6d 61 74 34 20 6d 61 74 34 5f 6c ;....}.......5static.mat4.mat4_l
21c0 6f 6f 6b 28 76 65 63 33 20 65 79 65 2c 76 65 63 33 20 63 65 6e 74 65 72 2c 76 65 63 33 20 75 70 ook(vec3.eye,vec3.center,vec3.up
21e0 29 20 7b 00 00 00 2d 20 20 20 20 76 65 63 33 20 66 20 3d 20 76 65 63 33 5f 6e 6f 72 6d 28 76 65 ).{...-....vec3.f.=.vec3_norm(ve
2200 63 33 5f 73 75 62 28 63 65 6e 74 65 72 2c 65 79 65 29 29 3b 00 00 00 29 20 20 20 20 76 65 63 33 c3_sub(center,eye));...)....vec3
2220 20 73 20 3d 20 76 65 63 33 5f 6e 6f 72 6d 28 76 65 63 33 5f 63 72 6f 73 73 28 66 2c 75 70 29 29 .s.=.vec3_norm(vec3_cross(f,up))
2240 3b 00 00 00 1d 20 20 20 20 76 65 63 33 20 75 20 3d 20 76 65 63 33 5f 63 72 6f 73 73 28 73 2c 66 ;........vec3.u.=.vec3_cross(s,f
2260 29 3b 00 00 00 00 00 00 00 11 20 20 20 20 6d 61 74 34 20 6d 20 3d 20 7b 30 7d 3b 00 00 00 00 00 );............mat4.m.=.{0};.....
2280 00 00 0f 20 20 20 20 6d 2e 6d 5b 30 5d 3d 73 2e 78 3b 00 00 00 0f 20 20 20 20 6d 2e 6d 5b 34 5d .......m.m[0]=s.x;........m.m[4]
22a0 3d 73 2e 79 3b 00 00 00 0f 20 20 20 20 6d 2e 6d 5b 38 5d 3d 73 2e 7a 3b 00 00 00 00 00 00 00 0f =s.y;........m.m[8]=s.z;........
22c0 20 20 20 20 6d 2e 6d 5b 31 5d 3d 75 2e 78 3b 00 00 00 0f 20 20 20 20 6d 2e 6d 5b 35 5d 3d 75 2e ....m.m[1]=u.x;........m.m[5]=u.
22e0 79 3b 00 00 00 0f 20 20 20 20 6d 2e 6d 5b 39 5d 3d 75 2e 7a 3b 00 00 00 00 00 00 00 10 20 20 20 y;........m.m[9]=u.z;...........
2300 20 6d 2e 6d 5b 32 5d 3d 2d 66 2e 78 3b 00 00 00 10 20 20 20 20 6d 2e 6d 5b 36 5d 3d 2d 66 2e 79 .m.m[2]=-f.x;........m.m[6]=-f.y
2320 3b 00 00 00 11 20 20 20 20 6d 2e 6d 5b 31 30 5d 3d 2d 66 2e 7a 3b 00 00 00 00 00 00 00 1d 20 20 ;........m.m[10]=-f.z;..........
2340 20 20 6d 2e 6d 5b 31 32 5d 3d 2d 76 65 63 33 5f 64 6f 74 28 73 2c 65 79 65 29 3b 00 00 00 1d 20 ..m.m[12]=-vec3_dot(s,eye);.....
2360 20 20 20 6d 2e 6d 5b 31 33 5d 3d 2d 76 65 63 33 5f 64 6f 74 28 75 2c 65 79 65 29 3b 00 00 00 1c ...m.m[13]=-vec3_dot(u,eye);....
2380 20 20 20 20 6d 2e 6d 5b 31 34 5d 3d 76 65 63 33 5f 64 6f 74 28 66 2c 65 79 65 29 3b 00 00 00 11 ....m.m[14]=vec3_dot(f,eye);....
23a0 20 20 20 20 6d 2e 6d 5b 31 35 5d 3d 31 2e 30 66 3b 00 00 00 00 00 00 00 0d 20 20 20 20 72 65 74 ....m.m[15]=1.0f;............ret
23c0 75 72 6e 20 6d 3b 00 00 00 01 7d 00 00 00 00 00 00 00 2e 73 74 61 74 69 63 20 66 6c 6f 61 74 20 urn.m;....}........static.float.
23e0 74 65 72 72 61 69 6e 5f 68 65 69 67 68 74 28 66 6c 6f 61 74 20 78 2c 66 6c 6f 61 74 20 7a 29 20 terrain_height(float.x,float.z).
2400 7b 00 00 00 0a 20 20 20 20 72 65 74 75 72 6e 00 00 00 1c 20 20 20 20 20 20 20 20 73 69 6e 66 28 {........return............sinf(
2420 78 2a 30 2e 30 38 66 29 2a 33 2e 30 66 20 2b 00 00 00 1c 20 20 20 20 20 20 20 20 63 6f 73 66 28 x*0.08f)*3.0f.+............cosf(
2440 7a 2a 30 2e 30 36 66 29 2a 32 2e 30 66 20 2b 00 00 00 1f 20 20 20 20 20 20 20 20 73 69 6e 66 28 z*0.06f)*2.0f.+............sinf(
2460 28 78 2b 7a 29 2a 30 2e 30 33 66 29 2a 34 2e 30 66 3b 00 00 00 01 7d 00 00 00 00 00 00 00 2d 73 (x+z)*0.03f)*4.0f;....}.......-s
2480 74 61 74 69 63 20 76 65 63 33 20 74 65 72 72 61 69 6e 5f 6e 6f 72 6d 61 6c 28 66 6c 6f 61 74 20 tatic.vec3.terrain_normal(float.
24a0 78 2c 66 6c 6f 61 74 20 7a 29 20 7b 00 00 00 25 20 20 20 20 66 6c 6f 61 74 20 68 4c 20 3d 20 74 x,float.z).{...%....float.hL.=.t
24c0 65 72 72 61 69 6e 5f 68 65 69 67 68 74 28 78 2d 31 2c 7a 29 3b 00 00 00 25 20 20 20 20 66 6c 6f errain_height(x-1,z);...%....flo
24e0 61 74 20 68 52 20 3d 20 74 65 72 72 61 69 6e 5f 68 65 69 67 68 74 28 78 2b 31 2c 7a 29 3b 00 00 at.hR.=.terrain_height(x+1,z);..
2500 00 25 20 20 20 20 66 6c 6f 61 74 20 68 44 20 3d 20 74 65 72 72 61 69 6e 5f 68 65 69 67 68 74 28 .%....float.hD.=.terrain_height(
2520 78 2c 7a 2d 31 29 3b 00 00 00 25 20 20 20 20 66 6c 6f 61 74 20 68 55 20 3d 20 74 65 72 72 61 69 x,z-1);...%....float.hU.=.terrai
2540 6e 5f 68 65 69 67 68 74 28 78 2c 7a 2b 31 29 3b 00 00 00 00 00 00 00 0e 20 20 20 20 76 65 63 33 n_height(x,z+1);............vec3
2560 20 6e 20 3d 20 7b 00 00 00 0e 20 20 20 20 20 20 20 20 68 4c 2d 68 52 2c 00 00 00 0d 20 20 20 20 .n.=.{............hL-hR,........
2580 20 20 20 20 32 2e 30 66 2c 00 00 00 0d 20 20 20 20 20 20 20 20 68 44 2d 68 55 00 00 00 06 20 20 ....2.0f,............hD-hU......
25a0 20 20 7d 3b 00 00 00 00 00 00 00 18 20 20 20 20 72 65 74 75 72 6e 20 76 65 63 33 5f 6e 6f 72 6d ..};............return.vec3_norm
25c0 28 6e 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 2f 73 74 61 74 69 63 20 76 6f 69 64 20 62 75 69 (n);....}......./static.void.bui
25e0 6c 64 5f 74 65 72 72 61 69 6e 28 76 65 72 74 65 78 5f 74 20 2a 2a 76 65 72 74 73 5f 6f 75 74 2c ld_terrain(vertex_t.**verts_out,
2600 00 00 00 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 ...-..........................ui
2620 6e 74 33 32 5f 74 20 2a 2a 69 64 78 5f 6f 75 74 2c 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 nt32_t.**idx_out,...+...........
2640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 2a 76 63 6f 75 6e 74 2c ...............uint32_t.*vcount,
2660 00 00 00 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 ...-..........................ui
2680 6e 74 33 32 5f 74 20 2a 69 63 6f 75 6e 74 29 20 7b 00 00 00 00 00 00 00 18 20 20 20 20 2a 76 63 nt32_t.*icount).{............*vc
26a0 6f 75 6e 74 20 3d 20 47 52 49 44 2a 47 52 49 44 3b 00 00 00 22 20 20 20 20 2a 69 63 6f 75 6e 74 ount.=.GRID*GRID;..."....*icount
26c0 20 3d 20 28 47 52 49 44 2d 31 29 2a 28 47 52 49 44 2d 31 29 2a 36 3b 00 00 00 00 00 00 00 33 20 .=.(GRID-1)*(GRID-1)*6;.......3.
26e0 20 20 20 76 65 72 74 65 78 5f 74 20 2a 76 20 3d 20 63 61 6c 6c 6f 63 28 2a 76 63 6f 75 6e 74 2c ...vertex_t.*v.=.calloc(*vcount,
2700 73 69 7a 65 6f 66 28 76 65 72 74 65 78 5f 74 29 29 3b 00 00 00 33 20 20 20 20 75 69 6e 74 33 32 sizeof(vertex_t));...3....uint32
2720 5f 74 20 2a 69 20 3d 20 63 61 6c 6c 6f 63 28 2a 69 63 6f 75 6e 74 2c 73 69 7a 65 6f 66 28 75 69 _t.*i.=.calloc(*icount,sizeof(ui
2740 6e 74 33 32 5f 74 29 29 3b 00 00 00 00 00 00 00 0f 20 20 20 20 69 6e 74 20 76 69 20 3d 20 30 3b nt32_t));............int.vi.=.0;
2760 00 00 00 00 00 00 00 1f 20 20 20 20 66 6f 72 28 69 6e 74 20 7a 3d 30 3b 20 7a 3c 47 52 49 44 3b ............for(int.z=0;.z<GRID;
2780 20 7a 2b 2b 29 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 66 6f 72 28 69 6e 74 20 78 3d 30 3b 20 .z++).{...#........for(int.x=0;.
27a0 78 3c 47 52 49 44 3b 20 78 2b 2b 29 20 7b 00 00 00 00 00 00 00 22 20 20 20 20 20 20 20 20 20 20 x<GRID;.x++).{......."..........
27c0 20 20 66 6c 6f 61 74 20 66 78 20 3d 20 78 20 2d 20 47 52 49 44 2f 32 3b 00 00 00 22 20 20 20 20 ..float.fx.=.x.-.GRID/2;..."....
27e0 20 20 20 20 20 20 20 20 66 6c 6f 61 74 20 66 7a 20 3d 20 7a 20 2d 20 47 52 49 44 2f 32 3b 00 00 ........float.fz.=.z.-.GRID/2;..
2800 00 00 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 66 6c 6f 61 74 20 68 20 3d 20 74 65 72 72 .....,............float.h.=.terr
2820 61 69 6e 5f 68 65 69 67 68 74 28 66 78 2c 66 7a 29 3b 00 00 00 00 00 00 00 2b 20 20 20 20 20 20 ain_height(fx,fz);.......+......
2840 20 20 20 20 20 20 76 65 63 33 20 6e 20 3d 20 74 65 72 72 61 69 6e 5f 6e 6f 72 6d 61 6c 28 66 78 ......vec3.n.=.terrain_normal(fx
2860 2c 66 7a 29 3b 00 00 00 00 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 66 6c 6f 61 74 20 72 ,fz);....................float.r
2880 2c 67 2c 62 3b 00 00 00 00 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 68 20 3c 20 ,g,b;....................if(h.<.
28a0 2d 32 29 20 7b 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 3d 30 2e 31 66 3b -2).{...'................r=0.1f;
28c0 20 67 3d 30 2e 32 66 3b 20 62 3d 30 2e 37 66 3b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 .g=0.2f;.b=0.7f;................
28e0 7d 20 65 6c 73 65 20 69 66 28 68 20 3c 20 32 29 20 7b 00 00 00 27 20 20 20 20 20 20 20 20 20 20 }.else.if(h.<.2).{...'..........
2900 20 20 20 20 20 20 72 3d 30 2e 32 66 3b 20 67 3d 30 2e 37 66 3b 20 62 3d 30 2e 32 66 3b 00 00 00 ......r=0.2f;.g=0.7f;.b=0.2f;...
2920 1e 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 28 68 20 3c 20 36 29 20 7b 00 .............}.else.if(h.<.6).{.
2940 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 3d 30 2e 34 35 66 3b 20 67 3d 30 2e ..)................r=0.45f;.g=0.
2960 34 66 3b 20 62 3d 30 2e 33 35 66 3b 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 4f;.b=0.35f;................}.el
2980 73 65 20 7b 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 3d 30 2e 39 66 3b 20 se.{...'................r=0.9f;.
29a0 67 3d 30 2e 39 66 3b 20 62 3d 30 2e 39 66 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d g=0.9f;.b=0.9f;................}
29c0 00 00 00 00 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 76 5b 76 69 5d 20 3d 20 28 76 65 72 ....................v[vi].=.(ver
29e0 74 65 78 5f 74 29 7b 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 66 78 2c 68 tex_t){....................{fx,h
2a00 2c 66 7a 7d 2c 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 6e 2e 78 2c 6e 2e ,fz},....................{n.x,n.
2a20 79 2c 6e 2e 7a 7d 2c 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 72 2c 67 2c y,n.z},....................{r,g,
2a40 62 7d 00 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 00 00 00 00 00 00 00 11 20 20 20 20 b}................};............
2a60 20 20 20 20 20 20 20 20 76 69 2b 2b 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 ........vi++;............}......
2a80 20 20 7d 00 00 00 00 00 00 00 0f 20 20 20 20 69 6e 74 20 69 69 20 3d 20 30 3b 00 00 00 00 00 00 ..}............int.ii.=.0;......
2aa0 00 21 20 20 20 20 66 6f 72 28 69 6e 74 20 7a 3d 30 3b 20 7a 3c 47 52 49 44 2d 31 3b 20 7a 2b 2b .!....for(int.z=0;.z<GRID-1;.z++
2ac0 29 20 7b 00 00 00 25 20 20 20 20 20 20 20 20 66 6f 72 28 69 6e 74 20 78 3d 30 3b 20 78 3c 47 52 ).{...%........for(int.x=0;.x<GR
2ae0 49 44 2d 31 3b 20 78 2b 2b 29 20 7b 00 00 00 00 00 00 00 22 20 20 20 20 20 20 20 20 20 20 20 20 ID-1;.x++).{......."............
2b00 75 69 6e 74 33 32 5f 74 20 61 20 3d 20 7a 2a 47 52 49 44 2b 78 3b 00 00 00 1d 20 20 20 20 20 20 uint32_t.a.=.z*GRID+x;..........
2b20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 62 20 3d 20 61 2b 31 3b 00 00 00 20 20 20 20 20 20 ......uint32_t.b.=.a+1;.........
2b40 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 63 20 3d 20 61 2b 47 52 49 44 3b 00 00 00 1d 20 .......uint32_t.c.=.a+GRID;.....
2b60 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 20 64 20 3d 20 63 2b 31 3b 00 00 00 00 ...........uint32_t.d.=.c+1;....
2b80 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 69 5b 69 69 2b 2b 5d 20 3d 20 61 3b 00 00 00 18 ................i[ii++].=.a;....
2ba0 20 20 20 20 20 20 20 20 20 20 20 20 69 5b 69 69 2b 2b 5d 20 3d 20 62 3b 00 00 00 18 20 20 20 20 ............i[ii++].=.b;........
2bc0 20 20 20 20 20 20 20 20 69 5b 69 69 2b 2b 5d 20 3d 20 64 3b 00 00 00 00 00 00 00 18 20 20 20 20 ........i[ii++].=.d;............
2be0 20 20 20 20 20 20 20 20 69 5b 69 69 2b 2b 5d 20 3d 20 61 3b 00 00 00 18 20 20 20 20 20 20 20 20 ........i[ii++].=.a;............
2c00 20 20 20 20 69 5b 69 69 2b 2b 5d 20 3d 20 64 3b 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 ....i[ii++].=.d;................
2c20 69 5b 69 69 2b 2b 5d 20 3d 20 63 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 i[ii++].=.c;............}.......
2c40 20 7d 00 00 00 00 00 00 00 13 20 20 20 20 2a 76 65 72 74 73 5f 6f 75 74 20 3d 20 76 3b 00 00 00 .}............*verts_out.=.v;...
2c60 11 20 20 20 20 2a 69 64 78 5f 6f 75 74 20 3d 20 69 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0c 69 .....*idx_out.=.i;....}........i
2c80 6e 74 20 6d 61 69 6e 28 29 20 7b 00 00 00 00 00 00 00 26 20 20 20 20 44 69 73 70 6c 61 79 20 2a nt.main().{.......&....Display.*
2ca0 64 70 79 20 3d 20 58 4f 70 65 6e 44 69 73 70 6c 61 79 28 4e 55 4c 4c 29 3b 00 00 00 00 00 00 00 dpy.=.XOpenDisplay(NULL);.......
2cc0 0c 20 20 20 20 69 66 28 21 64 70 79 29 00 00 00 1e 20 20 20 20 20 20 20 20 64 69 65 28 22 6e 6f .....if(!dpy)............die("no
2ce0 20 78 31 31 20 64 69 73 70 6c 61 79 22 29 3b 00 00 00 00 00 00 00 24 20 20 20 20 69 6e 74 20 73 .x11.display");.......$....int.s
2d00 63 72 65 65 6e 20 3d 20 44 65 66 61 75 6c 74 53 63 72 65 65 6e 28 64 70 79 29 3b 00 00 00 00 00 creen.=.DefaultScreen(dpy);.....
2d20 00 00 10 20 20 20 20 57 69 6e 64 6f 77 20 77 69 6e 20 3d 00 00 00 1c 20 20 20 20 20 20 20 20 58 .......Window.win.=............X
2d40 43 72 65 61 74 65 53 69 6d 70 6c 65 57 69 6e 64 6f 77 28 00 00 00 10 20 20 20 20 20 20 20 20 20 CreateSimpleWindow(.............
2d60 20 20 20 64 70 79 2c 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 52 6f 6f 74 57 69 6e 64 6f ...dpy,...#............RootWindo
2d80 77 28 64 70 79 2c 73 63 72 65 65 6e 29 2c 00 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 20 30 2c w(dpy,screen),................0,
2da0 00 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 20 30 2c 00 00 00 12 20 20 20 20 20 20 20 20 20 20 ................0,..............
2dc0 20 20 57 49 44 54 48 2c 00 00 00 13 20 20 20 20 20 20 20 20 20 20 20 20 48 45 49 47 48 54 2c 00 ..WIDTH,................HEIGHT,.
2de0 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 20 30 2c 00 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 ...............0,...............
2e00 20 30 2c 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 30 00 00 00 0a 20 20 20 20 20 20 20 20 .0,................0............
2e20 29 3b 00 00 00 00 00 00 00 29 20 20 20 20 58 53 74 6f 72 65 4e 61 6d 65 28 64 70 79 2c 77 69 6e );.......)....XStoreName(dpy,win
2e40 2c 22 56 75 6c 6b 61 6e 20 54 65 72 72 61 69 6e 22 29 3b 00 00 00 00 00 00 00 11 20 20 20 20 58 ,"Vulkan.Terrain");............X
2e60 53 65 6c 65 63 74 49 6e 70 75 74 28 00 00 00 0c 20 20 20 20 20 20 20 20 64 70 79 2c 00 00 00 0c SelectInput(............dpy,....
2e80 20 20 20 20 20 20 20 20 77 69 6e 2c 00 00 00 16 20 20 20 20 20 20 20 20 45 78 70 6f 73 75 72 65 ........win,............Exposure
2ea0 4d 61 73 6b 20 7c 00 00 00 16 20 20 20 20 20 20 20 20 4b 65 79 50 72 65 73 73 4d 61 73 6b 20 7c Mask.|............KeyPressMask.|
2ec0 00 00 00 1b 20 20 20 20 20 20 20 20 53 74 72 75 63 74 75 72 65 4e 6f 74 69 66 79 4d 61 73 6b 00 ............StructureNotifyMask.
2ee0 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 00 18 20 20 20 20 58 4d 61 70 57 69 6e 64 6f 77 28 .......);............XMapWindow(
2f00 64 70 79 2c 77 69 6e 29 3b 00 00 00 00 00 00 00 1d 20 20 20 20 56 6b 41 70 70 6c 69 63 61 74 69 dpy,win);............VkApplicati
2f20 6f 6e 49 6e 66 6f 20 61 70 70 20 3d 20 7b 00 00 00 34 20 20 20 20 20 20 20 20 2e 73 54 79 70 65 onInfo.app.=.{...4.........sType
2f40 20 3d 20 56 4b 5f 53 54 52 55 43 54 55 52 45 5f 54 59 50 45 5f 41 50 50 4c 49 43 41 54 49 4f 4e .=.VK_STRUCTURE_TYPE_APPLICATION
2f60 5f 49 4e 46 4f 2c 00 00 00 26 20 20 20 20 20 20 20 20 2e 70 41 70 70 6c 69 63 61 74 69 6f 6e 4e _INFO,...&.........pApplicationN
2f80 61 6d 65 20 3d 20 22 74 65 72 72 61 69 6e 22 2c 00 00 00 28 20 20 20 20 20 20 20 20 2e 61 70 69 ame.=."terrain",...(.........api
2fa0 56 65 72 73 69 6f 6e 20 3d 20 56 4b 5f 41 50 49 5f 56 45 52 53 49 4f 4e 5f 31 5f 30 00 00 00 06 Version.=.VK_API_VERSION_1_0....
2fc0 20 20 20 20 7d 3b 00 00 00 00 00 00 00 1a 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 65 78 ....};............const.char.*ex
2fe0 74 73 5b 5d 20 3d 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 56 4b 5f 4b 48 52 5f 53 55 52 46 41 ts[].=.{...&........VK_KHR_SURFA
3000 43 45 5f 45 58 54 45 4e 53 49 4f 4e 5f 4e 41 4d 45 2c 00 00 00 2a 20 20 20 20 20 20 20 20 56 4b CE_EXTENSION_NAME,...*........VK
3020 5f 4b 48 52 5f 58 4c 49 42 5f 53 55 52 46 41 43 45 5f 45 58 54 45 4e 53 49 4f 4e 5f 4e 41 4d 45 _KHR_XLIB_SURFACE_EXTENSION_NAME
3040 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 1f 20 20 20 20 56 6b 49 6e 73 74 61 6e 63 65 ........};............VkInstance
3060 43 72 65 61 74 65 49 6e 66 6f 20 63 69 20 3d 20 7b 00 00 00 38 20 20 20 20 20 20 20 20 2e 73 54 CreateInfo.ci.=.{...8.........sT
3080 79 70 65 20 3d 20 56 4b 5f 53 54 52 55 43 54 55 52 45 5f 54 59 50 45 5f 49 4e 53 54 41 4e 43 45 ype.=.VK_STRUCTURE_TYPE_INSTANCE
30a0 5f 43 52 45 41 54 45 5f 49 4e 46 4f 2c 00 00 00 21 20 20 20 20 20 20 20 20 2e 70 41 70 70 6c 69 _CREATE_INFO,...!.........pAppli
30c0 63 61 74 69 6f 6e 49 6e 66 6f 20 3d 20 26 61 70 70 2c 00 00 00 23 20 20 20 20 20 20 20 20 2e 65 cationInfo.=.&app,...#.........e
30e0 6e 61 62 6c 65 64 45 78 74 65 6e 73 69 6f 6e 43 6f 75 6e 74 20 3d 20 32 2c 00 00 00 27 20 20 20 nabledExtensionCount.=.2,...'...
3100 20 20 20 20 20 2e 70 70 45 6e 61 62 6c 65 64 45 78 74 65 6e 73 69 6f 6e 4e 61 6d 65 73 20 3d 20 ......ppEnabledExtensionNames.=.
3120 65 78 74 73 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 18 20 20 20 20 56 6b 49 6e 73 74 exts........};............VkInst
3140 61 6e 63 65 20 69 6e 73 74 61 6e 63 65 3b 00 00 00 00 00 00 00 30 20 20 20 20 43 48 45 43 4b 28 ance.instance;.......0....CHECK(
3160 76 6b 43 72 65 61 74 65 49 6e 73 74 61 6e 63 65 28 26 63 69 2c 4e 55 4c 4c 2c 26 69 6e 73 74 61 vkCreateInstance(&ci,NULL,&insta
3180 6e 63 65 29 29 3b 00 00 00 00 00 00 00 26 20 20 20 20 56 6b 58 6c 69 62 53 75 72 66 61 63 65 43 nce));.......&....VkXlibSurfaceC
31a0 72 65 61 74 65 49 6e 66 6f 4b 48 52 20 73 63 69 20 3d 20 7b 00 00 00 40 20 20 20 20 20 20 20 20 reateInfoKHR.sci.=.{...@........
31c0 2e 73 54 79 70 65 20 3d 20 56 4b 5f 53 54 52 55 43 54 55 52 45 5f 54 59 50 45 5f 58 4c 49 42 5f .sType.=.VK_STRUCTURE_TYPE_XLIB_
31e0 53 55 52 46 41 43 45 5f 43 52 45 41 54 45 5f 49 4e 46 4f 5f 4b 48 52 2c 00 00 00 13 20 20 20 20 SURFACE_CREATE_INFO_KHR,........
3200 20 20 20 20 2e 64 70 79 20 3d 20 64 70 79 2c 00 00 00 15 20 20 20 20 20 20 20 20 2e 77 69 6e 64 .....dpy.=.dpy,.............wind
3220 6f 77 20 3d 20 77 69 6e 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 19 20 20 20 20 56 6b ow.=.win........};............Vk
3240 53 75 72 66 61 63 65 4b 48 52 20 73 75 72 66 61 63 65 3b 00 00 00 00 00 00 00 0a 20 20 20 20 43 SurfaceKHR.surface;............C
3260 48 45 43 4b 28 00 00 00 1f 20 20 20 20 20 20 20 20 76 6b 43 72 65 61 74 65 58 6c 69 62 53 75 72 HECK(............vkCreateXlibSur
3280 66 61 63 65 4b 48 52 28 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 faceKHR(................instance
32a0 2c 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 26 73 63 69 2c 00 00 00 11 20 20 20 20 20 20 ,................&sci,..........
32c0 20 20 20 20 20 20 4e 55 4c 4c 2c 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 26 73 75 72 66 ......NULL,................&surf
32e0 61 63 65 00 00 00 09 20 20 20 20 20 20 20 20 29 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 ace............)........);......
3300 00 1b 20 20 20 20 75 69 6e 74 33 32 5f 74 20 67 70 75 5f 63 6f 75 6e 74 20 3d 20 30 3b 00 00 00 ......uint32_t.gpu_count.=.0;...
3320 00 00 00 00 1f 20 20 20 20 76 6b 45 6e 75 6d 65 72 61 74 65 50 68 79 73 69 63 61 6c 44 65 76 69 .........vkEnumeratePhysicalDevi
3340 63 65 73 28 00 00 00 11 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2c 00 00 00 13 20 20 20 ces(............instance,.......
3360 20 20 20 20 20 26 67 70 75 5f 63 6f 75 6e 74 2c 00 00 00 0c 20 20 20 20 20 20 20 20 4e 55 4c 4c .....&gpu_count,............NULL
3380 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 00 12 20 20 20 20 69 66 28 21 67 70 75 5f 63 6f ........);............if(!gpu_co
33a0 75 6e 74 29 00 00 00 1d 20 20 20 20 20 20 20 20 64 69 65 28 22 6e 6f 20 76 75 6c 6b 61 6e 20 67 unt)............die("no.vulkan.g
33c0 70 75 22 29 3b 00 00 00 00 00 00 00 1e 20 20 20 20 56 6b 50 68 79 73 69 63 61 6c 44 65 76 69 63 pu");............VkPhysicalDevic
33e0 65 20 67 70 75 73 5b 31 36 5d 3b 00 00 00 00 00 00 00 1f 20 20 20 20 76 6b 45 6e 75 6d 65 72 61 e.gpus[16];............vkEnumera
3400 74 65 50 68 79 73 69 63 61 6c 44 65 76 69 63 65 73 28 00 00 00 11 20 20 20 20 20 20 20 20 69 6e tePhysicalDevices(............in
3420 73 74 61 6e 63 65 2c 00 00 00 13 20 20 20 20 20 20 20 20 26 67 70 75 5f 63 6f 75 6e 74 2c 00 00 stance,............&gpu_count,..
3440 00 0c 20 20 20 20 20 20 20 20 67 70 75 73 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 00 23 ..........gpus........);.......#
3460 20 20 20 20 56 6b 50 68 79 73 69 63 61 6c 44 65 76 69 63 65 20 67 70 75 20 3d 20 67 70 75 73 5b ....VkPhysicalDevice.gpu.=.gpus[
3480 30 5d 3b 00 00 00 00 00 00 00 18 20 20 20 20 75 69 6e 74 33 32 5f 74 20 71 63 6f 75 6e 74 20 3d 0];............uint32_t.qcount.=
34a0 20 30 3b 00 00 00 00 00 00 00 2d 20 20 20 20 76 6b 47 65 74 50 68 79 73 69 63 61 6c 44 65 76 69 .0;.......-....vkGetPhysicalDevi
34c0 63 65 51 75 65 75 65 46 61 6d 69 6c 79 50 72 6f 70 65 72 74 69 65 73 28 00 00 00 0c 20 20 20 20 ceQueueFamilyProperties(........
34e0 20 20 20 20 67 70 75 2c 00 00 00 10 20 20 20 20 20 20 20 20 26 71 63 6f 75 6e 74 2c 00 00 00 0c ....gpu,............&qcount,....
3500 20 20 20 20 20 20 20 20 4e 55 4c 4c 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 00 27 20 20 ........NULL........);.......'..
3520 20 20 56 6b 51 75 65 75 65 46 61 6d 69 6c 79 50 72 6f 70 65 72 74 69 65 73 20 71 70 72 6f 70 73 ..VkQueueFamilyProperties.qprops
3540 5b 33 32 5d 3b 00 00 00 00 00 00 00 2d 20 20 20 20 76 6b 47 65 74 50 68 79 73 69 63 61 6c 44 65 [32];.......-....vkGetPhysicalDe
3560 76 69 63 65 51 75 65 75 65 46 61 6d 69 6c 79 50 72 6f 70 65 72 74 69 65 73 28 00 00 00 0c 20 20 viceQueueFamilyProperties(......
3580 20 20 20 20 20 20 67 70 75 2c 00 00 00 10 20 20 20 20 20 20 20 20 26 71 63 6f 75 6e 74 2c 00 00 ......gpu,............&qcount,..
35a0 00 0e 20 20 20 20 20 20 20 20 71 70 72 6f 70 73 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 ..........qprops........);......
35c0 00 29 20 20 20 20 75 69 6e 74 33 32 5f 74 20 67 72 61 70 68 69 63 73 5f 71 75 65 75 65 20 3d 20 .)....uint32_t.graphics_queue.=.
35e0 55 49 4e 54 33 32 5f 4d 41 58 3b 00 00 00 00 00 00 00 24 20 20 20 20 66 6f 72 28 75 69 6e 74 33 UINT32_MAX;.......$....for(uint3
3600 32 5f 74 20 69 3d 30 3b 69 3c 71 63 6f 75 6e 74 3b 69 2b 2b 29 20 7b 00 00 00 00 00 00 00 1d 20 2_t.i=0;i<qcount;i++).{.........
3620 20 20 20 20 20 20 20 56 6b 42 6f 6f 6c 33 32 20 70 72 65 73 65 6e 74 20 3d 20 30 3b 00 00 00 00 .......VkBool32.present.=.0;....
3640 00 00 00 2d 20 20 20 20 20 20 20 20 76 6b 47 65 74 50 68 79 73 69 63 61 6c 44 65 76 69 63 65 53 ...-........vkGetPhysicalDeviceS
3660 75 72 66 61 63 65 53 75 70 70 6f 72 74 4b 48 52 28 00 00 00 10 20 20 20 20 20 20 20 20 20 20 20 urfaceSupportKHR(...............
3680 20 67 70 75 2c 00 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 20 69 2c 00 00 00 14 20 20 20 20 20 .gpu,................i,.........
36a0 20 20 20 20 20 20 20 73 75 72 66 61 63 65 2c 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 26 .......surface,................&
36c0 70 72 65 73 65 6e 74 00 00 00 0a 20 20 20 20 20 20 20 20 29 3b 00 00 00 00 00 00 00 0b 20 20 20 present............);...........
36e0 20 20 20 20 20 69 66 28 00 00 00 3a 20 20 20 20 20 20 20 20 20 20 20 20 28 71 70 72 6f 70 73 5b .....if(...:............(qprops[
3700 69 5d 2e 71 75 65 75 65 46 6c 61 67 73 20 26 20 56 4b 5f 51 55 45 55 45 5f 47 52 41 50 48 49 43 i].queueFlags.&.VK_QUEUE_GRAPHIC
3720 53 5f 42 49 54 29 00 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 20 26 26 00 00 00 13 20 20 20 20 S_BIT)................&&........
3740 20 20 20 20 20 20 20 20 70 72 65 73 65 6e 74 00 00 00 0b 20 20 20 20 20 20 20 20 29 20 7b 00 00 ........present............).{..
3760 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 67 72 61 70 68 69 63 73 5f 71 75 65 75 65 20 3d 20 69 ..............graphics_queue.=.i
3780 3b 00 00 00 12 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 09 20 20 20 20 20 ;................break;.........
37a0 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 00 00 00 00 24 20 20 20 20 69 66 28 67 72 61 70 ...}........}.......$....if(grap
37c0 68 69 63 73 5f 71 75 65 75 65 20 3d 3d 20 55 49 4e 54 33 32 5f 4d 41 58 29 00 00 00 21 20 20 20 hics_queue.==.UINT32_MAX)...!...
37e0 20 20 20 20 20 64 69 65 28 22 6e 6f 20 67 72 61 70 68 69 63 73 20 71 75 65 75 65 22 29 3b 00 00 .....die("no.graphics.queue");..
3800 00 00 00 00 00 1a 20 20 20 20 66 6c 6f 61 74 20 70 72 69 6f 72 69 74 79 20 3d 20 31 2e 30 66 3b ..........float.priority.=.1.0f;
3820 00 00 00 00 00 00 00 23 20 20 20 20 56 6b 44 65 76 69 63 65 51 75 65 75 65 43 72 65 61 74 65 49 .......#....VkDeviceQueueCreateI
3840 6e 66 6f 20 71 63 69 20 3d 20 7b 00 00 00 3c 20 20 20 20 20 20 20 20 2e 73 54 79 70 65 20 3d 20 nfo.qci.=.{...<.........sType.=.
3860 56 4b 5f 53 54 52 55 43 54 55 52 45 5f 54 59 50 45 5f 44 45 56 49 43 45 5f 51 55 45 55 45 5f 43 VK_STRUCTURE_TYPE_DEVICE_QUEUE_C
3880 52 45 41 54 45 5f 49 4e 46 4f 2c 00 00 00 2b 20 20 20 20 20 20 20 20 2e 71 75 65 75 65 46 61 6d REATE_INFO,...+.........queueFam
38a0 69 6c 79 49 6e 64 65 78 20 3d 20 67 72 61 70 68 69 63 73 5f 71 75 65 75 65 2c 00 00 00 18 20 20 ilyIndex.=.graphics_queue,......
38c0 20 20 20 20 20 20 2e 71 75 65 75 65 43 6f 75 6e 74 20 3d 20 31 2c 00 00 00 25 20 20 20 20 20 20 .......queueCount.=.1,...%......
38e0 20 20 2e 70 51 75 65 75 65 50 72 69 6f 72 69 74 69 65 73 20 3d 20 26 70 72 69 6f 72 69 74 79 00 ...pQueuePriorities.=.&priority.
3900 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 21 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 .......};.......!....const.char.
3920 2a 64 65 76 69 63 65 5f 65 78 74 73 5b 5d 20 3d 20 7b 00 00 00 27 20 20 20 20 20 20 20 20 56 4b *device_exts[].=.{...'........VK
3940 5f 4b 48 52 5f 53 57 41 50 43 48 41 49 4e 5f 45 58 54 45 4e 53 49 4f 4e 5f 4e 41 4d 45 00 00 00 _KHR_SWAPCHAIN_EXTENSION_NAME...
3960 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 1e 20 20 20 20 56 6b 44 65 76 69 63 65 43 72 65 61 74 .....};............VkDeviceCreat
3980 65 49 6e 66 6f 20 64 63 69 20 3d 20 7b 00 00 00 36 20 20 20 20 20 20 20 20 2e 73 54 79 70 65 20 eInfo.dci.=.{...6.........sType.
39a0 3d 20 56 4b 5f 53 54 52 55 43 54 55 52 45 5f 54 59 50 45 5f 44 45 56 49 43 45 5f 43 52 45 41 54 =.VK_STRUCTURE_TYPE_DEVICE_CREAT
39c0 45 5f 49 4e 46 4f 2c 00 00 00 22 20 20 20 20 20 20 20 20 2e 71 75 65 75 65 43 72 65 61 74 65 49 E_INFO,...".........queueCreateI
39e0 6e 66 6f 43 6f 75 6e 74 20 3d 20 31 2c 00 00 00 22 20 20 20 20 20 20 20 20 2e 70 51 75 65 75 65 nfoCount.=.1,...".........pQueue
3a00 43 72 65 61 74 65 49 6e 66 6f 73 20 3d 20 26 71 63 69 2c 00 00 00 23 20 20 20 20 20 20 20 20 2e CreateInfos.=.&qci,...#.........
3a20 65 6e 61 62 6c 65 64 45 78 74 65 6e 73 69 6f 6e 43 6f 75 6e 74 20 3d 20 31 2c 00 00 00 2e 20 20 enabledExtensionCount.=.1,......
3a40 20 20 20 20 20 20 2e 70 70 45 6e 61 62 6c 65 64 45 78 74 65 6e 73 69 6f 6e 4e 61 6d 65 73 20 3d .......ppEnabledExtensionNames.=
3a60 20 64 65 76 69 63 65 5f 65 78 74 73 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 14 20 20 .device_exts........};..........
3a80 20 20 56 6b 44 65 76 69 63 65 20 64 65 76 69 63 65 3b 00 00 00 00 00 00 00 0a 20 20 20 20 43 48 ..VkDevice.device;............CH
3aa0 45 43 4b 28 00 00 00 17 20 20 20 20 20 20 20 20 76 6b 43 72 65 61 74 65 44 65 76 69 63 65 28 00 ECK(............vkCreateDevice(.
3ac0 00 00 10 20 20 20 20 20 20 20 20 20 20 20 20 67 70 75 2c 00 00 00 11 20 20 20 20 20 20 20 20 20 ...............gpu,.............
3ae0 20 20 20 26 64 63 69 2c 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 4e 55 4c 4c 2c 00 00 00 ...&dci,................NULL,...
3b00 13 20 20 20 20 20 20 20 20 20 20 20 20 26 64 65 76 69 63 65 00 00 00 09 20 20 20 20 20 20 20 20 .............&device............
3b20 29 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 00 30 20 20 20 20 70 72 69 6e 74 66 28 22 76 )........);.......0....printf("v
3b40 75 6c 6b 61 6e 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 5c 6e ulkan.initialized.successfully\n
3b60 22 29 3b 00 00 00 00 00 00 00 14 20 20 20 20 69 6e 74 20 72 75 6e 6e 69 6e 67 20 3d 20 31 3b 00 ");............int.running.=.1;.
3b80 00 00 00 00 00 00 14 20 20 20 20 77 68 69 6c 65 28 72 75 6e 6e 69 6e 67 29 20 7b 00 00 00 00 00 ...........while(running).{.....
3ba0 00 00 1e 20 20 20 20 20 20 20 20 77 68 69 6c 65 28 58 50 65 6e 64 69 6e 67 28 64 70 79 29 29 20 ...........while(XPending(dpy)).
3bc0 7b 00 00 00 00 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 58 45 76 65 6e 74 20 65 76 3b 00 {....................XEvent.ev;.
3be0 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 58 4e 65 78 74 45 76 65 6e 74 28 64 70 ...................XNextEvent(dp
3c00 79 2c 26 65 76 29 3b 00 00 00 00 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 65 76 y,&ev);.......%............if(ev
3c20 2e 74 79 70 65 20 3d 3d 20 4b 65 79 50 72 65 73 73 29 20 7b 00 00 00 00 00 00 00 1b 20 20 20 20 .type.==.KeyPress).{............
3c40 20 20 20 20 20 20 20 20 20 20 20 20 4b 65 79 53 79 6d 20 6b 73 20 3d 00 00 00 22 20 20 20 20 20 ............KeySym.ks.=...".....
3c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 4c 6f 6f 6b 75 70 4b 65 79 73 79 6d 28 00 00 00 ...............XLookupKeysym(...
3c80 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 65 76 2e 78 6b 65 !........................&ev.xke
3ca0 79 2c 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 00 y,............................0.
3cc0 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 00 00 00 00 00 00 00 .......................);.......
3ce0 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 6b 73 20 3d 3d 20 58 4b 5f 45 73 63 #................if(ks.==.XK_Esc
3d00 61 70 65 29 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 6e ape)........................runn
3d20 69 6e 67 20 3d 20 30 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 00 00 00 00 ing.=.0;................}.......
3d40 28 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 65 76 2e 74 79 70 65 20 3d 3d 20 44 65 73 74 72 (............if(ev.type.==.Destr
3d60 6f 79 4e 6f 74 69 66 79 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e oyNotify)....................run
3d80 6e 69 6e 67 20 3d 20 30 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 00 00 00 00 1e 20 20 ning.=.0;............}..........
3da0 20 20 20 20 20 20 73 74 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 74 73 20 3d 20 7b 00 00 00 18 ......struct.timespec.ts.=.{....
3dc0 20 20 20 20 20 20 20 20 20 20 20 20 2e 74 76 5f 73 65 63 20 3d 20 30 2c 00 00 00 1f 20 20 20 20 .............tv_sec.=.0,........
3de0 20 20 20 20 20 20 20 20 2e 74 76 5f 6e 73 65 63 20 3d 20 31 36 30 30 30 30 30 30 00 00 00 0a 20 .........tv_nsec.=.16000000.....
3e00 20 20 20 20 20 20 20 7d 3b 00 00 00 00 00 00 00 1c 20 20 20 20 20 20 20 20 6e 61 6e 6f 73 6c 65 .......};................nanosle
3e20 65 70 28 26 74 73 2c 4e 55 4c 4c 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 00 00 00 00 21 20 20 ep(&ts,NULL);........}.......!..
3e40 20 20 76 6b 44 65 73 74 72 6f 79 44 65 76 69 63 65 28 64 65 76 69 63 65 2c 4e 55 4c 4c 29 3b 00 ..vkDestroyDevice(device,NULL);.
3e60 00 00 00 00 00 00 18 20 20 20 20 76 6b 44 65 73 74 72 6f 79 53 75 72 66 61 63 65 4b 48 52 28 00 ...........vkDestroySurfaceKHR(.
3e80 00 00 11 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2c 00 00 00 10 20 20 20 20 20 20 20 20 ...........instance,............
3ea0 73 75 72 66 61 63 65 2c 00 00 00 0c 20 20 20 20 20 20 20 20 4e 55 4c 4c 00 00 00 06 20 20 20 20 surface,............NULL........
3ec0 29 3b 00 00 00 00 00 00 00 25 20 20 20 20 76 6b 44 65 73 74 72 6f 79 49 6e 73 74 61 6e 63 65 28 );.......%....vkDestroyInstance(
3ee0 69 6e 73 74 61 6e 63 65 2c 4e 55 4c 4c 29 3b 00 00 00 00 00 00 00 1c 20 20 20 20 58 44 65 73 74 instance,NULL);............XDest
3f00 72 6f 79 57 69 6e 64 6f 77 28 64 70 79 2c 77 69 6e 29 3b 00 00 00 00 00 00 00 17 20 20 20 20 58 royWindow(dpy,win);............X
3f20 43 6c 6f 73 65 44 69 73 70 6c 61 79 28 64 70 79 29 3b 00 00 00 00 00 00 00 0d 20 20 20 20 72 65 CloseDisplay(dpy);............re
3f40 74 75 72 6e 20 30 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 c5 01 00 00 turn.0;....}5...................
3f60 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 74 21 00 00 00 00 00 00 01 00 00 00 ....................t!..........
3f80 00 00 00 00 35 81 5f d0 00 00 00 0c 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 0d 00 00 00 01 ....5._.........................
3fa0 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
40a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
40c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
40e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4100 00 00 00 00 00 00 00 00 00 00 6a 08 f1 d0 04 01 00 00 00 00 00 f5 18 00 00 00 f1 00 00 00 00 00 ..........j.....................
4120 00 00 00 00 00 00 01 00 00 00 12 20 20 20 20 58 53 65 74 57 4d 50 72 6f 74 6f 63 6f 6c f5 18 00 ...............XSetWMProtocol...
4140 00 00 f2 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4160 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 .......................5........
4180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 00 ................................
41a0 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 00 00 f1 00 00 00 12 00 00 00 00 00 00 ................................
41c0 00 00 00 00 00 c7 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c9 0d 00 ................................
41e0 00 00 00 00 00 35 81 5f d0 00 00 00 0d 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 01 .....5._........................
4200 b8 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
42a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
42c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
42e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4360 00 00 00 00 00 00 00 00 00 00 00 6a 08 f1 d1 04 01 00 00 00 00 00 f5 18 00 00 01 b7 00 00 01 b8 ...........j....................
4380 00 00 00 00 00 00 00 01 00 00 00 03 60 60 60 35 81 f5 18 00 00 00 00 b7 01 00 00 00 00 00 00 01 ............```5................
43a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 be 1d 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 ................................
43c0 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0e 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 0f 00 .......5._......................
43e0 00 01 b8 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
44a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
44c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
44e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4540 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 08 f1 d2 04 01 00 00 00 00 00 f5 18 00 00 01 b7 00 00 .............j..................
4560 01 b8 00 00 00 00 00 00 00 01 00 00 00 00 35 81 f5 18 00 00 00 00 b7 01 00 00 00 00 00 00 01 00 ..............5.................
4580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 be 1d 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 ................................
45a0 00 00 00 00 00 00 35 81 5f d0 00 00 00 0f 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 10 00 00 ......5._.......................
45c0 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
45e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
46a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
46c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
46e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4700 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 00 ................................
4720 00 00 00 56 00 00 00 00 00 00 00 00 6a 08 f1 d5 04 01 00 00 00 05 00 f5 18 00 00 00 00 00 00 00 ...V........j...................
4740 01 00 00 00 00 00 00 00 20 00 00 00 04 60 60 60 63 00 00 00 02 2f 2a 00 00 00 27 56 45 52 59 20 .............```c..../*...'VERY.
4760 6c 61 72 67 65 20 56 75 6c 6b 61 6e 20 72 65 6e 64 65 72 65 72 20 6f 6d 69 74 74 65 64 3f 20 4e large.Vulkan.renderer.omitted?.N
4780 6f 2e 00 00 00 28 54 68 69 73 20 69 73 20 61 20 52 45 41 4c 20 6d 69 6e 69 6d 61 6c 20 74 65 72 o....(This.is.a.REAL.minimal.ter
47a0 72 61 69 6e 20 72 65 6e 64 65 72 65 72 2e 00 00 00 00 00 00 00 09 46 45 41 54 55 52 45 53 3a 00 rain.renderer.........FEATURES:.
47c0 00 00 0e 2d 20 56 75 6c 6b 61 6e 20 2b 20 58 31 31 00 00 00 0b 2d 20 73 77 61 70 63 68 61 69 6e ...-.Vulkan.+.X11....-.swapchain
47e0 00 00 00 0c 2d 20 72 65 6e 64 65 72 70 61 73 73 00 00 00 18 2d 20 72 65 73 69 7a 65 2d 73 61 66 ....-.renderpass....-.resize-saf
4800 65 20 72 65 63 72 65 61 74 69 6f 6e 00 00 00 0e 2d 20 64 65 70 74 68 20 62 75 66 66 65 72 00 00 e.recreation....-.depth.buffer..
4820 00 1a 2d 20 64 79 6e 61 6d 69 63 20 76 69 65 77 70 6f 72 74 2f 73 63 69 73 73 6f 72 00 00 00 14 ..-.dynamic.viewport/scissor....
4840 2d 20 74 65 72 72 61 69 6e 20 67 65 6e 65 72 61 74 69 6f 6e 00 00 00 13 2d 20 69 6e 64 65 78 65 -.terrain.generation....-.indexe
4860 64 20 72 65 6e 64 65 72 69 6e 67 00 00 00 13 2d 20 57 41 53 44 20 2b 20 6d 6f 75 73 65 20 6c 6f d.rendering....-.WASD.+.mouse.lo
4880 6f 6b 00 00 00 18 2d 20 66 6f 67 20 2b 20 6c 69 67 68 74 69 6e 67 20 73 68 61 64 65 72 73 00 00 ok....-.fog.+.lighting.shaders..
48a0 00 12 2d 20 64 6f 75 62 6c 65 20 62 75 66 66 65 72 69 6e 67 00 00 00 11 2d 20 70 72 6f 70 65 72 ..-.double.buffering....-.proper
48c0 20 73 68 75 74 64 6f 77 6e 00 00 00 00 00 00 00 06 46 49 4c 45 53 3a 00 00 00 0a 20 20 20 20 6d .shutdown........FILES:........m
48e0 61 69 6e 2e 63 00 00 00 0f 20 20 20 20 73 68 61 64 65 72 2e 76 65 72 74 00 00 00 0f 20 20 20 20 ain.c........shader.vert........
4900 73 68 61 64 65 72 2e 66 72 61 67 00 00 00 00 00 00 00 06 42 55 49 4c 44 3a 00 00 00 21 20 20 20 shader.frag........BUILD:...!...
4920 20 67 6c 73 6c 63 20 73 68 61 64 65 72 2e 76 65 72 74 20 2d 6f 20 76 65 72 74 2e 73 70 76 00 00 .glslc.shader.vert.-o.vert.spv..
4940 00 21 20 20 20 20 67 6c 73 6c 63 20 73 68 61 64 65 72 2e 66 72 61 67 20 2d 6f 20 66 72 61 67 2e .!....glslc.shader.frag.-o.frag.
4960 73 70 76 00 00 00 00 00 00 00 1e 20 20 20 20 63 63 20 6d 61 69 6e 2e 63 20 2d 4f 32 20 2d 6f 20 spv............cc.main.c.-O2.-o.
4980 74 65 72 72 61 69 6e 20 5c 00 00 00 1a 20 20 20 20 20 20 20 20 2d 6c 76 75 6c 6b 61 6e 20 2d 6c terrain.\............-lvulkan.-l
49a0 58 31 31 20 2d 6c 6d 00 00 00 02 2a 2f 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 X11.-lm....*/....5..............
49c0 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 02 00 00 00 00 00 ................................
49e0 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 10 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 .........5._....................
4a00 11 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 08 f2 52 04 01 00 00 00 00 00 f5 18 00 00 00 00 ...............j..R.............
4b80 00 00 00 02 00 00 00 00 00 00 01 97 00 00 00 13 23 64 65 66 69 6e 65 20 5f 47 4e 55 5f 53 4f 55 ................#define._GNU_SOU
4ba0 52 43 45 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e RCE....#include.<stdio.h>....#in
4bc0 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 clude.<stdlib.h>....#include.<st
4be0 64 69 6e 74 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 dint.h>....#include.<string.h>..
4c00 00 11 23 69 6e 63 6c 75 64 65 20 3c 6d 61 74 68 2e 68 3e 00 00 00 00 00 00 00 20 23 64 65 66 69 ..#include.<math.h>........#defi
4c20 6e 65 20 56 4b 5f 55 53 45 5f 50 4c 41 54 46 4f 52 4d 5f 58 4c 49 42 5f 4b 48 52 00 00 00 1a 23 ne.VK_USE_PLATFORM_XLIB_KHR....#
4c40 69 6e 63 6c 75 64 65 20 3c 76 75 6c 6b 61 6e 2f 76 75 6c 6b 61 6e 2e 68 3e 00 00 00 00 00 00 00 include.<vulkan/vulkan.h>.......
4c60 15 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 6c 69 62 2e 68 3e 00 00 00 17 23 69 6e 63 6c 75 .#include.<X11/Xlib.h>....#inclu
4c80 64 65 20 3c 58 31 31 2f 6b 65 79 73 79 6d 2e 68 3e 00 00 00 00 00 00 00 12 23 64 65 66 69 6e 65 de.<X11/keysym.h>........#define
4ca0 20 57 49 44 54 48 20 31 32 38 30 00 00 00 12 23 64 65 66 69 6e 65 20 48 45 49 47 48 54 20 37 32 .WIDTH.1280....#define.HEIGHT.72
4cc0 30 00 00 00 10 23 64 65 66 69 6e 65 20 47 52 49 44 20 31 32 38 00 00 00 14 23 64 65 66 69 6e 65 0....#define.GRID.128....#define
4ce0 20 4d 41 58 5f 46 52 41 4d 45 53 20 32 00 00 00 18 23 64 65 66 69 6e 65 20 50 49 20 33 2e 31 34 .MAX_FRAMES.2....#define.PI.3.14
4d00 31 35 39 32 36 35 33 35 66 00 00 00 00 00 00 00 10 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 15926535f........typedef.struct.
4d20 7b 00 00 00 11 20 20 20 20 66 6c 6f 61 74 20 70 6f 73 5b 33 5d 3b 00 00 00 14 20 20 20 20 66 6c {........float.pos[3];........fl
4d40 6f 61 74 20 6e 6f 72 6d 61 6c 5b 33 5d 3b 00 00 00 13 20 20 20 20 66 6c 6f 61 74 20 63 6f 6c 6f oat.normal[3];........float.colo
4d60 72 5b 33 5d 3b 00 00 00 0b 7d 20 76 65 72 74 65 78 5f 74 3b 00 00 00 00 00 00 00 10 74 79 70 65 r[3];....}.vertex_t;........type
4d80 64 65 66 20 73 74 72 75 63 74 20 7b 00 00 00 13 20 20 20 20 66 6c 6f 61 74 20 76 69 65 77 5b 31 def.struct.{........float.view[1
4da0 36 5d 3b 00 00 00 13 20 20 20 20 66 6c 6f 61 74 20 70 72 6f 6a 5b 31 36 5d 3b 00 00 00 11 20 20 6];........float.proj[16];......
4dc0 20 20 66 6c 6f 61 74 20 63 61 6d 5b 34 5d 3b 00 00 00 08 7d 20 75 62 6f 5f 74 3b 00 00 00 00 00 ..float.cam[4];....}.ubo_t;.....
4de0 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 64 69 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 ...static.void.die(const.char.*s
4e00 29 20 7b 00 00 00 1d 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 22 25 73 5c 6e 22 ).{........fprintf(stderr,"%s\n"
4e20 2c 73 29 3b 00 00 00 0c 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 ,s);........exit(1);....}.......
4e40 17 23 64 65 66 69 6e 65 20 43 48 45 43 4b 28 78 29 20 64 6f 20 7b 20 5c 00 00 00 17 20 20 20 20 .#define.CHECK(x).do.{.\........
4e60 56 6b 52 65 73 75 6c 74 20 72 20 3d 20 28 78 29 3b 20 5c 00 00 00 1a 20 20 20 20 69 66 28 72 20 VkResult.r.=.(x);.\........if(r.
4e80 21 3d 20 56 4b 5f 53 55 43 43 45 53 53 29 7b 20 5c 00 00 00 3b 20 20 20 20 20 20 20 20 66 70 72 !=.VK_SUCCESS){.\...;........fpr
4ea0 69 6e 74 66 28 73 74 64 65 72 72 2c 22 76 6b 20 65 72 72 20 25 64 20 6c 69 6e 65 20 25 64 5c 6e intf(stderr,"vk.err.%d.line.%d\n
4ec0 22 2c 72 2c 5f 5f 4c 49 4e 45 5f 5f 29 3b 20 5c 00 00 00 12 20 20 20 20 20 20 20 20 65 78 69 74 ",r,__LINE__);.\............exit
4ee0 28 31 29 3b 20 5c 00 00 00 07 20 20 20 20 7d 20 5c 00 00 00 0a 7d 20 77 68 69 6c 65 28 30 29 00 (1);.\........}.\....}.while(0).
4f00 00 00 00 00 00 00 27 73 74 61 74 69 63 20 66 6c 6f 61 74 20 74 65 72 72 61 69 6e 28 66 6c 6f 61 ......'static.float.terrain(floa
4f20 74 20 78 2c 66 6c 6f 61 74 20 7a 29 20 7b 00 00 00 0a 20 20 20 20 72 65 74 75 72 6e 00 00 00 1c t.x,float.z).{........return....
4f40 20 20 20 20 20 20 20 20 73 69 6e 66 28 78 2a 30 2e 30 37 66 29 2a 33 2e 30 66 20 2b 00 00 00 1c ........sinf(x*0.07f)*3.0f.+....
4f60 20 20 20 20 20 20 20 20 63 6f 73 66 28 7a 2a 30 2e 30 35 66 29 2a 32 2e 30 66 20 2b 00 00 00 1f ........cosf(z*0.05f)*2.0f.+....
4f80 20 20 20 20 20 20 20 20 73 69 6e 66 28 28 78 2b 7a 29 2a 30 2e 30 33 66 29 2a 35 2e 30 66 3b 00 ........sinf((x+z)*0.03f)*5.0f;.
4fa0 00 00 01 7d 00 00 00 00 00 00 00 1a 73 74 61 74 69 63 20 76 6f 69 64 20 62 75 69 6c 64 5f 74 65 ...}........static.void.build_te
4fc0 72 72 61 69 6e 28 00 00 00 15 20 20 20 20 76 65 72 74 65 78 5f 74 20 2a 2a 76 65 72 74 73 2c 00 rrain(........vertex_t.**verts,.
4fe0 00 00 14 20 20 20 20 75 69 6e 74 33 32 5f 74 20 2a 2a 69 6e 64 73 2c 00 00 00 15 20 20 20 20 75 .......uint32_t.**inds,........u
5000 69 6e 74 33 32 5f 74 20 2a 76 63 6f 75 6e 74 2c 00 00 00 14 20 20 20 20 75 69 6e 74 33 32 5f 74 int32_t.*vcount,........uint32_t
5020 20 2a 69 63 6f 75 6e 74 00 00 00 03 29 20 7b 00 00 00 00 00 00 00 18 20 20 20 20 2a 76 63 6f 75 .*icount....).{............*vcou
5040 6e 74 20 3d 20 47 52 49 44 2a 47 52 49 44 3b 00 00 00 22 20 20 20 20 2a 69 63 6f 75 6e 74 20 3d nt.=.GRID*GRID;..."....*icount.=
5060 20 28 47 52 49 44 2d 31 29 2a 28 47 52 49 44 2d 31 29 2a 36 3b 00 00 00 00 00 00 00 2e 20 20 20 .(GRID-1)*(GRID-1)*6;...........
5080 20 2a 76 65 72 74 73 20 3d 20 63 61 6c 6c 6f 63 28 2a 76 63 6f 75 6e 74 2c 73 69 7a 65 6f 66 28 .*verts.=.calloc(*vcount,sizeof(
50a0 76 65 72 74 65 78 5f 74 29 29 3b 00 00 00 2e 20 20 20 20 2a 69 6e 64 73 20 20 3d 20 63 61 6c 6c vertex_t));........*inds..=.call
50c0 6f 63 28 2a 69 63 6f 75 6e 74 2c 73 69 7a 65 6f 66 28 75 69 6e 74 33 32 5f 74 29 29 3b 00 00 00 oc(*icount,sizeof(uint32_t));...
50e0 00 00 00 00 0d 20 20 20 20 69 6e 74 20 76 69 3d 30 3b 00 00 00 00 00 00 00 1d 20 20 20 20 66 6f .........int.vi=0;............fo
5100 72 28 69 6e 74 20 7a 3d 30 3b 7a 3c 47 52 49 44 3b 7a 2b 2b 29 20 7b 00 00 00 21 20 20 20 20 20 r(int.z=0;z<GRID;z++).{...!.....
5120 20 20 20 66 6f 72 28 69 6e 74 20 78 3d 30 3b 78 3c 47 52 49 44 3b 78 2b 2b 29 20 7b 00 00 00 00 ...for(int.x=0;x<GRID;x++).{....
5140 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 66 6c 6f 61 74 20 66 78 3d 78 2d 47 52 49 44 2f ................float.fx=x-GRID/
5160 32 3b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 66 6c 6f 61 74 20 66 7a 3d 7a 2d 47 52 49 2;................float.fz=z-GRI
5180 44 2f 32 3b 00 00 00 00 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 66 6c 6f 61 74 20 68 3d D/2;.......#............float.h=
51a0 74 65 72 72 61 69 6e 28 66 78 2c 66 7a 29 3b 00 00 00 00 00 00 00 18 20 20 20 20 20 20 20 20 20 terrain(fx,fz);.................
51c0 20 20 20 66 6c 6f 61 74 20 72 2c 67 2c 62 3b 00 00 00 00 00 00 00 18 20 20 20 20 20 20 20 20 20 ...float.r,g,b;.................
51e0 20 20 20 69 66 28 68 20 3c 20 2d 32 29 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 20 ...if(h.<.-2).{...$.............
5200 20 20 20 72 3d 30 2e 31 3b 20 67 3d 30 2e 32 3b 20 62 3d 30 2e 37 3b 00 00 00 1e 20 20 20 20 20 ...r=0.1;.g=0.2;.b=0.7;.........
5220 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 28 68 20 3c 20 32 29 20 7b 00 00 00 24 20 20 20 .......}.else.if(h.<.2).{...$...
5240 20 20 20 20 20 20 20 20 20 20 20 20 20 72 3d 30 2e 32 3b 20 67 3d 30 2e 37 3b 20 62 3d 30 2e 32 .............r=0.2;.g=0.7;.b=0.2
5260 3b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 28 68 20 3c 20 35 ;................}.else.if(h.<.5
5280 29 20 7b 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 3d 30 2e 34 3b 20 67 3d ).{...%................r=0.4;.g=
52a0 30 2e 33 35 3b 20 62 3d 30 2e 33 3b 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 0.35;.b=0.3;................}.el
52c0 73 65 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 3d 30 2e 39 3b 20 67 se.{...$................r=0.9;.g
52e0 3d 30 2e 39 3b 20 62 3d 30 2e 39 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 =0.9;.b=0.9;................}...
5300 00 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 76 65 72 74 73 29 5b 76 69 5d 20 3d 20 ....&............(*verts)[vi].=.
5320 28 76 65 72 74 65 78 5f 74 29 7b 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b (vertex_t){....................{
5340 66 78 2c 68 2c 66 7a 7d 2c 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 30 2c fx,h,fz},....................{0,
5360 31 2c 30 7d 2c 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 72 2c 67 2c 62 7d 1,0},....................{r,g,b}
5380 00 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 00 00 00 00 00 00 00 11 20 20 20 20 20 20 ................};..............
53a0 20 20 20 20 20 20 76 69 2b 2b 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 ......vi++;............}........
53c0 7d 00 00 00 00 00 00 00 0d 20 20 20 20 69 6e 74 20 69 69 3d 30 3b 00 00 00 00 00 00 00 1f 20 20 }............int.ii=0;..........
53e0 20 20 66 6f 72 28 69 6e 74 20 7a 3d 30 3b 7a 3c 47 52 49 44 2d 31 3b 7a 2b 2b 29 20 7b 00 00 00 ..for(int.z=0;z<GRID-1;z++).{...
5400 23 20 20 20 20 20 20 20 20 66 6f 72 28 69 6e 74 20 78 3d 30 3b 78 3c 47 52 49 44 2d 31 3b 78 2b #........for(int.x=0;x<GRID-1;x+
5420 2b 29 20 7b 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32 5f 74 +).{....................uint32_t
5440 20 61 3d 7a 2a 47 52 49 44 2b 78 3b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 .a=z*GRID+x;................uint
5460 33 32 5f 74 20 62 3d 61 2b 31 3b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 74 33 32_t.b=a+1;................uint3
5480 32 5f 74 20 63 3d 61 2b 47 52 49 44 3b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 75 69 6e 2_t.c=a+GRID;................uin
54a0 74 33 32 5f 74 20 64 3d 63 2b 31 3b 00 00 00 00 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 t32_t.d=c+1;....................
54c0 28 2a 69 6e 64 73 29 5b 69 69 2b 2b 5d 3d 61 3b 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 (*inds)[ii++]=a;................
54e0 28 2a 69 6e 64 73 29 5b 69 69 2b 2b 5d 3d 62 3b 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 (*inds)[ii++]=b;................
5500 28 2a 69 6e 64 73 29 5b 69 69 2b 2b 5d 3d 64 3b 00 00 00 00 00 00 00 1c 20 20 20 20 20 20 20 20 (*inds)[ii++]=d;................
5520 20 20 20 20 28 2a 69 6e 64 73 29 5b 69 69 2b 2b 5d 3d 61 3b 00 00 00 1c 20 20 20 20 20 20 20 20 ....(*inds)[ii++]=a;............
5540 20 20 20 20 28 2a 69 6e 64 73 29 5b 69 69 2b 2b 5d 3d 64 3b 00 00 00 1c 20 20 20 20 20 20 20 20 ....(*inds)[ii++]=d;............
5560 20 20 20 20 28 2a 69 6e 64 73 29 5b 69 69 2b 2b 5d 3d 63 3b 00 00 00 09 20 20 20 20 20 20 20 20 ....(*inds)[ii++]=c;............
5580 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 18 73 74 61 74 69 63 20 73 69 }........}....}........static.si
55a0 7a 65 5f 74 20 72 65 61 64 5f 66 69 6c 65 28 00 00 00 15 20 20 20 20 63 6f 6e 73 74 20 63 68 61 ze_t.read_file(........const.cha
55c0 72 20 2a 70 61 74 68 2c 00 00 00 0e 20 20 20 20 63 68 61 72 20 2a 2a 6f 75 74 00 00 00 03 29 20 r.*path,........char.**out....).
55e0 7b 00 00 00 00 00 00 00 1d 20 20 20 20 46 49 4c 45 20 2a 66 3d 66 6f 70 65 6e 28 70 61 74 68 2c {............FILE.*f=fopen(path,
5600 22 72 62 22 29 3b 00 00 00 00 00 00 00 0a 20 20 20 20 69 66 28 21 66 29 00 00 00 12 20 20 20 20 "rb");............if(!f)........
5620 20 20 20 20 64 69 65 28 70 61 74 68 29 3b 00 00 00 00 00 00 00 18 20 20 20 20 66 73 65 65 6b 28 ....die(path);............fseek(
5640 66 2c 30 2c 53 45 45 4b 5f 45 4e 44 29 3b 00 00 00 00 00 00 00 17 20 20 20 20 73 69 7a 65 5f 74 f,0,SEEK_END);............size_t
5660 20 73 7a 3d 66 74 65 6c 6c 28 66 29 3b 00 00 00 00 00 00 00 0e 20 20 20 20 72 65 77 69 6e 64 28 .sz=ftell(f);............rewind(
5680 66 29 3b 00 00 00 00 00 00 00 14 20 20 20 20 2a 6f 75 74 3d 6d 61 6c 6c 6f 63 28 73 7a 29 3b 00 f);............*out=malloc(sz);.
56a0 00 00 00 00 00 00 17 20 20 20 20 66 72 65 61 64 28 2a 6f 75 74 2c 31 2c 73 7a 2c 66 29 3b 00 00 ...........fread(*out,1,sz,f);..
56c0 00 00 00 00 00 0e 20 20 20 20 66 63 6c 6f 73 65 28 66 29 3b 00 00 00 00 00 00 00 0e 20 20 20 20 ..........fclose(f);............
56e0 72 65 74 75 72 6e 20 73 7a 3b 00 00 00 01 7d 00 00 00 00 00 00 00 22 73 74 61 74 69 63 20 56 6b return.sz;....}......."static.Vk
5700 53 68 61 64 65 72 4d 6f 64 75 6c 65 20 6c 6f 61 64 5f 73 68 61 64 65 72 28 00 00 00 11 20 20 20 ShaderModule.load_shader(.......
5720 20 56 6b 44 65 76 69 63 65 20 64 65 76 2c 00 00 00 14 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 .VkDevice.dev,........const.char
5740 20 2a 70 61 74 68 00 00 00 03 29 20 7b 00 00 00 00 00 00 00 0f 20 20 20 20 63 68 61 72 20 2a 64 .*path....).{............char.*d
5760 61 74 61 3b 00 00 00 24 20 20 20 20 73 69 7a 65 5f 74 20 73 7a 3d 72 65 61 64 5f 66 69 6c 65 28 ata;...$....size_t.sz=read_file(
5780 70 61 74 68 2c 26 64 61 74 61 29 3b 00 00 00 00 00 00 00 21 20 20 20 20 56 6b 53 68 61 64 65 72 path,&data);.......!....VkShader
57a0 4d 6f 64 75 6c 65 43 72 65 61 74 65 49 6e 66 6f 20 63 69 3d 7b 00 00 00 3b 20 20 20 20 20 20 20 ModuleCreateInfo.ci={...;.......
57c0 20 2e 73 54 79 70 65 3d 56 4b 5f 53 54 52 55 43 54 55 52 45 5f 54 59 50 45 5f 53 48 41 44 45 52 ..sType=VK_STRUCTURE_TYPE_SHADER
57e0 5f 4d 4f 44 55 4c 45 5f 43 52 45 41 54 45 5f 49 4e 46 4f 2c 00 00 00 15 20 20 20 20 20 20 20 20 _MODULE_CREATE_INFO,............
5800 2e 63 6f 64 65 53 69 7a 65 3d 73 7a 2c 00 00 00 1e 20 20 20 20 20 20 20 20 2e 70 43 6f 64 65 3d .codeSize=sz,.............pCode=
5820 28 75 69 6e 74 33 32 5f 74 2a 29 64 61 74 61 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 (uint32_t*)data........};.......
5840 17 20 20 20 20 56 6b 53 68 61 64 65 72 4d 6f 64 75 6c 65 20 6d 6f 64 3b 00 00 00 00 00 00 00 1f .....VkShaderModule.mod;........
5860 20 20 20 20 43 48 45 43 4b 28 76 6b 43 72 65 61 74 65 53 68 61 64 65 72 4d 6f 64 75 6c 65 28 00 ....CHECK(vkCreateShaderModule(.
5880 00 00 0c 20 20 20 20 20 20 20 20 64 65 76 2c 00 00 00 0c 20 20 20 20 20 20 20 20 26 63 69 2c 00 ...........dev,............&ci,.
58a0 00 00 0d 20 20 20 20 20 20 20 20 4e 55 4c 4c 2c 00 00 00 0c 20 20 20 20 20 20 20 20 26 6d 6f 64 ...........NULL,............&mod
58c0 00 00 00 07 20 20 20 20 29 29 3b 00 00 00 00 00 00 00 0f 20 20 20 20 66 72 65 65 28 64 61 74 61 ........));............free(data
58e0 29 3b 00 00 00 00 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 3b 00 00 00 01 7d 00 00 );............return.mod;....}..
5900 00 00 00 00 00 0c 69 6e 74 20 6d 61 69 6e 28 29 20 7b 00 00 00 00 00 00 00 24 20 20 20 20 44 69 ......int.main().{.......$....Di
5920 73 70 6c 61 79 20 2a 64 70 79 3d 58 4f 70 65 6e 44 69 73 70 6c 61 79 28 4e 55 4c 4c 29 3b 00 00 splay.*dpy=XOpenDisplay(NULL);..
5940 00 00 00 00 00 0c 20 20 20 20 69 66 28 21 64 70 79 29 00 00 00 1a 20 20 20 20 20 20 20 20 64 69 ..........if(!dpy)............di
5960 65 28 22 6e 6f 20 64 69 73 70 6c 61 79 22 29 3b 00 00 00 00 00 00 00 22 20 20 20 20 69 6e 74 20 e("no.display");......."....int.
5980 73 63 72 65 65 6e 3d 44 65 66 61 75 6c 74 53 63 72 65 65 6e 28 64 70 79 29 3b 00 00 00 00 00 00 screen=DefaultScreen(dpy);......
59a0 00 23 20 20 20 20 57 69 6e 64 6f 77 20 77 69 6e 3d 58 43 72 65 61 74 65 53 69 6d 70 6c 65 57 69 .#....Window.win=XCreateSimpleWi
59c0 6e 64 6f 77 28 00 00 00 0c 20 20 20 20 20 20 20 20 64 70 79 2c 00 00 00 1f 20 20 20 20 20 20 20 ndow(............dpy,...........
59e0 20 52 6f 6f 74 57 69 6e 64 6f 77 28 64 70 79 2c 73 63 72 65 65 6e 29 2c 00 00 00 0a 20 20 20 20 .RootWindow(dpy,screen),........
5a00 20 20 20 20 30 2c 00 00 00 0a 20 20 20 20 20 20 20 20 30 2c 00 00 00 0e 20 20 20 20 20 20 20 20 ....0,............0,............
5a20 57 49 44 54 48 2c 00 00 00 0f 20 20 20 20 20 20 20 20 48 45 49 47 48 54 2c 00 00 00 0a 20 20 20 WIDTH,............HEIGHT,.......
5a40 20 20 20 20 20 30 2c 00 00 00 0a 20 20 20 20 20 20 20 20 30 2c 00 00 00 09 20 20 20 20 20 20 20 .....0,............0,...........
5a60 20 30 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 00 22 20 20 20 20 58 53 74 6f 72 65 4e 61 .0........);......."....XStoreNa
5a80 6d 65 28 64 70 79 2c 77 69 6e 2c 22 74 65 72 72 61 69 6e 22 29 3b 00 00 00 00 00 00 00 11 20 20 me(dpy,win,"terrain");..........
5aa0 20 20 58 53 65 6c 65 63 74 49 6e 70 75 74 28 00 00 00 0c 20 20 20 20 20 20 20 20 64 70 79 2c 00 ..XSelectInput(............dpy,.
5ac0 00 00 0c 20 20 20 20 20 20 20 20 77 69 6e 2c 00 00 00 16 20 20 20 20 20 20 20 20 4b 65 79 50 72 ...........win,............KeyPr
5ae0 65 73 73 4d 61 73 6b 20 7c 00 00 00 18 20 20 20 20 20 20 20 20 4b 65 79 52 65 6c 65 61 73 65 4d essMask.|............KeyReleaseM
5b00 61 73 6b 20 7c 00 00 00 1b 20 20 20 20 20 20 20 20 50 6f 69 6e 74 65 72 4d 6f 74 69 6f 6e 4d 61 ask.|............PointerMotionMa
5b20 73 6b 20 7c 00 00 00 1b 20 20 20 20 20 20 20 20 53 74 72 75 63 74 75 72 65 4e 6f 74 69 66 79 4d sk.|............StructureNotifyM
5b40 61 73 6b 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 00 13 20 20 20 20 41 74 6f 6d 20 77 6d ask........);............Atom.wm
5b60 5f 64 65 6c 65 74 65 3d 00 00 00 14 20 20 20 20 20 20 20 20 58 49 6e 74 65 72 6e 41 74 6f 6d 28 _delete=............XInternAtom(
5b80 00 00 00 10 20 20 20 20 20 20 20 20 20 20 20 20 64 70 79 2c 00 00 00 1f 20 20 20 20 20 20 20 20 ................dpy,............
5ba0 20 20 20 20 22 57 4d 5f 44 45 4c 45 54 45 5f 57 49 4e 44 4f 57 22 2c 00 00 00 11 20 20 20 20 20 ...."WM_DELETE_WINDOW",.........
5bc0 20 20 20 20 20 20 20 46 61 6c 73 65 00 00 00 0a 20 20 20 20 20 20 20 20 29 3b 00 00 00 00 00 00 .......False............);......
5be0 00 14 20 20 20 20 58 53 65 74 57 4d 50 72 6f 74 6f 63 6f 6c 73 28 00 00 00 0c 20 20 20 20 20 20 ......XSetWMProtocols(..........
5c00 20 20 64 70 79 2c 00 00 00 0c 20 20 20 20 20 20 20 20 77 69 6e 2c 00 00 00 13 20 20 20 20 20 20 ..dpy,............win,..........
5c20 20 20 26 77 6d 5f 64 65 6c 65 74 65 2c 00 00 00 09 20 20 20 20 20 20 20 20 31 00 00 00 06 20 20 ..&wm_delete,............1......
5c40 20 20 29 3b 00 00 00 00 00 00 00 18 20 20 20 20 58 4d 61 70 57 69 6e 64 6f 77 28 64 70 79 2c 77 ..);............XMapWindow(dpy,w
5c60 69 6e 29 3b 00 00 00 00 00 00 00 1b 20 20 20 20 56 6b 41 70 70 6c 69 63 61 74 69 6f 6e 49 6e 66 in);............VkApplicationInf
5c80 6f 20 61 70 70 3d 7b 00 00 00 32 20 20 20 20 20 20 20 20 2e 73 54 79 70 65 3d 56 4b 5f 53 54 52 o.app={...2.........sType=VK_STR
5ca0 55 43 54 55 52 45 5f 54 59 50 45 5f 41 50 50 4c 49 43 41 54 49 4f 4e 5f 49 4e 46 4f 2c 00 00 00 UCTURE_TYPE_APPLICATION_INFO,...
5cc0 24 20 20 20 20 20 20 20 20 2e 70 41 70 70 6c 69 63 61 74 69 6f 6e 4e 61 6d 65 3d 22 74 65 72 72 $.........pApplicationName="terr
5ce0 61 69 6e 22 2c 00 00 00 26 20 20 20 20 20 20 20 20 2e 61 70 69 56 65 72 73 69 6f 6e 3d 56 4b 5f ain",...&.........apiVersion=VK_
5d00 41 50 49 5f 56 45 52 53 49 4f 4e 5f 31 5f 30 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 API_VERSION_1_0........};.......
5d20 18 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 65 78 74 73 5b 5d 3d 7b 00 00 00 26 20 20 20 .....const.char.*exts[]={...&...
5d40 20 20 20 20 20 56 4b 5f 4b 48 52 5f 53 55 52 46 41 43 45 5f 45 58 54 45 4e 53 49 4f 4e 5f 4e 41 .....VK_KHR_SURFACE_EXTENSION_NA
5d60 4d 45 2c 00 00 00 2a 20 20 20 20 20 20 20 20 56 4b 5f 4b 48 52 5f 58 4c 49 42 5f 53 55 52 46 41 ME,...*........VK_KHR_XLIB_SURFA
5d80 43 45 5f 45 58 54 45 4e 53 49 4f 4e 5f 4e 41 4d 45 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 CE_EXTENSION_NAME........};.....
5da0 00 00 1e 20 20 20 20 56 6b 49 6e 73 74 61 6e 63 65 43 72 65 61 74 65 49 6e 66 6f 20 69 63 69 3d .......VkInstanceCreateInfo.ici=
5dc0 7b 00 00 00 36 20 20 20 20 20 20 20 20 2e 73 54 79 70 65 3d 56 4b 5f 53 54 52 55 43 54 55 52 45 {...6.........sType=VK_STRUCTURE
5de0 5f 54 59 50 45 5f 49 4e 53 54 41 4e 43 45 5f 43 52 45 41 54 45 5f 49 4e 46 4f 2c 00 00 00 1f 20 _TYPE_INSTANCE_CREATE_INFO,.....
5e00 20 20 20 20 20 20 20 2e 70 41 70 70 6c 69 63 61 74 69 6f 6e 49 6e 66 6f 3d 26 61 70 70 2c 00 00 ........pApplicationInfo=&app,..
5e20 00 21 20 20 20 20 20 20 20 20 2e 65 6e 61 62 6c 65 64 45 78 74 65 6e 73 69 6f 6e 43 6f 75 6e 74 .!.........enabledExtensionCount
5e40 3d 32 2c 00 00 00 25 20 20 20 20 20 20 20 20 2e 70 70 45 6e 61 62 6c 65 64 45 78 74 65 6e 73 69 =2,...%.........ppEnabledExtensi
5e60 6f 6e 4e 61 6d 65 73 3d 65 78 74 73 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 18 20 20 onNames=exts........};..........
5e80 20 20 56 6b 49 6e 73 74 61 6e 63 65 20 69 6e 73 74 61 6e 63 65 3b 00 00 00 00 00 00 00 1b 20 20 ..VkInstance.instance;..........
5ea0 20 20 43 48 45 43 4b 28 76 6b 43 72 65 61 74 65 49 6e 73 74 61 6e 63 65 28 00 00 00 0d 20 20 20 ..CHECK(vkCreateInstance(.......
5ec0 20 20 20 20 20 26 69 63 69 2c 00 00 00 0d 20 20 20 20 20 20 20 20 4e 55 4c 4c 2c 00 00 00 11 20 .....&ici,............NULL,.....
5ee0 20 20 20 20 20 20 20 26 69 6e 73 74 61 6e 63 65 00 00 00 07 20 20 20 20 29 29 3b 00 00 00 00 00 .......&instance........));.....
5f00 00 00 24 20 20 20 20 56 6b 58 6c 69 62 53 75 72 66 61 63 65 43 72 65 61 74 65 49 6e 66 6f 4b 48 ..$....VkXlibSurfaceCreateInfoKH
5f20 52 20 73 63 69 3d 7b 00 00 00 3e 20 20 20 20 20 20 20 20 2e 73 54 79 70 65 3d 56 4b 5f 53 54 52 R.sci={...>.........sType=VK_STR
5f40 55 43 54 55 52 45 5f 54 59 50 45 5f 58 4c 49 42 5f 53 55 52 46 41 43 45 5f 43 52 45 41 54 45 5f UCTURE_TYPE_XLIB_SURFACE_CREATE_
5f60 49 4e 46 4f 5f 4b 48 52 2c 00 00 00 11 20 20 20 20 20 20 20 20 2e 64 70 79 3d 64 70 79 2c 00 00 INFO_KHR,.............dpy=dpy,..
5f80 00 13 20 20 20 20 20 20 20 20 2e 77 69 6e 64 6f 77 3d 77 69 6e 00 00 00 06 20 20 20 20 7d 3b 00 ...........window=win........};.
5fa0 00 00 00 00 00 00 19 20 20 20 20 56 6b 53 75 72 66 61 63 65 4b 48 52 20 73 75 72 66 61 63 65 3b ...........VkSurfaceKHR.surface;
5fc0 00 00 00 00 00 00 00 21 20 20 20 20 43 48 45 43 4b 28 76 6b 43 72 65 61 74 65 58 6c 69 62 53 75 .......!....CHECK(vkCreateXlibSu
5fe0 72 66 61 63 65 4b 48 52 28 00 00 00 11 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2c 00 00 rfaceKHR(............instance,..
6000 00 0d 20 20 20 20 20 20 20 20 26 73 63 69 2c 00 00 00 0d 20 20 20 20 20 20 20 20 4e 55 4c 4c 2c ..........&sci,............NULL,
6020 00 00 00 10 20 20 20 20 20 20 20 20 26 73 75 72 66 61 63 65 00 00 00 07 20 20 20 20 29 29 3b 00 ............&surface........));.
6040 00 00 00 00 00 00 19 20 20 20 20 75 69 6e 74 33 32 5f 74 20 67 70 75 5f 63 6f 75 6e 74 3d 30 3b ...........uint32_t.gpu_count=0;
6060 00 00 00 00 00 00 00 1f 20 20 20 20 76 6b 45 6e 75 6d 65 72 61 74 65 50 68 79 73 69 63 61 6c 44 ............vkEnumeratePhysicalD
6080 65 76 69 63 65 73 28 00 00 00 11 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2c 00 00 00 13 evices(............instance,....
60a0 20 20 20 20 20 20 20 20 26 67 70 75 5f 63 6f 75 6e 74 2c 00 00 00 0c 20 20 20 20 20 20 20 20 4e ........&gpu_count,............N
60c0 55 4c 4c 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 00 1e 20 20 20 20 56 6b 50 68 79 73 69 ULL........);............VkPhysi
60e0 63 61 6c 44 65 76 69 63 65 20 67 70 75 73 5b 31 36 5d 3b 00 00 00 00 00 00 00 1f 20 20 20 20 76 calDevice.gpus[16];............v
6100 6b 45 6e 75 6d 65 72 61 74 65 50 68 79 73 69 63 61 6c 44 65 76 69 63 65 73 28 00 00 00 11 20 20 kEnumeratePhysicalDevices(......
6120 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2c 00 00 00 13 20 20 20 20 20 20 20 20 26 67 70 75 5f ......instance,............&gpu_
6140 63 6f 75 6e 74 2c 00 00 00 0c 20 20 20 20 20 20 20 20 67 70 75 73 00 00 00 06 20 20 20 20 29 3b count,............gpus........);
6160 00 00 00 00 00 00 00 21 20 20 20 20 56 6b 50 68 79 73 69 63 61 6c 44 65 76 69 63 65 20 67 70 75 .......!....VkPhysicalDevice.gpu
6180 3d 67 70 75 73 5b 30 5d 3b 00 00 00 00 00 00 00 16 20 20 20 20 75 69 6e 74 33 32 5f 74 20 71 63 =gpus[0];............uint32_t.qc
61a0 6f 75 6e 74 3d 30 3b 00 00 00 00 00 00 00 2d 20 20 20 20 76 6b 47 65 74 50 68 79 73 69 63 61 6c ount=0;.......-....vkGetPhysical
61c0 44 65 76 69 63 65 51 75 65 75 65 46 61 6d 69 6c 79 50 72 6f 70 65 72 74 69 65 73 28 00 00 00 0c DeviceQueueFamilyProperties(....
61e0 20 20 20 20 20 20 20 20 67 70 75 2c 00 00 00 10 20 20 20 20 20 20 20 20 26 71 63 6f 75 6e 74 2c ........gpu,............&qcount,
6200 00 00 00 0c 20 20 20 20 20 20 20 20 4e 55 4c 4c 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 ............NULL........);......
6220 00 27 20 20 20 20 56 6b 51 75 65 75 65 46 61 6d 69 6c 79 50 72 6f 70 65 72 74 69 65 73 20 71 70 .'....VkQueueFamilyProperties.qp
6240 72 6f 70 73 5b 33 32 5d 3b 00 00 00 00 00 00 00 2d 20 20 20 20 76 6b 47 65 74 50 68 79 73 69 63 rops[32];.......-....vkGetPhysic
6260 61 6c 44 65 76 69 63 65 51 75 65 75 65 46 61 6d 69 6c 79 50 72 6f 70 65 72 74 69 65 73 28 00 00 alDeviceQueueFamilyProperties(..
6280 00 0c 20 20 20 20 20 20 20 20 67 70 75 2c 00 00 00 10 20 20 20 20 20 20 20 20 26 71 63 6f 75 6e ..........gpu,............&qcoun
62a0 74 2c 00 00 00 0e 20 20 20 20 20 20 20 20 71 70 72 6f 70 73 00 00 00 06 20 20 20 20 29 3b 00 00 t,............qprops........);..
62c0 00 00 00 00 00 23 20 20 20 20 75 69 6e 74 33 32 5f 74 20 67 72 61 70 68 69 63 73 5f 71 3d 55 49 .....#....uint32_t.graphics_q=UI
62e0 4e 54 33 32 5f 4d 41 58 3b 00 00 00 00 00 00 00 24 20 20 20 20 66 6f 72 28 75 69 6e 74 33 32 5f NT32_MAX;.......$....for(uint32_
6300 74 20 69 3d 30 3b 69 3c 71 63 6f 75 6e 74 3b 69 2b 2b 29 20 7b 00 00 00 00 00 00 00 1b 20 20 20 t.i=0;i<qcount;i++).{...........
6320 20 20 20 20 20 56 6b 42 6f 6f 6c 33 32 20 70 72 65 73 65 6e 74 3d 30 3b 00 00 00 00 00 00 00 2d .....VkBool32.present=0;.......-
6340 20 20 20 20 20 20 20 20 76 6b 47 65 74 50 68 79 73 69 63 61 6c 44 65 76 69 63 65 53 75 72 66 61 ........vkGetPhysicalDeviceSurfa
6360 63 65 53 75 70 70 6f 72 74 4b 48 52 28 00 00 00 10 20 20 20 20 20 20 20 20 20 20 20 20 67 70 75 ceSupportKHR(................gpu
6380 2c 00 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 20 69 2c 00 00 00 14 20 20 20 20 20 20 20 20 20 ,................i,.............
63a0 20 20 20 73 75 72 66 61 63 65 2c 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 26 70 72 65 73 ...surface,................&pres
63c0 65 6e 74 00 00 00 0a 20 20 20 20 20 20 20 20 29 3b 00 00 00 00 00 00 00 0b 20 20 20 20 20 20 20 ent............);...............
63e0 20 69 66 28 00 00 00 3a 20 20 20 20 20 20 20 20 20 20 20 20 28 71 70 72 6f 70 73 5b 69 5d 2e 71 .if(...:............(qprops[i].q
6400 75 65 75 65 46 6c 61 67 73 20 26 20 56 4b 5f 51 55 45 55 45 5f 47 52 41 50 48 49 43 53 5f 42 49 ueueFlags.&.VK_QUEUE_GRAPHICS_BI
6420 54 29 00 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 20 26 26 00 00 00 13 20 20 20 20 20 20 20 20 T)................&&............
6440 20 20 20 20 70 72 65 73 65 6e 74 00 00 00 0b 20 20 20 20 20 20 20 20 29 20 7b 00 00 00 19 20 20 ....present............).{......
6460 20 20 20 20 20 20 20 20 20 20 67 72 61 70 68 69 63 73 5f 71 3d 69 3b 00 00 00 12 20 20 20 20 20 ..........graphics_q=i;.........
6480 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 .......break;............}......
64a0 20 20 7d 00 00 00 00 00 00 00 14 20 20 20 20 66 6c 6f 61 74 20 70 72 69 6f 3d 31 2e 30 66 3b 00 ..}............float.prio=1.0f;.
64c0 00 00 00 00 00 00 21 20 20 20 20 56 6b 44 65 76 69 63 65 51 75 65 75 65 43 72 65 61 74 65 49 6e ......!....VkDeviceQueueCreateIn
64e0 66 6f 20 71 63 69 3d 7b 00 00 00 3a 20 20 20 20 20 20 20 20 2e 73 54 79 70 65 3d 56 4b 5f 53 54 fo.qci={...:.........sType=VK_ST
6500 52 55 43 54 55 52 45 5f 54 59 50 45 5f 44 45 56 49 43 45 5f 51 55 45 55 45 5f 43 52 45 41 54 45 RUCTURE_TYPE_DEVICE_QUEUE_CREATE
6520 5f 49 4e 46 4f 2c 00 00 00 25 20 20 20 20 20 20 20 20 2e 71 75 65 75 65 46 61 6d 69 6c 79 49 6e _INFO,...%.........queueFamilyIn
6540 64 65 78 3d 67 72 61 70 68 69 63 73 5f 71 2c 00 00 00 16 20 20 20 20 20 20 20 20 2e 71 75 65 75 dex=graphics_q,.............queu
6560 65 43 6f 75 6e 74 3d 31 2c 00 00 00 1f 20 20 20 20 20 20 20 20 2e 70 51 75 65 75 65 50 72 69 6f eCount=1,.............pQueuePrio
6580 72 69 74 69 65 73 3d 26 70 72 69 6f 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 1c 20 20 rities=&prio........};..........
65a0 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 64 65 76 5f 65 78 74 73 5b 5d 3d 7b 00 00 00 27 20 20 ..const.char.*dev_exts[]={...'..
65c0 20 20 20 20 20 20 56 4b 5f 4b 48 52 5f 53 57 41 50 43 48 41 49 4e 5f 45 58 54 45 4e 53 49 4f 4e ......VK_KHR_SWAPCHAIN_EXTENSION
65e0 5f 4e 41 4d 45 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 1c 20 20 20 20 56 6b 44 65 76 _NAME........};............VkDev
6600 69 63 65 43 72 65 61 74 65 49 6e 66 6f 20 64 63 69 3d 7b 00 00 00 34 20 20 20 20 20 20 20 20 2e iceCreateInfo.dci={...4.........
6620 73 54 79 70 65 3d 56 4b 5f 53 54 52 55 43 54 55 52 45 5f 54 59 50 45 5f 44 45 56 49 43 45 5f 43 sType=VK_STRUCTURE_TYPE_DEVICE_C
6640 52 45 41 54 45 5f 49 4e 46 4f 2c 00 00 00 20 20 20 20 20 20 20 20 20 2e 71 75 65 75 65 43 72 65 REATE_INFO,.............queueCre
6660 61 74 65 49 6e 66 6f 43 6f 75 6e 74 3d 31 2c 00 00 00 20 20 20 20 20 20 20 20 20 2e 70 51 75 65 ateInfoCount=1,.............pQue
6680 75 65 43 72 65 61 74 65 49 6e 66 6f 73 3d 26 71 63 69 2c 00 00 00 21 20 20 20 20 20 20 20 20 2e ueCreateInfos=&qci,...!.........
66a0 65 6e 61 62 6c 65 64 45 78 74 65 6e 73 69 6f 6e 43 6f 75 6e 74 3d 31 2c 00 00 00 29 20 20 20 20 enabledExtensionCount=1,...)....
66c0 20 20 20 20 2e 70 70 45 6e 61 62 6c 65 64 45 78 74 65 6e 73 69 6f 6e 4e 61 6d 65 73 3d 64 65 76 .....ppEnabledExtensionNames=dev
66e0 5f 65 78 74 73 00 00 00 06 20 20 20 20 7d 3b 00 00 00 00 00 00 00 11 20 20 20 20 56 6b 44 65 76 _exts........};............VkDev
6700 69 63 65 20 64 65 76 3b 00 00 00 00 00 00 00 19 20 20 20 20 43 48 45 43 4b 28 76 6b 43 72 65 61 ice.dev;............CHECK(vkCrea
6720 74 65 44 65 76 69 63 65 28 00 00 00 0c 20 20 20 20 20 20 20 20 67 70 75 2c 00 00 00 0d 20 20 20 teDevice(............gpu,.......
6740 20 20 20 20 20 26 64 63 69 2c 00 00 00 0d 20 20 20 20 20 20 20 20 4e 55 4c 4c 2c 00 00 00 0c 20 .....&dci,............NULL,.....
6760 20 20 20 20 20 20 20 26 64 65 76 00 00 00 07 20 20 20 20 29 29 3b 00 00 00 00 00 00 00 12 20 20 .......&dev........));..........
6780 20 20 56 6b 51 75 65 75 65 20 71 75 65 75 65 3b 00 00 00 00 00 00 00 15 20 20 20 20 76 6b 47 65 ..VkQueue.queue;............vkGe
67a0 74 44 65 76 69 63 65 51 75 65 75 65 28 00 00 00 0c 20 20 20 20 20 20 20 20 64 65 76 2c 00 00 00 tDeviceQueue(............dev,...
67c0 13 20 20 20 20 20 20 20 20 67 72 61 70 68 69 63 73 5f 71 2c 00 00 00 0a 20 20 20 20 20 20 20 20 .........graphics_q,............
67e0 30 2c 00 00 00 0e 20 20 20 20 20 20 20 20 26 71 75 65 75 65 00 00 00 06 20 20 20 20 29 3b 00 00 0,............&queue........);..
6800 00 00 00 00 00 25 20 20 20 20 70 72 69 6e 74 66 28 22 72 65 6e 64 65 72 65 72 20 69 6e 69 74 69 .....%....printf("renderer.initi
6820 61 6c 69 7a 65 64 5c 6e 22 29 3b 00 00 00 00 00 00 00 12 20 20 20 20 69 6e 74 20 72 75 6e 6e 69 alized\n");............int.runni
6840 6e 67 3d 31 3b 00 00 00 00 00 00 00 14 20 20 20 20 77 68 69 6c 65 28 72 75 6e 6e 69 6e 67 29 20 ng=1;............while(running).
6860 7b 00 00 00 00 00 00 00 1e 20 20 20 20 20 20 20 20 77 68 69 6c 65 28 58 50 65 6e 64 69 6e 67 28 {................while(XPending(
6880 64 70 79 29 29 20 7b 00 00 00 00 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 58 45 76 65 6e dpy)).{....................XEven
68a0 74 20 65 76 3b 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 58 4e 65 78 74 45 76 t.ev;....................XNextEv
68c0 65 6e 74 28 64 70 79 2c 26 65 76 29 3b 00 00 00 00 00 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 ent(dpy,&ev);.......*...........
68e0 20 69 66 28 65 76 2e 74 79 70 65 20 3d 3d 20 43 6c 69 65 6e 74 4d 65 73 73 61 67 65 29 20 7b 00 .if(ev.type.==.ClientMessage).{.
6900 00 00 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 28 41 74 6f 6d 29 65 76 2e 78 ..9................if((Atom)ev.x
6920 63 6c 69 65 6e 74 2e 64 61 74 61 2e 6c 5b 30 5d 3d 3d 77 6d 5f 64 65 6c 65 74 65 29 00 00 00 1e client.data.l[0]==wm_delete)....
6940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 6e 69 6e 67 3d 30 3b 00 00 ....................running=0;..
6960 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 00 00 00 00 25 20 20 20 20 20 20 20 20 20 ..............}.......%.........
6980 20 20 20 69 66 28 65 76 2e 74 79 70 65 20 3d 3d 20 4b 65 79 50 72 65 73 73 29 20 7b 00 00 00 00 ...if(ev.type.==.KeyPress).{....
69a0 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4b 65 79 53 79 6d 20 6b 73 3d 00 00 ....................KeySym.ks=..
69c0 00 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 4c 6f 6f 6b 75 70 4b 65 79 ."....................XLookupKey
69e0 73 79 6d 28 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sym(...!........................
6a00 26 65 76 2e 78 6b 65 79 2c 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 &ev.xkey,.......................
6a20 20 20 20 20 20 30 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 3b .....0........................);
6a40 00 00 00 00 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 6b 73 3d 3d 58 .......!................if(ks==X
6a60 4b 5f 45 73 63 61 70 65 29 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 K_Escape).......................
6a80 20 72 75 6e 6e 69 6e 67 3d 30 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 09 .running=0;................}....
6aa0 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 00 00 00 00 1a 20 20 20 20 76 6b ........}........}............vk
6ac0 44 65 76 69 63 65 57 61 69 74 49 64 6c 65 28 64 65 76 29 3b 00 00 00 00 00 00 00 1e 20 20 20 20 DeviceWaitIdle(dev);............
6ae0 76 6b 44 65 73 74 72 6f 79 44 65 76 69 63 65 28 64 65 76 2c 4e 55 4c 4c 29 3b 00 00 00 00 00 00 vkDestroyDevice(dev,NULL);......
6b00 00 18 20 20 20 20 76 6b 44 65 73 74 72 6f 79 53 75 72 66 61 63 65 4b 48 52 28 00 00 00 11 20 20 ......vkDestroySurfaceKHR(......
6b20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2c 00 00 00 10 20 20 20 20 20 20 20 20 73 75 72 66 61 ......instance,............surfa
6b40 63 65 2c 00 00 00 0c 20 20 20 20 20 20 20 20 4e 55 4c 4c 00 00 00 06 20 20 20 20 29 3b 00 00 00 ce,............NULL........);...
6b60 00 00 00 00 16 20 20 20 20 76 6b 44 65 73 74 72 6f 79 49 6e 73 74 61 6e 63 65 28 00 00 00 11 20 .........vkDestroyInstance(.....
6b80 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2c 00 00 00 0c 20 20 20 20 20 20 20 20 4e 55 4c 4c .......instance,............NULL
6ba0 00 00 00 06 20 20 20 20 29 3b 00 00 00 00 00 00 00 1c 20 20 20 20 58 44 65 73 74 72 6f 79 57 69 ........);............XDestroyWi
6bc0 6e 64 6f 77 28 64 70 79 2c 77 69 6e 29 3b 00 00 00 00 00 00 00 17 20 20 20 20 58 43 6c 6f 73 65 ndow(dpy,win);............XClose
6be0 44 69 73 70 6c 61 79 28 64 70 79 29 3b 00 00 00 00 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 Display(dpy);............return.
6c00 30 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 97 01 00 00 00 00 00 00 01 0;....}5........................
6c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b6 1b 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 ...............................5
6c40 81 5f d0 00 00 00 11 00 00 00 13 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 01 00 00 00 00 00 ._..............................
6c60 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6dc0 00 00 00 00 00 6a 08 f2 52 04 01 00 00 00 00 00 f5 18 00 00 03 2c 00 00 00 00 00 00 00 00 00 00 .....j..R............,..........
6de0 00 01 00 00 00 02 20 20 f5 18 00 00 03 2d 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 02 54 .............-.................T
6e00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 17 20 20 20 20 56 6b 50 69 70 65 6c 69 6e 65 20 70 ....................VkPipeline.p
6e20 69 70 65 6c 69 6e 65 f5 18 00 00 02 55 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 01 b0 00 ipeline.....U...................
6e40 00 00 00 00 00 00 00 00 00 00 01 00 00 00 05 20 20 20 20 56 f5 18 00 00 01 b1 00 00 00 00 00 00 ...................V............
6e60 00 00 00 00 00 00 f5 18 00 00 00 f2 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 20 20 20 20 ................................
6e80 f5 18 00 00 00 f3 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ea0 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 ..........................5.....
6ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f2 00 00 00 04 00 00 00 00 00 00 00 00 00 ................................
6ee0 00 00 00 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 00 00 f2 00 00 00 04 00 00 00 ................................
6f00 00 00 00 00 00 00 00 00 be 00 00 00 05 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f20 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 b0 01 00 00 05 00 00 00 00 00 00 00 00 00 00 00 a4 00 ................................
6f40 00 00 17 00 00 00 f8 1f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 00 00 00 00 f5 18 ................................
6f60 00 00 00 00 54 02 00 00 17 00 00 00 00 00 00 00 00 00 00 00 d8 00 00 00 02 00 00 00 f7 2f 00 00 ....T......................../..
6f80 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 00 00 00 00 f5 18 00 00 00 00 2c 03 00 00 02 00 ..........................,.....
6fa0 00 00 00 00 00 00 00 00 00 00 49 00 00 00 00 00 00 00 f6 3f 00 00 00 00 00 00 00 00 00 00 00 00 ..........I........?............
6fc0 00 00 fb 05 00 00 00 00 00 00 35 81 5f d0 00 00 00 12 00 00 00 14 00 00 00 00 00 00 00 00 00 00 ..........5._...................
6fe0 00 13 00 00 03 76 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 .....v..........................
7000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 08 f2 53 04 01 00 00 00 00 00 f5 18 00 00 03 ................j..S............
7160 75 00 00 03 76 00 00 00 00 00 00 00 01 00 00 00 00 35 81 f5 18 00 00 00 00 75 03 00 00 00 00 00 u...v............5.......u......
7180 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 45 00 00 00 00 00 00 01 00 00 00 00 00 00 ..................E.............
71a0 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 13 00 00 00 15 00 00 00 00 00 00 00 00 00 00 00 .........5._....................
71c0 14 00 00 03 75 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ....u...........................
71e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 08 f2 54 04 01 00 00 00 00 00 f5 18 00 00 03 74 ...............j..T............t
7340 00 00 03 75 00 00 00 00 00 00 00 01 00 00 00 03 60 60 60 35 81 f5 18 00 00 00 00 74 03 00 00 00 ...u............```5.......t....
7360 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ed 45 00 00 00 00 00 00 04 00 00 00 00 ....................E...........
7380 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 ...........5._..................
73a0 00 00 15 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 ................................
73c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 08 f2 55 04 01 00 00 00 06 00 f5 18 00 00 .................j..U...........
7520 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 04 60 60 60 63 35 81 f5 18 00 00 00 00 00 00 ..................```c5.........
7540 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 ................................
7560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 e7 aa ..............5...