_S( "trail", "trail.vs", "trail.fs" );
/* 2D */
- _S( "blit", "blit.vs", "blit.fs" );
+ //_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" );
vg_add_blob( &test_proj, "steam_appid.txt", "" );
}
+void s_utest_build(void)
+{
+ vg_info( "running script: s_utest_build(void)\n" );
+
+ struct vg_compiler_env *env = &vg_test_env;
+ struct vg_project test_proj;
+ vg_project_init( &test_proj, "bin", "utest", NULL, 0 );
+
+ struct vg_compiler_conf conf = {0};
+
+ if( env->platform == k_platform_windows )
+ {
+ vg_strcat( &conf.link, "-lws2_32 " );
+ }
+
+ vg_make_app( &test_proj, &(struct vg_engine_config )
+ {
+ .fixed_update_hz = 60,
+ .log_source_info = 1,
+ .use_3d = 0,
+ .custom_game_settings = 0,
+ .custom_shaders = 0
+ },
+ env, &conf, "src/utest.c", "utest" );
+
+ vg_add_controller_database( &test_proj );
+ vg_syscall( "mkdir -p bin/%s/cfg", test_proj.uid.buffer );
+}
+
void s_testing_server(void)
{
vg_info( "running script: s_testing_server(void)\n" );
if( vg_long_opt( "testing-build", NULL ) )
s_testing_build();
+ if( vg_long_opt( "utest", NULL ) )
+ s_utest_build();
+
if( vg_long_opt( "testing-server", NULL ) )
s_testing_server();
return uv;
}
-
void main()
{
- vec2 vwarp = 2.0*aUv - 1.0;
- vwarp = fisheye_distort( vwarp );
+ //vec2 vwarp = 2.0*aUv - 1.0;
+ //vwarp = fisheye_distort( vwarp );
FragColor = texture( uTexMain, aUv );
}
#pragma once
#include "vg/vg_m.h"
#include "vg/vg_framebuffer.h"
+#include "vg/vg_render.h"
#include "skaterift.h"
#include "render.h"
vg_camera *cam )
{
uTexSceneDepth( 5 );
- vg_framebuffer_bind_texture( g_render.fb_main, 2, 5 );
+ vg_framebuffer_bind_texture( _vg_render.fb_main, 2, 5 );
v3f inverse;
- vg_framebuffer_inverse_ratio( g_render.fb_main, inverse );
+ vg_framebuffer_inverse_ratio( _vg_render.fb_main, inverse );
inverse[2] = g_render.cam.farz-g_render.cam.nearz;
uInverseRatioDepth( inverse );
ui_fill( ctx, (ui_rect){ box[0]+line[2], box[1], box[2]-line[2], box[3] }, GUI_COL_DARK );
ui_outline( ctx, box, 1, state? GUI_COL_HI: GUI_COL_ACTIVE, 0 );
- ui_slider_text( ctx, box,
- format, disp_min + (*value)*( disp_max-disp_min ) );
+ ui_slider_text( ctx, box, format, disp_min + (*value)*( disp_max-disp_min ) );
return (state & mask_using) && 1;
}
menu_heading( ctx, list, "Audio/Video", 0 );
menu_slider( ctx, list, R == 2, "Volume", 0, 100, &_vg_audio.master_volume_ui, "%.f%%" );
- menu_slider( ctx, list, R == 3, "Resolution", 0, 100, &k_render_scale, "%.f%%" );
- menu_checkbox( ctx, list, R == 4, "Motion Blur", &k_blur_effect );
+ menu_slider( ctx, list, R == 3, "Resolution", 0, 100, &_vg_render.scale, "%.f%%" );
+ menu_checkbox( ctx, list, R == 4, "Motion Blur", &_vg_postprocess.blur_effect );
menu_heading( ctx, list, "Camera", 0 );
menu_slider( ctx, list, R == 5, "Fov", 97, 135, &k_fov, "%.1f\xb0" );
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,
- k_var_dtype_f32, VG_VAR_PERSISTENT );
vg_console_reg_var( "fov", &k_fov, k_var_dtype_f32, VG_VAR_PERSISTENT );
- vg_console_reg_var( "cam_height", &k_cam_height,
- k_var_dtype_f32, VG_VAR_PERSISTENT );
- vg_console_reg_var( "blur_effect", &k_blur_effect,
- k_var_dtype_i32, VG_VAR_PERSISTENT );
+ vg_console_reg_var( "cam_height", &k_cam_height, k_var_dtype_f32, VG_VAR_PERSISTENT );
void *alloc = vg_mem.rtmemory;
-
- /*
- * Main framebuffer
- */
- g_render.fb_main = vg_framebuffer_allocate( alloc, 3, 1 );
- g_render.fb_main->display_name = "main";
- g_render.fb_main->resolution_div = 1;
- g_render.fb_main->attachments[0] = (vg_framebuffer_attachment)
- {
- "colour", k_framebuffer_attachment_type_texture,
-
- .internalformat = GL_RGB,
- .format = GL_RGB,
- .type = GL_UNSIGNED_BYTE,
- .attachment = GL_COLOR_ATTACHMENT0
- };
- g_render.fb_main->attachments[1] = (vg_framebuffer_attachment)
- {
- "motion", k_framebuffer_attachment_type_texture,
-
- .quality = k_framebuffer_quality_high_only,
- .internalformat = GL_RG16F,
- .format = GL_RG,
- .type = GL_FLOAT,
- .attachment = GL_COLOR_ATTACHMENT1
- };
- g_render.fb_main->attachments[2] = (vg_framebuffer_attachment)
- {
- "depth_stencil", k_framebuffer_attachment_type_texture_depth,
- .internalformat = GL_DEPTH24_STENCIL8,
- .format = GL_DEPTH_STENCIL,
- .type = GL_UNSIGNED_INT_24_8,
- .attachment = GL_DEPTH_STENCIL_ATTACHMENT
- };
- vg_framebuffer_create( g_render.fb_main );
-
- /*
- * Water reflection
- */
- g_render.fb_water_reflection = vg_framebuffer_allocate( alloc, 2, 1 );
- g_render.fb_water_reflection->display_name = "water_reflection";
- g_render.fb_water_reflection->resolution_div = 2;
- g_render.fb_water_reflection->attachments[0] = (vg_framebuffer_attachment)
- {
- "colour", k_framebuffer_attachment_type_texture,
- .internalformat = GL_RGB,
- .format = GL_RGB,
- .type = GL_UNSIGNED_BYTE,
- .attachment = GL_COLOR_ATTACHMENT0
- };
- g_render.fb_water_reflection->attachments[1] = (vg_framebuffer_attachment)
- {
- "depth_stencil", k_framebuffer_attachment_type_renderbuffer,
- .internalformat = GL_DEPTH24_STENCIL8,
- .attachment = GL_DEPTH_STENCIL_ATTACHMENT
- };
- vg_framebuffer_create( g_render.fb_water_reflection );
-
- /*
- * Thid rendered view from the perspective of the camera, but just
- * captures stuff thats under the water
- */
- g_render.fb_water_beneath = vg_framebuffer_allocate( alloc, 2, 1 );
- g_render.fb_water_beneath->display_name = "water_beneath";
- g_render.fb_water_beneath->resolution_div = 2;
- g_render.fb_water_beneath->attachments[0] = (vg_framebuffer_attachment)
- {
- "colour", k_framebuffer_attachment_type_texture,
- .internalformat = GL_RED,
- .format = GL_RED,
- .type = GL_UNSIGNED_BYTE,
- .attachment = GL_COLOR_ATTACHMENT0
- };
- g_render.fb_water_beneath->attachments[1] = (vg_framebuffer_attachment)
- {
- "depth_stencil", k_framebuffer_attachment_type_renderbuffer,
- .internalformat = GL_DEPTH24_STENCIL8,
- .attachment = GL_DEPTH_STENCIL_ATTACHMENT
- };
- vg_framebuffer_create( g_render.fb_water_beneath );
/*
* Workshop preview
glDrawArrays( GL_TRIANGLES, 66+6,6 );
}
+#if 0
void postprocess_to_screen( vg_framebuffer *fb )
{
glBindFramebuffer( GL_FRAMEBUFFER, 0 );
shader_blitblur_use();
shader_blitblur_uTexMain( 0 );
shader_blitblur_uTexMotion( 1 );
- shader_blitblur_uBlurStrength( k_blur_strength /
- (vg.time_frame_delta*60.0) );
+
+ f32 s = vg.time_frame_delta*60.0;
+ shader_blitblur_uBlurStrength( k_blur_strength / s );
shader_blitblur_uInverseRatio( inverse );
inverse[0] -= 0.0001f;
}
else
{
- shader_blit_use();
- shader_blit_uTexMain( 0 );
- shader_blit_uInverseRatio( inverse );
+ glUseProgram( _shader_blit.id );
+ glUniform1i( glGetUniformLocation( _shader_blit.id, "uTexMain" ), 0 );
+ glUniform2fv( glGetUniformLocation( _shader_blit.id, "uInverseRatio" ),1, vg_ui.bg_inverse_ratio );
vg_framebuffer_bind_texture( fb, 0, 0 );
}
render_fsquad();
}
+#endif
#include "vg/vg_framebuffer.h"
#include "vg/vg_camera.h"
-#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
-static f32 k_render_scale = 1.0f;
-static i32 k_blur_effect = 1;
-static f32 k_blur_strength = 0.3f;
static f32 k_fov = 0.86f;
static f32 k_cam_height = 0.8f;
{
glmesh fsquad;
- vg_framebuffer *fb_main,
- *fb_water_reflection,
- *fb_water_beneath,
- *fb_workshop_preview,
+ vg_framebuffer *fb_workshop_preview,
*fb_network_status;
int ready;
}
/* variable res target */
- vg_framebuffer_bind( g_render.fb_main, k_render_scale );
+ vg_framebuffer_bind( _vg_render.fb_main, _vg_render.scale );
glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT );
portals */
/* continue with variable rate */
- vg_framebuffer_bind( g_render.fb_main, k_render_scale );
+ vg_framebuffer_bind( _vg_render.fb_main, _vg_render.scale );
render_world_gates( &_world.main, &g_render.cam );
}
else
v2_zero( g_render.blur_override );
- postprocess_to_screen( g_render.fb_main );
+ vg_postprocess_to_screen( _vg_render.fb_main );
cutscene_render_fadeout();
if( gui.helper_count == 0 )
if( k_light_editor )
imgui_world_light_edit( ctx, &_world.main );
- vg_ui.tex_bg = g_render.fb_main->attachments[0].id;
- vg_framebuffer_inverse_ratio( g_render.fb_main, vg_ui.bg_inverse_ratio );
+ vg_ui.tex_bg = _vg_render.fb_main->attachments[0].id;
+ vg_framebuffer_inverse_ratio( _vg_render.fb_main, vg_ui.bg_inverse_ratio );
_cutscene_gui( ctx );
menu_gui( ctx );
--- /dev/null
+#include "vg/vg_opt.h"
+#include "vg/vg_loader.h"
+#include "vg/vg_io.h"
+#include "vg/vg_audio.h"
+#include "vg/vg_async.h"
+
+const char* __asan_default_options() { return "detect_leaks=0"; }
+
+void vg_load(void)
+{
+ vg_bake_shaders();
+ vg_console_load_autos();
+}
+
+void vg_preload(void)
+{
+}
+
+void vg_launch_opt(void)
+{
+ const char *arg;
+}
+
+int main( int argc, char *argv[] )
+{
+ vg_log_init();
+ vg_mem.use_libc_malloc = 0;
+ vg_set_mem_quota( 200*1024*1024 );
+ vg_enter( argc, argv, "Voyager Game Engine" );
+ return 0;
+}
+
+void vg_pre_update(void){}
+void vg_fixed_update(void){}
+void vg_post_update(void){}
+void vg_render(void){}
+void vg_gui( ui_context *ctx ){}
+void vg_framebuffer_resize( int w, int h ){}
if( with_water )
{
render_water_texture( world, cam );
- vg_framebuffer_bind( g_render.fb_main, k_render_scale );
+ vg_framebuffer_bind( _vg_render.fb_main, _vg_render.scale );
}
if( stenciled )
return;
/* Draw reflection buffa */
- vg_framebuffer_bind( g_render.fb_water_reflection, k_render_scale );
+ vg_framebuffer_bind( _vg_render.fb_water_reflection, _vg_render.scale );
glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
/*
* Create beneath view matrix
*/
vg_camera beneath_cam;
- vg_framebuffer_bind( g_render.fb_water_beneath, k_render_scale );
+ vg_framebuffer_bind( _vg_render.fb_water_beneath, _vg_render.scale );
glClearColor( 1.0f, 0.0f, 0.0f, 0.0f );
glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );
/* Draw surface */
shader_scene_water_use();
- vg_framebuffer_bind_texture( g_render.fb_water_reflection, 0, 0 );
+ vg_framebuffer_bind_texture( _vg_render.fb_water_reflection, 0, 0 );
shader_scene_water_uTexMain( 0 );
glActiveTexture( GL_TEXTURE1 );
WORLD_BIND_LIGHT_BUFFERS_UB0_TEX234( world, scene_water );
- vg_framebuffer_bind_texture( g_render.fb_water_beneath, 0, 5 );
+ vg_framebuffer_bind_texture( _vg_render.fb_water_beneath, 0, 5 );
shader_scene_water_uTexBack( 5 );
shader_scene_water_uTime( _world.time );
shader_scene_water_uCamera( cam->transform[3] );