- float *target = &display->buffer[i],
- *cur = target+display->w*display->h;
+ float *target = &world.sfd.buffer[i*2+0],
+ *cur = &world.sfd.buffer[i*2+1];
-static void sfd_render( struct sfd_instance *display,
- m4x4f projection, v3f camera, m4x3f transform )
+VG_STATIC void bind_terrain_noise(void);
+VG_STATIC void sfd_render( m4x4f projection, v3f camera, m4x3f transform )
shader_scoretext_use();
shader_scoretext_uTexGarbage(0);
shader_scoretext_uTexGradients(1);
shader_link_standard_ub( _shader_scoretext.id, 2 );
shader_scoretext_use();
shader_scoretext_uTexGarbage(0);
shader_scoretext_uTexGradients(1);
shader_link_standard_ub( _shader_scoretext.id, 2 );
vg_tex2d_bind( &tex_scoretext, 1 );
shader_scoretext_uPv( projection );
shader_scoretext_uMdl( transform );
shader_scoretext_uCamera( camera );
vg_tex2d_bind( &tex_scoretext, 1 );
shader_scoretext_uPv( projection );
shader_scoretext_uMdl( transform );
shader_scoretext_uCamera( camera );
shader_vblend_uTexGarbage(0);
shader_vblend_uTexGradients(1);
shader_link_standard_ub( _shader_vblend.id, 2 );
shader_vblend_uTexGarbage(0);
shader_vblend_uTexGradients(1);
shader_link_standard_ub( _shader_vblend.id, 2 );
shader_vblend_uPv( projection );
shader_vblend_uMdl( transform );
shader_vblend_uCamera( camera );
shader_vblend_uPv( projection );
shader_vblend_uMdl( transform );
shader_vblend_uCamera( camera );
- int row = vg_min(vg_max(atoi(argv[0]),0),sfd->tester.h);
- sfd_encode( &sfd->tester, row, argv[1] );
+ int row = vg_min( vg_max(atoi(argv[0]),0), world.sfd.h);
+ sfd_encode( row, argv[1] );
- mdl_header *mboard = mdl_load( "models/rs_scoretext.mdl" );
-
- scene_init( &sfd->mesh );
+ vg_linear_clear( vg_mem.scratch );
+ mdl_context *mboard =
+ mdl_load_full( vg_mem.scratch, "models/rs_scoretext.mdl" );
- mdl_node *pn_card = mdl_node_from_name( mboard, "score_card" );
- mdl_submesh *card = mdl_submesh_from_id( mboard, pn_card->submesh_start );
+ scene *sc = scene_init( vg_mem.scratch, 3000, 8000 );
- mdl_submesh *backer = mdl_submesh_from_id( mboard, pn_backer->submesh_start);
- mdl_unpack_submesh( mboard, &sfd->temp, backer );
+ mdl_submesh *backer = &mboard->submesh_buffer[ pn_backer->submesh_start ];
+ mdl_node *pn_card = mdl_node_from_name( mboard, "score_card" );
+ mdl_submesh *card = &mboard->submesh_buffer[ pn_card->submesh_start ];
- u32 vert_start = sfd->mesh.vertex_count;
- scene_add_submesh( &sfd->mesh, mboard, card, identity );
+ u32 vert_start = sc->vertex_count;
+ scene_add_submesh( sc, mboard, card, identity );
- scene_upload( &sfd->mesh );
- scene_free_offline_buffers( &sfd->mesh );
+ vg_acquire_thread_sync();
+ {
+ scene_upload( sc, &world.sfd.mesh_display );
+ mdl_unpack_submesh( mboard, &world.sfd.mesh_base, backer );
-static void world_sfd_free(void)
-{
- vg_tex2d_free( (vg_tex2d *[]){ &tex_scoretext }, 1 );
+ for( int i=0; i<w*h*2; i++ )
+ world.sfd.buffer[i] = 0.0f;