MENY
authorhgn <hgodden00@gmail.com>
Wed, 19 Oct 2022 02:22:15 +0000 (03:22 +0100)
committerhgn <hgodden00@gmail.com>
Wed, 19 Oct 2022 02:22:15 +0000 (03:22 +0100)
22 files changed:
main.c
menu.h [new file with mode: 0644]
models_src/ch_jordan.mdl
models_src/rs_menu.mdl [new file with mode: 0644]
player.h
player_animation.h
render.h
shaders.sh
shaders/alphatest.h
shaders/gpos.h
shaders/menu.fs [new file with mode: 0644]
shaders/menu.h [new file with mode: 0644]
shaders/planeinf.h
shaders/route.h
shaders/sky.h
shaders/standard.h
shaders/standard.vs
shaders/terrain.h
shaders/unlit.fs
shaders/vblend.h
shaders/water.h
textures_src/graffitibox.png

diff --git a/main.c b/main.c
index 5cce7212576503b23c7f69a662b703281fc86bce..bbb4c321f310f8e297409801e3c3605c1874b2ae 100644 (file)
--- a/main.c
+++ b/main.c
@@ -27,6 +27,7 @@
 #include "world.h"
 #include "player.h"
 #include "network.h"
+#include "menu.h"
 
 static int cl_ui     = 1,
            cl_menu   = 0;
@@ -70,13 +71,13 @@ vg_info("            '        ' '--' [] '----- '----- '     ' '---'  "
 
    steam_init();
    vg_loader_highwater( NULL, steam_end, NULL );
-
    vg_loader_highwater( network_init, network_end, NULL );
 }
 
 void vg_load(void)
 {
    vg_loader_highwater( render_init, render_free, NULL );
+   vg_loader_highwater( menu_init, menu_free, NULL );
    vg_loader_highwater( world_init, world_free, NULL );
    vg_loader_highwater( player_init, NULL, NULL );
 
@@ -92,7 +93,7 @@ void vg_load(void)
 
 static void vg_start(void)
 {
-   player_load_model( "ch_outlaw" );
+   player_load_model( "ch_jordan" );
    reset_player( 1, (const char *[]){ "start" } );
 }
 
@@ -109,21 +110,27 @@ void vg_update( int loaded )
 
    if( loaded )
    {
+      if( vg_get_button_down( "menu" ) )
+      {
+         cl_menu = !cl_menu;
+      }
+
       draw_origin_axis();
       network_update();
-      player_update_pre();
-      world_update( player.phys.rb.co );
-   }
 
-   if( vg_get_button_down( "menu" ) )
-   {
-      cl_menu = !cl_menu;
+      if( !cl_menu )
+      {
+         player_update_pre();
+         world_update( player.phys.rb.co );
+      }
+
+      menu_update( cl_menu );
    }
 }
 
 static void vg_update_fixed( int loaded )
 {
-   if( loaded )
+   if( loaded && !cl_menu )
    {
       player_update_fixed();
    }
@@ -131,7 +138,7 @@ static void vg_update_fixed( int loaded )
 
 static void vg_update_post( int loaded )
 {
-   if( loaded )
+   if( loaded && !cl_menu )
    {
       player_update_post();
    }
@@ -146,17 +153,32 @@ static void vg_framebuffer_resize( int w, int h )
 
 static void render_main_game(void)
 {
+   v3f *active_cam_inv = NULL,
+       *active_cam     = NULL;
+
    m4x4f world_4x4;
-   m4x3_expand( player.camera_inverse, world_4x4 );
+
+   if( cl_menu )
+   {
+      active_cam = menu_cam;
+      active_cam_inv = menu_cam_inv;
+   }
+   else
+   {
+      active_cam_inv = player.camera_inverse;
+      active_cam = player.camera;
+   }
+
+   m4x3_expand( active_cam_inv, world_4x4 );
 
    static float fov = 97.0f;
-   float fov_target = player.phys.on_board? 125.0f: 108.0f;
+   float fov_target = (player.phys.on_board&&!cl_menu)? 125.0f: 108.0f;
    fov = vg_lerpf( fov, fov_target, vg.time_delta * 2.0f );
 
    gpipeline.fov = freecam? 60.0f: fov; /* 120 */
    m4x4_projection( vg.pv, gpipeline.fov, 
          (float)vg.window_x / (float)vg.window_y, 
-         0.02f, 2100.0f );
+         0.1f, 2100.0f );
 
    m4x4_mul( vg.pv, world_4x4, vg.pv );
    glEnable( GL_DEPTH_TEST );
@@ -167,15 +189,18 @@ static void render_main_game(void)
 
    int draw_solid = player.is_dead | freecam;
    
-   render_world( vg.pv, player.camera );
+   render_world( vg.pv, active_cam );
    if( draw_solid )
-      draw_player();
-   render_water_texture( player.camera );
+      draw_player( active_cam );
+
+   render_water_texture( active_cam );
 
    glBindFramebuffer( GL_FRAMEBUFFER, 0 );
-   render_water_surface( vg.pv, player.camera );
+   render_water_surface( vg.pv, active_cam );
+   render_world_gates( vg.pv, player.phys.rb.co, active_cam );
 
-   render_world_gates( vg.pv, player.phys.rb.co, player.camera );
+   if( cl_menu )
+      menu_render( vg.pv );
    
    /* Copy the RGB of what we have into the background buffer */
    glBindFramebuffer( GL_READ_FRAMEBUFFER, 0 );
@@ -200,7 +225,7 @@ static void render_main_game(void)
             (float)vg.window_x / (float)vg.window_y, 
             0.01f, 600.0f );
       m4x4_mul( vg.pv, world_4x4, vg.pv );
-      draw_player();
+      draw_player( active_cam );
    }
 
    /* Draw back in the background
@@ -242,6 +267,7 @@ void vg_render(void)
 
 void vg_ui(void)
 {
+#if 0
    if( cl_menu )
    {
       ui_rect menu =
@@ -275,7 +301,6 @@ void vg_ui(void)
       }
    }
    
-#if 0
    if( lightedit )
    {
       ui_global_ctx.cursor[0] = 10;
diff --git a/menu.h b/menu.h
new file mode 100644 (file)
index 0000000..e062b30
--- /dev/null
+++ b/menu.h
@@ -0,0 +1,135 @@
+#ifndef MENU_H
+#define MENU_H
+
+#include "common.h"
+#include "model.h"
+#include "world_render.h"
+#include "player.h"
+
+#include "shaders/menu.h"
+
+static mdl_header *menu_model;
+static glmesh      menu_glmesh;
+static v3f         menu_cam_pos,
+                   menu_target_cam_pos;
+static v4f         menu_cam_q = { 0.0f, 0.0f, 0.0f, 1.0f },
+                   menu_target_cam_q;
+static m4x3f       menu_cam, menu_cam_inv;
+static float       menu_opacity = 0.0f;
+
+static void menu_init(void)
+{
+   menu_model = mdl_load( "models/rs_menu.mdl" );
+
+   if( !menu_model )
+      vg_fatal_exit_loop( "No menu model" );
+
+   vg_acquire_thread_sync();
+   mdl_unpack_glmesh( menu_model, &menu_glmesh );
+   vg_release_thread_sync();
+
+   shader_menu_register();
+}
+
+static void menu_update( int enabled )
+{
+   static int enabled_last = 0;
+
+   if( enabled && !enabled_last )
+   {
+      v3_copy( player.camera[3], menu_cam_pos );
+      m3x3_q( player.camera, menu_cam_q );
+
+      if( player.phys.on_board )
+      {
+         v4f r90;
+         q_axis_angle( r90, player.phys.rb.up, VG_PIf*-0.5f );
+         q_mul( r90, player.phys.rb.q, menu_target_cam_q );
+         m4x3_mulv( player.phys.rb.to_world, (v3f){-1.0f,1.6f,0.0f},
+                                             menu_target_cam_pos );
+      }
+      else
+      {
+         v4f r180;
+         q_axis_angle( r180, player.phys.rb.up, VG_PIf );
+         q_mul( r180, player.phys.rb.q, menu_target_cam_q );
+         m4x3_mulv( player.phys.rb.to_world, (v3f){0.0f,1.6f,-1.0f},
+                                             menu_target_cam_pos );
+      }
+
+      q_normalize( menu_target_cam_q );
+      q_normalize( menu_cam_q );
+      menu_opacity = 0.0f;
+   }
+
+   if( enabled_last && !enabled )
+   {
+      m3x3_q( player.camera, menu_target_cam_q );
+      v3_copy( player.camera[3], menu_target_cam_pos );
+   }
+
+   float dt = vg.time_delta * 6.0f;
+
+   q_nlerp( menu_cam_q, menu_target_cam_q, dt, menu_cam_q );
+   v3_lerp( menu_cam_pos, menu_target_cam_pos, dt, menu_cam_pos );
+
+   q_m3x3( menu_cam_q, menu_cam );
+   v3_copy( menu_cam_pos, menu_cam[3] );
+   m4x3_invert_affine( menu_cam, menu_cam_inv );
+   menu_opacity = vg_lerpf( menu_opacity, enabled, dt );
+
+   enabled_last = enabled;
+}
+
+static void menu_render( m4x4f projection )
+{
+   glEnable(GL_BLEND);
+   glDisable(GL_DEPTH_TEST);
+   glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
+   glBlendEquation(GL_FUNC_ADD);
+
+   shader_fscolour_use();
+   shader_fscolour_uColour( (v4f){ 0.1f, 0.1f, 0.3f, menu_opacity*0.5f } );
+   render_fsquad();
+
+   glEnable( GL_DEPTH_TEST );
+   glDisable( GL_BLEND );
+
+   m4x3f mtx;
+   
+   shader_menu_use();
+   shader_menu_uColour( (v4f){ 1.0f,1.0f,1.0f,1.0f} );
+   shader_menu_uTexMain( 1 );
+   vg_tex2d_bind( &tex_graffiti, 1 );
+
+   shader_menu_uPv( projection );
+   mesh_bind( &menu_glmesh );
+
+   m4x3_identity( mtx );
+   shader_menu_uMdl( mtx );
+   mesh_draw( &menu_glmesh );
+
+   for( int i=0; i<menu_model->node_count; i++ )
+   {
+      mdl_node *pnode = mdl_node_from_id( menu_model, i );
+      
+      for( int j=0; j<pnode->submesh_count; j++ )
+      {
+         mdl_submesh *sm = 
+            mdl_submesh_from_id( menu_model, pnode->submesh_start+j );
+
+         mdl_node_transform( pnode, mtx );
+         m4x3_mul( player.phys.rb.to_world, mtx, mtx );
+         shader_menu_uMdl( mtx );
+
+         mdl_draw_submesh( sm );
+      }
+   }
+}
+
+static void menu_free(void *_)
+{
+   mesh_free( &menu_glmesh );
+}
+
+#endif /* MENU_H */
index a191251303fd2bbaf9dbd915b23fc4446a303c4e..3af60ac1f22eb24213dc6e4e6a060c3d6d805cb7 100644 (file)
Binary files a/models_src/ch_jordan.mdl and b/models_src/ch_jordan.mdl differ
diff --git a/models_src/rs_menu.mdl b/models_src/rs_menu.mdl
new file mode 100644 (file)
index 0000000..a852486
Binary files /dev/null and b/models_src/rs_menu.mdl differ
index 0d773389945602aea7344500dfb410c8317024a0..38c3224de7fd1ab06f2b4034c467ca23c6c3ed4d 100644 (file)
--- a/player.h
+++ b/player.h
@@ -318,7 +318,7 @@ static void player_update_post(void)
    player_camera_update();
 }
 
-static void draw_player(void)                                            /* 3 */
+static void draw_player( m4x3f cam )
 {
    if( player.is_dead )
       player_model_copy_ragdoll();
@@ -326,7 +326,7 @@ static void draw_player(void)                                            /* 3 */
    shader_viewchar_use();
    vg_tex2d_bind( &tex_characters, 0 );
    shader_viewchar_uTexMain( 0 );
-   shader_viewchar_uCamera( player.camera[3] );
+   shader_viewchar_uCamera( cam[3] );
    shader_viewchar_uPv( vg.pv );
    shader_link_standard_ub( _shader_viewchar.id, 2 );
    glUniformMatrix4x3fv( _uniform_viewchar_uTransforms, 
index ea7d566468bbc3463c750c8ef67249b1aeaafcbc..9f0c0d536e832c7d39c8927d4589ec12c3685b6d 100644 (file)
@@ -139,8 +139,8 @@ static void player_animate(void)
    offset[1] *= -0.3f;
    offset[2] *= 0.01f;
 
-   offset[0] = vg_clampf( offset[0], -0.8f, 0.8f );
-   offset[1] = vg_clampf( offset[1], -0.5f, 0.0f );
+   offset[0]=vg_clampf(offset[0],-0.8f,0.8f)*(1.0f-fabsf(player.fslide)*0.9f);
+   offset[1]=vg_clampf(offset[1],-0.5f,0.0f);
 
    /* 
     * Animation blending
@@ -245,7 +245,7 @@ static void player_animate(void)
 
    skeleton_lerp_pose( sk, ground_pose, air_pose, player.ffly, apose );
 
-   float add_grab_mod = 1.0f - player.ffly*phys->grab;
+   float add_grab_mod = 1.0f - player.ffly;//*phys->grab;
 
    /* additive effects */
    {
index f97d612a37e1fa55ce54bfcdd3973a5b226c47ba..8122b2ae8e41f18effe8dea39a9d5224ae8f2c93 100644 (file)
--- a/render.h
+++ b/render.h
@@ -8,7 +8,6 @@
 #include "shaders/blit.h"
 #include "shaders/standard.h"
 #include "shaders/vblend.h"
-#include "shaders/unlit.h"
 
 static void render_water_texture( m4x3f camera );
 static void render_water_surface( m4x4f pv, m4x3f camera );
@@ -347,7 +346,6 @@ static void render_init(void)
    shader_blit_register();
    shader_standard_register();
    shader_vblend_register();
-   shader_unlit_register();
 
    vg_acquire_thread_sync();
    {
index b4b0f0335cce530aa1e901544a4c7330657166fc..4d78657f0a5a50f990ffd09ed81a49c548673687 100755 (executable)
@@ -13,7 +13,6 @@ shader(){
 shader blit blit.vs blit.fs
 shader standard standard.vs standard.fs
 shader vblend standard.vs vblend.fs
-shader unlit standard.vs unlit.fs
 shader terrain standard.vs terrain.fs
 shader sky standard.vs sky.fs
 shader planeinf standard.vs planeinf.fs
@@ -27,6 +26,7 @@ shader gatelq gate.vs gate_lq.fs
 shader route standard.vs route.fs
 shader routeui routeui.vs routeui.fs
 shader viewchar standard_skinned.vs viewchar.fs
+shader menu standard.vs unlit.fs
 
 cd shaders
 ../bin/linux/tools/shader $target_shaders
index 80ce028df5bd3622141e9837362a195e5c9a3e03..9b161c1b86a28950c59c3fd1781977bf033cac06 100644 (file)
@@ -18,8 +18,8 @@ static struct vg_shader _shader_alphatest = {
 "\n"
 "#line      2        0 \n"
 "\n"
-"uniform mat4 uPv;\n"
 "uniform mat4x3 uMdl;\n"
+"uniform mat4 uPv;\n"
 "\n"
 "out vec4 aColour;\n"
 "out vec2 aUv;\n"
@@ -186,19 +186,19 @@ static struct vg_shader _shader_alphatest = {
 ""},
 };
 
-static GLuint _uniform_alphatest_uPv;
 static GLuint _uniform_alphatest_uMdl;
+static GLuint _uniform_alphatest_uPv;
 static GLuint _uniform_alphatest_uTexGarbage;
 static GLuint _uniform_alphatest_uTexMain;
 static GLuint _uniform_alphatest_uCamera;
 static GLuint _uniform_alphatest_uPlane;
 static GLuint _uniform_alphatest_g_world_depth;
-static void shader_alphatest_uPv(m4x4f m){
-   glUniformMatrix4fv( _uniform_alphatest_uPv, 1, GL_FALSE, (float *)m );
-}
 static void shader_alphatest_uMdl(m4x3f m){
    glUniformMatrix4x3fv( _uniform_alphatest_uMdl, 1, GL_FALSE, (float *)m );
 }
+static void shader_alphatest_uPv(m4x4f m){
+   glUniformMatrix4fv( _uniform_alphatest_uPv, 1, GL_FALSE, (float *)m );
+}
 static void shader_alphatest_uTexGarbage(int i){
    glUniform1i( _uniform_alphatest_uTexGarbage, i );
 }
@@ -219,8 +219,8 @@ static void shader_alphatest_register(void){
 }
 static void shader_alphatest_use(void){ glUseProgram(_shader_alphatest.id); }
 static void shader_alphatest_link(void){
-   _uniform_alphatest_uPv = glGetUniformLocation( _shader_alphatest.id, "uPv" );
    _uniform_alphatest_uMdl = glGetUniformLocation( _shader_alphatest.id, "uMdl" );
+   _uniform_alphatest_uPv = glGetUniformLocation( _shader_alphatest.id, "uPv" );
    _uniform_alphatest_uTexGarbage = glGetUniformLocation( _shader_alphatest.id, "uTexGarbage" );
    _uniform_alphatest_uTexMain = glGetUniformLocation( _shader_alphatest.id, "uTexMain" );
    _uniform_alphatest_uCamera = glGetUniformLocation( _shader_alphatest.id, "uCamera" );
index 1cb364e0f324bca58941f1af8bf24bdb20868ce0..8b7dbf416b00c9b3871f2a53b96f05973ec74d40 100644 (file)
@@ -18,8 +18,8 @@ static struct vg_shader _shader_gpos = {
 "\n"
 "#line      2        0 \n"
 "\n"
-"uniform mat4 uPv;\n"
 "uniform mat4x3 uMdl;\n"
+"uniform mat4 uPv;\n"
 "\n"
 "out vec4 aColour;\n"
 "out vec2 aUv;\n"
@@ -174,16 +174,16 @@ static struct vg_shader _shader_gpos = {
 ""},
 };
 
-static GLuint _uniform_gpos_uPv;
 static GLuint _uniform_gpos_uMdl;
+static GLuint _uniform_gpos_uPv;
 static GLuint _uniform_gpos_uCamera;
 static GLuint _uniform_gpos_g_world_depth;
-static void shader_gpos_uPv(m4x4f m){
-   glUniformMatrix4fv( _uniform_gpos_uPv, 1, GL_FALSE, (float *)m );
-}
 static void shader_gpos_uMdl(m4x3f m){
    glUniformMatrix4x3fv( _uniform_gpos_uMdl, 1, GL_FALSE, (float *)m );
 }
+static void shader_gpos_uPv(m4x4f m){
+   glUniformMatrix4fv( _uniform_gpos_uPv, 1, GL_FALSE, (float *)m );
+}
 static void shader_gpos_uCamera(v3f v){
    glUniform3fv( _uniform_gpos_uCamera, 1, v );
 }
@@ -195,8 +195,8 @@ static void shader_gpos_register(void){
 }
 static void shader_gpos_use(void){ glUseProgram(_shader_gpos.id); }
 static void shader_gpos_link(void){
-   _uniform_gpos_uPv = glGetUniformLocation( _shader_gpos.id, "uPv" );
    _uniform_gpos_uMdl = glGetUniformLocation( _shader_gpos.id, "uMdl" );
+   _uniform_gpos_uPv = glGetUniformLocation( _shader_gpos.id, "uPv" );
    _uniform_gpos_uCamera = glGetUniformLocation( _shader_gpos.id, "uCamera" );
    _uniform_gpos_g_world_depth = glGetUniformLocation( _shader_gpos.id, "g_world_depth" );
 }
diff --git a/shaders/menu.fs b/shaders/menu.fs
new file mode 100644 (file)
index 0000000..e957ddf
--- /dev/null
@@ -0,0 +1,19 @@
+out vec4 FragColor;
+
+uniform sampler2D uTexMain;
+uniform vec4 uColour;
+
+in vec4 aColour;
+in vec2 aUv;
+in vec3 aNorm;
+in vec3 aCo;
+
+void main()
+{
+   vec4 diffuse = texture( uTexMain, aUv );
+
+   if( diffuse.a < 0.5 )
+      discard;
+
+   FragColor = vec4( diffuse.rgb, 1.0 ) * uColour;
+}
diff --git a/shaders/menu.h b/shaders/menu.h
new file mode 100644 (file)
index 0000000..67700e8
--- /dev/null
@@ -0,0 +1,89 @@
+#ifndef SHADER_menu_H
+#define SHADER_menu_H
+static void shader_menu_link(void);
+static void shader_menu_register(void);
+static struct vg_shader _shader_menu = {
+   .name = "menu",
+   .link = shader_menu_link,
+   .vs = 
+{
+.orig_file = "../../shaders/standard.vs",
+.static_src = 
+"layout (location=0) in vec3 a_co;\n"
+"layout (location=1) in vec3 a_norm;\n"
+"layout (location=2) in vec2 a_uv;\n"
+"layout (location=3) in vec4 a_colour;\n"
+"layout (location=4) in vec4 a_weights;\n"
+"layout (location=5) in ivec4 a_groups;\n"
+"\n"
+"#line      2        0 \n"
+"\n"
+"uniform mat4x3 uMdl;\n"
+"uniform mat4 uPv;\n"
+"\n"
+"out vec4 aColour;\n"
+"out vec2 aUv;\n"
+"out vec3 aNorm;\n"
+"out vec3 aCo;\n"
+"out vec3 aWorldCo;\n"
+"\n"
+"void main()\n"
+"{\n"
+"   vec3 world_pos = uMdl * vec4(a_co,1.0);\n"
+"   gl_Position = uPv * vec4( world_pos, 1.0 );\n"
+"   aColour = a_colour;\n"
+"   aUv = a_uv;\n"
+"   aNorm = mat3(uMdl) * a_norm;\n"
+"   aCo = a_co;\n"
+"   aWorldCo = world_pos;\n"
+"}\n"
+""},
+   .fs = 
+{
+.orig_file = "../../shaders/unlit.fs",
+.static_src = 
+"out vec4 FragColor;\n"
+"\n"
+"uniform sampler2D uTexMain;\n"
+"uniform vec4 uColour;\n"
+"\n"
+"in vec4 aColour;\n"
+"in vec2 aUv;\n"
+"in vec3 aNorm;\n"
+"in vec3 aCo;\n"
+"\n"
+"void main()\n"
+"{\n"
+"   vec3 diffuse = texture( uTexMain, aUv ).rgb;\n"
+"   FragColor = vec4( diffuse, 1.0 );\n"
+"}\n"
+""},
+};
+
+static GLuint _uniform_menu_uMdl;
+static GLuint _uniform_menu_uPv;
+static GLuint _uniform_menu_uTexMain;
+static GLuint _uniform_menu_uColour;
+static void shader_menu_uMdl(m4x3f m){
+   glUniformMatrix4x3fv( _uniform_menu_uMdl, 1, GL_FALSE, (float *)m );
+}
+static void shader_menu_uPv(m4x4f m){
+   glUniformMatrix4fv( _uniform_menu_uPv, 1, GL_FALSE, (float *)m );
+}
+static void shader_menu_uTexMain(int i){
+   glUniform1i( _uniform_menu_uTexMain, i );
+}
+static void shader_menu_uColour(v4f v){
+   glUniform4fv( _uniform_menu_uColour, 1, v );
+}
+static void shader_menu_register(void){
+   vg_shader_register( &_shader_menu );
+}
+static void shader_menu_use(void){ glUseProgram(_shader_menu.id); }
+static void shader_menu_link(void){
+   _uniform_menu_uMdl = glGetUniformLocation( _shader_menu.id, "uMdl" );
+   _uniform_menu_uPv = glGetUniformLocation( _shader_menu.id, "uPv" );
+   _uniform_menu_uTexMain = glGetUniformLocation( _shader_menu.id, "uTexMain" );
+   _uniform_menu_uColour = glGetUniformLocation( _shader_menu.id, "uColour" );
+}
+#endif /* SHADER_menu_H */
index a0272a8d9c837c7121b18c0c2188ff554146e9ce..bb2a89a3cb341be2dcecab64db9b0eccae780052 100644 (file)
@@ -18,8 +18,8 @@ static struct vg_shader _shader_planeinf = {
 "\n"
 "#line      2        0 \n"
 "\n"
-"uniform mat4 uPv;\n"
 "uniform mat4x3 uMdl;\n"
+"uniform mat4 uPv;\n"
 "\n"
 "out vec4 aColour;\n"
 "out vec2 aUv;\n"
@@ -72,16 +72,16 @@ static struct vg_shader _shader_planeinf = {
 ""},
 };
 
-static GLuint _uniform_planeinf_uPv;
 static GLuint _uniform_planeinf_uMdl;
+static GLuint _uniform_planeinf_uPv;
 static GLuint _uniform_planeinf_uCamera;
 static GLuint _uniform_planeinf_uPlane;
-static void shader_planeinf_uPv(m4x4f m){
-   glUniformMatrix4fv( _uniform_planeinf_uPv, 1, GL_FALSE, (float *)m );
-}
 static void shader_planeinf_uMdl(m4x3f m){
    glUniformMatrix4x3fv( _uniform_planeinf_uMdl, 1, GL_FALSE, (float *)m );
 }
+static void shader_planeinf_uPv(m4x4f m){
+   glUniformMatrix4fv( _uniform_planeinf_uPv, 1, GL_FALSE, (float *)m );
+}
 static void shader_planeinf_uCamera(v3f v){
    glUniform3fv( _uniform_planeinf_uCamera, 1, v );
 }
@@ -93,8 +93,8 @@ static void shader_planeinf_register(void){
 }
 static void shader_planeinf_use(void){ glUseProgram(_shader_planeinf.id); }
 static void shader_planeinf_link(void){
-   _uniform_planeinf_uPv = glGetUniformLocation( _shader_planeinf.id, "uPv" );
    _uniform_planeinf_uMdl = glGetUniformLocation( _shader_planeinf.id, "uMdl" );
+   _uniform_planeinf_uPv = glGetUniformLocation( _shader_planeinf.id, "uPv" );
    _uniform_planeinf_uCamera = glGetUniformLocation( _shader_planeinf.id, "uCamera" );
    _uniform_planeinf_uPlane = glGetUniformLocation( _shader_planeinf.id, "uPlane" );
 }
index 2ecff91df16a4d3e7610787cd19187371fd8e00e..271a47f328d68575499328749e9b37d58aa52e09 100644 (file)
@@ -18,8 +18,8 @@ static struct vg_shader _shader_route = {
 "\n"
 "#line      2        0 \n"
 "\n"
-"uniform mat4 uPv;\n"
 "uniform mat4x3 uMdl;\n"
+"uniform mat4 uPv;\n"
 "\n"
 "out vec4 aColour;\n"
 "out vec2 aUv;\n"
@@ -199,19 +199,19 @@ static struct vg_shader _shader_route = {
 ""},
 };
 
-static GLuint _uniform_route_uPv;
 static GLuint _uniform_route_uMdl;
+static GLuint _uniform_route_uPv;
 static GLuint _uniform_route_uTexGarbage;
 static GLuint _uniform_route_uTexGradients;
 static GLuint _uniform_route_uCamera;
 static GLuint _uniform_route_uColour;
 static GLuint _uniform_route_g_world_depth;
-static void shader_route_uPv(m4x4f m){
-   glUniformMatrix4fv( _uniform_route_uPv, 1, GL_FALSE, (float *)m );
-}
 static void shader_route_uMdl(m4x3f m){
    glUniformMatrix4x3fv( _uniform_route_uMdl, 1, GL_FALSE, (float *)m );
 }
+static void shader_route_uPv(m4x4f m){
+   glUniformMatrix4fv( _uniform_route_uPv, 1, GL_FALSE, (float *)m );
+}
 static void shader_route_uTexGarbage(int i){
    glUniform1i( _uniform_route_uTexGarbage, i );
 }
@@ -232,8 +232,8 @@ static void shader_route_register(void){
 }
 static void shader_route_use(void){ glUseProgram(_shader_route.id); }
 static void shader_route_link(void){
-   _uniform_route_uPv = glGetUniformLocation( _shader_route.id, "uPv" );
    _uniform_route_uMdl = glGetUniformLocation( _shader_route.id, "uMdl" );
+   _uniform_route_uPv = glGetUniformLocation( _shader_route.id, "uPv" );
    _uniform_route_uTexGarbage = glGetUniformLocation( _shader_route.id, "uTexGarbage" );
    _uniform_route_uTexGradients = glGetUniformLocation( _shader_route.id, "uTexGradients" );
    _uniform_route_uCamera = glGetUniformLocation( _shader_route.id, "uCamera" );
index 0abd65a1b12b5291217b3d5db3188ac4cc073e6d..53fb5a6645e7ffc23dfb723f75da19f15af9f5a8 100644 (file)
@@ -18,8 +18,8 @@ static struct vg_shader _shader_sky = {
 "\n"
 "#line      2        0 \n"
 "\n"
-"uniform mat4 uPv;\n"
 "uniform mat4x3 uMdl;\n"
+"uniform mat4 uPv;\n"
 "\n"
 "out vec4 aColour;\n"
 "out vec2 aUv;\n"
@@ -78,17 +78,17 @@ static struct vg_shader _shader_sky = {
 ""},
 };
 
-static GLuint _uniform_sky_uPv;
 static GLuint _uniform_sky_uMdl;
+static GLuint _uniform_sky_uPv;
 static GLuint _uniform_sky_uColour;
 static GLuint _uniform_sky_uTexGarbage;
 static GLuint _uniform_sky_uTime;
-static void shader_sky_uPv(m4x4f m){
-   glUniformMatrix4fv( _uniform_sky_uPv, 1, GL_FALSE, (float *)m );
-}
 static void shader_sky_uMdl(m4x3f m){
    glUniformMatrix4x3fv( _uniform_sky_uMdl, 1, GL_FALSE, (float *)m );
 }
+static void shader_sky_uPv(m4x4f m){
+   glUniformMatrix4fv( _uniform_sky_uPv, 1, GL_FALSE, (float *)m );
+}
 static void shader_sky_uColour(v4f v){
    glUniform4fv( _uniform_sky_uColour, 1, v );
 }
@@ -103,8 +103,8 @@ static void shader_sky_register(void){
 }
 static void shader_sky_use(void){ glUseProgram(_shader_sky.id); }
 static void shader_sky_link(void){
-   _uniform_sky_uPv = glGetUniformLocation( _shader_sky.id, "uPv" );
    _uniform_sky_uMdl = glGetUniformLocation( _shader_sky.id, "uMdl" );
+   _uniform_sky_uPv = glGetUniformLocation( _shader_sky.id, "uPv" );
    _uniform_sky_uColour = glGetUniformLocation( _shader_sky.id, "uColour" );
    _uniform_sky_uTexGarbage = glGetUniformLocation( _shader_sky.id, "uTexGarbage" );
    _uniform_sky_uTime = glGetUniformLocation( _shader_sky.id, "uTime" );
index 16f36cee1676afd2d5761cbec55a298ddbac39c8..cf98fb0765d652ea5be57e6b44efb6bf386fe7ab 100644 (file)
@@ -18,8 +18,8 @@ static struct vg_shader _shader_standard = {
 "\n"
 "#line      2        0 \n"
 "\n"
-"uniform mat4 uPv;\n"
 "uniform mat4x3 uMdl;\n"
+"uniform mat4 uPv;\n"
 "\n"
 "out vec4 aColour;\n"
 "out vec2 aUv;\n"
@@ -65,16 +65,16 @@ static struct vg_shader _shader_standard = {
 ""},
 };
 
-static GLuint _uniform_standard_uPv;
 static GLuint _uniform_standard_uMdl;
+static GLuint _uniform_standard_uPv;
 static GLuint _uniform_standard_uTexMain;
 static GLuint _uniform_standard_uColour;
-static void shader_standard_uPv(m4x4f m){
-   glUniformMatrix4fv( _uniform_standard_uPv, 1, GL_FALSE, (float *)m );
-}
 static void shader_standard_uMdl(m4x3f m){
    glUniformMatrix4x3fv( _uniform_standard_uMdl, 1, GL_FALSE, (float *)m );
 }
+static void shader_standard_uPv(m4x4f m){
+   glUniformMatrix4fv( _uniform_standard_uPv, 1, GL_FALSE, (float *)m );
+}
 static void shader_standard_uTexMain(int i){
    glUniform1i( _uniform_standard_uTexMain, i );
 }
@@ -86,8 +86,8 @@ static void shader_standard_register(void){
 }
 static void shader_standard_use(void){ glUseProgram(_shader_standard.id); }
 static void shader_standard_link(void){
-   _uniform_standard_uPv = glGetUniformLocation( _shader_standard.id, "uPv" );
    _uniform_standard_uMdl = glGetUniformLocation( _shader_standard.id, "uMdl" );
+   _uniform_standard_uPv = glGetUniformLocation( _shader_standard.id, "uPv" );
    _uniform_standard_uTexMain = glGetUniformLocation( _shader_standard.id, "uTexMain" );
    _uniform_standard_uColour = glGetUniformLocation( _shader_standard.id, "uColour" );
 }
index ac062ae0373609130e4990fb93cb857e127c094c..33f41544f835b0dd83d43beac92cc33baeb8a3ae 100644 (file)
@@ -1,7 +1,7 @@
 #include "vertex_standard.glsl"
 
-uniform mat4 uPv;
 uniform mat4x3 uMdl;
+uniform mat4 uPv;
 
 out vec4 aColour;
 out vec2 aUv;
index 063566282c27bb944818e249f5e1df702f784954..5ebef38e970aa36c7488362763fa31013e4d30d5 100644 (file)
@@ -18,8 +18,8 @@ static struct vg_shader _shader_terrain = {
 "\n"
 "#line      2        0 \n"
 "\n"
-"uniform mat4 uPv;\n"
 "uniform mat4x3 uMdl;\n"
+"uniform mat4 uPv;\n"
 "\n"
 "out vec4 aColour;\n"
 "out vec2 aUv;\n"
@@ -200,18 +200,18 @@ static struct vg_shader _shader_terrain = {
 ""},
 };
 
-static GLuint _uniform_terrain_uPv;
 static GLuint _uniform_terrain_uMdl;
+static GLuint _uniform_terrain_uPv;
 static GLuint _uniform_terrain_uTexGarbage;
 static GLuint _uniform_terrain_uTexGradients;
 static GLuint _uniform_terrain_uCamera;
 static GLuint _uniform_terrain_g_world_depth;
-static void shader_terrain_uPv(m4x4f m){
-   glUniformMatrix4fv( _uniform_terrain_uPv, 1, GL_FALSE, (float *)m );
-}
 static void shader_terrain_uMdl(m4x3f m){
    glUniformMatrix4x3fv( _uniform_terrain_uMdl, 1, GL_FALSE, (float *)m );
 }
+static void shader_terrain_uPv(m4x4f m){
+   glUniformMatrix4fv( _uniform_terrain_uPv, 1, GL_FALSE, (float *)m );
+}
 static void shader_terrain_uTexGarbage(int i){
    glUniform1i( _uniform_terrain_uTexGarbage, i );
 }
@@ -229,8 +229,8 @@ static void shader_terrain_register(void){
 }
 static void shader_terrain_use(void){ glUseProgram(_shader_terrain.id); }
 static void shader_terrain_link(void){
-   _uniform_terrain_uPv = glGetUniformLocation( _shader_terrain.id, "uPv" );
    _uniform_terrain_uMdl = glGetUniformLocation( _shader_terrain.id, "uMdl" );
+   _uniform_terrain_uPv = glGetUniformLocation( _shader_terrain.id, "uPv" );
    _uniform_terrain_uTexGarbage = glGetUniformLocation( _shader_terrain.id, "uTexGarbage" );
    _uniform_terrain_uTexGradients = glGetUniformLocation( _shader_terrain.id, "uTexGradients" );
    _uniform_terrain_uCamera = glGetUniformLocation( _shader_terrain.id, "uCamera" );
index ec4d7ae970fb71fe5f0276f86ae6332a73e555d1..bc57d62108cf95e284ccc3ece7d2d1239045b557 100644 (file)
@@ -11,5 +11,5 @@ in vec3 aCo;
 void main()
 {
    vec3 diffuse = texture( uTexMain, aUv ).rgb;
-   FragColor = vec4(pow(diffuse,vec3(1.0)),1.0);
+   FragColor = vec4( diffuse, 1.0 );
 }
index b8027c10e5df4f8375bd5a27bedaf1b5c898e575..61b0ccec1b77eef911b69f4e3d443b10509ba94c 100644 (file)
@@ -18,8 +18,8 @@ static struct vg_shader _shader_vblend = {
 "\n"
 "#line      2        0 \n"
 "\n"
-"uniform mat4 uPv;\n"
 "uniform mat4x3 uMdl;\n"
+"uniform mat4 uPv;\n"
 "\n"
 "out vec4 aColour;\n"
 "out vec2 aUv;\n"
@@ -199,18 +199,18 @@ static struct vg_shader _shader_vblend = {
 ""},
 };
 
-static GLuint _uniform_vblend_uPv;
 static GLuint _uniform_vblend_uMdl;
+static GLuint _uniform_vblend_uPv;
 static GLuint _uniform_vblend_uTexGarbage;
 static GLuint _uniform_vblend_uTexGradients;
 static GLuint _uniform_vblend_uCamera;
 static GLuint _uniform_vblend_g_world_depth;
-static void shader_vblend_uPv(m4x4f m){
-   glUniformMatrix4fv( _uniform_vblend_uPv, 1, GL_FALSE, (float *)m );
-}
 static void shader_vblend_uMdl(m4x3f m){
    glUniformMatrix4x3fv( _uniform_vblend_uMdl, 1, GL_FALSE, (float *)m );
 }
+static void shader_vblend_uPv(m4x4f m){
+   glUniformMatrix4fv( _uniform_vblend_uPv, 1, GL_FALSE, (float *)m );
+}
 static void shader_vblend_uTexGarbage(int i){
    glUniform1i( _uniform_vblend_uTexGarbage, i );
 }
@@ -228,8 +228,8 @@ static void shader_vblend_register(void){
 }
 static void shader_vblend_use(void){ glUseProgram(_shader_vblend.id); }
 static void shader_vblend_link(void){
-   _uniform_vblend_uPv = glGetUniformLocation( _shader_vblend.id, "uPv" );
    _uniform_vblend_uMdl = glGetUniformLocation( _shader_vblend.id, "uMdl" );
+   _uniform_vblend_uPv = glGetUniformLocation( _shader_vblend.id, "uPv" );
    _uniform_vblend_uTexGarbage = glGetUniformLocation( _shader_vblend.id, "uTexGarbage" );
    _uniform_vblend_uTexGradients = glGetUniformLocation( _shader_vblend.id, "uTexGradients" );
    _uniform_vblend_uCamera = glGetUniformLocation( _shader_vblend.id, "uCamera" );
index 0171a52dae7afa0a797e10924716d779aacdec4c..ca3ab47340ffdb343247e88a65d8c3d312083aa3 100644 (file)
@@ -18,8 +18,8 @@ static struct vg_shader _shader_water = {
 "\n"
 "#line      2        0 \n"
 "\n"
-"uniform mat4 uPv;\n"
 "uniform mat4x3 uMdl;\n"
+"uniform mat4 uPv;\n"
 "\n"
 "out vec4 aColour;\n"
 "out vec2 aUv;\n"
@@ -220,8 +220,8 @@ static struct vg_shader _shader_water = {
 ""},
 };
 
-static GLuint _uniform_water_uPv;
 static GLuint _uniform_water_uMdl;
+static GLuint _uniform_water_uPv;
 static GLuint _uniform_water_uTexMain;
 static GLuint _uniform_water_uTexDudv;
 static GLuint _uniform_water_uTexBack;
@@ -230,12 +230,12 @@ static GLuint _uniform_water_uTime;
 static GLuint _uniform_water_uCamera;
 static GLuint _uniform_water_uSurfaceY;
 static GLuint _uniform_water_g_world_depth;
-static void shader_water_uPv(m4x4f m){
-   glUniformMatrix4fv( _uniform_water_uPv, 1, GL_FALSE, (float *)m );
-}
 static void shader_water_uMdl(m4x3f m){
    glUniformMatrix4x3fv( _uniform_water_uMdl, 1, GL_FALSE, (float *)m );
 }
+static void shader_water_uPv(m4x4f m){
+   glUniformMatrix4fv( _uniform_water_uPv, 1, GL_FALSE, (float *)m );
+}
 static void shader_water_uTexMain(int i){
    glUniform1i( _uniform_water_uTexMain, i );
 }
@@ -265,8 +265,8 @@ static void shader_water_register(void){
 }
 static void shader_water_use(void){ glUseProgram(_shader_water.id); }
 static void shader_water_link(void){
-   _uniform_water_uPv = glGetUniformLocation( _shader_water.id, "uPv" );
    _uniform_water_uMdl = glGetUniformLocation( _shader_water.id, "uMdl" );
+   _uniform_water_uPv = glGetUniformLocation( _shader_water.id, "uPv" );
    _uniform_water_uTexMain = glGetUniformLocation( _shader_water.id, "uTexMain" );
    _uniform_water_uTexDudv = glGetUniformLocation( _shader_water.id, "uTexDudv" );
    _uniform_water_uTexBack = glGetUniformLocation( _shader_water.id, "uTexBack" );
index 3f5521f9da01da80cf9fc21485884a86a3091441..0376d45097fbba5a44c7d0d1b9f566f969fde258 100644 (file)
Binary files a/textures_src/graffitibox.png and b/textures_src/graffitibox.png differ