-void build_game_content(void){
- vg_low( "Building game content structure\n" );
- const char *project_name = vg_build.project_name.buffer;
- vg_symlink( "textures_src", "textures" );
- vg_symlink( "models_src", "models" );
- vg_symlink( "boards_src", "boards" );
- vg_symlink( "maps_src", "maps" );
- vg_symlink( "sound_src", "sound" );
- vg_symlink( "playermodels_src", "playermodels" );
- vg_syscall( "mkdir -p bin/%s/cfg", project_name );
- vg_syscall( "mkdir -p bin/%s/savedata", project_name );
- vg_syscall( "mkdir -p bin/%s/tools", project_name );
- vg_syscall( "cp blender_export.py bin/%s/tools/", project_name );
+#define _S( NAME, VS, FS ) \
+ vg_build_shader( "shaders/" VS, "shaders/" FS, NULL, "shaders", NAME )
+
+void build_shaders(void){
+ vg_info( "Compiling shader headers\n" );
+ vg_shader_set_include_dir( "shaders" );
+
+ /* Scene */
+ _S( "scene_standard", "scene.vs", "scene_standard.fs" );
+ _S( "scene_standard_alphatest", "scene.vs", "scene_standard_alphatest.fs" );
+ _S( "scene_foliage", "scene_foliage.vs", "scene_foliage.fs" );
+ _S( "scene_override", "scene_override.vs", "scene_override.fs" );
+ _S( "scene_fxglow", "scene_fxglow.vs", "scene_fxglow.fs" );
+ _S( "scene_vertex_blend", "scene.vs", "scene_vertex_blend.fs" );
+ _S( "scene_terrain", "scene.vs", "scene_terrain.fs" );
+ _S( "scene_route", "scene_override.vs", "scene_route.fs" );
+ _S( "scene_depth", "scene.vs", "scene_depth.fs" );
+ _S( "scene_position", "scene.vs", "scene_position.fs" );
+ _S( "scene_cubemapped", "scene.vs", "scene_cubemapped.fs" );
+ _S( "scene_water", "scene.vs", "scene_water.fs" );
+ _S( "scene_water_fast", "scene.vs", "scene_water_fast.fs" );
+ _S( "scene_scoretext", "scene_sfd.vs", "scene_standard.fs" );
+ _S( "scene_font", "model_font.vs","scene_font.fs" );
+
+ /* Models */
+ _S( "model_sky", "model.vs", "model_sky.fs" );
+ _S( "model_sky_space", "model.vs", "model_sky_space.fs" );
+ _S( "model_menu", "model.vs", "model_menu.fs" );
+ _S( "model_character_view", "model_skinned.vs", "model_character_view.fs" );
+ _S( "model_board_view", "model.vs", "model_character_view.fs" );
+ _S( "model_entity", "model.vs", "model_entity.fs" );
+ _S( "model_gate", "model.vs", "model_gate_lq.fs" );
+ _S( "model_gate_unlinked", "model.vs", "model_gate_unlinked.fs" );
+ _S( "model_font", "model_font.vs", "model_font.fs" );
+
+ _S( "particle", "particle.vs", "particle.fs" );
+ _S( "trail", "trail.vs", "trail.fs" );
+
+ /* 2D */
+ _S( "blit", "blit.vs", "blit.fs" );
+ _S( "blitblur", "blit.vs", "blitblur.fs" );
+ _S( "blitcolour","blit.vs", "colour.fs" );
+ _S( "blit_transition", "blit.vs", "blit_transition.fs" );
+ _S( "routeui", "routeui.vs", "routeui.fs" );
+
+ vg_build_shader_impl( "shaders/impl.c" );
+}
+
+void build_game_content( struct vg_project *proj )
+{
+ vg_project_new_target( proj, "Content files", k_obj_type_none );
+
+ vg_symlink( proj, "textures_src", "textures" );
+ vg_symlink( proj, "models_src", "models" );
+ vg_symlink( proj, "boards_src", "boards" );
+ vg_symlink( proj, "maps_src", "maps" );
+ vg_symlink( proj, "sound_src", "sound" );
+ vg_symlink( proj, "playermodels_src", "playermodels" );
+ vg_syscall( "mkdir -p bin/%s/cfg", proj->uid.buffer );
+ vg_syscall( "mkdir -p bin/%s/savedata", proj->uid.buffer );
+ vg_syscall( "mkdir -p bin/%s/tools", proj->uid.buffer );
+ vg_syscall( "cp bin/skaterift_blender.zip bin/%s/tools/", proj->uid.buffer );