Time Nick Message 01:15 paramat #6168 01:15 ShadowBot https://github.com/minetest/minetest/issues/6168 -- Network protocol: Document settable player collisionbox by paramat 03:40 bigfoot547 #6165 03:40 ShadowBot https://github.com/minetest/minetest/issues/6165 -- Advanced lighting by kaadmy 05:32 nerzhul_ merged #6168 05:32 ShadowBot https://github.com/minetest/minetest/issues/6168 -- Network protocol: Document settable player collisionbox by paramat 06:39 nerzhul_ pushing a trivial code move (move MapEditEventAreaIgnorer for server.h to emerge.cpp 06:42 nerzhul_ strange i can push but not pull, not very easy to rebase :p 06:43 nerzhul_ seems github bugs... 06:43 nerzhul_ https://status.github.com/ has problems too 12:22 rubenwardy game#1849 12:22 ShadowBot https://github.com/minetest/minetest_game/issues/1849 -- Separate player code into new mod by rubenwardy 12:22 rubenwardy needs more testing 16:40 * KaadmY waits for more devs to come online 16:44 nerzhul Krock, for casts, in guideliens we define a space after cast if i remember ? 16:44 KaadmY nerzhul: is there a problem using NULL instead of nullptr for style consistenct? 16:44 KaadmY nerzhul: the guidelines don't say 16:44 nerzhul NULL vs nullptr should be used carefuly in code 16:44 Krock there's neither a rule for casts nor nullptr 16:45 KaadmY That entire file (game.cpp) uses NULL only, there's only one instance of nullptr 16:45 KaadmY Krock: the guidelines say use nullptr 16:45 nerzhul the main problem is if you init with nullptr and somewhere you have if (a != NULL) instead of i (!a) you will do a null crash 16:45 Krock new code should be written with nullptr whenever possible 16:45 nerzhul nullptr should be used everywhere yes, it's C++11 guidelines 16:45 KaadmY Should I use nullptr and hope someone else replaces all the NULLs with nullptrs? 16:45 nerzhul the only case where you should be careful in a C++11 program is C interfaces which compare to NULL 16:46 nerzhul no never 16:46 Krock change all affected pointers 16:46 nerzhul yes 16:46 nerzhul maybe add a point on next meeting and vote for a cast style 16:47 nerzhul strange my mail didn't work 16:47 nerzhul v3s16 && = moved variable 16:47 nerzhul it permits to no create any reference and move the memory area passed to the function 16:47 nerzhul it should be used very carefully as it removed variable from caller 16:48 nerzhul in updateFastFaceRow case there is no problem as we pass hardcoded values 16:49 nerzhul (it('s not a remove, it's a memory move) 16:49 KaadmY ^ are you talking to me or just in general? 16:49 nerzhul for the move i answer Krock on #6169 16:49 ShadowBot https://github.com/minetest/minetest/issues/6169 -- VoxelManip cleanups (const ref, const move) + function removal by nerzhul 16:51 Krock nerzhul, how high is the benefit of using these expressions for 48 bits? 16:51 Krock v3s16 isn't much of data copy, so optimizing within the functions might be better (?) 16:52 nerzhul Krock, sorry but copy is the main problem in updateFastFaceRow :p 16:52 nerzhul in a single call no problem 16:53 nerzhul when it's 4 millions calls, callgrind shows we have ~5% time to copy this 16:53 nerzhul updateFastFaceRow take ~40% of the client CPU usage 16:54 Krock :< 16:54 nerzhul i have a biggest optimization to do on it, i think i will work on it this evening, we have ~12% CPU used to do TileSpec copy 16:55 Krock get your assembler skills ready :P 16:55 nerzhul i should reduce memory copy massively on this function 17:01 nerzhul i will do the other optimizations in a future PR as it needs a specific diff 17:02 Hijiri #5612 17:02 ShadowBot https://github.com/minetest/minetest/issues/5612 -- Allow overriding tool capabilities through itemstack metadata by raymoo 17:04 nerzhul in 6169 the main optimization is the getExtent caching it has a nice impact on index function we called many times, and getVolume. Both are massively called in MapGen and updateFastFaceRow :) 17:05 KaadmY Does anybody know where the mapblock mesh vertex alpha is set? 17:05 KaadmY It's supposed to be the day/night ratio which doesn't make much sense 17:05 KaadmY Since it's the same data per-vertex 17:05 KaadmY I want to put that into a uniform and make the per-vertex data store how much artificial light there is 17:08 nerzhul Krock, my dream is to load map as fast in debug mode as in release mode now :p 17:09 nerzhul i don't think if it's possible, but i saw some map generation & loading improvements in release mode after this PR, mapgen valleys was generating a little bit faster than before 17:09 Krock maybe the map will be faster but everything else is heck slow without many optimizations from the compiler 17:09 nerzhul yes server side emerging is not the high bottleneck except on new maps 17:09 nerzhul it's a side effect of my getExtend change :p 17:10 nerzhul the optimization was for updateFastFaceRow, i want to reduce its client usage, 40% is crazy 17:11 nerzhul on client, in regular mode, running 5 mins (with 1 or 0 fps under valgrind/callgrind) 40% usage is updateFastFaceRow and 15% generation of the mapblockmesh 17:12 nerzhul Krock, => https://lut.im/5x30Fsws1b/6juQxoXeH8GJ5Nik.png 17:12 nerzhul it's the client 17:12 nerzhul i used remote server in release mode to drop the CPU usage of the server from graphs 17:13 Krock heh, 200k calls on updateFastFaceRow. I see 17:14 nerzhul with callgrind yes 17:15 nerzhul part i want to optimize after this merge 17:15 nerzhul https://lut.im/RGkiJqQb8T/LeQIEXpAuRzfl7gd.png 17:15 nerzhul it's copy :) 17:17 nerzhul Krock, i fixed 6169 it's ready for a merge 17:19 Krock LGTM 17:24 Krock nerzhul, spotted a function you restyled a bit: https://github.com/minetest/minetest/pull/6169/files#diff-c2f90db5de8c33a259c27113939c63c5R1529 17:24 Krock nothing special about this part but there's an "else" case 17:25 Krock same functionality, but using "verticies" instead of "tangent_vertices" 17:27 Krock sounds a bit wrong to only re-style one part of it 17:31 nerzhul yeah it's more complicated the second part 17:31 nerzhul it's not only 1 loop 17:31 nerzhul go clion, do it instead of myself 17:32 nerzhul you are exact it's same loop 17:33 Krock :P 17:33 nerzhul done 17:33 Krock s/exact/right/ 17:34 nerzhul :p 17:37 nerzhul Krock, is this okay for you now ? 17:38 Krock already approved but the other devs should have the possibility to look at it 17:38 nerzhul yeah i'm waiting tomorrow morning 17:40 Krock good, thanks :) 18:06 KaadmY Why is sun and night light (?) stored in each node? 18:06 KaadmY Instead of being a global value for the entire world? 18:07 sofar nerzhul: since we're going incompat to 0.5, why not see if we can make the worlds larger in XZ coordinates? 18:07 KaadmY sofar: why though? 18:07 nerzhul sofar, do it yourself haha, i will not doing that 18:07 sofar KaadmY: the game uses that to calculate dawn/dusk values which are in between 18:07 KaadmY It'd require a pretty large rework of the map format as well as the entire mapgen 18:07 nerzhul it's the biggest change 18:07 KaadmY sofar: it's global though 18:07 KaadmY Not per-node 18:08 KaadmY Lemme check more 18:08 Krock we're breaking the proto compat - yet. not sure if changing the map format is a good idea 18:08 sofar not every node gets direct sunlight 18:08 sofar surface is just much more valuable than depth imho 18:08 nerzhul mapblock serialization is not compatible with new corridnates as it uses s16 :) 18:09 KaadmY Also seriously, why increase X/Z? 18:09 KaadmY It's already massive 18:09 sofar surface is just much more valuable than depth imho 18:09 sofar any player will confirm 18:10 sofar you could decrease the depth and not many players would complain 18:10 sofar not until you get to about 1024 or so 18:10 Krock I agree with KaadmY. I barely play outside of 2000m X/Z as the coordinates get hard to handle 18:10 sofar you barely play outside 100Y 18:10 sofar so surface is 20x more valuable 18:10 Krock for realms 18:11 sofar for reals 18:11 sofar if a protocol break is on the table, I would think this would be open for discussion 18:11 nerzhul protocol break != mapblock break 18:11 nerzhul but i really want to see comprssion algorithm change 18:12 nerzhul using zstd or lz45 18:12 sofar potato, potato 18:12 nerzhul lz4 18:12 nerzhul i use lz4 on my server since 2 years it's smooth and CPU thanks me :p 18:12 Krock potato compression algorithm? 18:13 nerzhul i prefetch ketchup hamburger :p 18:14 Krock SELECT taste FROM ketchup WHERE usecase LIKE `%hamburger%` 18:14 sofar derailing the discussion will only make it come back 18:15 Krock if we break the compatibility, then we should do it for real - which requires some pulls that improve the game largely 18:15 sofar that's not how reality works 18:16 sofar we don't magically have a bunch of hail mary patches lying around 18:16 Krock I know, that's why I'm not sure if we should consider map break already now 18:16 sofar celeron55 maybe :) 18:16 Krock s/maybe/definitely/ 18:17 nerzhul sofar, i don't have time for a such change i prefer to solve the performance bottleneck client side & add server side features like mobs 18:18 nerzhul i don't know if you look at the whole code but using v3f instead of v3s16 is not a simple change :p 18:18 * KaadmY would prefer real CSM 18:18 sofar optimize ABMs -> #1 performance issue 18:18 ShadowBot https://github.com/minetest/minetest/issues/1 -- GlowStone code by anonymousAwesome 18:18 nerzhul sofar, i don't think we can fix ABM more, the current ABM implementation is fast, the Lua modding usage is wrong, that's all 18:18 KaadmY LOL that issue has like 100 references 18:19 sofar a single ABM is causing my server over 95% of it's CPU usage 18:19 nerzhul i have some ideas of Lua calls which can permit to solve some lua bottlenecks, for example TNT explosion should be in core to manage node explosion spreading over loop time easily 18:19 nerzhul it's easy if it's just a bad ABM 18:19 nerzhul which ABM is this ? 18:19 sofar lava cooling 18:19 Krock well, it would be nice to speed up the ABMs but the way it works, there have to be this many loops and node lookups 18:19 nerzhul the dirt/grass ABM is consuming too 18:19 sofar the only abm on my server actually 18:19 nerzhul you don't have dirt/grass ABM ? 18:19 sofar nope 18:19 nerzhul lava cooling is too heave 18:20 sofar needed for gameplay 18:20 nerzhul find the generic algorithms make them core side lua calls 18:20 sofar no other way of doing it still 18:20 nerzhul i hope you can provide some nice PR i don't see PR from you in core since a long time and it seems you have some needs, then code ! 18:20 Krock caching of the affected nodes would be an option 18:20 sofar building up some energy atm 18:20 sofar house build is starting tomorrow 18:21 nerzhul Krock, it's not as simple as that 18:21 sofar still spending a lot of time on building stuff atm 18:21 nerzhul caching can be performance painful is caching map increase 18:21 nerzhul i think we should have specific unittests to permit performance analysis 18:22 nerzhul i don't know how but when i will need it i will add some unittests to call code parts isolated to run valgrind/callgrind on them 18:24 sofar I'm thinking ABM's can be optimized one step further 18:24 nerzhul how ? 18:24 nerzhul the ABM processing is not the biggest usage in core it's the Lua part on ABM run 18:24 sofar if the nodes for the ABM are not present in a mapblock, and the mapblock hasn't changed since last run, there is no need to check again 18:25 sofar it's not the lua that is the problem 18:25 sofar the ABM core loop is what is consuming 95% of my server's CPU 18:25 sofar even though there is NO lava anywhere 18:25 sofar it's just the abm loop going over all the mapblocks trying to find lava nodes 18:25 nerzhul maybe we should index which nodes content_t are present in the mapblock 18:26 nerzhul if node is not present it can prevent looping over it 18:26 KaadmY There should be "related" ABMs or something 18:26 sofar afk 18:26 KaadmY That are called when nodes are placed 18:26 KaadmY Or dug, like leaves 18:38 paramat increase XZ dimensions .. absolutely not, not yet anyway with our severe dev shortage, we're not going to break map format 18:39 paramat players love the depth of MT and the height that allows stacked realms, it's just as valuable as width and actually makes more interesting things possible, width is usually just more of the same 18:42 paramat oh, freeminer has an ABM optimisation that may be worth looking at (if it's any good) 18:45 paramat the lavacooling ABM runs very frequently, maybe we can reduce the interval more 18:45 paramat eek it's still at interval 1s, i'll change that to 2 18:45 octacian paramat: You know, here's another reason why "real" realms could be better. The game could be configured so that clients would only have to load mods and other data for the particular realm. Otherwise, it could get really heavy if there's a large amount of differences between realms. 18:47 paramat sounds like sending a player to a different server, it's been discussed a lot and there seems to be issues. stacked levels are not meant to be a replacement for 'dimensions' and are just as 'real' 18:48 paramat i'm saying have both if possible, it isn't a choice 18:51 octacian paramat: That clears things up a bit. I'd love the possibility of having both stacked realms and "real" dimensions then 18:54 sofar stacked realms are proof that more surface is needed 18:54 rubenwardy ^ 18:54 rubenwardy stack realms seem to be a work around 18:55 rubenwardy that cause lighting issues 18:55 rubenwardy skylands? Far enough 18:55 rubenwardy nether/hell? Fair enough 18:55 sofar I'm not discounting the complexity of the change, I'm saying that it's *needed* and it will always remain a heated debate problem 18:55 rubenwardy because it's okay for the player to come accross those 18:56 sofar nether is essentially a biome imho 18:56 rubenwardy agreed 18:56 rubenwardy but it's not that important to me 18:56 rubenwardy so I'll butt out now :P 18:59 nerzhul we have ABM optimization like freeminer since 0.4.16 if i remember 18:59 nerzhul multiple maps in a single server can be nice 19:00 nerzhul oh nice 19:01 nerzhul i reduced TileSpec operator load 4 times by using a shared_ptr, nice 19:02 nerzhul the lifetime of the object is correctly controlled 19:02 nerzhul Krock, https://lut.im/bcqmwee1xu/cTwtptY5tRuS9lp0.png becomes https://lut.im/bcqmwee1xu/cTwtptY5tRuS9lp0.png 19:02 nerzhul 10 times, not 4 times 19:03 Krock nerzhul, 2nd unique link please 19:03 nerzhul Krock, i don't understand 19:03 Krock you proved that 14881832 == 14881832. it's the same image URL 19:03 nerzhul oops 19:04 nerzhul before: https://lut.im/RGkiJqQb8T/LeQIEXpAuRzfl7gd.png 19:04 nerzhul the Ir is the relevant metric here 19:04 nerzhul it's the consumed time 19:04 Krock wow amazing. 19:05 nerzhul the change is simple 19:05 Krock and I thought the compiler would know the important tricks 19:05 nerzhul std::vector frames; => std::shared_ptr> frames = nullptr; 19:05 nerzhul compiler does memcpy the non trivial object in all cases in release mode too 19:05 nerzhul here compiler copy the shared_ptr 19:05 nerzhul int + sizeof(ptr) copy 19:06 Krock lovely 19:06 nerzhul instead of 4 to 16 * sizeof(FrameSpec) copy (Framespec = 3 * sizeof(ptr) + int) 19:06 nerzhul i publish the patch in a secodn pr later (depending on previous pr) 19:09 paramat stacked realms are a more interesting way to get more surface, and it can be different types of surface: netherworlds, floatlands, alien planets, moons, dimensions, none of those make sense displaced horizontally 19:09 Krock would like to see that :) gtg now 19:09 paramat larger world is not really needed, just a few have a non-essential desire mostly due to being used to MC 19:11 paramat no-one has run out of surface area or even got close to that, even with one level 19:19 VanessaE paramat: the problem with your idea is light propagation, and keeping users from being able to move from one realm to another without e.g. a teleporter or something 19:20 VanessaE (except maybe from base terrain to floatlands or something) 19:28 paramat those can be solved 19:28 VanessaE I'm sure. 19:28 paramat i have ideas for vertical travel 19:28 VanessaE there's a better idea though, 19:28 VanessaE multiple worlds, multiple instances 19:29 VanessaE with a teleporter or other maguffin to move between them while in-game 19:29 paramat in which the vertical travel itself is an adventure and a challenge, much more interesting than teleporting 19:30 VanessaE well that's fair, if you're moving between say base terrain and float lands. 19:30 VanessaE but for example nether, you're not supposed to be able to get there without a teleporter portal 19:31 paramat well for a MC nehter, but if MC had the vertical height, nether would have been a hell realm physically below 19:31 paramat *nether 19:31 VanessaE but what I meant by multiple-worlds-multiple-instances is, think of the 5 servers I run right now. Suppose there were a mod I could install in all of them that would let a player "teleport" to another world, without them having to exit to the menu, select the other world, and manually connect with username/pw 19:31 paramat travelling to it would be more interesting too 19:32 paramat yeah, it's being discussed 19:32 VanessaE I think in MC you'd use a linking book for that, but in MT I think something more akin to Sokomine's travelnets are more appropriate. 19:34 VanessaE I think this is a much better idea than multiple stacked "realms" because not only does it avoid the problem of losing vertical space, but also it allows you to spread the CPU load without clustering or anything special. 19:36 paramat we don't have to choose between the 2, and the dimensions idea has been discussed a lot and has issues (and importantly, doesn't exist yet) 19:38 VanessaE dimensions? 19:39 VanessaE you mean as in map size? 19:39 VanessaE screw that. leave the map the way it is now. 19:39 VanessaE there's no reason to increase the map size if you do multiple-worlds-multiple-instances. for that, all you'd need is a way to send a player to another server without an exit to the menu. 19:40 rubenwardy dimensions -> multiple maps on a server 19:40 VanessaE rubenwardy: no 19:40 VanessaE not on A server 19:40 VanessaE on MANY servers. 19:40 rubenwardy errr no 19:40 VanessaE one minetest instance, one realm/world/dimension/whatever 19:40 VanessaE that's what i'm proposing 19:40 rubenwardy dimensions is another co-ordinate for the map 19:40 VanessaE I'm* 19:40 rubenwardy it's been discussed at length 19:40 VanessaE yeah I know, and honestly it's a stupid idea 19:40 VanessaE I'm sorry, it is. 19:41 rubenwardy not a feature I care about, tbh 19:41 VanessaE by doing it that way you make it impossible to adapt an existing map to be able to have other "realms" 19:41 VanessaE a "realm" should just be another random minetest server instance with a suitable world, but of course not announcing to the master server list 19:42 VanessaE the client just needs something user-readable that makes it evident where they'll be connecting to if they sign off one day, and come back in some other time. 19:43 sofar server redirection 19:43 sofar MC does this and it works really well 19:43 VanessaE sofar: in essence, yeah, but done in such a way that it looks to the user like they're being transported magically :) 19:44 sofar you'd still have a loading screen 19:44 sofar which is fine, I guess 19:44 VanessaE yeah but don't make it look like a server sign-on screen 19:44 sofar the functionality is the thing that's needed 19:44 VanessaE make it look more... I dunno...less clinical 19:58 Hijiri having the maps on separate servers will make sharing mod data between them much more of a pain though 19:59 Hijiri at least, if it's meant to fulfill the "dimensions" feature 19:59 Hijiri each map would also cost a lot more than if they were on the same server 20:00 Hijiri so it would be harder to have a mod that adds new dimensions or whatever you want to call them during gameplay 20:00 VanessaE http access? 20:00 Hijiri what about http access? 20:00 VanessaE use curl/http to share said data? 20:01 Hijiri I mean when the servers need to share data that they can also all modify 20:01 Hijiri a simple example would be player achievements, they could get an achievement on any world 20:01 Hijiri or a more problematic example could be a faction system 20:01 VanessaE that plus player inventories is a question, yeah 20:02 Hijiri a team leader could kick a player on one server while the player is doing stuff using the faction on another 20:02 VanessaE but if you can send a player to another server, surely there should be a way to send this "shared" data along with the new connection 20:03 Hijiri there will be cases where all servers need to be able to modify a player's data, not just the one with the player online right now 20:03 Hijiri and there might be data not associated to a specific player at all 20:03 VanessaE but all of that is somewhat less relevant at the moment 20:03 Hijiri I thought this was all hypothetical 20:03 VanessaE the first goal should be getting the player transported to the other server. 20:04 VanessaE worry about their inventory or achievements or whatever later. 20:04 Hijiri assuming we take this approach for dimensions 20:04 Hijiri they could even be separate features, one for multiple maps per server and one for linking servers 20:04 VanessaE well if "dimensions" were implemented the way rubenwardy suggests, then it would be a fourth dimension to the map. 20:04 Hijiri where mods that want to use the worlds more tightly coupled could operate on the former thing 20:05 VanessaE i.e. multiple worlds on a single server instance 20:05 Hijiri VanessaE: that's what I mean by multiple maps per server 20:05 VanessaE meaning such things wouldn't be an issue at all. 20:05 VanessaE but doing that doesn't allow you to spread the load 20:06 Hijiri well, one server per map also adds a lot of overhead if you want a mod to be able to add new worlds 20:07 Hijiri I guess you could shut down a server with no players and only restart it when a player tries to go to it 20:07 Hijiri then the worst case would be one server thread or process per online player 20:07 VanessaE can't do that. 20:08 VanessaE then the server won't be able to do things like keep technic machines running, or furnaces cooking, or other active things 20:08 VanessaE (think world anchors) 20:08 Hijiri right 20:08 Hijiri but maybe that would be an acceptable compromise to not need to have 1000 server processes running? 20:08 Hijiri (if 1000 worlds are made) 20:09 VanessaE why would it matter how many server instances are running? 20:09 Hijiri Or you could mark worlds as not being always online 20:09 Hijiri I guess it doesn't matter that much 20:10 Hijiri I don't know what the memory overhead of a server instance with no players on it is so I can't say anything specific about memory use or anything 20:11 paramat VanessaE by 'dimensions' i don't mean a 4th co-ordinate (which is silly), just either moving players between servers or having multiple 'worlds' in one world database, these seem to be the 2 ideas currently discussed 20:11 VanessaE it's pretyt low on light-weight servers. 20:11 VanessaE paramat: ok so basically more or less what I said. 20:11 VanessaE one world/dimension per server instance is the best. :) 20:12 Hijiri I don't like that modders will have to deal with concurrency problems 20:12 paramat yeah what you suggest :] 20:12 Hijiri if Minetest exposes a good transactional memory API then that might be enough 20:13 Hijiri but otherwise it won't really be a substitute for multiple maps on the same server 20:14 Hijiri And I have a feeling that such an API is something that will take either a long time or forever to get implemented 20:14 Hijiri I guess it could just be a thin wrapper over sql 20:15 Hijiri and redis supports transactions too 20:16 Hijiri you would also need a messaging API between servers 20:16 Hijiri but if you're sending players across then maybe that is something that would come naturally? 20:22 sofar keeping players in different dimensions on the same server seems like a bad idea for performance 20:23 sofar I think you'd want to make them connect to a different IP address even based on GEO 20:23 Hijiri what if the players want to meet each other 20:23 sofar just an option, of course 20:24 paramat can anyone consider #6167 ? quite simple mapgen stuff 20:24 ShadowBot https://github.com/minetest/minetest/issues/6167 -- Mgv7: Add 'mount_zero_level' parameter by paramat 20:24 sofar but spreading the load to different physical servers makes sense 20:24 Hijiri I don't think players in different dimensions on the same server is significantly worse than if they are 500 nodes away from each other on one dimension, but I guess it's worse than if you had the dimensinos on separate servers 20:24 Hijiri but implementing multiple dimensions within a server I don't think on its own will make a server support less players than before 20:25 Hijiri I mean, on average 20:26 Hijiri it's possible that dimensions would encourage players to all be in their own dimension, which would increase active block count 20:26 Hijiri it's possible now for players to go far away from each other, but you have to go through the pain of walking 20:26 Hijiri players to each be in their own dimension* 20:52 paramat ok #6167 is fairly trivial and internal to mgv7 so i'll merge later on my own approval, let me know if any objections :] 20:52 ShadowBot https://github.com/minetest/minetest/issues/6167 -- Mgv7: Add 'mount_zero_level' parameter by paramat 21:37 nerzhul wow #6171 has a nice side performance side effect. I passed from 1 FPS to 4 FPS when calgrind run 21:37 ShadowBot https://github.com/minetest/minetest/issues/6171 -- TileLayer: use shared_ptr for FrameSpec vector by nerzhul 21:41 paramat nice 21:43 nerzhul it's not playable but seeing it under callgrind shows an interesting benefit 22:41 KaadmY Is video::SColor (irr::video::SColor) clamped from 0 to 1 anywhere? 22:41 KaadmY Or can I safely overflow it 22:41 KaadmY (0 to 255 technically) 22:41 KaadmY Nope 22:41 KaadmY It's one byte each 22:45 paramat not sure 22:46 KaadmY I wonder how much performance loss I'll get if I use SColorf for passing around vertex colors in the final light/sunlight pass 22:46 KaadmY Instead of SColor 22:47 KaadmY paramat: is having a mapgen max height plateau possible right now without a custom Lua mapgen? 22:50 KaadmY Huh seems like all of the Irrlicht color types clamp from 0 to 1 range :( 22:53 sfan5 pretty sure SColor just stores those as u8 which makes any kind of invalid values impossible 22:54 KaadmY Yeah 22:54 KaadmY There's also video::SColorf, which according to Irrlicht, still only allows values from 0.0 to 1.0 22:55 KaadmY All I need is the ability to bleed alpha to an arbitrary value :( 22:55 KaadmY Hm 23:00 KaadmY Egh getting waaaaaaaay too much inaccuracy from mapping 1k+ to 0.0-1.0 23:00 sfan5 wat 23:01 sfan5 if you have value range around 1k why not just use u16? 23:01 KaadmY sfan5: can't 23:01 KaadmY SColor 23:01 KaadmY Which clamps 0-1 23:01 KaadmY I'm assuming anything along the line might also clamp 0-1 23:01 sfan5 in any case float should have enough bits for your usage 23:01 KaadmY Since OpenGL might also do it IIRC 23:02 sfan5 how are you mapping values? 23:02 KaadmY sfan5: I need to fit two floats in a 0.0 to 1.0 range 23:03 KaadmY Both floats are 0.0 to 1.0 though 23:03 KaadmY And I can't do binary stuff 23:03 sfan5 and how are you doing that 23:04 KaadmY https://gist.github.com/kaadmy/0ed16c4f12de1f3c19e811580ac60ac5 23:04 KaadmY Shitty method since accuracy is horrible 23:04 KaadmY But unless someone can think if a cleaner way I'm using it 23:08 KaadmY If both values have 2 digits of accuracy and the first is 0.0-0.5 it'll work 23:09 KaadmY Accuracy is really bad, wonder if it'll work 23:09 KaadmY Yeah a lot of accuracy is lost casting to a byte :| 23:09 KaadmY (Not surprising) 23:13 KaadmY LOL 23:13 KaadmY Apparently one of Irrlicht's features is that is has 5 video drivers to chose from 23:13 KaadmY D3D, OpenGL, Irrlicht's SW render, Burningsvideo SW render, and a null render 23:13 KaadmY So now if nothing is rendered, that's a "renderer" 23:17 KaadmY Are the actual color channels for vertices used for tinting nodes? 23:17 KaadmY Or is that texture-side 23:17 KaadmY I can reuse a color channel for artificial brightness 23:20 paramat a plateau hmm .. 23:21 KaadmY Yay node colors don't change the vertex color 23:21 KaadmY Hm no 23:21 KaadmY Yeah they do :( 23:22 paramat "Are the actual color channels for vertices used for tinting nodes?" the person to ask is 'juhdanad' who did a lot of work on colouring when he coded hardware colouring 23:22 KaadmY Yeah 23:22 KaadmY So I have RGBA, RGB is used 23:22 KaadmY So it's down to the alpha channel to store two numbers :| 23:22 KaadmY Can't use binary encoding 23:23 KaadmY Since it's cast when passing through Irrlicht, so I don't have a binary representation between the CPU side code and the shader 23:23 paramat see #4986 it might have some answers 23:23 ShadowBot https://github.com/minetest/minetest/issues/4986 -- Hardware node coloring by juhdanad 23:26 paramat mggv7 can be tuned with noise params to have completely flat plateaus at any height but there would be occasional mountains sticking up from it, but you can disable mountains 23:27 paramat that PR is where there were some changes to shader colour stuff (i don't understand it) 23:29 KaadmY Yeah 23:29 KaadmY Not related though 23:50 paramat https://github.com/minetest/minetest_game/issues/1852 oops 23:52 KaadmY > But I will probably change this to another function which can approximate the current lighting better. 23:52 KaadmY The problem, as you can see, is that the shader does not know the day and night light intensity, but their ratio (q). 23:52 KaadmY From #4986 23:52 ShadowBot https://github.com/minetest/minetest/issues/4986 -- Hardware node coloring by juhdanad