X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_render.h;h=a73998a778888c9a573dedf582f89195783059b2;hb=47941822dae18a018c985847b052e70214a3ccc6;hp=65494a5be204ea8f6e25b6e7adfddadb3f32a4f7;hpb=c2d67378dd5c82de50b8fbbbe222ec6be2da4eee;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_render.h b/world_render.h index 65494a5..a73998a 100644 --- a/world_render.h +++ b/world_render.h @@ -1,3 +1,7 @@ +/* + * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + */ + #ifndef WORLD_RENDER_H #define WORLD_RENDER_H @@ -15,50 +19,33 @@ vg_tex2d tex_alphatest = { .path = "textures/alphatest.qoi", vg_tex2d tex_graffiti = { .path = "textures/graffitibox.qoi", .flags = VG_TEXTURE_NEAREST }; -static int world_render_init(void) +VG_STATIC void world_render_init(void) { vg_info( "Loading default world textures\n" ); - if( vg_acquire_thread_sync(1) ) + vg_acquire_thread_sync(); { vg_tex2d_init( (vg_tex2d *[]){ &tex_terrain_colours, &tex_terrain_noise, &tex_alphatest, &tex_graffiti }, 4 ); - - vg_release_thread_sync(1); - return 1; } - - return 0; -} - -static void world_render_free(void*_) -{ - vg_tex2d_free( (vg_tex2d *[]){ &tex_terrain_colours, - &tex_terrain_noise, - &tex_alphatest, - &tex_graffiti }, 4 ); + vg_release_thread_sync(); } - - -static void render_world_depth( m4x4f projection, m4x3f camera ); - - - +VG_STATIC void render_world_depth( m4x4f projection, m4x3f camera ); /* * Rendering */ -static void bind_terrain_textures(void) +VG_STATIC void bind_terrain_textures(void) { vg_tex2d_bind( &tex_terrain_noise, 0 ); vg_tex2d_bind( &tex_terrain_colours, 1 ); } -static void render_world_vb( m4x4f projection, v3f camera ) +VG_STATIC void render_world_vb( m4x4f projection, v3f camera ) { m4x3f identity_matrix; m4x3_identity( identity_matrix ); @@ -73,21 +60,11 @@ static void render_world_vb( m4x4f projection, v3f camera ) shader_vblend_uMdl( identity_matrix ); shader_vblend_uCamera( camera ); - scene_bind( &world.geo ); + mesh_bind( &world.mesh_geo ); mdl_draw_submesh( &world.sm_geo_vb ); - - mesh_bind( &world.cars ); - -#if 0 - for( int i=0; igate.co[0], camera[3] ); if( dist < closest ) @@ -214,14 +191,14 @@ static void render_world_gates( m4x4f projection, v3f playerco, m4x3f camera ) } } - render_gate( &world.routes.gates[id].gate, playerco, camera ); + render_gate( &world.gates[id].gate, playerco, camera ); v3_lerp( world.render_gate_pos, - world.routes.gates[id].gate.co[0], + world.gates[id].gate.co[0], 1.0f, world.render_gate_pos ); } -static void render_world( m4x4f projection, m4x3f camera ) +VG_STATIC void render_world( m4x4f projection, m4x3f camera ) { render_sky( camera ); render_world_routes( projection, camera[3] ); @@ -232,9 +209,9 @@ static void render_world( m4x4f projection, m4x3f camera ) int closest = 0; float min_dist = INFINITY; - for( int i=0; i