#pragma pack(push,1)
-/* 28 byte vertexs, we don't care about the normals too much,
+/* 32 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 */
+ u16 lights[4]; /* 4*16 */
};
#pragma pack(pop)
{
/* 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 */
glEnableVertexAttribArray( 2 );
/* 3: light cluster */
- glVertexAttribIPointer( 3, 4, GL_UNSIGNED_BYTE,
+ glVertexAttribIPointer( 3, 4, GL_UNSIGNED_SHORT,
stride, (void *)offsetof(scene_vert, lights) );
glEnableVertexAttribArray( 3 );
*pb = &s->arrvertices[ s->arrindices[item_index*3+1] ],
*pc = &s->arrvertices[ s->arrindices[item_index*3+2] ];
+ #if 0
+
+ float min, max;
+
+ min = vg_minf( pa->co[axis], pb->co[axis] );
+ max = vg_maxf( pa->co[axis], pb->co[axis] );
+ min = vg_minf( min, pc->co[axis] );
+ max = vg_maxf( max, pc->co[axis] );
+
+ return (min+max) * 0.5f;
+
+ #else
return (pa->co[axis] + pb->co[axis] + pc->co[axis]) * (1.0f/3.0f);
+ #endif
}
VG_STATIC void scene_bh_swap( void *user, u32 ia, u32 ib )