05:43 <+bridge> [ddnet] Anyone know how to compile fng2 on windows? 05:43 <+bridge> [ddnet] Anyone know how to compile the fng2 server on windows? 05:43 <+bridge> [ddnet] https://github.com/Jupeyy/teeworlds-fng2-mod 05:44 <+bridge> [ddnet] I tried with CMake and MinGW, but I couldn't get past this error: 05:44 <+bridge> [ddnet] 05:44 <+bridge> [ddnet] `collect2.exe: error: ld returned 1 exit status 05:44 <+bridge> [ddnet] CMakeFiles\fng2_srv.dir\build.make:519: recipe for target 'fng2_srv.exe' failed 05:44 <+bridge> [ddnet] mingw32-make[2]: *** [fng2_srv.exe] Error 1 05:44 <+bridge> [ddnet] CMakeFiles\Makefile2:365: recipe for target 'CMakeFiles/fng2_srv.dir/all' failed 05:44 <+bridge> [ddnet] mingw32-make[1]: *** [CMakeFiles/fng2_srv.dir/all] Error 2 05:44 <+bridge> [ddnet] Makefile:169: recipe for target 'all' failed 05:44 <+bridge> [ddnet] mingw32-make: *** [all] Error 2` 09:17 <+bridge> [ddnet] @deen is map search broken for website or is it just me? 09:18 <+bridge> [ddnet] When I click on a map or search for a map it gives me a white screen 09:18 <+bridge> [ddnet] <ᶰ°Konͧsti> didnt i read something that u can load saves on any server now? 09:18 <+bridge> [ddnet] @ᶰ°Konͧsti yes, should work. doesn't? 09:19 <+bridge> [ddnet] <ᶰ°Konͧsti> just wanted to be sure because it would be a mess to deal with the different servers when i have good ping on 5 different locations xd 09:19 <+bridge> [ddnet] <ᶰ°Konͧsti> @TearlessAbyss46 what browser u using 09:21 <+bridge> [ddnet] Only tried with chrome atm 09:23 <+bridge> [ddnet] @TearlessAbyss46 thanks, fixed 09:23 <+bridge> [ddnet] It was only broken for the country-specific map pages: https://ddnet.tw/maps/ger/Kobra 09:23 <+bridge> [ddnet] Normal one worked: https://ddnet.tw/maps/Kobra 10:32 <+bridge> [ddnet] <ᶰ°Konͧsti> 10:32 <+bridge> [ddnet] <ᶰ°Konͧsti> New android rls when 10:33 <+bridge> [ddnet] @ᶰ°Konͧsti When someone fixes the build and stuff 10:33 <+bridge> [ddnet] <ᶰ°Konͧsti> :feelsbadman: 10:33 <+bridge> [ddnet] it's some work and I don't want do it personally 10:33 <+bridge> [ddnet] but personally I think watching and chatting would be enough, don't need fancy playing ability 10:36 <+bridge> [ddnet] <ᶰ°Konͧsti> yes 10:37 <+bridge> [ddnet] <ᶰ°Konͧsti> chatting is super unnattractive in android client 10:37 <+bridge> [ddnet] <ᶰ°Konͧsti> and i only use it for spec and chat sometimes but 903 is banned 10:39 <+bridge> [ddnet] an android client focused on watching and chatting that doesn't suck to use would be cool 10:39 <+bridge> [ddnet] I unbanned 903 btw 11:09 <+bridge> [ddnet] <ᶰ°Konͧsti> 903 is also Some cheat client, Baumalein i think thats why its banned 11:09 <+bridge> [ddnet] its an old version of pwnclient 11:09 <+bridge> [ddnet] <ᶰ°Konͧsti> o 11:09 <+bridge> [ddnet] <ᶰ°Konͧsti> nby knows ofc 11:10 <+bridge> [ddnet] baumalein is 16 or 708 11:10 <+bridge> [ddnet] <ᶰ°Konͧsti> HMM 11:10 <+bridge> [ddnet] <ᶰ°Konͧsti> deen unbanned pwnclient, gonna test :troll: 11:11 <+bridge> [ddnet] lmao 11:11 <+bridge> [ddnet] really no fun with trolls everywhere, I'm banning it again 11:11 <+bridge> [ddnet] is it easy to change the version number of mobile client to 902 or 904 or something 11:12 <+bridge> [ddnet] <ᶰ°Konͧsti> i tested and it worked with my special pwnclient 11:12 <+bridge> [ddnet] <ᶰ°Konͧsti> https://cdn.discordapp.com/attachments/293493549758939136/753543397662261288/Screenshot_2020-09-10-11-11-07-246_tw.ddnet.jpg 11:12 <+bridge> [ddnet] <ᶰ°Konͧsti> deen i was joking i dont have any bot client xd 11:13 <+bridge> [ddnet] thats what they all say 11:13 <+bridge> [ddnet] <ᶰ°Konͧsti> U especially 11:13 <+bridge> [ddnet] i literally set my bot client version to 999999 to make it as obvious as possible, so no, U 11:13 <+bridge> [ddnet] <ᶰ°Konͧsti> im on 14071 so no U 11:15 <+bridge> [ddnet] stop spoof 11:16 <+bridge> [ddnet] <ᶰ°Konͧsti> i would press update if it had Ctrl shift q bind 11:16 <+bridge> [ddnet] @deen i just tried and 903 works? 11:16 <+bridge> [ddnet] does it take time to take effect 11:16 <+bridge> [ddnet] <ᶰ°Konͧsti> > I unbanned 903 btw 11:16 <+bridge> [ddnet] <ᶰ°Konͧsti> Cuz he unbaned 11:16 <+bridge> [ddnet] 4:11 AM] deen: really no fun with trolls everywhere, I'm banning it again 11:16 <+bridge> [ddnet] he said he banned it again 11:17 <+bridge> [ddnet] or plans on it 11:17 <+bridge> [ddnet] <ᶰ°Konͧsti> when was the last time someone tried to join with 903 pwn on fng 11:17 <+bridge> [ddnet] honestly ive never seen it on fng, but on bombay a few people 11:17 <+bridge> [ddnet] mostly jericho 11:17 <+bridge> [ddnet] <ᶰ°Konͧsti> Jericho still alive?? 11:18 <+bridge> [ddnet] unfortunately 11:18 <+bridge> [ddnet] 🙄 11:18 <+bridge> [ddnet] <ᶰ°Konͧsti> big ban 11:18 <+bridge> [ddnet] <ᶰ°Konͧsti> He annoying DDRace player and sometimes blocking didnt see him long time 11:18 <+bridge> [ddnet] because he was namebanned on ddnet for botting all the time 11:18 <+bridge> [ddnet] <ᶰ°Konͧsti> lol 11:18 <+bridge> [ddnet] <ᶰ°Konͧsti> :kek: 11:18 <+bridge> [ddnet] he plays with stupid names like Medivh and Grubby now 11:19 <+bridge> [ddnet] if atall 11:19 <+bridge> [ddnet] <ᶰ°Konͧsti> lifeban range 11:19 <+bridge> [ddnet] i did lol 11:19 <+bridge> [ddnet] on my server banned his /16 11:19 <+bridge> [ddnet] on my server banned his /16 forever 11:19 <+bridge> [ddnet] <ᶰ°Konͧsti> https://cdn.discordapp.com/attachments/293493549758939136/753545246037508166/lifeban-2.jpg 11:19 <+bridge> [ddnet] :feelsamazingman: :feelsamazingman: :feelsamazingman: 11:21 <+bridge> [ddnet] @ᶰ°Konͧsti and to answer ur question, yeah its been at least a month since ive seen him, i assume it is because the client bans on most servers deters him from playing 11:21 <+bridge> [ddnet] if this is removed he may come back and start using it again 11:22 <+bridge> [ddnet] i dont ban 903 but i did ban a huge range to get rid of him 11:22 <+bridge> [ddnet] <ᶰ°Konͧsti> HMM last finish in february 11:22 <+bridge> [ddnet] and bombay/ddnet do ban 903 11:22 <+bridge> [ddnet] and well i guess thats when he was finally namebanned 11:22 <+bridge> [ddnet] once they banned 903, he switchd to sash client 11:23 <+bridge> [ddnet] <ᶰ°Konͧsti> @Melio explain urself playing with a botter 11:23 <+bridge> [ddnet] <ᶰ°Konͧsti> https://cdn.discordapp.com/attachments/293493549758939136/753546146651308042/Screenshot_2020-09-10-11-22-53-455_com.android.chrome.jpg 11:23 <+bridge> [ddnet] smh 11:23 <+bridge> [ddnet] ban 11:23 <+bridge> [ddnet] <ᶰ°Konͧsti> so many old players in that list 11:23 <+bridge> [ddnet] <ᶰ°Konͧsti> lol 11:23 <+bridge> [ddnet] <ᶰ°Konͧsti> They all robot friends 11:23 <+bridge> [ddnet] i dont know hardly any of those names lol 11:24 <+bridge> [ddnet] ochirej is his dummy obviously 11:24 <+bridge> [ddnet] <ᶰ°Konͧsti> Im also a robot friend 11:24 <+bridge> [ddnet] who is that 11:24 <+bridge> [ddnet] <ᶰ°Konͧsti> Since im friends with noby 11:24 <+bridge> [ddnet] <ᶰ°Konͧsti> Jericho 11:24 <+bridge> [ddnet] XD havent seen him in ages 11:24 <+bridge> [ddnet] <ᶰ°Konͧsti> Same 11:24 <+bridge> [ddnet] he was banned finally 11:24 <+bridge> [ddnet] he wasnt even good, how was he a botter 11:24 <+bridge> [ddnet] <ᶰ°Konͧsti> lmao 11:24 <+bridge> [ddnet] well, if he was good, he wouldnt be botting 11:24 <+bridge> [ddnet] <ᶰ°Konͧsti> he was a rager 11:24 <+bridge> [ddnet] <ᶰ°Konͧsti> Always angry eyes 11:24 <+bridge> [ddnet] with a valik fake skin 11:25 <+bridge> [ddnet] @Melio i literally never saw him without a bot client lol 11:25 <+bridge> [ddnet] mustve banned him twenty times on block server 11:25 <+bridge> [ddnet] <ᶰ°Konͧsti> Wolf is playing again btw 11:25 <+bridge> [ddnet] <ᶰ°Konͧsti> :feelsamazingman: 11:25 <+bridge> [ddnet] and several times on ddnet too 11:25 <+bridge> [ddnet] does not even try to hide it 11:25 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/345588928482508801/631862516754022410/Screen_Shot_2019-10-10_at_9.35.49_AM.png 11:25 <+bridge> [ddnet] also that 11:25 <+bridge> [ddnet] lol 11:25 <+bridge> [ddnet] shameless hammerbotting 11:25 <+bridge> [ddnet] i remember him playing weird at times, but i wouldve never thought of a bot since he was really not good 11:27 <+bridge> [ddnet] <ᶰ°Konͧsti> I played heaven with him 11:27 <+bridge> [ddnet] <ᶰ°Konͧsti> :feelsbadman: 11:27 <+bridge> [ddnet] remove rank pls 11:28 <+bridge> [ddnet] <ᶰ°Konͧsti> remove louis 11:28 <+bridge> [ddnet] @Melio i think he was just good at hiding it 11:32 <+bridge> [ddnet] by being bad 11:32 <+bridge> [ddnet] xd 11:33 <+bridge> [ddnet] lmao 12:34 <+bridge> [ddnet] <Андрей Рудой> what is hammetriggerbot and m4hbot? 12:37 <+bridge> [ddnet] @Андрей Рудой hammertriggerbot looks for a certain pattern of inhuman firing combined with snapping mouse movement (inaccurate name, i know) and the m4hbot on this server is the name for the new hammerbot detections 12:37 <+bridge> [ddnet] where each of the systems looks for a different combination of 4 factors across a span of hammers and isnt as easy to explain as the first one 12:38 <+bridge> [ddnet] tldr; if someone triggers all of that stuff and doesnt have a dummy theyre basically 100% cheating 15:53 <+bridge> [ddnet] "and doesnt have a dummy" we know how to hide our cheats now 😎 16:19 <+bridge> [ddnet] at least use up some mod's time watching to see if its a dummy or not i guess 16:19 <+bridge> [ddnet] lol 17:31 <+bridge> [ddnet] does [bbvideo][/bbvideo] work on desktop? 17:31 <+bridge> [ddnet] desktop? 17:31 <+bridge> [ddnet] that looks like forum syntax, doesn't work in ddnet forum anymore i think 17:32 <+bridge> [ddnet] often i see links like [bbvideo][/bbvideo] on my phone's chrome browser 17:32 <+bridge> [ddnet] (on ddnet forum) 17:32 <+bridge> [ddnet] Yeah, no 17:32 <+bridge> [ddnet] That's just broken in the forum 17:32 <+bridge> [ddnet] but you can just click the link 17:33 <+bridge> [ddnet] and i'm too lazy to fix it since the forum software seems a bit messy and no one uses the forum anyway 17:39 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753640721969446942/unknown.png 17:39 <+bridge> [ddnet] Add scrollbar xD 17:39 <+bridge> [ddnet] remove servers 😄 17:39 <+bridge> [ddnet] lol so many now 17:40 <+bridge> [ddnet] Do we still have KR servers even? 17:42 <+bridge> [ddnet] filter says yes 17:44 <+bridge> [ddnet] I added Korea back today actually 17:44 <+bridge> [ddnet] Or Just put all the European servers into EU flag? 17:44 <+bridge> [ddnet] 😄 17:45 <+bridge> [ddnet] Well we only have GER and PL 17:50 <+bridge> [ddnet] I'd be for the scroll still xd 17:58 <+bridge> [ddnet] @Learath2 could you merge the style thing? 17:58 <+bridge> [ddnet] I'd like to prepare my next PR with that included 18:00 <+bridge> [ddnet] @heinrich5991 @Learath2 any chance to get my two larger changes in? skin downloader and start menu, would be nice to beta test them a bit before release 18:01 <+bridge> [ddnet] I'll look at the start menu, that one seemed simpler 18:01 <+bridge> [ddnet] deen is quicker than me 😛 18:01 <+bridge> [ddnet] I'll take a look at the skin downloader 18:01 <+bridge> [ddnet] deen will be the first one to complain when his PR hits the style checker 18:01 <+bridge> [ddnet] I call it now 18:01 <+bridge> [ddnet] 😄 18:02 <+bridge> [ddnet] 😄 18:02 <+bridge> [ddnet] (just execute `python3 scripts/fix_style.py` before committing) 18:02 <+bridge> [ddnet] can probably add it as a pre-commit hook or something 18:02 <+bridge> [ddnet] Nah, at work I'm responsible for a tool that does these kinds of clang-format/tidy/etc runs on changes, so I can't complain with good conscience 😄 18:02 <+bridge> [ddnet] okay 😄 18:03 <+bridge> [ddnet] I think I'll add a precommit hook 18:03 <+bridge> [ddnet] not a good idea to do a precommit hook imo 18:03 <+bridge> [ddnet] Sometimes clang-format will totall destroy your layout. I prefer to do it between commit and push so I can check what it changed 18:04 <+bridge> [ddnet] Hm, how do you get the changes in then? 18:05 <+bridge> [ddnet] either change it in a way clang-format likes it 18:05 <+bridge> [ddnet] or // clang-format off, // clang-format on 18:05 <+bridge> [ddnet] No, I mean how do you get the style changes made by fix_style if you don't do it before you commit 18:06 <+bridge> [ddnet] just an amend? 18:06 <+bridge> [ddnet] you can do git add 18:06 <+bridge> [ddnet] then fix_style 18:06 <+bridge> [ddnet] and then you see the changes it made with git-diff 18:07 <+bridge> [ddnet] git commit -a --amend 18:08 <+bridge> [ddnet] @deen do we still need dilate? 18:08 <+bridge> [ddnet] I thought that went away with the new renderer or something 18:08 <+bridge> [ddnet] I don't think so, you can remove it 18:08 <+bridge> [ddnet] wait 18:08 <+bridge> [ddnet] we need dilate 18:08 <+bridge> [ddnet] but we don't need borderfix/add/etc 18:09 <+bridge> [ddnet] ah 18:09 <+bridge> [ddnet] @deen concern about the skin downloader: 18:10 <+bridge> [ddnet] we haven't reviewed the skins in the DB for sanity 18:10 <+bridge> [ddnet] indeed 18:10 <+bridge> [ddnet] there's an invisible skin 18:10 <+bridge> [ddnet] Does the language stuff have to be part of that PR? It's making the diff rather annoying to review 18:11 <+bridge> [ddnet] Ah I guess you added a new localized string too 18:11 <+bridge> [ddnet] Yeah, I always add the localized strings 18:11 <+bridge> [ddnet] Just skip the data files when reviewing? 18:12 <+bridge> [ddnet] Yeah sure 18:13 <+bridge> [ddnet] I get distracted very easily, that's why it bothered me I guess, but it is actually part of this pr 18:13 <+bridge> [ddnet] The code looks good, I'll test it for a bit 18:14 <+bridge> [ddnet] 🙂 18:14 <+bridge> [ddnet] @deen can you remove invisible from the skin db? 18:15 <+bridge> [ddnet] all other skins at least remotely look like a tee 18:15 <+bridge> [ddnet] <ᶰ°Konͧsti> @deen i dont think its necessary to reserve a slot on Testservers xx 18:15 <+bridge> [ddnet] idk if the limitation of divisability by 16 applies to skins too, but maybe we should run them through to check for that aswell 18:17 <+bridge> [ddnet] We should probably get a list of most used mapres and ask some artists to work on undoing the borderfix 18:17 <+bridge> [ddnet] not sure if it's worth spending artist's time on this 18:17 <+bridge> [ddnet] sounds waay to large of a task 18:17 <+bridge> [ddnet] It's one of the reasons people whine about the new renderer 18:18 <+bridge> [ddnet] the other one being the opengl driver deciding to use LOD1 while we are at default zoom 18:19 <+bridge> [ddnet] (I still don't get neither why the driver decides this at all nor why we can't control it at all) 18:26 <+bridge> [ddnet] @deen I get a 404 on all skins 18:26 <+bridge> [ddnet] did you forget to set up nginx or sth? 18:28 <+bridge> [ddnet] Hm, the new renderer seems to absolutely kill macOS performance outside the game 18:29 <+bridge> [ddnet] More like chrome performance, seems only chrome, discord and spotify are affected 18:30 <+bridge> [ddnet] what does dilate do btw? 18:32 <+bridge> [ddnet] Seems it hogs the GPU even while it's not in view at all 18:35 <+bridge> [ddnet] http://wiki.polycount.com/wiki/Edge_padding maybe? 18:36 <+bridge> [ddnet] Yep, it pads edges 18:36 <+bridge> [ddnet] If a pixel is transparent but has a non transparent neighbour, it takes it's color instead 18:37 <+bridge> [ddnet] Though idk why we need it, maybe the old renderer was susceptible to the same issue 18:40 <+bridge> [ddnet] Eh, now that I think about it, I don't get why we'd ever need it 18:42 <+bridge> [ddnet] @Learath2 fixes 18:43 <+bridge> [ddnet] fixed* 18:48 <+bridge> [ddnet] We needed dilate because without it stuff rendered ingame had weird white border in most cases, sometimes the custom graphics were even displaying as totally black if dilate was not used 18:51 <+bridge> [ddnet] @heinrich5991 i can delete the empty skin, which one is it? 18:52 <+bridge> [ddnet] ok, found it 18:53 <+bridge> [ddnet] The opengl alpha blending causes some rendering problems without dilate. 0.7 fixed it by using premultiplied alpha for textures and colors 18:54 <+bridge> [ddnet] We need dilate tool, because inkscape export transparent pixels as zeros(no color) 18:55 <+bridge> [ddnet] When OpenGL linearly interpolates from the texture it will interpolate between black(zeros) and colored pixels, that's why a wrong color gets displayed for these edge cases. 19:00 <+bridge> [ddnet] How does dilate fix that? After the texture is dilated, the pixel is set to full alpha, wont the same issue occur the next pixel over 19:14 <+bridge> [ddnet] Thats how a non dilated tileset will look like after splitting alpha and hiding alpha 19:14 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753664670887575553/unknown.png 19:15 <+bridge> [ddnet] and that's how it will look like on a dilated one 19:15 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753665051604418701/unknown.png 19:15 <+bridge> [ddnet] What does splitting and hiding alpha mean in this context? 19:16 <+bridge> [ddnet] taking out transparency 19:17 <+bridge> [ddnet] Taking out? 19:17 <+bridge> [ddnet] Do you mean making all pixels 100% opacity? 19:18 <+bridge> [ddnet] yes exactly 19:18 <+bridge> [ddnet] The dilated one looks like a glitchy mess, how does the renderer know what to render what to not? 19:19 <+bridge> [ddnet] <☫σяεσ> the full transparent pixels are ofc transparent and not even displayed (interpolating between two transparent pxiels) 19:19 <+bridge> [ddnet] Can you show me the dilated one without maxing transparency everywhere? 19:20 <+bridge> [ddnet] <☫σяεσ> with alpha channel u dont see the extra pixel, they are still full transparent 19:20 <+bridge> [ddnet] I removed the opacity to show the difference 19:20 <+bridge> [ddnet] I removed the transparencyto show the difference 19:20 <+bridge> [ddnet] Ah I missed the last step in dilate, it just takes the old alpha values and applies them everywhere 19:21 <+bridge> [ddnet] Aha, it dilates many times, not just once 19:22 <+bridge> [ddnet] 11 times 19:22 <+bridge> [ddnet] https://developer.nvidia.com/content/alpha-blending-pre-or-not-pre 19:25 <+bridge> [ddnet] @redix doesn't really seem to be the same issue, is it? 19:26 <+bridge> [ddnet] Ah I guess premutiplying would fix this too 19:26 <+bridge> [ddnet] Actually, at 0 alpha wont the edges still be just pitch black, causing interpolation issues? 19:26 <+bridge> [ddnet] Well that causes multiple issues. The edge thing is just one of them 19:27 <+bridge> [ddnet] <☫σяεσ> there are some interesting things you might want to know about this tool: 19:27 <+bridge> [ddnet] <☫σяεσ> 1. It does not have a threshold for alpha values, thats why in the 2nd pic from mind, there are some broken pixels(e.g. inkscape exports some pixels with alpha values of 10 or less (10 / 255) 19:27 <+bridge> [ddnet] <☫σяεσ> 2. The pre multiplied alpha(if not generated before) requires CPU time on fly, so a disadvantage too 19:27 <+bridge> [ddnet] But 0.7 fixes it with that approach 19:28 <+bridge> [ddnet] Why is opengl blending like this anyway? The pixel with 0 alpha shouldn't even render, why interpolate to it? 19:29 <+bridge> [ddnet] never really digged into blending and filtering with opengl =\ 19:29 <+bridge> [ddnet] I wonder if anyone even knows these things. Whenever I chat with graphics people it's always soooo handwavy 19:29 <+bridge> [ddnet] call jupstar our opengl guy :bluekitty: 19:29 <+bridge> [ddnet] the cpu time for premultiplying when loading the few images is kinda negligible 19:30 <+bridge> [ddnet] If GCC produced binaries that only works on 90% of computers, there'd be outrage 19:31 <+bridge> [ddnet] Yet opengl seems to be almost ubiquitous with it's horrendous compatibility 19:32 <+bridge> [ddnet] Vulkan takes the problem of no one complying with standards and moves the responsibility of keeping track of all the broken shit to the developer 19:32 <+bridge> [ddnet] hmm 19:32 <+bridge> [ddnet] is that true tho 19:32 <+bridge> [ddnet] vulkan givesu more control 19:32 <+bridge> [ddnet] Though I guess atleast vulkan primitives always work on cards that claim to support vulkan 19:33 <+bridge> [ddnet] so u can indeed work around the shit maybe 19:33 <+bridge> [ddnet] Yeah, atleast it gives you the tools to work with the mess you are handed by the driver people 19:35 <+bridge> [ddnet] Even web people aren't this lenient with api version compliance. The answer to "Which github api version does your client interface with" is never "Oooh idk, it's like 4.5 but we are kinda missing some features" 19:35 <+bridge> [ddnet] Or "it mostly complies with 4.5" 😄 19:35 <+bridge> [ddnet] https://github.com/edg-l/SuperSDL/blob/master/src/graphics/renderer.cpp 19:35 <+bridge> [ddnet] me trying to use vulkan, i dont touch this since long so i dont remember shit now 19:36 <+bridge> [ddnet] :justatest: 19:36 <+bridge> [ddnet] Yeah the vulkan experience 570 lines, did you get anything rendering? 😄 19:36 <+bridge> [ddnet] xd 19:36 <+bridge> [ddnet] no 19:37 <+bridge> [ddnet] well maybe a triangle 19:37 <+bridge> [ddnet] i dont remember 19:37 <+bridge> [ddnet] I got a pyramid rotating around shaded flat at around 700-800 lines 19:38 <+bridge> [ddnet] i definitly dont want to be a graphics programmer 19:38 <+bridge> [ddnet] One problem with vulkan is that there doesn't seem to be best practices around yet, and only driver people have the knowledge required to know the best way of doing something 19:38 <+bridge> [ddnet] :justatest: 19:38 <+bridge> [ddnet] just hand me a ez api 19:38 <+bridge> [ddnet] :nouis: 19:38 <+bridge> [ddnet] It's much more fun on a gameboy 19:38 <+bridge> [ddnet] there are best practices :D 19:38 <+bridge> [ddnet] per vendor and per architecture 19:39 <+bridge> [ddnet] yeah i want to make a game for gameboy or a old console like that 19:39 <+bridge> [ddnet] i dont think its super hard 19:39 <+bridge> [ddnet] hi jao 19:40 <+bridge> [ddnet] The good old days when you could actually take a nice opcode table and know exactly what the processor will do 19:40 <+bridge> [ddnet] https://github.com/edg-l/SimpleGame/blob/master/src/engine/graphics/renderer.c 19:40 <+bridge> [ddnet] this one is with opengl 19:40 <+bridge> [ddnet] i actually got to render lot of stuff 19:40 <+bridge> [ddnet] even text 19:40 <+bridge> [ddnet] :poggers: 19:41 <+bridge> [ddnet] It's so odd that we can do calculations in fractions of cycles nowadays 19:41 <+bridge> [ddnet] 0.2 cycles for a 64bit 64bit multiply 19:44 <+bridge> [ddnet] @Ryozuki why didn't you use gl1? 19:44 <+bridge> [ddnet] gl1? 19:44 <+bridge> [ddnet] opengl 1? 19:44 <+bridge> [ddnet] xD 19:44 <+bridge> [ddnet] y 19:44 <+bridge> [ddnet] i like shiny new stuff 19:45 <+bridge> [ddnet] altho the whole thing is in pure C 19:45 <+bridge> [ddnet] xDD 19:45 <+bridge> [ddnet] You need to get it to run on your toaster ovens temperature display 19:45 <+bridge> [ddnet] :justatest: 19:45 <+bridge> [ddnet] i have so many abandoned stuff 19:45 <+bridge> [ddnet] @Learath2 are u the same? xd 19:46 <+bridge> [ddnet] Yep 19:46 <+bridge> [ddnet] Attention span way too short sadly 19:47 <+bridge> [ddnet] writing that "SimpleGame" was fun tho 19:47 <+bridge> [ddnet] its more a engine than a game tho 19:47 <+bridge> [ddnet] <☫σяεσ> To answer the question, because the alpha blend function is set like that. 19:47 <+bridge> [ddnet] <☫σяεσ> when texture sampling happens it will multiply RGB with the textures alpha 19:47 <+bridge> [ddnet] <☫σяεσ> with pre multiplied alpha it does basically nothing(multiplies it with 1) 19:47 <+bridge> [ddnet] <☫σяεσ> => the average pixel from the texture sampler is not affected by the transparency of the transparent pixel, bcs pre multiplied 19:47 <+bridge> [ddnet] <☫σяεσ> 19:47 <+bridge> [ddnet] <☫σяεσ> So only the framebuffer is still affected by the transparency of the sampled texture 19:47 <+bridge> [ddnet] <☫σяεσ> 19:47 <+bridge> [ddnet] <☫σяεσ> example with full white and full zero pixel 19:47 <+bridge> [ddnet] <☫σяεσ> without pre alpha 19:47 <+bridge> [ddnet] <☫σяεσ> (1, 1, 1, 1) + (0, 0, 0, 0) = (0.5, 0.5, 0.5, 0.5) 19:47 <+bridge> [ddnet] <☫σяεσ> => (0.5 * 0.5, 0.5 * 0.5, 0.5 * 0.5, 0.5) + (Framebuffer.RGB * 0.5) 19:47 <+bridge> [ddnet] <☫σяεσ> 19:47 <+bridge> [ddnet] <☫σяεσ> with pre alpha: 19:47 <+bridge> [ddnet] <☫σяεσ> (1, 1, 1, 1) + (0, 0, 0, 0) = (0.5, 0.5, 0.5, 0.5) 19:47 <+bridge> [ddnet] <☫σяεσ> note, no multiply here, bcs pre multiplied: 19:47 <+bridge> [ddnet] <☫σяεσ> (0.5, 0.5, 0.5, 0.5) + (Framebuffer.RGB * 0.5) 19:47 <+bridge> [ddnet] <☫σяεσ> 19:47 <+bridge> [ddnet] <☫σяεσ> that's also why dilate will look different than pre multiplied, but i cannot judge what looks better, both have advantages and disadvantages 19:47 <+bridge> [ddnet] implementing simple stuff feels good 19:50 <+bridge> [ddnet] @☫σяεσ so when blending it considers pixels with 0 alpha too for some reason? 19:50 <+bridge> [ddnet] <☫σяεσ> yes 19:50 <+bridge> [ddnet] <☫σяεσ> interpolation is faster then if checking 19:51 <+bridge> [ddnet] And between two pixels with the same alpha, isn't the rgb blended? 19:52 <+bridge> [ddnet] <☫σяεσ> yes exactly (rgb + rgb)/2 19:52 <+bridge> [ddnet] But if the rgb is blended, even after you premultiply, won't you have issues at the edges? 19:53 <+bridge> [ddnet] @Ryozuki you know what's great working on older hardware? None of that floating point junk, you get to work with nice actual pixels 19:53 <+bridge> [ddnet] <☫σяεσ> it looks different but its not a problem cause alpha isnt multiplied, so its a smooth transition 19:53 <+bridge> [ddnet] https://streamable.com/bsdzf8 19:54 <+bridge> [ddnet] i implemented a switch button there :o 19:54 <+bridge> [ddnet] beautiful 19:54 <+bridge> [ddnet] @☫σяεσ huh, I'd think it'd look odd if you blend to black while the background is obviously not black 19:55 <+bridge> [ddnet] @Ryozuki cute button 19:55 <+bridge> [ddnet] <☫σяεσ> but its a smooth transition into transparency 19:55 <+bridge> [ddnet] <☫σяεσ> its not like its directly black because its still colored 19:57 <+bridge> [ddnet] Well at the edges it'll effectively be (rgb + black) / 2 which is just rgb/2. That's effectively halving the lightness, There'd be a darker outline around two bright colors, I think 19:59 <+bridge> [ddnet] Same thing happens in photography if you ever work with raw files on an older camera, you can spot the parts where the interpolation algorithm gets a little thrown off while debayering 19:59 <+bridge> [ddnet] <☫σяεσ> but its not like this 19:59 <+bridge> [ddnet] <☫σяεσ> but remember non pre muiltiplied does this: 19:59 <+bridge> [ddnet] <☫σяεσ> ((1, 1, 1, 1) + (0, 0, 0, 0)) / 2 = (0.5, 0.5, 0.5, 0.5) 19:59 <+bridge> [ddnet] <☫σяεσ> AND THEN still multiplies the alpha again(pre multiplied does not do that): 19:59 <+bridge> [ddnet] <☫σяεσ> (0.5 * 0.5, 0.5 * 0.5, 0.5 * 0.5, 0.5) 19:59 <+bridge> [ddnet] i abandoned it after making some kind of tilemap :feelsbadman: 19:59 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753676061920723015/unknown.png 20:00 <+bridge> [ddnet] cool colored noise 20:00 <+bridge> [ddnet] @☫σяεσ so it'd have an even darker outline if not premultiplied 20:00 <+bridge> [ddnet] <☫σяεσ> yes 20:00 <+bridge> [ddnet] Is there a way to not blend with that black at all? 20:00 <+bridge> [ddnet] It's not really a part of what we want to render 20:01 <+bridge> [ddnet] @Learath2 do u think this is a good aproach xd 20:01 <+bridge> [ddnet] <☫σяεσ> yes with nearest sampling(nearest pixel), but the texture will look crisper, not so smooth 20:02 <+bridge> [ddnet] I see, thanks for the insight 20:03 <+bridge> [ddnet] @Ryozuki uh, is this like a fake vtable? 😄 20:03 <+bridge> [ddnet] :justatest: 20:03 <+bridge> [ddnet] kinda 20:03 <+bridge> [ddnet] I like ghetto things like this, so you are golden 20:03 <+bridge> [ddnet] i never actually seen how a vtable is 20:03 <+bridge> [ddnet] xD 20:03 <+bridge> [ddnet] A vtable is just a "struct" stored at the start of an object that has pointers to all its virtual methods 20:03 <+bridge> [ddnet] ahh 20:04 <+bridge> [ddnet] when you do a virtual call, the compiler makes sure it goes through the vtable 20:04 <+bridge> [ddnet] that's why virtual calls are kinda bad for high performance applications 20:04 <+bridge> [ddnet] LLVM is getting there with devirtualization but it's still a huge amount of work 20:05 <+bridge> [ddnet] i also have my linked list impl :justatest: 20:05 <+bridge> [ddnet] It might be obvious to you and me that an object is of a type but it's actually quiiite murky with the rules of the standard 😄 20:05 <+bridge> [ddnet] I don't like linked list implementations, they are easy enough to implement intrusively 20:05 <+bridge> [ddnet] Gives you cache locality 20:06 <+bridge> [ddnet] Also, you can do something extremely cute to your `engine_list_delete` 20:06 <+bridge> [ddnet] what is it 20:09 <+bridge> [ddnet] 👀 20:10 <+bridge> [ddnet] I've made a rainbow dilate bug :justatest: 20:10 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753678809571524768/unknown.png 20:10 <+bridge> [ddnet] :poggers: 20:11 <+bridge> [ddnet] @Learath2 did i tell u about my macro magic? xD 20:12 <+bridge> [ddnet] Ah, it's a doubly linked list though, not quite as pretty 20:12 <+bridge> [ddnet] yeah 20:19 <+bridge> [ddnet] The macro stuff is sadly unavoidable 20:19 <+bridge> [ddnet] The preprocessor is just so weak 20:20 <+bridge> [ddnet] Just c++ templating would clean that up pretty well, c++20 concepts would even make it relatively safe 20:20 <+bridge> [ddnet] @Learath2 what c++ concepts? 20:21 <+bridge> [ddnet] c++20 20:21 <+bridge> [ddnet] * 20:21 <+bridge> [ddnet] C++20 is coming with a great new feature called concepts 20:21 <+bridge> [ddnet] oh 20:21 <+bridge> [ddnet] xD 20:22 <+bridge> [ddnet] It allows you to define concepts, concepts usually tell what something can be done with a type but they can check everything about types 20:22 <+bridge> [ddnet] is this like rust trait bounds? 20:22 <+bridge> [ddnet] https://doc.rust-lang.org/stable/rust-by-example/generics/bounds.html 20:24 <+bridge> [ddnet] looks like it 20:24 <+bridge> [ddnet] c++ syntax is rly ugly tho 20:24 <+bridge> [ddnet] xd 20:24 <+bridge> [ddnet] So you can do something like `template concept Incrementable = requires(T a) { {a++} -> T }; Incrementable increment(Incrementable x) { return x++; }` 20:24 <+bridge> [ddnet] Yeah like rust trait bounds, but I actually prefer the syntax 20:25 <+bridge> [ddnet] Though I think rusts syntax isn't for human consumption at all so take my opinion about that with a grain of salt 20:25 <+bridge> [ddnet] c++'s take on that somewhat resembles go's interfaces 20:25 <+bridge> [ddnet] a bit duck-typey 20:25 <+bridge> [ddnet] but that's how templates always were, so it'd be hard to get away from that 20:26 <+bridge> [ddnet] yeah i find template syntax rly ugly idk 20:26 <+bridge> [ddnet] Concepts bring with them the new template shorthand notation 20:26 <+bridge> [ddnet] struct S(T); 20:27 <+bridge> [ddnet] how would an and of concepts in c++20 look 20:27 <+bridge> [ddnet] `void foo(auto k)` is now possible 20:27 <+bridge> [ddnet] nice 20:27 <+bridge> [ddnet] although maybe a bit nonobvious that it implies monomorphisation, leading to code bloat 20:28 <+bridge> [ddnet] auto in other places doesn't 20:28 <+bridge> [ddnet] ```cpp 20:28 <+bridge> [ddnet] template 20:28 <+bridge> [ddnet] concept Integral = std::is_integral::value; 20:28 <+bridge> [ddnet] template 20:28 <+bridge> [ddnet] concept SignedIntegral = Integral && std::is_signed::value; 20:28 <+bridge> [ddnet] template 20:28 <+bridge> [ddnet] concept UnsignedIntegral = Integral && !SignedIntegral; 20:28 <+bridge> [ddnet] ``` 20:28 <+bridge> [ddnet] i see 20:28 <+bridge> [ddnet] @Ryozuki Correct me if I'm wrong but it wants T to satisfy both Display and Debug. right? 20:28 <+bridge> [ddnet] yes 20:29 <+bridge> [ddnet] do u have to define a new concept to use a conjunction? 20:29 <+bridge> [ddnet] Yeah something like `template struct S { T a; } requires Display && Debug;` I think 20:30 <+bridge> [ddnet] I'm still learning the syntax, it's a rather new feature 20:30 <+bridge> [ddnet] ```cpp 20:30 <+bridge> [ddnet] template 20:30 <+bridge> [ddnet] requires EqualityComparable || Same 20:30 <+bridge> [ddnet] struct equal_to; 20:30 <+bridge> [ddnet] ``` 20:30 <+bridge> [ddnet] ah u can do it directly 20:30 <+bridge> [ddnet] i guess 20:30 <+bridge> [ddnet] Might need parens 20:30 <+bridge> [ddnet] its from the cppreference web 20:30 <+bridge> [ddnet] xD 20:30 <+bridge> [ddnet] https://en.cppreference.com/w/cpp/language/constraints 20:30 <+bridge> [ddnet] Then it doesn't 😄 20:31 <+bridge> [ddnet] cppreference best website 20:31 <+bridge> [ddnet] uf i rly need to get used to this syntax 20:31 <+bridge> [ddnet] i just get so confused 20:31 <+bridge> [ddnet] idk if its just me 20:31 <+bridge> [ddnet] reading templates 20:31 <+bridge> [ddnet] is a nightmare 20:31 <+bridge> [ddnet] Yeah, it's quite meh 20:31 <+bridge> [ddnet] But these simple templates are nothing 20:31 <+bridge> [ddnet] yeah xD 20:31 <+bridge> [ddnet] You should see the SFINAE monsters people write 20:31 <+bridge> [ddnet] 😄 20:32 <+bridge> [ddnet] `template::value, int>::type = 0>` this is mine, I'm very proud of it 20:32 <+bridge> [ddnet] > "Substitution Failure Is Not An Error" 20:32 <+bridge> [ddnet] > 20:32 <+bridge> [ddnet] > 20:32 <+bridge> [ddnet] > This rule applies during overload resolution of function templates: When substituting the explicitly specified or deduced type for the template parameter fails, the specialization is discarded from the overload set instead of causing a compile error. 20:32 <+bridge> [ddnet] > 20:32 <+bridge> [ddnet] > This feature is used in template metaprogramming. 20:32 <+bridge> [ddnet] TIL xd 20:32 <+bridge> [ddnet] It's the only one I've ever produced 20:32 <+bridge> [ddnet] Well only one that got used in anything 20:35 <+bridge> [ddnet] SFINAE is such a hack, I'm kinda disappointed that the standard supported this kind of thing honestly 20:35 <+bridge> [ddnet] They really should have put their foot down and introduced better syntax for this 20:36 <+bridge> [ddnet] Instead they made things like void_t, enable_if, is_greater... 20:36 <+bridge> [ddnet] yeah 20:36 <+bridge> [ddnet] xD 20:37 <+bridge> [ddnet] > The point of std::enable_if is to cause substitution failure for a template. The reason why you want substitution failure is because it's not a failure, 20:37 <+bridge> [ddnet] okk 20:37 <+bridge> [ddnet] :justatest: 20:37 <+bridge> [ddnet] 😄 20:38 <+bridge> [ddnet] :lol: 20:39 <+bridge> [ddnet] looking at that stuff 20:39 <+bridge> [ddnet] i found out about https://github.com/agda/agda 20:39 <+bridge> [ddnet] "dependently typed programming language " 20:39 <+bridge> [ddnet] xD 20:39 <+bridge> [ddnet] A theorem prover, something like coq? 20:40 <+bridge> [ddnet] :o 20:41 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753686530530344990/unknown.png 20:41 <+bridge> [ddnet] a mathy language i see 20:42 <+bridge> [ddnet] If the first paragraph introducing it says anything about a theory, you run 20:42 <+bridge> [ddnet] It's absolutely guaranteed to go waaaay over us mere mortals heads 20:42 <+bridge> [ddnet] >Agda is also a proof assistant based on the propositions-as-types paradigm, but unlike Coq, has no separate tactics language, and proofs are written in a functional programming style. 20:42 <+bridge> [ddnet] > Agda is also a proof assistant based on the propositions-as-types paradigm, but unlike Coq, has no separate tactics language, and proofs are written in a functional programming style. 20:42 <+bridge> [ddnet] this is the difference between coq 20:43 <+bridge> [ddnet] its based on a PhD thesis 20:43 <+bridge> [ddnet] Leave it to the mathematicians to make something complicated, this man Martin-Löf took something so pure and simple: Types. Made it into an absolute mess 20:44 <+bridge> [ddnet] Look at this 😄 20:44 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753687245529284638/Screenshot_2020-09-10_at_21.43.47.png 20:44 <+bridge> [ddnet] xD 20:48 <+bridge> [ddnet] why is singapore so lonely? 20:48 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753688355509895358/unknown.png 20:52 <+bridge> [ddnet] the order of countries seems random btw, maybe we should fix that 20:52 <+bridge> [ddnet] @deen I tried the skinfetcher but everything was giving me a 404 21:21 <+bridge> [ddnet] https://github.blog/2020-09-10-announcing-the-github-integration-with-microsoft-teams/ 21:27 <+bridge> [ddnet] The only logical next step 21:27 <+bridge> [ddnet] Decimate Slack 21:42 <+bridge> [ddnet] @Ravie https://media.discordapp.net/attachments/293493549758939136/753640721969446942/unknown.png why we have different order of the countries? 21:43 <+bridge> [ddnet] nvm, didn't see deen's message xd 22:10 <+bridge> [ddnet] @deen forum is down btw 22:10 <+bridge> [ddnet] 403 Forbidden 22:36 <+bridge> [ddnet] oops, fixed 23:29 <+bridge> [ddnet] @heinrich5991 I want to add a .github workflow check that makes sure images are dilated. Should I do that in style.yml or in a new file? 23:30 <+bridge> [ddnet] style.yml probably 23:46 <+bridge> [ddnet] Wait, what files need to be dilated. Skins not? 23:46 <+bridge> [ddnet] only mapres? 23:52 <+bridge> [ddnet] idk