Time Nick Message 14:14 MTDiscord Can we remove non-freetype support? 14:17 sfan5 why 14:17 sfan5 and yes 14:31 don_flymoor Hi! Does anyone know why I can see the inside of the player when using directx9? 14:31 don_flymoor This only happens in 5.4.0 14:32 don_flymoor It completely blocks the screen. 14:34 rubenwardy It adds more cases to support 14:34 rubenwardy We have freetype and nonfreetype text boxes or something iirc 14:35 don_flymoor I don't understand what you mean 14:38 don_flymoor Does using directx9 disable backface culling? 14:40 rubenwardy I'm not responding to yoy 14:42 MTDiscord sfan5: I was looking into font media, which I'd do using .ttf files, which requires freetype 14:44 MTDiscord @don_flymoor there is already a github issue about your problem and I think the devs won't fix it as they don't offifially support directx 14:45 don_flymoor Even if it's not officially supported, it glaring issues like this should be fixed, as directx is faster than opengl on windows. 14:52 MTDiscord incorrect 14:52 MTDiscord a real GPU or Intel iGPU are actually considerably better at OpenGL 14:55 don_flymoor While true, Minetest is CPU bound, and at least on my pc, DirectX is faster because it uses less CPU than OpenGL. 14:56 MTDiscord what 14:56 MTDiscord if OpenGL had a bottleneck it wouldn't be used period 14:56 don_flymoor Of course it has a bottleneck 14:57 MTDiscord irrlicht's general implementation of the standard OGL library is a bit naff 14:57 don_flymoor It seems to use draw calls more than DirectX 14:57 don_flymoor I agree 14:58 don_flymoor So: Why are we still using Irrlicht? 14:58 MTDiscord i get zero GPU assistance as minetest does all mesh manipulation on CPU and is single threaded at that 14:59 don_flymoor So why isn't Minetest multithreaded? That would make it a lot faster, and get rid of a lot of server lag. 14:59 sfan5 "why isn't this glaring issue fixed?" "why are we still using irrlicht?" "why isn't minetest multithreaded?" 14:59 MTDiscord it probably uses more draw calls as OpenGL has a much better depth buffer solution than DX that is also portable against macOS, Linux, BSD 14:59 sfan5 who's gonna do it? 15:00 MTDiscord also this 15:01 sfan5 spending time to fix directx issues is also unwise as we're extremely likely to fully drop support in the upcoming 5.5.0 15:02 don_flymoor Perhaps supporting Vulkan would be a good idea. Now that Minetest has their own version of Irrlicht, it would be more feasable. 15:03 don_flymoor Of course, it's probably not going to happen 15:03 MTDiscord are you suggesting us unpaid contributors are to implement a brand new rendering stage 15:03 MTDiscord none of are named john carmack 15:03 don_flymoor Yes 15:03 sfan5 it's more realistic to fix up OpenGL usage to make it more performant 15:04 rubenwardy don_flymoor: have you tried disabling shaders? 15:04 don_flymoor Yes. No change in performance 15:04 sfan5 our shaders don't work under directx anyway 15:04 sfan5 oh this is in regard to performance 15:04 sfan5 nvm then 15:04 rubenwardy I meant on OpenGL, yeah 15:06 don_flymoor The bottleneck seems to be meshmaking, so multithreading would theoretically improve performance more than anything else, 15:06 sfan5 there is a thread dedicated to meshing 15:07 sfan5 I think first someone knowlegeable should analyze rendering with one of those opengl profilers and see what's so inefficient 15:07 Calinou RenderDoc time :) 15:10 don_flymoor rendermap:drawmeshes(SOLID) and game:updateframe:drawscene are the slowest parts 15:10 don_flymoor Yet my GPU is at 1/3 capacity 15:11 don_flymoor And when I activate ReShade, the FPS stays the same. 15:13 don_flymoor OpenGL and DirectX both suffer from this, but DirectX less so. 15:16 don_flymoor How difficult would it be to port Minetest to a different rendering engine like Ogre? 15:17 sfan5 very 15:18 MTDiscord there are some github issues where people suggested bgfx and in there are some of the issues 15:19 don_flymoor I guess it isn't very feasible, without pretty much rewriting a lot of Minetest. 15:34 sfan5 >minetest_2021.03.29_15.32.35_frame3155.rdc loaded. Capture has 210 issues. 210 Unread. 15:34 sfan5 I guess this is a good sign 15:44 sfan5 okay turns out the OpenGL Irrlicht uses is way too legacy so RenderDoc can't be of help 15:44 don_flymoor Minetest tells me it's using OpenGL 4.6.0 15:45 sfan5 that's what the GL context says it supports 15:48 don_flymoor I wonder if we could use https://github.com/Devsh-Graphics-Programming/Nabla as the render engine. It promises Vulkan support, and is build off Irrlicht. 15:48 don_flymoor Nabla (previously called IrrlichtBaW ) is a new renovated version of older Irrlicht engine. The name change to Nabla allows for using Nabla side by side with the legacy Irrlicht and IrrlichtBaW engines. The project currently aims for a thread-able and Vulkan-centered API, but currently works on OpenGL only. 15:51 don_flymoor It it is a modified version of Irrlicht, it may be very easy to use it in Minetest. It might also be better, or at least faster. 16:33 don_flymoor I'm going to try building IrrlichtBAW and see if Minetest works with it. 16:53 rubenwardy The GUI will break, and the API will have differences 16:59 don_flymoor But it won't be very difficult to fix... I hope 17:02 sfan5 this has been brought up before, irrlichtbaw has dropped all GUI stuff which we do use 17:03 don_flymoor Could we change our GUI? 17:03 sfan5 change it to what? 17:03 don_flymoor Whaterver BAW uses 17:03 sfan5 nothing AFAIK 17:04 don_flymoor Build A World has a GUI 17:09 don_flymoor I believe remaking the GUI would be worth it to get the performance from IrrlichtBAW 17:09 MTDiscord It'd require another library, such as Nuklear or Dear ImGUI 17:11 don_flymoor As far as I can see, implementing another GUI wouldn't be very difficult 17:11 MTDiscord Is there anything I can do to help get my build PR to the new Irrlicht fork merged? 17:15 sfan5 I think it'd help to see how the changes that'd be made to the engine should looks like 17:15 sfan5 and maybe another coredev has an opinion on that 17:17 MTDiscord I could PR an update to the engine at the same time. 17:18 MTDiscord That might be kind of weird though because the engine can't actually use the change until it's been made here. 17:39 appguru #11130 needs some attention - Minetest is finally getting depth sorting! 17:39 ShadowBot https://github.com/minetest/minetest/issues/11130 -- Fix rendering of allfaces nodes with transparent textures by x2048 17:44 sfan5 merging #11084, #11124, #11126, #11132 in 10m 17:44 ShadowBot https://github.com/minetest/minetest/issues/11084 -- Replace fallback font nonsense with automatic per-glyph fallback by sfan5 17:44 ShadowBot https://github.com/minetest/minetest/issues/11124 -- Add missing languages to settingtypes.txt by Emojigit 17:44 ShadowBot https://github.com/minetest/minetest/issues/11126 -- Clean up various misleading and/or confusing messages and texts related to priv changes by Wuzzy2 17:44 ShadowBot https://github.com/minetest/minetest/issues/11132 -- Update CONTRIBUTING info on translating builtin by Wuzzy2 17:44 pgimeno wow, does that mean that water won't disappear when watched through glass? 17:45 MTDiscord Yes. 17:45 appguru 11130 is really impressive. 17:49 sfan5 coincidentally I just looked at renderdoc (this time with GLES, that works) and wondered why Minetest draws the furthest mapblocks first, wasting effort 17:50 pgimeno farthest first is painter's algorithm, right? 17:50 sfan5 yes 17:51 pgimeno it makes sense for drawing half-transparent stuff 17:51 pgimeno not for fully opaque or fully transparent blocks 17:53 sfan5 drawing opaque stuff with z buffer should work regardless shouldn't it? wonder why that wasn't done 17:56 pgimeno for opaque geometry, drawing near stuff earlier improves performance, because shaders don't need to process pixels that are farther once the ones in front are drawn 17:57 pgimeno it works either way, it's just more performant to draw from front to back 17:58 sfan5 I know, but why aren't we doing that for opaque stuff? it looks like such an obvious optimization 17:58 pgimeno *shrug* 18:09 appguru Well 18:09 appguru You could first render all opaque stuff closest first 18:10 kilbith the chat messages are UTF-8, correct? 18:10 kilbith I'm wondering if we could extend it to UTF-32 to support emojis 18:11 sfan5 chat messages are unicode, usually stored in std::wstring 18:11 sfan5 whether that is 16-bit chars or 32-bit chars depends on OS 18:11 sfan5 network transfer uses utf-16 but I made surrogate escapes work before 5.4.0 recently 18:11 sfan5 or in short: the only thing preventing emojis on a platform with 32-bit wchar is the right font 18:12 sfan5 (emojis should be able to work on 16-bit wchar platforms too I'm just not so sure about that) 18:15 MTDiscord Strings are rarely stored using UTF-32 as that wastes much memory. 18:15 appguru Which encoding is used doesn't matter however. UTF-8 and 16 support emojis just as fine. 18:16 appguru Sticking with UTF-8 is preferrable, as that is the encoding used by Lua. 18:30 pgimeno Yeah, emojis are a question of font support, not of encoding. And colour emojis are a different beast. 18:37 sfan5 appguru: lua doesn't deal with anything more than ascii 18:38 appguru sfan5: that's wrong 18:39 appguru newer Lua versions even ship with UTF-8 utility functions 18:41 sfan5 as long as string.sub() does not operate on utf-8 I consider "lua strings are utf-8" to be a false statement 18:41 sfan5 this is the case even with 5.4 18:42 appguru in most languages the substring method operates "char"-wise and not "rune"-wise 18:42 appguru examples: Go, Java 18:42 appguru those are UTF-16 though 18:44 sfan5 that's a different kind of broken 18:49 sfan5 "lua strings are byte strings and builtin functions operate on ASCII" is what I consider correct to be clear 18:53 MTDiscord more like Latin-1 18:54 appguru I don't really see the point though 18:55 appguru Chat messages have to be passed to Lua. It is most convenient to have everything UTF-8 in Lua. 18:55 appguru Sure, most builtin functions operate on strings like on a byte array, which fair, they are. 18:55 sfan5 of course, I didn't say anything unlike that 18:57 MTDiscord People seem to like to use UTF-16 because the assumption that each character could be represented by 2 bytes survived longer than the assumption that each could be represented by 1, i.e. a lot of supposedly-UTF-16 things are actually UCS-2 ones. 18:58 MTDiscord Just query the string length of most emoji and you'll often get 2 characters, meaning that the string length function is just dividing byte count by 2 instead of actually walking the UTF-16 data. 19:09 celeron55 utf-16 is the worst, people think it works when it's actually broken 19:09 Krock UTF-32 will solve the world problems 19:10 MTDiscord UTF-16 might be the worst right now, but give them time and they'll think of something worse. I mean after we've got the UUID data type, and time zones are still a thing. 19:11 celeron55 Krock: except that it's a waste of space if your use case is common languages 19:11 Krock to Chinese people, Chinese is common. 19:11 MTDiscord UTF-32 will solve all of the world's problems exactly the same way UTF-16 did. 19:12 MTDiscord And then UTF-64, UTF-128, etc will subsequently... 19:12 celeron55 Krock: don't most chinese characters fit in 2 bytes in utf-16? 19:13 sfan5 I think they do 19:13 sfan5 but if you're going for space savings you should really just use utf-8 19:13 celeron55 what i'm reading now says utf-8 generally needs 3 bytes for chinese characters 19:13 sfan5 and if you need quick iteration / random access or something else go for utf-32 19:14 sfan5 hm that's true 19:14 celeron55 i suppose utf-32 compressed using some very lightweight algorithm would be most idiot programmer proof, which is sad but could be a nice life hack 19:14 MTDiscord UTF-32 would make the problem go away for now but you'd effectively be punting it down the line. 19:15 MTDiscord i.e. the reason why you'd use UTF-32 in the first place is if you could pretend that you don't need to actually parse it and can just multiply stuff by 4 to calculate offsets 19:15 MTDiscord which is true ... for now, just as it once was for UTF-16. 19:15 sfan5 if we define more than 4 billion(?) characters we have other problems 19:15 celeron55 utf-32 will suffice for our lifetime 19:15 celeron55 definitely 19:15 MTDiscord We already have the other problems. 4B+ characters is just one of the few we haven't tried having yet. 19:17 MTDiscord If the alternative is just playing a game of kicking the can farther down the road, might as well just use one of the UTF's we already have now, like UTF-8 or something. 19:17 celeron55 current computers could barely hold a font to display all of the utf-32 character space 19:17 celeron55 if it was the only task to do 19:19 celeron55 and it would take you years to read all the characters, assuming you knew them all already 19:19 celeron55 as a human 19:19 celeron55 if one of each was displayed 19:23 MTDiscord ah yes, making fonts is now a monumental task if you want to have a decent amount of Unicode support 19:45 sfan5 cppreference.com replaced its search with duckduckgo and it's pretty awful 20:11 sfan5 wonder why nobody has fixed #8662 yet, the problematic is identified and everythin 20:11 ShadowBot https://github.com/minetest/minetest/issues/8662 -- TextArea output color is ignored after first line of text. 20:11 sfan5 +g 20:12 sfan5 problematic code* 20:18 numzero utf-32 is limited to well below 4B characters (“code points” in Unicode terms) 20:19 numzero because every code point has to be encodable in UTF-16 as well 20:19 numzero whose surrogate pair can encode 20 bits only 20:19 numzero thus limiting Unicode to 1M characters 20:21 celeron55 that is a bit of a bummer really 20:21 numzero also regarding Chinese characters, read a bit about so-called Han unification 20:22 numzero which was needed to force Chinese and other languages into 16-bit encoding 20:22 numzero while Japan alone has about of 65k ideographs ATM AFAIK 20:23 numzero (“ATM” is important here, that number grows with time) 20:27 celeron55 1M is less than i thought, i suppose we need a new encoding in our lifetime after all 20:28 celeron55 if i go looking for a more future proof character encoding than utf-32 i suppose everyone will tell me i'm completely crazy 20:30 pmp-p not crazy and that would probably be abstract language indepedant lexeme encoding 20:30 numzero something like older (first draft, before cloning Unicode) ISO-10646? 20:30 MTDiscord We're used to thinking of unicode as a technical project but really it's as poltical as anything else, which means they aren't really all that strictly bound by sense. 20:30 sfan5 for some reason Irrlicht uses about 400 triangles to draw a 16x16 inventory image 20:30 sfan5 under GLES at least 20:30 appguru Extrusion mesh 20:30 numzero also there is the TRON project, they have own character set too AFAIK 20:31 celeron55 i guess it'll be utf-8 anyway, with some crazy wasteful extension scheme in which the wastefulness will not matter in the slightest due to insane far future storage space and network bandwidth increases 20:31 numzero know little about these though 20:31 sfan5 (well not really 16x16, it's scaled and not all of the triangles are the same size) 20:31 sfan5 appguru: that'd be stupid 20:31 appguru yeah 20:31 MTDiscord It is kinda stupid 20:31 Krock UTF-32 helpfully has enough space to contain the vomiting cowboy emoji. https://imgs.xkcd.com/comics/vomiting_emoji.png 20:31 appguru but Minetest has fancy spinning thingies support 20:31 appguru so I assume when that was added, people just got rid of plain old inventory image drawing 20:31 numzero sfan5, Warr1024: that only means that IS likely to happen 20:32 Krock s/help/hope/ 20:32 MTDiscord That and the fact that the 2D image scaling formerly used on inventory images was controversial 20:32 numzero oops 20:32 appguru The vomiting statue of liberty is more important. 20:32 numzero answering to wrong question 20:32 MTDiscord and also because rendering nodes to 2D textures for drawing in the inventory used to be a fuster 20:32 appguru well, nodes usually only have 12 tris 20:32 MTDiscord I want a vomiting middle finger emoji 20:33 appguru we should really optimize extrusion meshes 20:33 appguru it's pretty simple in fact 20:33 MTDiscord really really 20:33 celeron55 let's make a blockchain character set, anyone can add any characters and it'll just grow and grow indefinitely with some mining cost 20:33 sfan5 appguru: https://0x0.st/-bBv.png 20:33 numzero Warr1024: tell the Unicode consortium, it codifies emojis 20:33 appguru but C++ makes it hard 20:33 MTDiscord I'm sure members of the Unicode Consortium read xkcd 20:34 sfan5 maybe this is irrlicht poorly attempting to emulate nearest neighbor scaling 20:34 sfan5 but why? 20:34 MTDiscord I think if we were to optimize extrude meshes for specific transparency masks, at least, then it would improve render performance for NodeCore, possibly significantly in some areas. 20:34 celeron55 sfan5: nearest neighbor scaling isn't supported by the backend? 20:34 celeron55 i can imagine that for gles1, maybe not for 2 20:34 appguru we've got drawImageFilteredScaled or what it's called 20:35 appguru but this is probably not relevant here 20:35 Krock extrusion mesh optimizations? slap one front face and back face to it, then add the vertices on transparent borders 20:35 appguru that's the point 20:35 MTDiscord Probably the reason for extrude meshes in inventory is a combination of the rotation thing, and that mixing 2D images and 3D models in the HUD or formspecs is probably too much of a pain. 20:35 sfan5 side fun fact: guiFormSpecMenu.cpp is 135 KB 20:35 Krock and only borders, rather than front&back 20:35 appguru currently there's unnecessarily many border vertices 20:36 MTDiscord Extrude mesh optimization is good for more than just HUDs or Formspecs, though, it'd be a big boon for ents. 20:36 numzero remember #6803 20:36 ShadowBot https://github.com/minetest/minetest/issues/6803 -- Optimize wieldmesh by numberZero 20:36 appguru well, complex generation of front and back would fix one of warr's bugs 20:36 sfan5 celeron55: from a quick google gles2+ should definitely do GL_NEAREST 20:37 MTDiscord IIRC there have been attempts to use a single face for the front/back but it's caused problems with texture filtering before. 20:37 appguru ^ 20:38 appguru numzero: #6803 looks fine - could you however cache the same normals, texcoords and vertices for all extrusion meshes of same size (say 16x16) and then just cache the different indices (omission of some border tris)? 20:38 ShadowBot https://github.com/minetest/minetest/issues/6803 -- Optimize wieldmesh by numberZero 20:38 sfan5 https://github.com/minetest/minetest/blob/master/src/client/hud.cpp#L949 20:38 sfan5 mystery solved 20:38 sfan5 appguru was right, it uses the extrusion mesh 20:38 sfan5 who writes all this stupid code and more importantly who reviews it.. 20:39 MTDiscord probably whoever added the rotation feature 20:39 numzero appguru: um, well, I could 20:39 numzero for everything not too large (128² at most probably) 20:39 appguru Seeing as you already invested quite some work, albeit a few years back, could you basically redo that PR? 20:39 rubenwardy It would have been RBA when spinning slots were added 20:40 numzero make yet another PR that won’t ever be merged? 20:41 MTDiscord ¯_(ツ)_/¯ 20:42 MTDiscord HEh, yeah, LMD, I think maybe the torch has been passed to you now :-) 20:42 celeron55 #6067 20:42 ShadowBot https://github.com/minetest/minetest/issues/6067 -- [CSM] Add basic HUD manipulation. by red-001 20:43 appguru Well, I don't really want it 20:43 celeron55 sfan5: interesting, this was added as a PR 20:43 appguru I'd be a lot less efficient than numzero 20:44 sfan5 it doesn't matter if you inefficiently produce efficient code ;) 20:44 celeron55 with simultaneous changes and a move of the hud.cpp file making the automatic github diff not really work 20:44 celeron55 so probably nobody really even checked it 20:45 celeron55 wait 20:45 celeron55 this is just the move 20:47 appguru Is there any way you can hit yourself with a regular Minetest client? 20:47 appguru I'm considering making an anticheat PR for that 20:47 appguru Because while it can be caught at mod level, it shouldn't have to be 20:48 sfan5 that's more anti-things-that-shouldn't-happen and not anticheat, but good idea 20:48 appguru Well, this is used as a cheat 20:48 appguru For example medics in Capture The Flag healing themselves... 20:49 MTDiscord relevant issue: https://github.com/MT-CTF/capturetheflag/issues/756 20:49 celeron55 6cd2b3b445bf558fda1e5a7908adef8e3a45449a 20:49 sfan5 https://github.com/minetest/minetest/commit/6cd2b3b445bf558fda1e5a7908adef8e3a45449a 20:49 celeron55 that's the RBA commit doing this 20:50 sfan5 yea as suspected 20:51 appguru Should I compare player and hitter by name? 20:51 celeron55 https://irc.minetest.net/minetest-dev/2016-02-07#i_4526594 20:51 celeron55 https://github.com/minetest/minetest/pull/3610 20:52 celeron55 lol 20:53 celeron55 even sfan5 said "Very nice", and paramat tested "no FPS drop" 20:53 celeron55 so it was reviewed to today's standard 20:53 celeron55 somehow it's still what it is 20:53 appguru well of course no FPS drop with 16x16 textures 20:53 appguru RIP 1024x1024 20:54 appguru That's more than two million tris 20:54 appguru per item, that is 20:54 MTDiscord At very high resolutions, is it cheaper to just layer planes on top of each other and fake the effect? 20:54 appguru should not be done 20:55 appguru well now that I think of it 20:55 appguru well no 20:55 appguru now that we got object shading, edges will look weird 20:57 appguru can I rely on the fact that the pointers will be equal if puncher and hitter are equal? 20:58 sfan5 of what object? 20:58 sfan5 I can think of an easier way already: compare the ids of active objects 21:07 appguru #11137 21:07 ShadowBot https://github.com/minetest/minetest/issues/11137 -- Detect interacting with yourself by appgurueu 21:08 sfan5 https://0x0.st/-bBh.png now that's better 21:15 Krock is that a security issue after all? 21:15 Krock side-note: I observed this possibility in a 0.5.0-dev update where the GenericCAO message format changed. on failure, the entity would just follow the actual player 21:15 Krock by a delay of one server tick 21:16 Krock but well, that's an exotic case 21:20 sfan5 hm does devtest have any colorized items for testing? probably 21:23 appguru sfan5: fixed 21:27 sfan5 devtest has exactly zero items that are colorized 21:27 sfan5 (but a few nodes) 21:28 sfan5 wait nvm 21:30 sfan5 ah no it really has none 22:14 sfan5 merging #11067, #7840 in 10m 22:14 ShadowBot https://github.com/minetest/minetest/issues/11067 -- Fix wield image of plantlike_rooted by Wuzzy2 22:14 ShadowBot https://github.com/minetest/minetest/issues/7840 -- Degrotate support for mesh nodes by numberZero 22:23 Pexin question about the new font fallback stuff: will fallback glyphs be guaranteed to have the same dimensions as the main chat output monospace font? ..or is that a dumb question? 22:24 sfan5 the font engine will grab the fallback font at a matching size 22:24 sfan5 but it will not be monospace or support bold/italic (this is not different than before) 22:25 Pexin not be mono? 22:25 Pexin i'm talking about the "t" and F10 console 22:26 sfan5 yes 22:26 sfan5 fallback glyphs there will not be monospaced 22:26 Pexin maaan.. 22:27 Pexin so that requires a total rewrite of the layout code 22:27 sfan5 not at all, it should be easy to add this 22:28 Pexin even though it currently uses the column number when constructing fragments? 22:29 sfan5 I don't know the code of the chat console so I have no idea what you're referring to 22:29 sfan5 since it already works for the non-fallback font now it logically can also work for the fallback font 22:29 Pexin the T and F10 consoles rely on monospace font 22:29 sfan5 (that difference is invisible to the chat console) 22:30 sfan5 which usecase do you have anyway where fallback glyphs are used and monospace matters? (chinese characters are all the same width) 22:30 Pexin romanic letters mixed with pictographs? 22:31 Pexin the reason i'm curious is if the new font stuff makes #11092 obsolete 22:31 ShadowBot https://github.com/minetest/minetest/issues/11092 -- Make chat web links clickable by pecksin 22:32 sfan5 you mean for underlining and/or coloring links or something? 22:32 Pexin but if that's the case, as i see it layout will need major restructure 22:32 Pexin underlining is impossible currently 22:33 Pexin but the mouse picking, and more importantly construction of text lines, does rely on monospace 22:34 sfan5 you should use font->getDimension to determine the click targets for that 22:39 Pexin that is already used to populate v2u32 GUIChatConsole.m_fontsize which is used to build the output 22:40 sfan5 no I mean measure the size of the characters in the actual line with the link 22:41 Pexin currently can't be done 22:42 sfan5 then you do have a problem 22:42 Pexin we all do ;)