Commit graph

57 commits

Author SHA1 Message Date
3ec83c8cf8
Compare file contents with old data before writing
Do not writeoutput files when their content hasn't changed. This saves
time for incremental generation (as compressing a PNG takes much longer
than decompressing it) and avoids modification timestamp updates that
might trigger subsequent generation steps.
2020-06-20 15:01:52 +02:00
98e21236d9
Do not generate light data for invisible blocks 2020-06-20 14:48:26 +02:00
03ae9cf302
Exclude unpopulated chunks from biome averaging
Avoids weirdly colored stripes at the edges of the map.
2020-06-20 12:17:24 +02:00
eb831608e0
Add smooth transitions between biomes
Simliar to the way biome transitions are rendered in Minecraft itself,
add smoothing by averaging biome-based colors over all biome values with
distance ≤3 (1-norm).
2020-06-20 12:15:32 +02:00
623d70ec9e
More preparation for biome smoothing 2020-06-20 11:40:29 +02:00
19ef022a67
Biome: return FloatColor for block colors 2020-06-20 11:40:29 +02:00
50f798f89e
Do not store biome in block structure
Use biome data from biome map.
2020-06-20 11:40:29 +02:00
a3cf5edda4
Read biome maps when iterating regions 2020-06-20 11:40:29 +02:00
072d664199
Separate top layer search from block data retrieval 2020-06-20 11:40:29 +02:00
569d0f1198
Pass region indices as int instead of size_t
Region indices can be negative.
2020-06-20 11:40:29 +02:00
4f7663f82f
Merge doRegion{,Biome}() into makeBiome()/makeMap() 2020-06-20 11:40:27 +02:00
2f0d1892f4
Split getModTime() out of checkRegion() 2020-06-20 00:58:08 +02:00
f539d668eb
Collect biome data
We store the biome data as grayscale images, as biome indices are
represented as bytes and we get PNG compression for free.
2020-06-20 00:58:08 +02:00
dc97c4a8c1
PNG: add support for grayscale images without alpha 2020-06-20 00:58:08 +02:00
4f49434dbf
Clean up doLevel() 2020-06-19 20:06:44 +02:00
0245c5c926
Add message before updating mipmaps 2020-06-19 19:09:40 +02:00
d9af9cbc9d
Catch normal runtime errors instead of exiting with SIGABRT 2019-12-14 22:16:41 +01:00
0bdf249307
Add biome color computation
Rather than using fixed values for all biomes, generate grass and foliage
colors based on (height-dependent) temperature and rainfall parameters.

This changes a lot of colors; in general, the new colors should be closer
to the actual Minecraft rendering. It also fixes a few colors that were
completely off (like in the badlands biomes) and adds the MC 1.13 biomes
(which were rendered in black).

Some of the newer biomes (warm/cold/... oceans) don't have proper
parameters yet, and we do not derive the water color from the biome yet.

Fixes #1.
2018-11-08 17:49:28 +01:00
a3246d98c0
Adjust for minor API differences on Windows 2018-07-26 23:18:56 +02:00
de04cce993
World/Block: return colors as struct instead of uint32_t
Gets rid of a useless byte switch, and removes the arpa/inet.h include,
which is not available on Windows.
2018-07-26 23:18:55 +02:00
4e3a9736b6
World/Block: remove useless blockLight accessor 2018-07-22 16:59:18 +02:00
c082c8800c
Separate splitting of regions into chunks and actual parsing of chunk structure 2018-07-20 23:49:51 +02:00
292f4f4f3b
Don't rely on utimensat()
utimensat() does not work on all filesystems, in particular on Windows.
2017-06-13 16:39:17 +02:00
1e14dabc2d Fix definition of timespec >= operator 2015-02-06 23:06:11 +01:00
d73c8b930b Include cleanup
Also remove all uses of unistd.h by replacing unlink with std::rename
2015-02-06 19:51:20 +01:00
fb81ea7d60 Make light layer darker 2015-02-06 17:56:59 +01:00
e4b1919ba8 Use heap memory for image buffers 2015-02-04 09:00:34 +01:00
4d9f29afab Add mipmap support to allow zooming out 2015-02-03 20:15:58 +01:00
0162c236fa Nicer timespec operations 2015-02-03 18:39:58 +01:00
45a1915006 Refactor image creation 2015-02-03 15:02:21 +01:00
0bd8e211e2 Also unlink light tmpfile on errors 2015-02-03 14:19:19 +01:00
9e0bbcf685 Generate light layer 2015-02-03 13:13:12 +01:00
e1b3347da5 Start mipmapping infrastructure 2015-02-03 12:42:33 +01:00
1d3db43d29 Refactor PNG writing 2015-02-02 19:29:37 +01:00
b46c5de3ac Free PNG structs after writing 2015-02-02 18:52:33 +01:00
34857eabbc Add spawn coordinates 2015-02-02 18:33:21 +01:00
db59b73856 Refactor info generation 2015-02-02 17:56:43 +01:00
fd4ce45885 Generate info file 2015-02-02 05:13:07 +01:00
8bdbfd3ec0 Factor out filename check 2015-02-02 04:47:40 +01:00
213124ec57 Output "normal" messages to stdout
This makes it easier to filter for the errors
2015-02-02 03:53:49 +01:00
75671b4b96 Catch exceptions for single regions 2015-02-02 03:38:49 +01:00
a3d6648fa6 Workaround for old libraries without regex support 2015-02-02 03:33:43 +01:00
bedd81dce6 Don't explicitly include setjmp
libpng does this for us.
2015-02-02 03:20:25 +01:00
58adcc4c15 Skip unchanged regions 2015-02-02 03:06:22 +01:00
248b9e319d Convert all regions with one call 2015-02-02 02:25:56 +01:00
8db3a5b94f Use DIM constant as PNG dimension 2015-02-02 01:47:16 +01:00
8c1629af42 Change region reader to a visitor pattern
Not keeping the whole region in memory reduces the needed space
to less than 5MB (from about 140).
2015-02-02 01:41:17 +01:00
22b9cfcb8b Move ressource files to a separate directory 2015-02-02 00:31:52 +01:00
9b1d92387d Use biome data 2015-02-01 15:19:18 +01:00
143b9f6c78 Add support for biome colors, fix block type indices 2015-02-01 15:10:07 +01:00