mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-05 19:11:50 +00:00
Sky lights data saving (optimization)
This commit is contained in:
parent
6b423b441f
commit
a102821076
12 changed files with 147 additions and 38 deletions
|
|
@ -20,12 +20,27 @@ void Lightmap::set(const Lightmap* lightmap) {
|
|||
}
|
||||
}
|
||||
|
||||
void Lightmap::set(light_t* map) {
|
||||
delete[] this->map;
|
||||
this->map = map;
|
||||
}
|
||||
|
||||
static_assert(sizeof(light_t) == 2, "replace dataio calls to new light_t");
|
||||
|
||||
ubyte* Lightmap::encode() const {
|
||||
ubyte* buffer = new ubyte[CHUNK_VOL * sizeof(light_t)];
|
||||
for (uint i = 0; i < CHUNK_VOL; i++) {
|
||||
dataio::write_int16_big(map[i], buffer, i * sizeof(light_t));
|
||||
ubyte* buffer = new ubyte[LIGHTMAP_DATA_LEN];
|
||||
for (uint i = 0; i < CHUNK_VOL; i+=2) {
|
||||
buffer[i/2] = ((map[i] >> 12) & 0xF) | ((map[i+1] >> 8) & 0xF0);
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
|
||||
light_t* Lightmap::decode(ubyte* buffer) {
|
||||
light_t* lights = new light_t[CHUNK_VOL];
|
||||
for (uint i = 0; i < CHUNK_VOL; i+=2) {
|
||||
ubyte b = buffer[i/2];
|
||||
lights[i] = ((b & 0xF) << 12);
|
||||
lights[i+1] = ((b & 0xF0) << 8);
|
||||
}
|
||||
return lights;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue