nonlocal stuff again
[carveJwlIkooP6JGAAIwe30JlM.git] / scene.h
diff --git a/scene.h b/scene.h
index fa1ce4dbc8bc782a23953c22889aa20d7c27d384..aeecd4e1e3d4df1e7a179dd1701efe66a2159e38 100644 (file)
--- a/scene.h
+++ b/scene.h
@@ -17,7 +17,7 @@ struct scene_vert
    v3f co;        /* 3*32 */
    v2f uv;        /* 2*32 */
    i8  norm[4];   /* 4*8 */
-   u16 lights[4]; /* 4*16 */
+   u16 unused[4];
 };
 
 #pragma pack(pop)
@@ -78,8 +78,7 @@ VG_STATIC void scene_vert_pack_norm( scene_vert *vert, v3f norm )
 VG_STATIC void scene_add_mdl_submesh( scene *pscene, mdl_context *mdl, 
                                       mdl_submesh *sm, m4x3f transform )
 {
-   if( pscene->vertex_count + sm->vertex_count > pscene->max_vertices )
-   {
+   if( pscene->vertex_count + sm->vertex_count > pscene->max_vertices ){
       vg_error( "%u(current) + %u > %u\n", pscene->vertex_count,
                                            sm->vertex_count,
                                            pscene->max_vertices );
@@ -88,8 +87,7 @@ VG_STATIC void scene_add_mdl_submesh( scene *pscene, mdl_context *mdl,
       vg_fatal_exit_loop( "Scene vertex buffer overflow" );
    }
 
-   if( pscene->indice_count + sm->indice_count > pscene->max_indices )
-   {
+   if( pscene->indice_count + sm->indice_count > pscene->max_indices ){
       vg_error( "%u(current) + %u > %u\n", pscene->indice_count,
                                            sm->indice_count,
                                            pscene->max_indices );
@@ -98,10 +96,10 @@ VG_STATIC void scene_add_mdl_submesh( scene *pscene, mdl_context *mdl,
       vg_fatal_exit_loop( "Scene index buffer overflow" );
    }
 
-   mdl_vert   *src_verts =  mdl_submesh_vertices( mdl, sm );
+   mdl_vert   *src_verts = mdl_arritm( &mdl->verts, sm->vertex_start );
    scene_vert *dst_verts = &pscene->arrvertices[ pscene->vertex_count ];
 
-   u32 *src_indices    =  mdl_submesh_indices( mdl, sm ),
+   u32 *src_indices    =  mdl_arritm( &mdl->indices, sm->indice_start ),
        *dst_indices    = &pscene->arrindices[ pscene->indice_count ];
    
    /* Transform and place vertices */
@@ -116,10 +114,9 @@ VG_STATIC void scene_add_mdl_submesh( scene *pscene, mdl_context *mdl,
    v3_normalize( normal_matrix[1] );
    v3_normalize( normal_matrix[2] );
    
-   for( u32 i=0; i<sm->vertex_count; i++ )
-   {
-      mdl_vert   *src   = &src_verts[ i ];
-      scene_vert *pvert = &dst_verts[ i ];
+   for( u32 i=0; i<sm->vertex_count; i++ ){
+      mdl_vert   *src   = &src_verts[i];
+      scene_vert *pvert = &dst_verts[i];
 
       m4x3_mulv( transform, src->co, pvert->co );
 
@@ -187,7 +184,7 @@ VG_STATIC scene *scene_fix( void *lin_alloc, scene *pscene )
        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      = vg_align8(sizeof(scene) + vertex_length + index_length);
 
    /* copy down index data */
    void *dst_indices = pscene->arrvertices + vertex_count;
@@ -250,7 +247,7 @@ VG_STATIC void scene_upload( scene *pscene, glmesh *mesh )
    glEnableVertexAttribArray( 0 );
 
    /* 1: normal */
-   glVertexAttribPointer( 1, 3, GL_BYTE, GL_TRUE,
+   glVertexAttribPointer( 1, 4, GL_BYTE, GL_TRUE,
          stride, (void *)offsetof(scene_vert, norm) );
    glEnableVertexAttribArray( 1 );
 
@@ -259,10 +256,12 @@ VG_STATIC void scene_upload( scene *pscene, glmesh *mesh )
          stride, (void *)offsetof(scene_vert, uv) );
    glEnableVertexAttribArray( 2 );
 
+#if 0
    /* 3: light cluster */
    glVertexAttribIPointer( 3, 4, GL_UNSIGNED_SHORT,
          stride, (void *)offsetof(scene_vert, lights) );
    glEnableVertexAttribArray( 3 );
+#endif
 
    VG_CHECK_GL_ERR();