X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=scene.h;h=bf69a632b0aab6cd46e6937357391c0ec7c8708b;hb=34a8df54eb962f3ad2e036355041f5bc5cabe5a0;hp=d0615d52688a36b18d3656a5c64a8551f58fb1b9;hpb=3e8fda9c7cbc50d1ae95195905c953bdeedf71b9;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/scene.h b/scene.h index d0615d5..bf69a63 100644 --- a/scene.h +++ b/scene.h @@ -10,13 +10,14 @@ typedef struct scene_vert scene_vert; #pragma pack(push,1) -/* 24 byte vertexs, we don't care about the normals too much, +/* 28 byte vertexs, we don't care about the normals too much, * maybe possible to bring down uv to i16s too */ struct scene_vert { v3f co; /* 3*32 */ v2f uv; /* 2*32 */ i8 norm[4]; /* 4*8 */ + u8 lights[4]; /* 4*8 */ }; #pragma pack(pop) @@ -182,15 +183,14 @@ VG_STATIC scene *scene_fix( void *lin_alloc, scene *pscene ) { /* FIXME: Why is this disabled? */ - return pscene; u32 vertex_count = pscene->vertex_count, indice_count = pscene->indice_count, vertex_length = vertex_count * sizeof(scene_vert), index_length = indice_count * sizeof(u32), - tot_size = sizeof(scene) + vertex_length + index_length; + tot_size = sizeof(scene) + vertex_length + index_length; /* copy down index data */ - void *dst_indices = pscene->arrvertices + vertex_length; + void *dst_indices = pscene->arrvertices + vertex_count; memmove( dst_indices, pscene->arrindices, index_length ); /* realloc */ @@ -259,6 +259,11 @@ VG_STATIC void scene_upload( scene *pscene, glmesh *mesh ) stride, (void *)offsetof(scene_vert, uv) ); glEnableVertexAttribArray( 2 ); + /* 3: light cluster */ + glVertexAttribIPointer( 3, 4, GL_UNSIGNED_BYTE, + stride, (void *)offsetof(scene_vert, lights) ); + glEnableVertexAttribArray( 3 ); + VG_CHECK_GL_ERR(); mesh->indice_count = pscene->indice_count;