X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=render.h;h=22c05726ddd0222a7b567e6b47c1c87ddea18540;hb=859178c6d4b2a9b9a95f8b01b113f589ce0f197f;hp=e77a809edae3ada5e4b0cc0663ff7b8dc0be445f;hpb=eead7b53ab6afe9b9e9bda2d5bfa6891e8845453;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/render.h b/render.h index e77a809..22c0572 100644 --- a/render.h +++ b/render.h @@ -10,6 +10,7 @@ #include "shaders/blit.h" #include "shaders/blitblur.h" #include "shaders/blitcolour.h" +#include "shaders/blit_transition.h" #define WORKSHOP_PREVIEW_WIDTH 504 #define WORKSHOP_PREVIEW_HEIGHT 336 @@ -27,13 +28,14 @@ typedef struct framebuffer framebuffer; /* * All standard buffers used in rendering */ -VG_STATIC struct pipeline{ +static struct pipeline{ glmesh fsquad; framebuffer *fb_main, *fb_water_reflection, *fb_water_beneath, - *fb_workshop_preview; + *fb_workshop_preview, + *fb_network_status; int ready; } gpipeline; @@ -190,13 +192,29 @@ framebuffers[] = .attachment = GL_DEPTH_STENCIL_ATTACHMENT } } + }, + { + "network_status_ui", + .link = &gpipeline.fb_network_status, + .resolution_div = 0, + .fixed_w = 128, .fixed_h = 48, + .attachments = + { + { + "colour", k_framebuffer_attachment_type_texture, + .internalformat = GL_RGB, + .format = GL_RGB, + .type = GL_UNSIGNED_BYTE, + .attachment = GL_COLOR_ATTACHMENT0 + } + } } }; /* * Get the current (automatically scaled or fixed) resolution of framebuffer */ -VG_STATIC void render_fb_get_current_res( struct framebuffer *fb, +static void render_fb_get_current_res( struct framebuffer *fb, int *x, int *y ) { if( fb->resolution_div ){ @@ -209,7 +227,7 @@ VG_STATIC void render_fb_get_current_res( struct framebuffer *fb, } } -VG_STATIC void render_fb_inverse_ratio( framebuffer *fb, v2f inverse ) +static void render_fb_inverse_ratio( framebuffer *fb, v2f inverse ) { if( fb ){ int x, y; @@ -228,7 +246,7 @@ VG_STATIC void render_fb_inverse_ratio( framebuffer *fb, v2f inverse ) /* * Bind framebuffer for drawing to */ -VG_STATIC void render_fb_bind( framebuffer *fb, int use_scaling ) +static void render_fb_bind( framebuffer *fb, int use_scaling ) { int x, y; render_fb_get_current_res( fb, &x, &y ); @@ -251,7 +269,7 @@ VG_STATIC void render_fb_bind( framebuffer *fb, int use_scaling ) /* * Bind framebuffer attachment's texture */ -VG_STATIC void render_fb_bind_texture( framebuffer *fb, +static void render_fb_bind_texture( framebuffer *fb, int attachment, int slot ) { struct framebuffer_attachment *at = &fb->attachments[attachment]; @@ -277,7 +295,7 @@ VG_STATIC void render_fb_bind_texture( framebuffer *fb, /* * Convert OpenGL attachment ID enum to string */ -VG_STATIC const char *render_fb_attachment_str( GLenum e ) +static const char *render_fb_attachment_str( GLenum e ) { struct { GLenum e; const char *str; } formats[] = @@ -301,7 +319,7 @@ VG_STATIC const char *render_fb_attachment_str( GLenum e ) * Convert OpenGL texture format enums from TexImage2D table 1,2 & * RenderBufferStorage Table 1, into strings */ -VG_STATIC const char *render_fb_format_str( GLenum format ) +static const char *render_fb_format_str( GLenum format ) { struct { GLenum e; const char *str; } formats[] = @@ -396,7 +414,7 @@ VG_STATIC const char *render_fb_format_str( GLenum format ) /* * Bind and allocate texture for framebuffer attachment */ -VG_STATIC void render_fb_allocate_texture( struct framebuffer *fb, +static void render_fb_allocate_texture( struct framebuffer *fb, struct framebuffer_attachment *a ) { int rx, ry; @@ -418,7 +436,7 @@ VG_STATIC void render_fb_allocate_texture( struct framebuffer *fb, /* * Full allocation of a framebuffer */ -VG_STATIC void render_fb_allocate( struct framebuffer *fb ) +static void render_fb_allocate( struct framebuffer *fb ) { glGenFramebuffers( 1, &fb->fb ); glBindFramebuffer( GL_FRAMEBUFFER, fb->fb ); @@ -502,7 +520,7 @@ VG_STATIC void render_fb_allocate( struct framebuffer *fb ) /* * Resize/Update all framebuffers(we know about) */ -VG_STATIC void render_fb_resize(void) +static void render_fb_resize(void) { if( !gpipeline.ready ) return; @@ -515,10 +533,10 @@ VG_STATIC void render_fb_resize(void) } } -VG_STATIC int render_framebuffer_control( int argc, char const *argv[] ); -VG_STATIC void render_framebuffer_poll( int argc, char const *argv[] ); +static int render_framebuffer_control( int argc, char const *argv[] ); +static void render_framebuffer_poll( int argc, char const *argv[] ); -VG_STATIC void async_render_init( void *payload, u32 size ) +static void async_render_init( void *payload, u32 size ) { /* * Complete Framebuffers @@ -582,7 +600,7 @@ VG_STATIC void async_render_init( void *payload, u32 size ) gpipeline.ready = 1; } -VG_STATIC void render_init(void) +static void render_init(void) { vg_console_reg_var( "blur_strength", &k_blur_strength, k_var_dtype_f32, 0 ); vg_console_reg_var( "render_scale", &k_render_scale, @@ -597,6 +615,7 @@ VG_STATIC void render_init(void) shader_blit_register(); shader_blitblur_register(); shader_blitcolour_register(); + shader_blit_transition_register(); vg_async_call( async_render_init, NULL, 0 ); } @@ -604,19 +623,19 @@ VG_STATIC void render_init(void) /* * Utility */ -VG_STATIC void render_fsquad(void) +static void render_fsquad(void) { glBindVertexArray( gpipeline.fsquad.vao ); glDrawArrays( GL_TRIANGLES, 0, 6 ); } -VG_STATIC void render_fsquad1(void) +static void render_fsquad1(void) { glBindVertexArray( gpipeline.fsquad.vao ); glDrawArrays( GL_TRIANGLES, 6, 6 ); } -VG_STATIC void render_fsquad2(void) +static void render_fsquad2(void) { glBindVertexArray( gpipeline.fsquad.vao ); glDrawArrays( GL_TRIANGLES, 66,6 ); @@ -625,7 +644,7 @@ VG_STATIC void render_fsquad2(void) /* * Call this inside the UI function */ -VG_STATIC void render_view_framebuffer_ui(void) +static void render_view_framebuffer_ui(void) { #if 0 int viewing_count = 0; @@ -681,7 +700,7 @@ VG_STATIC void render_view_framebuffer_ui(void) #endif } -VG_STATIC void render_framebuffer_show( struct framebuffer *fb, +static void render_framebuffer_show( struct framebuffer *fb, struct framebuffer_attachment *at, int operation ) { @@ -695,7 +714,7 @@ VG_STATIC void render_framebuffer_show( struct framebuffer *fb, * arg1: framebuffer name /"all" * arg2: subname /none */ -VG_STATIC int render_framebuffer_control( int argc, char const *argv[] ) +static int render_framebuffer_control( int argc, char const *argv[] ) { if( argc < 2 ){ vg_error( "Usage: fb \"show/hide\" /\"all\" /none\n" ); @@ -743,7 +762,7 @@ VG_STATIC int render_framebuffer_control( int argc, char const *argv[] ) return 0; } -VG_STATIC void render_framebuffer_poll( int argc, char const *argv[] ) +static void render_framebuffer_poll( int argc, char const *argv[] ) { const char *term = argv[argc-1];