Time |
Nick |
Message |
00:44 |
|
Void7_ joined #minetest-dev |
01:20 |
sofar |
ugh, is there no way to intercept on_punch for an entity so I can play a death animation? |
01:22 |
sofar |
I guess I have to make it immortal and do all the damage calculations myself, then |
01:30 |
sofar |
enough procrastination, I need to write the movement code now :/ |
02:02 |
|
misprint joined #minetest-dev |
02:24 |
|
Void7_ joined #minetest-dev |
03:28 |
|
yasnothil joined #minetest-dev |
03:29 |
|
Zeno` joined #minetest-dev |
04:07 |
|
gregorycu joined #minetest-dev |
04:14 |
|
DI3HARD139 joined #minetest-dev |
04:24 |
|
est31 joined #minetest-dev |
04:57 |
|
Zeno` joined #minetest-dev |
04:59 |
gregorycu |
#4025 |
04:59 |
ShadowBot |
https://github.com/minetest/minetest/issues/4025 -- Fix for Main Menu uses a lot of CPU by gregorycu |
05:00 |
Zeno` |
people will complain that the clouds don't move as fast as the did before :D |
05:01 |
gregorycu |
I was actually more worried about the click-responsiveness |
05:01 |
gregorycu |
But even 5fps is fine |
05:01 |
est31 |
what bout making cloud movement not dependent on fps? |
05:01 |
gregorycu |
It's not |
05:01 |
gregorycu |
Clouds move at the same rate regardless |
05:01 |
gregorycu |
(I think the default for the setting in question is 20fps) |
05:01 |
Zeno` |
Yes, sorry est31 (I was being facetious) |
05:02 |
Zeno` |
*shrug* looks good to me |
05:02 |
est31 |
Zeno`, i didnt know it either :) |
05:02 |
Zeno` |
est31, heh |
05:07 |
Zeno` |
Physical id 0: +68.0°C (high = +80.0°C, crit = +100.0°C) :/ |
05:08 |
Zeno` |
85% |
05:08 |
Zeno` |
90C |
05:08 |
Zeno` |
I think I'll bbl |
05:08 |
gregorycu |
Zeno must have had the main menu open |
05:09 |
DI3HARD139 |
lol |
05:14 |
est31 |
an even better fix would be to make the clouds drawing use less cpu |
05:14 |
est31 |
if thats possible somehow |
05:16 |
gregorycu |
That's not the issue here |
05:16 |
gregorycu |
Well |
05:17 |
gregorycu |
The reason the CPU heats up is because drawing the clouds are so trivial |
05:17 |
gregorycu |
That not a lot of time is spent with graphics related operations |
05:17 |
gregorycu |
But instead, in code that prepared the cloud for drawing |
05:18 |
gregorycu |
Maybe we can make it better, for instance, cache the results of the perlin noise stuff rather than recalculating |
05:18 |
gregorycu |
But yeah, this brings the main menu in-line with the in-game-menu, so I think at the very least, we should do this |
05:19 |
est31 |
yeah +1 to the patch |
05:20 |
gregorycu |
I'm going through the issues tagged "Performance" to see if I can get rid of some easy ones |
05:23 |
sofar |
minetest.find_nodes_in_area_under_air never returns any nodes for me... weird |
05:25 |
sofar |
ahh silly me |
05:30 |
DI3HARD139 |
Im surprise CPU temps are high. My CPU is usually idling at the main menu |
05:31 |
gregorycu |
If you want to reproduce the bug, set your max_fps to be very large |
05:32 |
gregorycu |
I managed to make one CPU max out |
05:32 |
gregorycu |
With the patch, minetest uses ~0% CPU in main menu for me |
05:32 |
DI3HARD139 |
is around 300 good? |
05:32 |
gregorycu |
Make it 1000 |
05:32 |
DI3HARD139 |
thats what I currently have it set to. |
05:32 |
DI3HARD139 |
ok. checking now |
05:33 |
gregorycu |
It should use 100% of one core |
05:34 |
|
Zeno` joined #minetest-dev |
05:34 |
DI3HARD139 |
Only using roughly 80% atm |
05:35 |
gregorycu |
What's your FPS? |
05:35 |
gregorycu |
Surely not 1000 ? |
05:35 |
DI3HARD139 |
481 |
05:35 |
gregorycu |
Interesting |
05:36 |
DI3HARD139 |
constant. Thats using HDX256 though |
05:36 |
gregorycu |
Ahh ok |
05:36 |
gregorycu |
Basically, the more crap your graphics card is, the more CPU it will use |
05:36 |
gregorycu |
It's strange |
05:37 |
DI3HARD139 |
Thats OGL for ya. |
05:37 |
gregorycu |
Anyway, no need for massive FPS in main menu |
05:37 |
DI3HARD139 |
What GPU are you using? |
05:38 |
gregorycu |
HD 5700 |
05:38 |
gregorycu |
A model in that series, I can't remember which |
05:38 |
gregorycu |
The users reporting the issue were on laptops |
05:39 |
DI3HARD139 |
lemme get on my laptop. It has a Quadro 1000m |
05:40 |
gregorycu |
lol, you don't have to |
05:40 |
gregorycu |
But if you want, I'm not gunna stop you |
05:43 |
|
Hunterz joined #minetest-dev |
05:43 |
DI3HARD139 |
83% avg and 200fps |
05:44 |
gregorycu |
Do you have a fps_limit of 200? |
05:45 |
DI3HARD139 |
nope. I dont use FPS caps. Nor Vsync |
05:45 |
gregorycu |
Cool, if you make your fps_limit 20, you'll use next to no CPU |
05:45 |
Zeno` |
20? Wouldn't that be yucky to play? |
05:46 |
DI3HARD139 |
^ |
05:46 |
gregorycu |
lol |
05:46 |
gregorycu |
Not the main menu |
05:46 |
DI3HARD139 |
I like to maintain 60 if possible. Or if I have no choice 30 |
05:46 |
gregorycu |
In the main menu? |
05:47 |
gregorycu |
You're wanting to see the effect of decreasing the fps_max on the main menu, this is how :P |
05:47 |
gregorycu |
Or take my patch |
05:47 |
Zeno` |
oh, heh |
05:47 |
gregorycu |
I'm 99.9% certain my patch will fix the issue for the user |
05:48 |
gregorycu |
So, any investigation is for your own benefit DI3HARD139, unless you can +1 my patch that is |
05:48 |
Zeno` |
firefox is using 25% cpu! |
05:48 |
Zeno` |
sitting on the google homepage... no wonder my cpu is hotter than usual |
05:49 |
Zeno` |
Maybe I could limit its FPS somehow |
05:49 |
hmmmm |
[01:18 AM] <gregorycu> Maybe we can make it better, for instance, cache the results of the perlin noise stuff rather than recalculating |
05:49 |
hmmmm |
incredible |
05:49 |
est31 |
google uses you for mining bitcoins |
05:49 |
hmmmm |
perlin noise is still a bottleneck |
05:49 |
gregorycu |
hmmmm: Well, it is for the main menu cause it represents a significant chunk of CPU processing |
05:49 |
gregorycu |
In-game, probably less of a slice |
05:50 |
hmmmm |
this is a problem on android i take it? |
05:50 |
gregorycu |
It would be. But the issue was reported on laptops. |
05:50 |
DI3HARD139 |
Zeno': Have ya cleaned the heatsink out lately? |
05:50 |
hmmmm |
very interesting |
05:50 |
DI3HARD139 |
and changed the thermal compound? |
05:50 |
Zeno` |
DI3HARD139, about 20 minutes ago |
05:50 |
gregorycu |
#2226 |
05:50 |
ShadowBot |
https://github.com/minetest/minetest/issues/2226 -- Minetest main menu uses a lot of CPU |
05:50 |
hmmmm |
on PCs at least, main menu takes up 1% cpu if anything at all |
05:51 |
hmmmm |
but the real question is should anybody be working on optimizing this so close to release |
05:51 |
gregorycu |
Did you check my patch? I mean, the contents? |
05:51 |
gregorycu |
We don't have to merge this now |
05:52 |
Zeno` |
I'm not sure if that really classifies as an optimisation per se, but even if it is we don't have to stop work just because a release is imminent :p |
05:52 |
hmmmm |
oh |
05:52 |
hmmmm |
that's really sweet and simple |
05:52 |
hmmmm |
sure, i approve of it |
05:52 |
Zeno` |
me too |
05:52 |
est31 |
me too |
05:52 |
Zeno` |
quickest approval ever |
05:53 |
gregorycu |
\o/ |
05:53 |
hmmmm |
pause_fps_max is like 15 by default right? |
05:54 |
gregorycu |
20 |
05:54 |
hmmmm |
yeah ok |
05:54 |
hmmmm |
and later on we'll (i will or you if you really want to) optimize clouds |
05:54 |
gregorycu |
Sounds good to me |
05:55 |
hmmmm |
a large enough buffer could be generated once and looped around |
05:55 |
hmmmm |
nobody is going to notice |
05:55 |
gregorycu |
Something to keep in mind, if the user has fps_max set to something very high |
05:55 |
hmmmm |
like one 80x500 strip of noise |
05:55 |
gregorycu |
(And we don't take my change) |
05:55 |
gregorycu |
We'll still churn through a lot of CPU |
05:55 |
gregorycu |
Cause drawing the clouds in the GPU is trivial |
05:56 |
VanessaE |
hmmmm: weren't clouds once done exactly like that at one time? |
05:56 |
gregorycu |
But yeah, should be optimised |
05:56 |
hmmmm |
vanessae, not to my knowledge. |
05:56 |
Zeno` |
But... what about the people who like to watch the clouds for hours looking for new shapes and patterns? |
05:56 |
hmmmm |
i wonder if there's a way to loop around a scene node in irrlicht |
05:56 |
hmmmm |
or tile it |
05:57 |
hmmmm |
cloud_strip_size = |
05:57 |
hmmmm |
they can set it to a zillion if they want |
05:57 |
Zeno` |
could we just do a shader that makes nice smoke |
05:57 |
Zeno` |
I suppose people would miss the nice clouds |
05:58 |
hmmmm |
maybe we can bulk generate perlin noise and generate it as a texture |
05:58 |
hmmmm |
then use that texture as data for the shaders |
05:58 |
Zeno` |
might work |
05:58 |
nore |
anyway, even if we keep generating the clouds, but with caching, ot wouldn't be very expensive, would it? |
05:59 |
hmmmm |
i feel like this is getting way out of scope though |
05:59 |
gregorycu |
Yeah |
05:59 |
hmmmm |
it's supposed to be a quick simple optimization |
05:59 |
gregorycu |
I'm all for a complicated optimisation if profiling indicates we would get significant gain |
05:59 |
gregorycu |
Clouds are only a major problem in the main menu |
06:00 |
gregorycu |
I can take a look at clouds later to see if the actual game would benefit |
06:01 |
Zeno` |
why use perlin noise for the menu clouds at all? |
06:01 |
hmmmm |
what should be used instead..? |
06:01 |
hmmmm |
perlin noise is not a heavy operation, the cloud generator is just doing it wrong |
06:01 |
Zeno` |
they're just squares ... surely any PRNG could do the job of queuing a new cloud or two that will emerge next |
06:02 |
hmmmm |
it takes under 1 millisecond to generate 80x80 of the data |
06:02 |
Zeno` |
oh, well that's nothing |
06:05 |
hmmmm |
yeah |
06:05 |
hmmmm |
i have an idea for a good algorithm to do clouds (and more generally all kinds of smoke) with shaders |
06:06 |
hmmmm |
it's just a matter of asking, do the players want that or do they want the characteristic clouds of minetest that they're used of |
06:07 |
est31 |
well in the worst case we add an option for the legacy clouds |
06:07 |
est31 |
in fact we do require this as shaders are optional |
06:09 |
hmmmm |
how do video games usually implement clouds? |
06:09 |
hmmmm |
i'm wondering if using perlin to generate them is overboard |
06:16 |
DI3HARD139 |
They are usually particle shaders. |
06:20 |
Zeno` |
c64, amiga etc used to use just normal random numbers (the clouds are really just an oversized starfield if you look at them in a certain way) |
06:21 |
Zeno` |
big blobs instead of points (or balls) |
07:02 |
|
jin_xi joined #minetest-dev |
07:11 |
|
blaze joined #minetest-dev |
07:13 |
jin_xi |
est31: so i have a bad feeling about that pathfinder PR. it got merged w/o much discussion and does a controvesial thing, and i wonder if thats gonna cause headaches for some after release |
07:15 |
jin_xi |
its pull no 2651 and the issue is 3453 |
07:24 |
nore |
~tell paramat maybe merge #3907 since freeze is today... |
07:24 |
ShadowBot |
nore: O.K. |
07:25 |
nore |
hmm, interesting, ShadowBot doesn't links PRs when you use ~tell |
07:27 |
gregorycu |
#3453 |
07:27 |
ShadowBot |
https://github.com/minetest/minetest/issues/3453 -- minetest.find_path returns extremely bloated path |
07:29 |
|
bugzapper joined #minetest-dev |
07:34 |
|
Zeno` joined #minetest-dev |
07:36 |
|
Krock joined #minetest-dev |
07:36 |
Zeno` |
will merge #4025 shortly (3 approvals) |
07:36 |
ShadowBot |
https://github.com/minetest/minetest/issues/4025 -- Fix for Main Menu uses a lot of CPU by gregorycu |
07:37 |
gregorycu |
Thanks Zeno |
07:37 |
Zeno` |
np |
07:41 |
Zeno` |
done and done and done |
07:42 |
Zeno` |
and CPU is still on 27C :D |
07:42 |
gregorycu |
Hooray! |
07:43 |
gregorycu |
What happens with the bug? |
07:43 |
Krock |
roast and eat it |
07:43 |
gregorycu |
(Shouldn't github close it automatically?) |
07:45 |
Zeno` |
oh.. I'll close it |
07:46 |
Zeno` |
it probably would close it if I used github to commit (I dunno... don't trust github heh) |
07:46 |
|
Megal_ joined #minetest-dev |
07:46 |
gregorycu |
Ahh ok |
07:47 |
gregorycu |
Yeah, i didn't have |
07:47 |
gregorycu |
"Fixed #blah" in the commit message |
07:47 |
gregorycu |
Only the PR |
07:47 |
Zeno` |
Those github "merge now" buttons scare me |
07:47 |
Zeno` |
I think I used it once and it went all FUBAR |
07:49 |
est31 |
they have been changed since |
07:49 |
est31 |
github introduced a merge + squash feature |
07:50 |
est31 |
basically the same thing we did before all the time |
07:50 |
est31 |
no merge commit created |
07:50 |
est31 |
and c55 has enabled the feature by default, without a way to not do it |
07:51 |
Krock |
So, updated #4016 with est31's comments |
07:51 |
ShadowBot |
https://github.com/minetest/minetest/issues/4016 -- tile.cpp: Automatically resize overlaying texture to base dimensions by SmallJoker |
07:52 |
Zeno` |
est31, so it will work as expected now? |
07:52 |
est31 |
Zeno`, yes, try it :) |
07:52 |
* Zeno` |
looks at the green button in terror |
07:52 |
est31 |
:) |
07:52 |
Zeno` |
heh |
07:52 |
est31 |
https://github.com/blog/2141-squash-your-commits |
07:53 |
est31 |
and its no april fools joke despite the date |
07:55 |
Zeno` |
I'll try it. Although I don't mind just typing it |
07:55 |
Zeno` |
gives me a chance to test etc |
07:55 |
Zeno` |
overly paranoid perhaps, but *shrug* |
07:56 |
Zeno` |
does it let me abort if I click it just as a test? |
07:56 |
est31 |
there is a second dialog before, you must do two clicks to merge a pr |
07:56 |
Zeno` |
ok, I'm willing to try it out in that case |
07:56 |
Zeno` |
next commit |
07:58 |
Zeno` |
It may have made committing nore's PR last night easier (git am didn't work) |
07:58 |
Zeno` |
I had to branch from an earlier commit, squash, rebase and apply to master... kind of annoying |
07:59 |
Zeno` |
but github was saying it would merge no problems so maybe it does fancy stuff |
08:02 |
gregorycu |
I'm looking at #3511 |
08:02 |
ShadowBot |
https://github.com/minetest/minetest/issues/3511 -- Setting an item's range high results in poor performance |
08:03 |
est31 |
gregorycu, thats because we dont do real ray tracing |
08:03 |
gregorycu |
Yeah |
08:03 |
est31 |
we need to do some improved version of bresenham's algorithm or something |
08:03 |
gregorycu |
We basically get every node in a octant, and then see if we collide with it |
08:03 |
est31 |
yeah |
08:04 |
est31 |
pretty inefficient |
08:04 |
gregorycu |
That's reasonably intensive |
08:04 |
Zeno` |
oooh, I've done lots of modified bresenham's. I even modified it to rotate and zoom pixmaps heh |
08:04 |
gregorycu |
What I suggest that, as a stop-gap measure, when the wield distance is over some threshold, like 20, we precull nodes where the angle to the node is greater than the camera angle |
08:05 |
gregorycu |
It's not perfect, but for large draw distances, it should significantly improve performance |
08:05 |
est31 |
yeah |
08:05 |
Zeno` |
for large draw distances wouldn't error be more applicable anyway (so culling shouldn't make all that much negative difference) |
08:06 |
gregorycu |
I'm about to test it out |
08:06 |
gregorycu |
How I've implemented it, for nodes near the user, no culling happens, for nodes far away, culling occurs |
08:07 |
gregorycu |
And this logic only kicks in when the tool has a large wield distance |
08:07 |
gregorycu |
So yeah, as you say Zeno, shouldn't make any difference to correctness |
08:09 |
Zeno` |
seems like a valid conclusion |
08:23 |
jin_xi |
so im still trying out some stuff for particle collision overhaul: here is a greedy mesher making meshes used for collision detection. now trying to get it to make the right block at the right position. |
08:23 |
jin_xi |
http://imgur.com/ZAaYxlz |
08:23 |
Krock |
cool structure |
08:29 |
jin_xi |
so what i am wondering about is how to let particle systems keep track of map changes. just re-meshing every step is too slow |
08:30 |
jin_xi |
and for digging particles many particle systems actually use the same block, so sharing those would be nice |
08:31 |
jin_xi |
and i keep thinking that if these problems are solved this method of collision detection could be used for other stuff |
08:31 |
jin_xi |
avoiding all the issues with unfitting, non-rotating collision boxes |
08:51 |
gregorycu |
I can improve FPS from 22 to 38 |
08:51 |
gregorycu |
It's still pretty shit though |
08:53 |
jin_xi |
here is another thing i wonder about: irrlicht code comments say its meshmanipulator is not intended for use inside render loops, yet minetest does exactly that |
08:53 |
jin_xi |
https://sourceforge.net/p/irrlicht/code/HEAD/tree/trunk/source/Irrlicht/CMeshManipulator.h#l17 |
08:56 |
est31 |
no |
08:56 |
est31 |
we manipulate the meshes not inside render loops |
08:56 |
est31 |
we manipulate them in a separate thread even |
09:02 |
jin_xi |
oh ok, well thats good to know |
09:06 |
|
davisonio joined #minetest-dev |
09:16 |
gregorycu |
I was thinking about bresenham |
09:17 |
gregorycu |
But I'm not sure |
09:17 |
gregorycu |
I think the current implemention could be modified to scan an small octant, move the origin, then the next octant, move origin, next octant |
09:18 |
gregorycu |
With a little bit of overlap |
09:20 |
gregorycu |
Maybe I should attempt bresnham |
09:28 |
Zeno` |
gregorycu, on an unrelated project I profiled bresenham vs. floating point and the results were not compellingly different |
09:28 |
gregorycu |
What do you mean "floating point" |
09:28 |
Zeno` |
as long as there is an FPU (what doesn't have one these days?) then the difference is not great |
09:29 |
Zeno` |
just using floating point calculations instead of accumulating errors in integers like bresenham |
09:29 |
gregorycu |
Right |
09:29 |
Zeno` |
but, it depends of course how you optimise it... |
09:29 |
gregorycu |
bresenham isn't good enough though, at least, a simple implementation |
09:29 |
gregorycu |
It "misses" corners |
09:30 |
Zeno` |
it does? |
09:30 |
Zeno` |
mine doesn't |
09:30 |
Zeno` |
although it would (might) depend on distance |
09:30 |
Zeno` |
so you're correct |
09:31 |
gregorycu |
https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Bresenham.svg/300px-Bresenham.svg.png |
09:31 |
Zeno` |
the best thing about bresenham (and it might not even be applicable here) is the reduction down to 4 octants using reflection etc |
09:32 |
Zeno` |
oh you mean that... yeah |
09:33 |
Zeno` |
I thought you were referring to something else :) |
09:33 |
gregorycu |
bresenham basically increments the smaller of the x and y component |
09:33 |
gregorycu |
Right? |
09:33 |
Zeno` |
normally |
09:33 |
gregorycu |
And increments the other by 1, or if the error has built up, 2 |
09:33 |
gregorycu |
Or 0 and 1 |
09:33 |
gregorycu |
Sorry |
09:34 |
Zeno` |
but if you look at optimised versions not really |
09:34 |
Zeno` |
If I was in Windows I'd email you the papers I have |
09:34 |
Zeno` |
but you'll find them |
09:34 |
Zeno` |
unless you'd like me to reboot? |
09:34 |
gregorycu |
We don't have to be superfast here |
09:34 |
gregorycu |
Nah |
09:34 |
Zeno` |
I'll email them to you later in any case (unless you mind) |
09:35 |
Zeno` |
they're a good read |
09:35 |
gregorycu |
We are currently looking at 1million nodes for a tool with range of 100 |
09:35 |
gregorycu |
Looking at a node requires a lookup in a std::map |
09:35 |
Zeno` |
*nod* |
09:35 |
gregorycu |
So yeah, we don't need a superfast algo to improve that |
09:35 |
gregorycu |
Also have to be careful not to slow down tool range < 10 |
09:37 |
gregorycu |
I think I have an algo to try |
09:38 |
Zeno` |
The gregorycu super-algo! |
09:38 |
Zeno` |
(TM)(C)(R) |
09:38 |
|
lisac joined #minetest-dev |
09:38 |
Zeno` |
Google Cardboard support... |
09:39 |
Zeno` |
anyone feel like doing that? :) |
09:40 |
Zeno` |
ugh I jumped out of my tank and it destroyed my solar farm |
09:40 |
Zeno` |
err... sorry... meant to pm |
09:41 |
|
neoascetic joined #minetest-dev |
09:41 |
neoascetic |
Does feature freeze mean there will be new release soon? |
09:42 |
Zeno` |
neoascetic, yes |
09:42 |
neoascetic |
Great! Tried v7 just now and it looks absolutely awesome |
09:43 |
Zeno` |
I think paramat is aiming for 1-2 weeks of feature freeze (but don't quote me on that) |
09:47 |
neoascetic |
Meanwhile, I've put addition $10 on #3440 |
09:47 |
ShadowBot |
https://github.com/minetest/minetest/issues/3440 -- Client side Lua scripting |
09:47 |
neoascetic |
I know this is pretty small but anyway... |
09:50 |
gregorycu |
$10 how? |
09:51 |
gregorycu |
Ahh bounty |
09:51 |
gregorycu |
Nice |
09:52 |
|
Player_2 joined #minetest-dev |
09:57 |
gregorycu |
I've added $15 |
09:59 |
neoascetic |
awesome |
10:00 |
neoascetic |
I think this feature will be a huge improvement |
10:00 |
|
Foghrye4 joined #minetest-dev |
10:01 |
neoascetic |
AFAIK the only person who claim bounty from bountysource is me. My own bounties. Lol |
10:01 |
gregorycu |
And now mine, apparently |
10:08 |
Calinou |
>implying bounties are ever used |
10:10 |
gregorycu |
I don't think that was the implication |
10:10 |
gregorycu |
Hopefully people can back a few things |
10:11 |
gregorycu |
After we somehow give project admins access to the bounty claiming |
10:12 |
lisac |
nore: Are you there? |
10:18 |
Zeno` |
must have been nore's secret admirer |
10:34 |
|
davisonio joined #minetest-dev |
10:45 |
|
davisonio joined #minetest-dev |
11:00 |
|
davisonio joined #minetest-dev |
11:43 |
gregorycu |
hmm... I think I've done it |
11:44 |
gregorycu |
A 3d Bresenham thing |
11:45 |
gregorycu |
More like some sort of interpolation machine |
12:11 |
|
PilzAdam joined #minetest-dev |
12:27 |
|
Krock joined #minetest-dev |
12:30 |
|
Fixer joined #minetest-dev |
12:33 |
|
Amaz joined #minetest-dev |
12:40 |
gregorycu |
Fixer: Hello |
12:43 |
|
gregorycu_ joined #minetest-dev |
12:44 |
|
damiel joined #minetest-dev |
12:46 |
|
iangp joined #minetest-dev |
12:46 |
|
davisonio joined #minetest-dev |
12:51 |
|
DFeniks joined #minetest-dev |
13:26 |
|
millersman joined #minetest-dev |
13:32 |
Fixer |
gregorycu, ohi |
13:32 |
Fixer |
gregorycu, something interesting for me? %) |
13:33 |
Fixer |
gregorycu, jitter? 3770? |
13:33 |
gregorycu |
#3770 |
13:33 |
ShadowBot |
https://github.com/minetest/minetest/issues/3770 -- Fix superflous shader setting updates by ShadowNinja |
13:34 |
gregorycu |
Ahh, that thing |
13:34 |
gregorycu |
#3511 |
13:34 |
ShadowBot |
https://github.com/minetest/minetest/issues/3511 -- Setting an item's range high results in poor performance |
13:34 |
gregorycu |
That's what I'm looking at at the moment |
13:34 |
|
Zeno` joined #minetest-dev |
13:36 |
gregorycu |
Yeah, you can make code much faster by not doing calculations it seems |
13:36 |
Zeno` |
amazing :) |
13:44 |
Krock |
Rebased #3267 |
13:44 |
ShadowBot |
https://github.com/minetest/minetest/issues/3267 -- Standardize the menu button order and sizes by SmallJoker |
13:51 |
gregorycu |
This code is blisteringly fast |
13:51 |
gregorycu |
But buggy |
13:51 |
gregorycu |
And a real PITA to debug |
13:56 |
Zeno` |
sounds perfect! |
13:56 |
gregorycu |
Like 5 fps to 140 |
14:00 |
Zeno` |
really? |
14:01 |
gregorycu |
I think that was debug, so it doesn't really count |
14:01 |
gregorycu |
But yeah |
14:02 |
|
proller joined #minetest-dev |
14:02 |
|
davisonio joined #minetest-dev |
14:05 |
gregorycu |
Examining 1M nodes is indeed slower than examaning 400 |
14:09 |
|
Calinou joined #minetest-dev |
14:21 |
|
hmmmm joined #minetest-dev |
14:21 |
|
yasnothil joined #minetest-dev |
14:31 |
gregorycu |
*sigh* Everything was going so well, until it crashed |
14:38 |
|
kaadmy joined #minetest-dev |
15:04 |
|
Void7_ joined #minetest-dev |
15:06 |
* gregorycu |
is a happy chappy now |
15:08 |
gregorycu |
In release build, 250 fps, instead of 30 |
15:12 |
PilzAdam |
gregorycu, when using a tool with a high range? |
15:12 |
gregorycu |
Yeah |
15:12 |
gregorycu |
With a range of 100 |
15:13 |
gregorycu |
Range of 200 should be only 2 times slower than 100 |
15:13 |
PilzAdam |
what is the performance difference with a range 4 tool compared to a range 100 tool with your new code? |
15:13 |
gregorycu |
In terms of FPS? |
15:14 |
PilzAdam |
yep |
15:14 |
gregorycu |
Hard to tell... I'll try to figure out |
15:16 |
gregorycu |
lol |
15:16 |
gregorycu |
Give me a sec, for some reason holding a screwdriver results in better FPS than sand |
15:20 |
gregorycu |
Ok, so stone pick (range of 3) vs steel pick (range of 150) |
15:20 |
gregorycu |
Same FPS |
15:20 |
gregorycu |
~240 for me |
15:21 |
PilzAdam |
thats great |
15:21 |
gregorycu |
It goes from 220 - 240 no matter which tool |
15:21 |
PilzAdam |
we could give the creative hand in mt_game a larger range now |
15:22 |
gregorycu |
Well, I have to create a PR first |
15:23 |
gregorycu |
lol @ destroying things far in the distance |
15:23 |
gregorycu |
I can only tell cause the selection box is changing, it's so far away |
15:25 |
gregorycu |
I've very happy with this, and it only took me 8 hours |
15:25 |
gregorycu |
Time for a hot drink, bb in 10 min |
15:46 |
Zeno` |
a nice warm irish cream |
15:47 |
gregorycu |
I see what you did there |
16:01 |
|
rubenwardy joined #minetest-dev |
16:04 |
gregorycu |
#4027 |
16:04 |
ShadowBot |
https://github.com/minetest/minetest/issues/4027 -- Make getPointedThing faster by gregorycu |
16:05 |
gregorycu |
PilzAdam: You can have a play with that PR if you want to test your creative hand |
16:07 |
|
davisonio joined #minetest-dev |
16:09 |
|
louiloui joined #minetest-dev |
16:17 |
Krock |
gregorycu, so how much better is this change than before? |
16:17 |
|
Void7_ joined #minetest-dev |
16:18 |
gregorycu |
With the old code, and a tool with wield range of 100, the FPS for me was 30 |
16:18 |
gregorycu |
Now it's 240 |
16:19 |
Krock |
looks a bit too complex for me :< |
16:20 |
gregorycu |
It's a little math heavy |
16:20 |
gregorycu |
Oops, I meant to rename a variable before commiting |
16:21 |
gregorycu |
Zeno`: Did you want me to fix up aabb3f box = *i; while I'm at it? |
16:23 |
gregorycu |
Krock: The old code used to check an octant (which is like a quadrant but in 3d). It would try and intersect distance ^ 3 nodes |
16:23 |
|
jin_xi joined #minetest-dev |
16:24 |
gregorycu |
My code starts near the camera and moves away, selecting nodes likely to intersect |
16:24 |
Zeno` |
gregorycu, I just wondered why you were making copies of objects when copies are not needed |
16:25 |
gregorycu |
yeah, the old code did it |
16:25 |
Zeno` |
silly old code :( |
16:25 |
gregorycu |
I was trying to not change that code so the diff would line up, but it's fucked anyway |
16:25 |
gregorycu |
I'll amend it |
16:25 |
Zeno` |
lol, cool :) |
16:30 |
Zeno` |
gregorycu, I haven't tested but it looks great |
16:31 |
Zeno` |
very neat solution |
16:32 |
gregorycu |
Thank you |
16:47 |
|
turtleman joined #minetest-dev |
17:03 |
nore |
gregorycu: did you test with doors though? |
17:03 |
gregorycu |
lol doors? |
17:03 |
nore |
Their selection box is bigger than the node |
17:04 |
nore |
two nodes, to be more precise |
17:04 |
gregorycu |
What's the item name? |
17:04 |
Zeno` |
yeah, they sang great songs like "Touch Me" and "Gloria" |
17:05 |
nore |
doors:door_wood iirc |
17:06 |
gregorycu |
No problem with doors it seems |
17:06 |
Zeno` |
Well, except that Jim Morrison died |
17:07 |
gregorycu |
Are doors nodes or entities? |
17:07 |
nore |
gregorycu: oh, interesting but surprising |
17:07 |
gregorycu |
Yeah, it selects the door, doesn't select things behind the door |
17:07 |
Zeno` |
nore, I thought you were going away for a week |
17:08 |
nore |
they are nodes, but how recent if your minetest_game? |
17:08 |
gregorycu |
A door is apparently two things |
17:08 |
gregorycu |
door_wood_t and door_wood_b |
17:08 |
nore |
Zeno`: I am, I am using my phone ;) |
17:08 |
Zeno` |
haha, addicted :) |
17:08 |
gregorycu |
Probably not that receint |
17:08 |
nore |
gregorycu: then this is an old mtg |
17:09 |
nore |
Zeno`: maybe :D |
17:10 |
nore |
(well, I am visiting Sweden right now, but since I have nothing to do on the evening :)) |
17:10 |
gregorycu |
I'll get latest minetest_game |
17:14 |
gregorycu |
Yeah |
17:14 |
gregorycu |
I broke doors |
17:14 |
gregorycu |
FML |
17:14 |
gregorycu |
Well, how large can a selection box be? |
17:16 |
gregorycu |
Who needs door anyway, amirite? |
17:17 |
nore |
I don't know, they could be quite big |
17:18 |
nore |
but I think it is reasonable to disallow selection boxes to get more than one node away |
17:18 |
gregorycu |
1 is just some value of n |
17:19 |
gregorycu |
I think this is already broken, but less obviously so |
17:19 |
nore |
or even to disallow them to be bigger than the node, with some kind of way to make them bigger (with a ghost node of something like that) |
17:19 |
nore |
something like, a ghost node saying "look at that node instead of me" |
17:20 |
gregorycu |
Or I can just special case for doors, and have it always check one node below |
17:20 |
nore |
sofar: your opinions on that? (since it was you who rewrote doors...) |
17:21 |
nore |
hmm, then maybe a callback to say to the engine that it should check in some direction too |
17:22 |
nore |
and add that to the doors code |
17:22 |
nore |
(new clients wouldn't be compatible with old servers though) |
17:24 |
gregorycu |
Well, my special casing works |
17:24 |
nore |
did you try beds too? |
17:25 |
gregorycu |
Of course not, I'm not a good developer |
17:25 |
gregorycu |
I'll check out beds |
17:25 |
nore |
(more special cases I guess) |
17:25 |
nore |
so, I think just one node away is reasonable |
17:26 |
nore |
with documentation to go with it |
17:28 |
gregorycu |
Yeah, beds are also broken |
17:28 |
gregorycu |
What prevents me from building over the top of a bed? |
17:28 |
gregorycu |
I mean, the part that isn't the node |
17:29 |
nore |
So, do you think one node in each direction is a good compromise? What does it give on performance? |
17:29 |
nore |
gregorycu: there is another, not pointable but not buildable_to node |
17:30 |
gregorycu |
Maybe these things should be entities instead |
17:31 |
gregorycu |
I can do 1 in every direction, the perf hit won't be too bad |
17:31 |
nore |
no, entities are not a good idea for static things |
17:32 |
nore |
There are a lot of problems with entities |
17:32 |
sofar |
ideas? he broke it! ;) |
17:33 |
nore |
Including /clearobjects, the maximum number of static entities per block, and a lot of other things |
17:34 |
nore |
sofar: well, what do you think is better: keep his PR and fix doors and beds, or add the one-node-away check? ;) |
17:34 |
nore |
(Which would cost some performance though, even if I think it wouldn't be that much) |
17:34 |
|
millersman joined #minetest-dev |
17:35 |
gregorycu |
Ok, the one node thing works |
17:35 |
gregorycu |
If that's the rule |
17:35 |
nore |
I think the one-node-rule wouldn't break any mods |
17:35 |
gregorycu |
hmm... |
17:35 |
nore |
And it wouldn't cost too much (just a factor 7) |
17:35 |
gregorycu |
This must be broken already |
17:36 |
nore |
Why do you say that? |
17:37 |
gregorycu |
Cause I know how the old logic used to work |
17:39 |
nore |
Ah, and what was the problem? |
17:40 |
gregorycu |
The old code used to do the +1 trick |
17:41 |
gregorycu |
The problem with the old code |
17:41 |
gregorycu |
Well |
17:41 |
sofar |
how would we fix doors and beds? sorry, I missed the proposed change |
17:41 |
gregorycu |
Don't worry about doors and beds, the amendment will work |
17:41 |
* sofar |
still confused, has espresso |
17:42 |
gregorycu |
nore: Do you know what a quadrant is? |
17:42 |
sofar |
gregorycu: you could even optimize it |
17:42 |
sofar |
gregorycu: 1 node up is logical |
17:42 |
nore |
gregorycu: yes |
17:42 |
sofar |
due to "visual_size" |
17:42 |
gregorycu |
sofar: beds are one node across |
17:42 |
sofar |
hmm, yes |
17:42 |
sofar |
but never down |
17:43 |
gregorycu |
sofar: That means I can optimise away 1 of 8 |
17:43 |
gregorycu |
nore: Do you know what an octant is? |
17:43 |
nore |
gregorycu: yes too |
17:44 |
nore |
sofar: the proposed change is to allow nodes to have a selection box extending up to one node away |
17:44 |
gregorycu |
nore: Awesome. The old code would test an entire octant for things the player may be pointing at |
17:44 |
sofar |
that's fine |
17:44 |
sofar |
selection boxes are client-side things |
17:44 |
nore |
Yeah, that was what I thought |
17:44 |
gregorycu |
nore: So, if the tool had a range of 100, it would search 100 * 100 * 100 nodes |
17:45 |
nore |
But, I was unable to make that break doors (although I tried hard, because I thought it would) |
17:45 |
nore |
gregorycu: bad for performance, indeed |
17:45 |
gregorycu |
Looking at the code, it ensures that the octant also includes slightly more than 1/8th |
17:45 |
gregorycu |
More like 101 * 101 * 101 |
17:46 |
nore |
Oh, that's why it worked |
17:46 |
gregorycu |
Yeah |
17:46 |
gregorycu |
So yeah, 1 million nodes are checked |
17:46 |
nore |
And that means that selection boxes extending further that one node were also broken |
17:46 |
gregorycu |
Yes |
17:46 |
nore |
So we're not breaking anything :) |
17:47 |
gregorycu |
Correct |
17:47 |
* nore |
likes it |
17:47 |
gregorycu |
The other thing we could do is store a list of nodes with large selection boxes |
17:47 |
gregorycu |
Or whatever, some structure |
17:47 |
gregorycu |
And explicitly test them |
17:48 |
nore |
hm, I don't know what the best would be |
17:48 |
gregorycu |
Probably slower than just increasing the scope of checking |
17:48 |
nore |
I think so too |
17:48 |
nore |
Increasing the scope looks like a good idea to me |
17:49 |
nore |
Best way would also probably be to first check the intersection on the main line |
17:49 |
nore |
And then, check the oversized selection boxes that are a bit away |
17:50 |
nore |
Using the node that was first found to reduce the number of checked nodes |
17:50 |
gregorycu |
Checking a node isn't too slow |
17:50 |
gregorycu |
Just when there are a million of them... |
17:52 |
nore |
:D |
17:52 |
gregorycu |
Bed time for me |
17:52 |
hmmmm |
I'm confused |
17:52 |
hmmmm |
isn't this hit detection for particles? |
17:53 |
hmmmm |
particles are usually very small and unlikely to hit more than one node at a time |
17:53 |
nore |
hmmmm: no, it is getPointedThing |
17:53 |
hmmmm |
instead of an intersection of several polygons, can't it be a line instead? |
17:54 |
hmmmm |
that's the smae thing |
17:54 |
hmmmm |
they're both casting rays |
17:54 |
hmmmm |
how is this slow? |
17:58 |
nore |
hmmmm: what happens is that the current code checks the whole octant |
17:58 |
nore |
Instead of just checking the casted ray |
17:59 |
nore |
Gtg, bbl |
17:59 |
hmmmm |
by octant you mean 2x2x2 cluster of nodes? |
18:01 |
jin_xi |
moar like distance^3 |
18:01 |
hmmmm |
doesn't make sense to me, i should probably look at what the code is actually doing.. |
18:02 |
|
turtleman joined #minetest-dev |
18:03 |
|
DI3HARD139 joined #minetest-dev |
18:09 |
|
davisonio joined #minetest-dev |
18:15 |
kaadmy |
long range tools? :] |
18:16 |
|
electrodude512 joined #minetest-dev |
18:16 |
Krock |
Wuzzy (IIRC) wrote a teleproter stick with a huge range of pointing a node |
18:16 |
Krock |
as destination location |
18:16 |
|
Void7 joined #minetest-dev |
18:52 |
* sofar |
scratches head and wonders how to get a handle on INodeDefManager inside pathfinder.cpp |
18:52 |
sofar |
see https://github.com/minetest/minetest/issues/1701#issuecomment-214022155 |
18:56 |
sofar |
anyone know? |
18:58 |
jin_xi |
env->gamedef->nodemanager? |
19:02 |
sofar |
INodeDefManager *ndef = m_env->getGameDef()->ndef(); |
19:02 |
sofar |
that did something... |
19:24 |
hmmmm |
guys is it okay if i rant a little bit in this channel |
19:24 |
hmmmm |
need to dump my ideas about biomemanager architecture that i came up with while taking a shit |
19:25 |
hmmmm |
----------------- so we have a couple of requirements that are unfulfilled by the current implementation of BiomeManager |
19:25 |
VanessaE |
hmmmm: well you're off by about 12 hours but go aheaed :) |
19:25 |
hmmmm |
it's monolithic, and does not handle separation of concerns well |
19:25 |
hmmmm |
- i want to be able to specify unique biome parameters for each mapgen |
19:26 |
hmmmm |
- i want the biomemanager to handle all biome related computation - the mapgen should be able to give it parameters x y z and get a result |
19:26 |
hmmmm |
so right now there is only one biomemanager shared across all mapgens |
19:27 |
hmmmm |
and this is okay to do without synchronization because we made the contract that the biome list becomes read-only after the mod initialization phase |
19:28 |
hmmmm |
but each mapgen needs its own set of noise values at any given time, so the workaround is that the mapgens provide the noise objects to the biome calc functions |
19:28 |
hmmmm |
this is fine but it disrupts separation of concerns |
19:28 |
hmmmm |
because now the mapgen is responsible for knowing what types of noises are needed for biome calculation |
19:29 |
hmmmm |
the solution here would be to have a single BiomeManager per thread, clearly, but we don't want to deal with keeping the biome lists across all instances of BiomeManager synchronized |
19:30 |
hmmmm |
so we'll retain the single BiomeManager as an element of the EmergeManager and we more clearly define BiomeManager's role as maintaining the biome list and handling the lookups |
19:31 |
hmmmm |
we delegate biome *computation* to a new, separate class that each mapgen creates that exists on a per-thread basis |
19:31 |
hmmmm |
what its name should be is not known at this point because i'm not 100% sure about what the responsibilities of this class is going to be yet |
19:32 |
hmmmm |
but at the very least, it's going to be initialized with some of the same parameters for the mapgen |
19:32 |
hmmmm |
but it's not going to be tied *to* the mapgen as the dungeongen is for example |
19:33 |
hmmmm |
organizationally speaking, DungeonGen is a complete fuckup |
19:33 |
hmmmm |
we do not want to repeat this again |
19:35 |
hmmmm |
BiomeCalculator biomecalc(biomemgr, chunksize); ... biomecalc.generateAndCacheBiomes(node_min); .... Biome *b = biomecalc.getBiomeAtPoint(p); I guess? pretty straightforward |
19:36 |
hmmmm |
so we're going to have one kind of list of biomes, that is the BiomeManager |
19:36 |
hmmmm |
but we're going to have many different ways to compute which of these biomes is chosen |
19:37 |
hmmmm |
BiomeCalculator is going to be an interface, and the current approach to calculation (intersection of temperature and humidity) is going to just be one implementation |
19:38 |
hmmmm |
which approach to calculation will be used is going to be handled the same way the rest of the biome configuration will be |
19:38 |
hmmmm |
per mapgen |
19:38 |
hmmmm |
this is going to be generalized in the same way mapgen configuration will be |
19:39 |
hmmmm |
there'll exist a mapgen configuration script (so e.g. mapgen_v7.lua, mapgen_singlenode.lua) for each builtin mapgen that's executed upon final determination of the mapgen type |
19:39 |
hmmmm |
here, this is where mapgen noise parameters will be set, and biome parameters chosen as well |
19:40 |
hmmmm |
while i'm doing this i'd like to remove the mapgen params from the config files once and for all - that was a bad idea due to the sheer amount of configuration bloat but i didn't see it at the time |
19:40 |
|
ElectronLibre joined #minetest-dev |
19:40 |
hmmmm |
of course this will break reverse compatibility |
19:40 |
hmmmm |
i'm going to go off on a limb and say fuck reverse compatibility this time |
19:41 |
hmmmm |
people will just need to understand that they need to create a mod for their custom mapgen parameters if they want to make a *new* world with custom params |
19:41 |
hmmmm |
of course this won't break previously existing worlds because the parameters have been copied to map_meta.txt |
19:41 |
hmmmm |
</rant> |
19:42 |
hmmmm |
putting thoughts into words really helps me organize it all |
19:42 |
hmmmm |
now i'm going to do it |
20:02 |
|
nrzkt joined #minetest-dev |
20:18 |
|
Void7 joined #minetest-dev |
21:21 |
|
AnotherBrick joined #minetest-dev |
21:27 |
|
jhcole joined #minetest-dev |
21:28 |
jhcole |
for any minetest-mods dev, issue tracking is disabled for the castle mod; is that on purpose? |
21:30 |
VanessaE |
sofar: ^^^ |
21:52 |
sofar |
jhcole: no, just means it wasn't enabled originally |
21:53 |
sofar |
issues now enabled |
21:53 |
jhcole |
sofar: thanks, i'll be making use of it soon :) |
22:45 |
|
Megal joined #minetest-dev |
22:48 |
sofar |
woot, I got my sheep to jump |
22:57 |
|
yang2003 joined #minetest-dev |
23:26 |
|
AFK7 joined #minetest-dev |