| Time |
Nick |
Message |
| 04:54 |
|
SpeedProg joined #minetest-dev |
| 07:04 |
|
EdB joined #minetest-dev |
| 08:02 |
|
PilzAdam joined #minetest-dev |
| 10:10 |
|
saschaheylik joined #minetest-dev |
| 10:26 |
|
VanessaE joined #minetest-dev |
| 10:27 |
|
PilzAdam joined #minetest-dev |
| 14:18 |
|
Calinou joined #minetest-dev |
| 15:13 |
|
Mikeonline joined #minetest-dev |
| 15:24 |
|
rubenwardy joined #minetest-dev |
| 15:31 |
|
hmmmm joined #minetest-dev |
| 16:15 |
|
EdB joined #minetest-dev |
| 16:40 |
|
rubenwardy1 joined #minetest-dev |
| 16:48 |
|
rubenwardy joined #minetest-dev |
| 17:43 |
hmmmm |
alright |
| 17:43 |
hmmmm |
i'll try highlighting him |
| 17:44 |
hmmmm |
celeron55_: what is the rationale behind making datatypes in noise double instead of float? why do you add 0.5 to the X,Y position in noise2d_perlin calls? |
| 17:45 |
celeron55_ |
the addition is because otherwise the nouse would be always zero at zero |
| 17:45 |
celeron55_ |
noise* |
| 17:45 |
celeron55_ |
or something like that |
| 17:46 |
celeron55_ |
dunno about the doubles |
| 17:46 |
celeron55_ |
it probably doesn't make much of a difference |
| 18:04 |
|
rubenwardy left #minetest-dev |
| 18:05 |
hmmmm |
it does make a difference, if they're floats i can get twice as much throughput |
| 18:06 |
hmmmm |
also, the noise at 0 won't be 0 unless the seed were 0 |
| 18:06 |
hmmmm |
according to noise2d() |
| 18:09 |
celeron55_ |
haven't touched it in a good while; i guess you might know better |
| 18:10 |
hmmmm |
yes i've decided that no matter how the mapgen is redone it's going to take a lot of perlin calls |
| 18:10 |
hmmmm |
so the focus right now is on SSE-ifying the perlin noise |
| 18:13 |
hmmmm |
it might be cleaner to divide this up into perlin_asm_msvc.c and perlin_asm_gcc.c, and which file is added is chosen in the makefile |
| 18:40 |
hmmmm |
this is just a misc. problem that should not exist |
| 18:41 |
hmmmm |
1 * 4096 + 2048 = 2 * 4096 - 2048 |
| 18:41 |
hmmmm |
you know, if y = 1, or y = 2, and x = 2048, or x = -2048 |
| 18:41 |
hmmmm |
blocks can be replaced |
| 18:42 |
VanessaE |
especially if the server's HDD runs out of space. |
| 18:42 |
hmmmm |
this doesn't have to do with that |
| 18:42 |
hmmmm |
anyway this could be fixed by treating the LBA as a 48-bit field of 16 bit unsigned integers |
| 18:42 |
VanessaE |
oh, sounded like our previous convo. |
| 18:44 |
celeron55_ |
hmmmm: i'd imagine making a perlin noise implementation that is built from the ground up to make arbitrary chunks of noise would work well |
| 18:44 |
celeron55_ |
hmmmm: the current one calculates the same things again and again |
| 18:45 |
hmmmm |
i reckon you can fix this without any negative side effects by changing getBlockAsInteger to (sqlite3_uint64)((sqlite3_uint64)p.Z << 32) | ((sqlite3_uint64)p.Y << 16) | ((sqlite3_uint64)p.X << 0)); |
| 18:45 |
hmmmm |
(and getIntegerAsBlock too for that matter) |
| 18:47 |
celeron55_ |
also, no assembly; C is close enough to that |
| 18:47 |
hmmmm |
assembly is necessary here |
| 18:47 |
celeron55_ |
(C is a cross-platform macro assembler) |
| 18:47 |
hmmmm |
it's easy enough to fall back on C if the assembly isn't supported |
| 18:47 |
hmmmm |
so i don't see why not |
| 18:48 |
celeron55_ |
yeah and work unpleasantly slow? |
| 18:48 |
celeron55_ |
you'd need to make an ARM one at least too |
| 18:48 |
celeron55_ |
and then what about clang? |
| 18:48 |
hmmmm |
clang supports GCC-style inline assembly |
| 18:48 |
hmmmm |
as does ICC |
| 18:49 |
hmmmm |
this would be nothing but a strict speed _increase_ |
| 18:49 |
hmmmm |
ARM wouldn't be unpleasantly slow, it'll just be normal, and the x86 version would be really fast |
| 18:49 |
celeron55_ |
anyway, the current implementation "polls" each noise position from the noise functions for a big chunk; it could just calculate each noise level one time, buffer them and then add the buffers |
| 18:49 |
hmmmm |
I can do NEON too, I won't really be able to test it well though. |
| 18:49 |
celeron55_ |
it'd take out SO many calculations |
| 18:53 |
hmmmm |
definitely, the entire thing is getting a redesign to be the most optimal |
| 18:55 |
celeron55_ |
if it ends up good, then maybe 3d noise could be used for generation again without some silly tricks |
| 18:55 |
hmmmm |
i am already using 3d noise for Nether and Aether biomes |
| 18:56 |
hmmmm |
so it's an absolute must to get 3d perlin noise in a good state |
| 18:57 |
celeron55_ |
you'd get more bang for the effort by adding Lua APIs for bulkier generation of things |
| 18:58 |
hmmmm |
what, the biomes? |
| 18:58 |
hmmmm |
i guess, i'd rather just have it in C for now so there's no performance problem from the start |
| 19:00 |
celeron55_ |
but that is basically uneditable for most people, which is kind of not how things are supposed to be |
| 19:00 |
hmmmm |
Lua api for biomes might be like this: if a custom node-placement function is not required, then noise type and noise parameters are specified along with the temperature and height ranges for when it occurs |
| 19:00 |
hmmmm |
at the same time i also aim to make it friendly for people who'd like to add it right in the engine as well |
| 19:16 |
|
SpeedProg joined #minetest-dev |
| 19:32 |
hmmmm |
in map.cpp, ServerMap::saveBlock: block->resetModified(); should not be called on error like it is. |
| 20:52 |
VanessaE |
celeron55_: what's your opinion on having the client cache the received map data on disk (instead of just memory) for future use? |