fog fixes, optimizations
This commit is contained in:
parent
5ff44a7335
commit
e66093d684
2 changed files with 28 additions and 17 deletions
31
cubes.c
31
cubes.c
|
@ -41,7 +41,6 @@ void gen_face(Vertex *cube, int i, int x, int y, int z, int x2, int y2, int z2,
|
|||
Vertex c = a2;
|
||||
Vertex d = a2;
|
||||
|
||||
|
||||
if (is_text) {
|
||||
b.pos[0] += TEXT_GAP_H;
|
||||
c.pos[1] += TEXT_GAP_V;
|
||||
|
@ -78,12 +77,21 @@ void *gen_chunk(void *args) {
|
|||
Vertex *text = args2.text;
|
||||
// int is_text = args2.is_text;
|
||||
|
||||
int the_j = (((z2 / CHUNK_LENGTH)%a3) + ((x2 / CHUNK_LENGTH)%a3) * CHUNK_DIAMETER_H +
|
||||
((y2 / CHUNK_LENGTH)%a3) * CHUNK_DIAMETER_H * CHUNK_DIAMETER_H) %
|
||||
CHUNK_ALL;
|
||||
int the_j = (((z2 / CHUNK_LENGTH) % CHUNK_DIAMETER_H) +
|
||||
((x2 / CHUNK_LENGTH) % CHUNK_DIAMETER_H) * CHUNK_DIAMETER_H +
|
||||
((y2 / CHUNK_LENGTH) % CHUNK_DIAMETER_V) * CHUNK_DIAMETER_H *
|
||||
CHUNK_DIAMETER_H) %
|
||||
(CHUNK_ALL * CBUF_ALL);
|
||||
|
||||
Chunk old_chunk = chunk_old[the_j > 0 ? the_j : 0];
|
||||
|
||||
int cached =
|
||||
(old_chunk.x == x2 / CHUNK_LENGTH && old_chunk.y == y2 / CHUNK_LENGTH &&
|
||||
old_chunk.z == z2 / CHUNK_LENGTH && old_chunk.exists != 0);
|
||||
Chunk chunk =
|
||||
fetch_chunk(x2 / CHUNK_LENGTH, y2 / CHUNK_LENGTH, z2 / CHUNK_LENGTH, a,
|
||||
chunk_old[the_j > 0 ? the_j : 0].exists, read_order);
|
||||
cached ? old_chunk
|
||||
: fetch_chunk(x2 / CHUNK_LENGTH, y2 / CHUNK_LENGTH,
|
||||
z2 / CHUNK_LENGTH, a, old_chunk.exists, read_order);
|
||||
|
||||
if (chunk.exists != 0 && the_j > 0)
|
||||
chunk_old[the_j] = chunk;
|
||||
|
@ -142,7 +150,7 @@ int gen_cubes(Vertex *cube, Vertex *text, int x, int y, int z, int r,
|
|||
}
|
||||
|
||||
if (!chunk_old) {
|
||||
chunk_old = calloc(CHUNK_ALL, sizeof(struct Chunk));
|
||||
chunk_old = calloc((CHUNK_ALL * CBUF_ALL), sizeof(struct Chunk));
|
||||
}
|
||||
read_order = !read_order;
|
||||
pthread_t thread_id[a3];
|
||||
|
@ -156,11 +164,14 @@ int gen_cubes(Vertex *cube, Vertex *text, int x, int y, int z, int r,
|
|||
z2 <= z + (CHUNK_RADIUS_H + r) * CHUNK_LENGTH; z2 += CHUNK_LENGTH) {
|
||||
|
||||
VertexI pos = {
|
||||
{x + (((x2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_H + r * 2))) *
|
||||
{x + (((x2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_H + r * 2)) -
|
||||
CHUNK_RADIUS_H) *
|
||||
CHUNK_LENGTH,
|
||||
y + (((y2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_V + r * 2))) *
|
||||
y + (((y2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_V + r * 2)) -
|
||||
CHUNK_RADIUS_V) *
|
||||
CHUNK_LENGTH,
|
||||
z + (((z2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_H + r * 2))) *
|
||||
z + (((z2 / CHUNK_LENGTH) % (CHUNK_DIAMETER_H + r * 2)) -
|
||||
CHUNK_RADIUS_H) *
|
||||
CHUNK_LENGTH}};
|
||||
|
||||
int a2 = a % a3;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue