Minetest logo

IRC log for #minetest, 2024-11-13

| Channels | #minetest index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:47 fluxionary joined #minetest
01:01 whosit joined #minetest
01:09 sid0 joined #minetest
01:14 jistr joined #minetest
01:40 ireallyhateirc joined #minetest
02:16 CRISPR joined #minetest
02:27 SwissalpS joined #minetest
02:39 CRISPR joined #minetest
03:01 SFENCE_arch joined #minetest
03:29 CRISPR joined #minetest
03:38 SFENCE joined #minetest
04:22 yezgromafic joined #minetest
05:00 MTDiscord joined #minetest
05:17 kamdard joined #minetest
06:05 YuGiOhJCJ joined #minetest
06:56 bdju joined #minetest
06:57 TomTom joined #minetest
08:31 sfan5 <_devsh_> ------- also do you have a "blackhole render" mode ?
08:31 sfan5 we don't
09:39 MacroFaxSax joined #minetest
09:51 sfan5 the primary problem is that we don't have anyone experienced enough in graphics to implement even half the techniques you have suggested in the last days
09:51 sfan5 that would normally be the "dedicated graphics person", which we haven't had for years
09:55 rubenwardy they see 'opengl 1.0' and run away screaming
10:04 sfan5 after reading https://learnopengl.com/Advanced-OpenGL/Advanced-GLSL it sounds like this would maybe save us 50 glUniform* calls per frame since we don't have a huge amount of unique shaders in use. so good in principle, but won't have much performance impact.
10:05 sfan5 did I miss something? is this even correct? I can't tell
10:06 sfan5 (maybe it was meant in context of skinning, idk)
10:15 sfan5 if it was about skinning then I suppose every model could keep its own UBO with skinning related data and that can simply be used and updated as needed. would be very inefficient with uniforms.
10:20 MTDiscord <jordan4ibanez> Is that 50 gluniform calls per frame or per mesh?
10:23 sfan5 frame
10:25 sfan5 each shader has its own set of uniforms. with the use case described in the article an UBO would make sense for rarely changing global stuff
10:25 sfan5 so instead of updating stuff per-variable per-shader there'd be just one global UBO with the variables inside
10:25 sfan5 (rarely changing = once per frame)
10:28 MTDiscord <jordan4ibanez> How hard would it be to stream all those uniforms for each mesh in one struct array with indirect draw, so it's not clogging the pcie bridge, with how the current landscape is, in the opengl 3.1 driver?
10:32 MTDiscord <jordan4ibanez> glDrawElementsIndirect is 4.0 hmm
10:32 gregon joined #minetest
10:32 MTDiscord <jordan4ibanez> Probably has an extension somewhere
10:33 MTDiscord <jordan4ibanez> I can already see, the sun position, the camera matrix, stuff like that as ubo
10:38 MTDiscord <jordan4ibanez> I'm tripping over myself a bit because I am trying to think about the different GL versions support at the same time I am proposing ideas, a bit frustrating
10:54 erle joined #minetest
10:56 tarsovbak joined #minetest
13:23 MinetestBot [git] sfan5 -> minetest/minetest: Refactor ScriptApiSecurity for cleaner separation of concerns 1fd4e0b https://github.com/minetest/minetest/commit/1fd4e0b82dd4e15aef0025eccdcb3bc984f70d9d (2024-11-13T13:22:41Z)
13:23 MinetestBot [git] sfan5 -> minetest/minetest: Implement script sandboxing for main menu ea4ae55 https://github.com/minetest/minetest/commit/ea4ae55e24d2c27524490cb8e0d3c34aa46e3da3 (2024-11-13T13:22:41Z)
13:23 MinetestBot [git] grorp -> minetest/minetest: Replace forgotten SEvent memset 11e04ec https://github.com/minetest/minetest/commit/11e04ec1136f9cd37817a2e129770fe463f2aea1 (2024-11-13T13:23:13Z)
13:23 MinetestBot [git] veprogames -> minetest/minetest: Change minetest.net to luanti.org in 'Further documentation' 0fde9ab https://github.com/minetest/minetest/commit/0fde9ab7e84490914a7e22fe674f1de237c3a674 (2024-11-13T13:23:39Z)
13:26 MinetestBot [git] sfan5 -> minetest/minetest: Drop fixed pipeline support code (#15421) 794aea8 https://github.com/minetest/minetest/commit/794aea8e92b9f06d3118f65223729b92b505568a (2024-11-13T13:24:01Z)
13:45 MTDiscord <jordan4ibanez> there we go
13:48 SFENCE joined #minetest
14:00 SFENCE_arch joined #minetest
14:05 simon816 joined #minetest
14:43 tarsovbak joined #minetest
15:46 Thermoriax joined #minetest
16:01 erle end of an era
16:09 MacroFaxSax joined #minetest
16:19 sinvet joined #minetest
16:22 shinbet joined #minetest
16:25 sinvet joined #minetest
16:53 sinvet joined #minetest
16:57 sinvet joined #minetest
17:07 vampirefrog joined #minetest
17:20 [ rip luanti
17:21 est31 joined #minetest
17:24 SFENCE joined #minetest
17:25 bwarden joined #minetest
17:27 SFENCE joined #minetest
17:32 SFENCE Zughy: I have macOS.
17:44 MTDiscord <jordan4ibanez> I'm sorry about that
17:45 erle luatic i believe you are wrong here about “barely playable”. i have gotten better performance than the issue submitter on worse hardware. https://github.com/minetest/minetest/issues/15433#issuecomment-2474309928
17:46 MTDiscord <luatic> erle: the "barely playable" remark is about the FPS reported here specifically - i consider 22 FPS barely playable.
17:46 [ I also got better performance when I tested on 5.6.1 on the other computer
17:46 erle luatic i got more fps without shaders, but a larger drop. like rendering time 6ms to 60ms.
17:47 [ It's probably to do with the fact that I tested in different worlds (looking at different things) and it being a debug build
17:47 erle [ i have an idea
17:47 erle [ see if you get more performance out of your intel integrated GPU by starting the game with MESA_GL_VERSION_OVERRIDE=1.4 MESA_EXTENSION_MAX_YEAR=2005
17:48 erle this should report the bare minimum that makes it runnable (if you have shaders disabled, otherwise you get a crash)
17:48 erle but it should look the same (if you are not using any fancy effects, which you are not, because you are not using the shaders)
17:48 sfan5 in the best case we'll make generaly performance improvements in the future, which you will also benefit from
17:49 MinetestBot [git] sfan5 -> minetest/minetest: Fix mainmenu settings crash caused by last commit 0c3117f https://github.com/minetest/minetest/commit/0c3117f9b32624955846314ebf87f757d124184f (2024-11-13T17:39:10Z)
17:50 MTDiscord <luatic> [: ideally don't test performance on debug builds. that includes rendering performance, because our rendering may be largely CPU-bound.
17:50 MTDiscord <warr1024> in my experience, noticeable performance differences between debug and release builds is quite rare, at least.
17:50 erle luatic 22 to 25fps was in old magazines like “PC games” etc. as “ruckelt, aber spielbar” lol
17:51 MTDiscord <jordan4ibanez> It can be HUGE
17:51 SFENCE joined #minetest
17:51 MTDiscord <warr1024> it could be huge, but it's almost always nothing
17:51 sfan5 I think our debug builds are not -O0 anymore?
17:51 MTDiscord <luatic> that's not what i'm feeling tbh, release builds generally feel smooth for me, debug builds don't
17:52 erle in my experience, everyone who has not tried something is full of shit about performance on some hardware. i have had people ask how i even use firefox with 2GB RAM who only ever used chrome (which will gobble up RAM like it is going out of fashion)
17:52 m42uko_ joined #minetest
17:52 MTDiscord <warr1024> Is it fair to say that RelWithDebInfo releases are closer to release than debug builds in terms of performance?
17:53 sfan5 of course
17:53 sfan5 because debug information doesn't cost anything except larger binaries
17:54 erle sanitizers definitely cost something, otherwise i have not noticed anything weird
17:55 MTDiscord <warr1024> If I make a RelWithDebInfo build and then just strip the binary, does that get me pretty close to what I'd get with a simple Release build?
17:57 sfan5 yes
17:57 erle [ given that the game ran better on intel GMA 950 (GMA generation 3) someone is probably doing *something* wrong if you only get 22 fps on intel GMA 4500 (GMA generation 4). unless i am mistaken about chipsets getting better.
17:57 erle [ have you tried that thing i suggested?
17:57 [ I'm still compiling a release build
17:58 MTDiscord <jordan4ibanez> Probably memory latency, needing to go into ram more often
17:58 sfan5 note that LTO builds generally take more time, so disable that if you have a slow machine
17:58 sfan5 (we enable that by default)
17:58 erle [ disable LTO, it takes forever
17:59 MTDiscord <jordan4ibanez> Try mold
18:09 YuGiOhJCJ joined #minetest
18:11 [ erle: what viewrange do you use?
18:11 [ neither those environment variables nor using a release build seems to help much
18:12 [ with 50 viewrange I do get 30 fps
18:12 erle [ 50 to 200, depending on what game i want to play. nodecore does not benefit from a large view range. what do you use?
18:12 erle in fact, nodecore is the anti-exploration game. i only explore to get some [spoiler] ore
18:12 [ I was testing with 100
18:13 erle do you notice *any* perf impact of the env variables?
18:13 hunter0one joined #minetest
18:15 [ no
18:15 erle [ do you have different performance for joining servers vs playing locally?
18:16 erle like, on weak machines sometimes the mapgen starves out everythin else for some games that have bad mapgen
18:16 erle but this has always been the case and is an issue of the game
18:16 erle not the engine
18:16 lhofhansl joined #minetest
18:26 [ erle: it's hard to compare because the worlds are different
18:26 erle [ you will be able to figure out if you get 20fps (borderline unplayable) or 30fps (what i think you should get) though?
18:27 erle like use some game that is not very dynamic, like nodecore or so
18:27 erle or minetest_game without mods
18:28 MTDiscord <jordan4ibanez> Wait the gma 950 has windows xp drivers available
18:30 MTDiscord <jordan4ibanez> Dude, that GPU has 4 pixel shaders. I'm not sure how you're even getting that many fps
18:31 MTDiscord <jordan4ibanez> Are you running a Celeron D?
18:31 erle LOUD INCORRECT GENDER BUZZER
18:31 [ it varies
18:31 MTDiscord <jordan4ibanez> So it's a Celeron D then
18:31 erle jordan4ibanez, it's a classic gamer thing. you could see that in the mineclone2 issue tracker as well.
18:32 erle remember the time when i opened an issue about some legit perf issue and everyone started saying “nah, your hardware is garbage” and then it was retitled to “post your computers specs”? gamers, as a group, can't do otherwise. the perf issue was legit and fixed btw.
18:32 erle (on the mineclone2 issue tracker, mind you)
18:33 MTDiscord <jordan4ibanez> A classic gamer thing? Then why not retire it to play classic games?
18:33 erle classic as in “devs who are gamers”
18:33 MTDiscord <luatic> lol
18:34 MTDiscord <jordan4ibanez> That hardware is old enough to buy cigarettes
18:34 erle curiously, i have never seen this for any non-gaming software that people *insist* it can not possible run some software
18:34 erle hardware
18:34 erle sorry
18:34 erle curiously, i have never seen this for any non-gaming software that people *insist* it can not possible run some hardware [fixed the statement]
18:35 erle or rather, gamers sometimes do
18:35 erle but not the devs of said software
18:35 MTDiscord <jordan4ibanez> You're obviously running the game, yes? Maybe you could invest in a raspberry pi model 2 and double your fps lol
18:35 erle or people intimately familiar with it
18:36 erle like no one is saying “you can't possibly run wayland on an old thinkpad” (because you can) or “you can't possibly run blender on that hardware” (because blender deprecates stuff so fast that a lot of people basically stay on an old version, so it is clear what works and what not)
18:37 [ new versions of blender won't run on that hardware (unless you do software rendering)
18:37 MTDiscord <jordan4ibanez> I think you don't understand, you're basically proposing that we attempt to make a stock Suzuki Cultus run on pikes peak at above 50 kph lol
18:37 erle jordan4ibanez i am currently waiting for replacement batteries for my reform 2 to be delivered so i can use it again
18:38 MTDiscord <jordan4ibanez> I'm sure windowmaker will run very well on it
18:38 erle see, you are doing it again
18:40 MTDiscord <jordan4ibanez> https://tenor.com/view/dog-eyebrow-funny-eyebrow-raise-gif-13185653
18:40 erle jordan4ibanez i think YOU don't understand. if you develop on hardware that is much better (or simply different) than what at least some of your users have, you end up breaking that stuff *unless* you structure your code so that everything is additive (as in progressive enhancement)
18:41 erle jordan4ibanez as an example, i have built a python-based synthesizer library, called libglitch, many years ago. i used the worst machine i could grab to test it and optimized it, because any lag would create stuttering sound.
18:41 MTDiscord <jordan4ibanez> Well, I'm sure if it were 2010 I'd greatly consider 950 as part of my target for legacy windows xp users
18:41 erle i don't actually think you get the same performance on windows as on linux actually
18:42 MTDiscord <jordan4ibanez> Why did you make something in python if performance was critical?
18:42 erle because it was easy
18:42 erle and you can optimize python stuff to make sure the compute intensive things use fast c code
18:43 erle but mainly, by constraining myself to the shittiest laptop i could find, i made sure i do not accidentally metaphorically paint myself into a corner
18:43 erle i *could* have made that app with C + SDL
18:43 kamdard joined #minetest
18:43 [ GMA 4500 MHD is important because it is the most recent GPU in RYF hardware
18:44 erle [ important to you. not important to any of the devs, apparently. and this has been a thing for a while.
18:44 MTDiscord <jordan4ibanez> It's also very easy to go out on trash day and find a pc to upgrade your rig with, that's how I got my first upgrade from an athlon ii 220 to a core 2 duo
18:44 [ it's important for software freedom
18:44 MTDiscord <jordan4ibanez> Listen, there is react os and freedos for the ancient hardware, freedom is good
18:44 erle jordan4ibanez i have core duo!
18:45 erle jordan4ibanez i gave you the meme, cut the crap.
18:45 MTDiscord <jordan4ibanez> It's not crap, this is so out of touch I think it might be pulling me into another dimension
18:45 [ newer hardware is simply not usable without compromising on software freedom
18:46 MTDiscord <luatic> erle: the people demand more memes
18:46 MTDiscord <luatic> your hardware was never free to begin with
18:47 MTDiscord <jordan4ibanez> I can't believe it was said verbatim
18:47 MTDiscord <luatic> "free software" hardware is an arbitrary puristic requirement
18:47 sfan5 what's "RYF" hardware?
18:47 MTDiscord <luatic> like pure functional programming
18:47 MTDiscord <jordan4ibanez> Just ignore those proprietary bits of firmware in there, you didn't see anything
18:47 sfan5 If I had that blog post lying around where someone criticized the fsf free software definition I'd post it
18:48 ROllerozxa "respects your freedom", which is mostly an arbitrary decision from the FSF whether the hardware is rubberstamped by them or not
18:48 Talkless joined #minetest
18:49 MTDiscord <jordan4ibanez> Your hard drive control board better have the C code posted on github under a gpl compatible license or I'm going to be very disappointed
18:49 erle [ going with the theme of jordan4ibanez you should obviously pony up money to buy a MNT reform 2 or MNT reform NXT
18:49 erle NEXT
18:49 sfan5 anyway MNT Reform might be more up your alley if you like freedom
18:49 erle until the devs decide that the MNT reform is “too old” obviously
18:49 MTDiscord <jordan4ibanez> Literally, any website, 20 dollars, buy something that's about to be thrown away
18:50 erle jordan4ibanez it's actually not that easy. 4:3 matte monitors in laptops died out around >10 years ago
18:50 MTDiscord <jordan4ibanez> You're lucky you never got into itanium or you would still be very mad at Linus torvalds
18:50 erle you either get 16:9 or, rarely (chromebooks) 3:2
18:50 erle and almost all glossy
18:51 erle anyway, “buy new hardware” is almost always the gamer response to removing functionality people use
18:51 MTDiscord <jordan4ibanez> Literally, first generation i3, bam you have an upgrade for like 10 dollars
18:51 erle jordan4ibanez wdym?
18:51 erle i3 is a window manager?
18:51 MTDiscord <jordan4ibanez> Gamer response? When your hardware is in historical documents it might be time to upgrade
18:52 erle is it possible to tell the bridge i want to selectively ignore one user?
18:52 [ ignores are client-side
18:52 [ some clients have regex filters
18:52 MTDiscord <jordan4ibanez> The gma 950 is 19 years old :D
18:53 [ I actually do have a thinkpad t440p which supports opengl 4.6, but unfortunately it requires (neutered) intel ME and so isn't entirely an upgrade
18:56 MTDiscord <jordan4ibanez> Well without minix there would be no Linux, and ME is Minix, so just think of it as a family reunion
18:58 [ it's not minix in this generation yet, that started with skylake
18:58 erle [ don't feed the troll
18:59 [ it's threadx running on ARC
18:59 erle [ IIRC when i found a bug in mineclone2 that crashed clamity, jordan4ibanez abused that bug and made a youtube video about it, “crashing clamity like a maniac”.
18:59 erle (crashing the server is one of the few things that are forbidden on anarchy servers)
19:01 erle [ given the generally unhelpful responses, i guess forking is the only reasonable response.
19:01 chilledfrogs joined #minetest
19:09 MTDiscord <jordan4ibanez> So you're going to redirect the fact that you're getting frustrated that your hardware that came out before windows vista was even a thought doesn't run minetest smoothly because you don't want to run Intel management engine by bringing up a mistake I apologized for?
19:10 MTDiscord <jordan4ibanez> Let's put it this way, I realized I was erranous in my procedure and moved on, you're still using hardware that was out before "does it run crysis" was a meme, you're stuck
19:12 MTDiscord <jordan4ibanez> The hypocrisy of using closed source hardware with one strawman in it to stand on your mighty hill and claim fsf approval is very sad
19:13 MTDiscord <jordan4ibanez> It's quite obvious Intel needed that management engine, look at how their hardware runs without it
19:13 [ what are you talking about?
19:14 [ are you confusing the ME with microcode?
19:14 MTDiscord <jordan4ibanez> You know exactly what I'm talking about, and if you don't, you shouldn't be so concerned about the management engine
19:15 [ No, I don't.
19:15 [ It doesn't run without the ME only because they intentionally made it not run without the ME
19:17 MTDiscord <jordan4ibanez> Well actually, that brings up a great question. Why don't you get AMD hardware then?
19:17 [ AMD is no better, in fact it's worse because there's no equivalent of me_cleaner for the PSP (AMD's ME equivalent)
19:17 [ https://libreboot.org/faq.html#amd
19:18 MTDiscord <jordan4ibanez> Another strawman
19:18 [ How is that a strawman?
19:18 sfan5 i think it's safe to say the freedom you're looking for is at a dead end on x86
19:19 MTDiscord <jordan4ibanez> Why not use arm64? There's plenty of support
19:19 [ sfan5: There's a bug in MEv12 that allows arbitrary code execution in the ME. Someone just needs to write a free ME replacement and free raminit for kabylake.
19:20 MTDiscord <jordan4ibanez> You know, and I know, and the person reading this knows, good luck with getting that in the next few years
19:21 khimaros joined #minetest
19:21 [ Most performant ARM hardware requires blobs. RK3399 can run blobless but it has worse single core performance than my core 2 duo and only supports 4GB RAM
19:21 MTDiscord <jordan4ibanez> Well they're on version 16 of ME now
19:23 [ The latest intel hardware is even worse: it requires nonfree firmware for the GPU
19:23 MTDiscord <jordan4ibanez> So, you refuse to enjoy your hardware that can actually play the game, but you still use that hardware anyways
19:23 MTDiscord <jordan4ibanez> So firmware is now an issue again
19:24 MTDiscord <jordan4ibanez> Look at the firmware chips inside your current setup and go try to find any source code for them
19:37 Lunatrius joined #minetest
19:50 Glaedr joined #minetest
19:56 ireallyhateirc joined #minetest
19:57 ireallyhateirc can I do UV animation in Luanti?
19:58 ireallyhateirc I for example have a color palette and clothes with colorful parts unwrapped in a way that places each part on a single pixel
19:59 ireallyhateirc so with UV animation I could swap colors
20:01 ireallyhateirc alternatively I could have atlas with multiple face variants and swap them
20:25 MTDiscord <luatic> ireallyhateirc: not really, unfortunately. for the future, would you be able to leverage morph animations (https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#morph-targets) if we implemented them?
20:26 ireallyhateirc I need to understand what they are first
20:28 ireallyhateirc my use case is animating face textures all inside blender without having to redo the animations in Luanti
20:29 ireallyhateirc so if the morph thing would allow me to do that then yes
20:57 MTDiscord <_devsh_> You want programmable pulling for that
20:59 ireallyhateirc programmable pulling?
20:59 ireallyhateirc the current plan was to animate in Blender and write an addon to export the animations to Luanti somehow
21:00 ireallyhateirc alternatively I could hide all eye/face textures in the head and control them with bones
21:02 MTDiscord <_devsh_> Indirect draw is GL 4.x
21:03 MTDiscord <_devsh_> In gltf every morph target is a separate set of vertex positions and normals
21:04 MTDiscord <_devsh_> The animations can access any target arbitrarily and interpolate between them
21:04 MTDiscord <_devsh_> You will run out of HW vertex attribute bindings
21:05 MTDiscord <_devsh_> Also it's super wasteful to pump 8 or 16 attributes if you don't need them at a given moment
21:05 MTDiscord <_devsh_> Hence "programmable vertex pulling" Google it, it's a well known term
21:06 MTDiscord <_devsh_> You know you could just have a uint8_t vertex coordinate and sample a 1D texture or a texel Buffer instead?
21:08 MTDiscord <_devsh_> I used to play WoW classic in the gma 950, that GPU is such a piece of shit it couldn't render WoW with a dx9 nor OpenGL backend properly
21:09 SFENCE joined #minetest
21:11 MTDiscord <_devsh_> Make a black hole render mode, conditionally omit every call to glDraw, then you'll see pure CPU overhead
21:13 MTDiscord <_devsh_> Have you actually put a static variable counter next to the glUniform calls to find out how many times they get called per frame?  Or a counter next to glUseProgram (or whatever GL 1.4-2.1 uses to bind a shader)?
21:14 MTDiscord <_devsh_> Unless multiple (all) meshes share a buffer it might be just as bad as sending the bones with glUniform call
21:15 MTDiscord <wsor4035> irc doesnt get context of what your replying to/edits fyi
21:15 MTDiscord <_devsh_> That's unhelpful
21:16 Verticen joined #minetest
21:36 kamdard joined #minetest
21:39 greeter joined #minetest
21:57 lhofhansl joined #minetest
22:03 erle <ireallyhateirc> alternatively I could hide all eye/face textures in the head and control them with bones
22:03 erle i love how hacky that is
22:05 MTDiscord <luatic> you can't because we only support linear animation
22:05 MTDiscord <luatic> i considered bringing it up but that reason is why it's not an option
22:06 MTDiscord <luatic> i will probably implement no interpolation for gltf soon though
22:06 erle you will implement no interpolation? is this like the eastern block joke?
22:06 MTDiscord <luatic> it's a feature where you can turn interpolation off on some channels
22:07 erle sales person is asked “you don't have any meat, do you?” and answers “no, this is where we have no fish. the store across the street has no meat.”
22:08 erle _devsh_ GMA 950 is plenty for rendering some virtual legos though. or playing earth 2150 or quake or whatever.
22:09 erle luatic have you thought upstreaming your gltf work to irrlicht? not out of the good of your heart, but because then more people take a look at it (and maybe you get sth back)
22:11 erle i made a self-igniting smelter in nodecore. the lenses redirect the light in a circle (this was difficult to achieve using only lenses) and ignite the fuel by means of focused lenses https://mister-muffin.de/p/YKDs.jpg
22:12 erle (rendered using opengl 1.4? lol)
22:16 ireallyhateirc @_devsh_, all that sounds advanced and I'm probably too dumb to comprehend that but sounds like a trouble
22:17 erle i have also made a coal creation station: the focused lens sets the log on fire. logs float. coal is a falling block. coal falls into water and extinguishes: https://mister-muffin.de/p/fmCW.jpg
22:18 ireallyhateirc sounds like the best solution for now is going to be waiting for non-linear animation and exporting face data to Luanti so it can then pick the proper face texture
22:19 erle ireallyhateirc what mod/game are you working on?
22:20 ireallyhateirc I'm an Exile contributor and the thing I'm working on is going to be for my WIP horror game called "Perfect City"
22:20 ireallyhateirc there's nothing but a few nodes, a half-working road procedural generator and a story: https://codeberg.org/perfect_city_game_studio/perfect_city
22:20 ireallyhateirc the story is also 10% finished
22:21 ireallyhateirc that's one of the characters I'm working on currently: https://files.catbox.moe/icyrm2.png
22:22 ireallyhateirc eyes and lips are implemented as a separate materials and textures
22:23 ireallyhateirc (without "a")
22:24 ireallyhateirc I'm a masochist so even the hoodie is rigged
22:24 ireallyhateirc there's the "on" state when the hood tracks the head and the "off" state when the hood tracks the torso
22:27 MTDiscord <_devsh_> @erle nobody will take a look at it except for CuteAlien
22:28 erle ireallyhateirc what do you think of the mm3d modeler
22:30 MTDiscord <_devsh_> Yes like 2000 Legos tops, if that's the look and aesthetic you want to stay with forever, that's cool.  But don't expect to be able to do huge draw distances or fancy graphics on RTX 4060, ever.
22:31 MTDiscord <_devsh_> In which case I invite you to delete the Shadow mapping code : P
22:31 erle _devsh_ sorry, which view distance is like 2000 legos?
22:32 ireallyhateirc erle, no idea what that is
22:32 MTDiscord <_devsh_> I'm exaggerating, the gma 950 can probably draw like 200k tris
22:32 MTDiscord <_devsh_> Let me pull up the spec sheet
22:33 erle ireallyhateirc a 3d model editing program https://clover.moe/mm3d/
22:33 ireallyhateirc I'm using blender
22:34 ireallyhateirc hard to judge just by looking at it, but looks obscure and most likely doesn't have as many features as blender
22:35 erle ireallyhateirc definitely not. i just used it for some stuff regarding mineclonia
22:35 ireallyhateirc blender is pretty straightforward and there is a ton of tutorials for it
22:36 erle look, i am not trying to convince you to use anything else. i was trying to ask what you think of that program. obviously you think nothing of it.
22:40 ireallyhateirc yeah, I understand
22:41 ireallyhateirc looks really basic at first glance and that's it
22:43 erle i think i used it to automatically merge surfaces
22:43 erle because i noticed some model having way to many triangles
22:44 ireallyhateirc yeah it's a common beginner mistake
22:44 ireallyhateirc I once opened a sofa model from Sweet Home 3D
22:45 ireallyhateirc the mesh had a really ugly topology and like 10 times the vertices needed
22:45 MTDiscord <_devsh_> Erle, the gma 950 is a horrible GPU   It's actually old enough for "shaders" to be slower than fixed function, because it doesn't have unified shader cores.  It kinda claims 62.5M vertices per second peak throughput which mean about 500k block faces at 30 FPS.  However such numbers are usually given for the most puny of vertices, so I'm kinda guessing that this 520k number is only valid for something like a position only attribute vertex
22:45 MTDiscord and probably in some compressed 4 byte format not full 12 bytes per vert.  So for crappy irrlicht format vertices this throughput is probably 9x less, and even if you did all the compression "right" you'd still come out at about 8 bytes per vertex.  With the default irrlicht vertex format you won't get past a hard 64k Tri limit per frame on a gma 950.
22:46 MTDiscord <_devsh_> By comparison a recent desktop GPU can draw somewhere in the order of 30-120M tris per frame
22:47 MTDiscord <_devsh_> Without culling
22:47 erle _devsh_ that sounds plenty for the amount of surface i am seeing in the game though?
22:47 ireallyhateirc in blender I simply merge points by distance every now and then
22:48 erle like, even if i pessimistically assume that 1 node is 6 triangles (because i see 3 faces) or 12 (because i see all the faces), it's plenty?
22:48 MTDiscord <_devsh_> 64k is the triangle budget for a skinned character model in Gears of War, an Xbox 360 game
22:49 erle sure buddy, but i am pretty sure that i haven't seen a 64k model in block game world, like, ever
22:50 MTDiscord <_devsh_> Your worst case scenario is a diagonally sloped terrain which can't be greedy meshed
22:50 erle also aren't high-poly models compiled down to low-poly models that have bump maps or so?
22:50 MTDiscord <_devsh_> Yes but the high poly gears models were 12M tris
22:50 erle actually my worst case scenario is lots of node boxes. i made the “studs” mod.
22:50 erle it adds 4 small boxes to each node
22:51 MTDiscord <_devsh_> Well anyway for that slope or checkerboard patter (one block up, one down) you get 3 tris per block
22:52 ireallyhateirc my character is 17K tris for now, but I didn't remove redundant vertices yet (skin under clothes)
22:52 erle yeah and at view distance 100 that entire pattern fits in the budget width a lot to spare?
22:52 ireallyhateirc so I should be able to cut it down to 10K
22:52 erle with
22:52 MTDiscord <_devsh_> No your view distance caps out at 50 if you're still using a 36 byte vertex
22:53 MTDiscord <_devsh_> 100 is best case with optimized vertex format
22:53 erle _devsh_ guess i never ran into people who make the most pessimistic landscape
22:53 erle well, people used particle spam lag to lag out clients
22:53 erle and they used huge glass/water structures to lower fps
22:54 erle but plain territory? nope
22:54 MTDiscord <_devsh_> Well whenever your landscape is greedy meshed you have the polycount of mobs, particles and other stuff to worry about
22:55 sfan5 <_devsh_> Have you actually put a static variable counter next to the glUniform calls to find out how many times they get called per frame?
22:55 sfan5 just did. it's 750
22:57 MTDiscord <_devsh_> That's every glUniform call in the whole frame?
22:57 sfan5 yes
22:58 MTDiscord <_devsh_> Not bad, you might actually fit in a single UBO for the whole scene
22:59 sfan5 nevermind I missed some
22:59 sfan5 but it's not like most will stay static during the entire frame, will they?
23:00 MTDiscord <_devsh_> Mind you that you still need to know what offset to use the UBO at, so this can often mean rebinding the buffer at a different offset or having to set at least one glUniform anyway
23:00 sfan5 okay new figure: it's more like 1200
23:00 MTDiscord <_devsh_> No they will not stay static, your largest ones are the MVP and Normal matrices
23:00 MTDiscord <_devsh_> They change almost every draw
23:00 jaca122 joined #minetest
23:01 MTDiscord <_devsh_> Also there's a few nasty thing that irrlicht does like abusing the uniform setting function for texture slot speccing
23:01 MTDiscord <_devsh_> One should use explicit bindings and locations in the Glsl source
23:04 MTDiscord <_devsh_> Erle the gma 950 has peak triangle rate of 41 Million, Adreno phone GPUs can routinely do 10-50x more
23:04 sfan5 to verify my understanding: the main advantage of UBOs is for variables that stay the same when switching between programs?
23:05 erle _devsh_ given that usually the naive way vs the optimized way to do something is like one or two orders of magnitude, maybe that is not important for a game that looks basically like it did 10 years ago?
23:05 erle _devsh_ i don't know what you want to convince me of. i know more modern GPUs are faster/better/harder/stronger.
23:06 erle i'm just not playing gears of war
23:06 MTDiscord <_devsh_> If you want to keep that look and scale , why are you even looking into doing anything with irrlicht or shaders
23:07 MTDiscord <_devsh_> Pick your best DirectX 8 or 9 emulator and go brrr
23:08 MTDiscord <_devsh_> Sfan5 it's complicated, if you only use a few uniforms here and there and you don't dynamically index them, they can get preloaded as registers and GPU is happy and goes brrr
23:08 erle _devsh_ actually i just want to continue playing one of the few games i enjoy and i hate that this means i have to backport API changes eventually.
23:09 MTDiscord <_devsh_> In Vulkan land it's more explicit where the line is, you get 128 bytes of push constant data and that's it
23:09 erle _devsh_ but i hope there are enough CSM API enthusiasts that it can be viable somewhat
23:09 MTDiscord <_devsh_> Also you can't index arrays of push constants
23:09 sfan5 I see
23:10 MTDiscord <_devsh_> However each time you change them before a draw, the driver needs to make temporary copies
23:10 MTDiscord <_devsh_> So it's kinda building something similar to a UBO behind your back
23:11 MTDiscord <_devsh_> This is also explicit in vulkan because you have a command buffer and a pool that backs it and grows
23:12 MTDiscord <_devsh_> But Vulkan is more sane, because the setPushConstans command is actually a memcpy
23:12 MTDiscord <_devsh_> And in the shader your declare what struct variable lays at what offset
23:13 MTDiscord <_devsh_> Whereas the dx9-10 and OpenGL way of setting uniforms is kinda like trying to serialise your push constants to JSON and driver unserialising back
23:13 MTDiscord <_devsh_> As you obviously know you kinda have to call glUniform on each variable identifier separately
23:15 sfan5 yea
23:15 MTDiscord <_devsh_> As you can imagine a simple memcpy of 128 bytes (mind you, this is barely enough to fit MVP and Normal matrix) is a lot faster than sending each thing dword by dword or mat4 at a time
23:16 MTDiscord <_devsh_> The other thing is that in GL driver guesses which uniforms benefit from being in registers more than others
23:16 sfan5 so what I am gathering is it has advantages even if you have a big burst of changes before every draw
23:16 MTDiscord <_devsh_> In Vk it's simple, shit with lower byte offset wins
23:16 sfan5 (unless 20x glBufferSubData is just as bad as 20x glUniform?)
23:16 sfan5 anyway, bed time for me
23:16 MTDiscord <_devsh_> It's worse
23:16 MTDiscord <_devsh_> Far worse
23:17 MTDiscord <_devsh_> The optimum is actually to manage buffers explicitly
23:17 MTDiscord <_devsh_> So you build one UBO for whole frame in your app
23:18 MTDiscord <_devsh_> And you upload the draw data for all draws at once
23:18 MTDiscord <_devsh_> But this requires rm irr/video/*
23:20 MTDiscord <_devsh_> Since irrlicht has Uber rtrd coupling between the scene graph and drawing logic
23:21 MTDiscord <_devsh_> It almost draws in immediate mode, seriously not far off glBegin and glEnd
23:22 MTDiscord <_devsh_> You have to go in and change the way the drawcalls are emitted during scene graph traversal, sort them properly in the order of state change expense, etc.
23:23 MTDiscord <_devsh_> Then do multiple passes over the draw lists, e.g. prep the shader constants first, then issue draws
23:23 erle _devsh_ finally someone who shares my opinion on “changing materials often during drawing”
23:23 erle (don't do it)
23:23 sfan5 we do this kind of manual management for the map drawing
23:24 MTDiscord <_devsh_> The way it's supposed to be done is that you produce a soup of draw call structs, sort, and then do gl calls
23:24 MTDiscord <_devsh_> https://github.com/Devsh-Graphics-Programming/Nabla/blob/master/include/nbl/video/utilities/CSubpassKiln.h
23:25 MTDiscord <_devsh_> Just sorting my drawcalls got me 25% FPS increase on a very simple sponza render in GL
23:25 MTDiscord <_devsh_> And this was no culling, nothing
23:26 MTDiscord <_devsh_> Even no frustum culling
23:27 MTDiscord <_devsh_> Erle, that's standard practice and GDC presentations from 15 years ago were quite explicit about the fact your supposed to order your drawcalls by shaderid
23:28 MTDiscord <_devsh_> Then stuff like textures bound
23:30 MTDiscord <_devsh_> That way you can also optimise the state changes, like flip flopping between different depth testing modes, etc.
23:31 MTDiscord <_devsh_> This is also why you should only have 1 or 2 transparent shaders and make sure particles use an array texture
23:32 MTDiscord <_devsh_> Because if you sort particles (or just emitters), and then have to rebind the texture in between each billboard or even emitter... Rip
23:32 MTDiscord <_devsh_> Obviously that whole problem goes away if you used order independent transparency
23:33 MTDiscord <_devsh_> Because you no longer need to sort by depth and can focus on sorting by shader and pipeline state instead
23:33 panwolfram joined #minetest
23:34 MTDiscord <_devsh_> But order independent transparency is only possible with MSAA textures and weird sample shding tricks or multiple render target framebuffers for MBOIT or WBOIT
23:35 MTDiscord <_devsh_> Also they're quite slow compared to the fancy methods in GL 4.3 using atomic images and other fun things
23:47 MTDiscord <luatic> devsh: speaking of OIT, which methods would you practically suggest we try out? you can comment on #15436 if you'd like
23:47 ShadowBot https://github.com/minetest/minetest/issues/15436 -- Solving semitransparency: Order-independent transparency

| Channels | #minetest index | Today | | Google Search | Plaintext