Time Nick Message 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: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: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?