X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_render.c;h=e6c709afb0d141438a9726256d4889cf06f74a46;hb=7122b79f53f4501751d884c0bf2e838ab501c4a3;hp=2d23737c3f5325247b0db045ed2da4bd18cce028;hpb=b405845ac2cc8eb8e227eb5785f48f5dde9b0f26;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_render.c b/world_render.c index 2d23737..e6c709a 100644 --- a/world_render.c +++ b/world_render.c @@ -25,7 +25,7 @@ static int ccmd_set_time( int argc, const char *argv[] ){ static void async_world_render_init( void *payload, u32 size ) { vg_info( "Allocate uniform buffers\n" ); - for( int i=0; i<4; i++ ){ + for( int i=0; iubo_bind_point = i; @@ -39,7 +39,7 @@ static void async_world_render_init( void *payload, u32 size ) } vg_info( "Allocate frame buffers\n" ); - for( int i=0; i<4; i++ ){ + for( int i=0; iheightmap; @@ -104,24 +104,21 @@ static void world_render_init(void) vg_async_call( async_world_render_init, NULL, 0 ); } -static void world_link_lighting_ub( world_instance *world, GLuint shader ) -{ +static void world_link_lighting_ub( world_instance *world, GLuint shader ){ GLuint idx = glGetUniformBlockIndex( shader, "ub_world_lighting" ); glUniformBlockBinding( shader, idx, world->ubo_bind_point ); } static void world_bind_position_texture( world_instance *world, GLuint shader, GLuint location, - int slot ) -{ + int slot ){ render_fb_bind_texture( &world->heightmap, 0, slot ); glUniform1i( location, slot ); } static void world_bind_light_array( world_instance *world, GLuint shader, GLuint location, - int slot ) -{ + int slot ){ glActiveTexture( GL_TEXTURE0 + slot ); glBindTexture( GL_TEXTURE_BUFFER, world->tex_light_entities ); glUniform1i( location, slot ); @@ -129,8 +126,7 @@ static void world_bind_light_array( world_instance *world, static void world_bind_light_index( world_instance *world, GLuint shader, GLuint location, - int slot ) -{ + int slot ){ glActiveTexture( GL_TEXTURE0 + slot ); glBindTexture( GL_TEXTURE_3D, world->tex_light_cubes ); glUniform1i( location, slot ); @@ -267,8 +263,7 @@ static void bindpoint_diffuse1_and_cubemap10( world_instance *world, shader_scene_cubemapped_uColour( mat->info.colour ); } -static void render_world_vb( world_instance *world, camera *cam ) -{ +static void render_world_vb( world_instance *world, camera *cam ){ shader_scene_vertex_blend_use(); shader_scene_vertex_blend_uTexGarbage(0); shader_scene_vertex_blend_uTexGradients(1); @@ -627,20 +622,12 @@ static void bindpoint_override( world_instance *world, } } -static void render_terrain( world_instance *world, camera *cam ) -{ +static void render_terrain( world_instance *world, camera *cam ){ shader_scene_terrain_use(); shader_scene_terrain_uTexGarbage(0); shader_scene_terrain_uTexGradients(1); - world_link_lighting_ub( world, _shader_scene_terrain.id ); - world_bind_position_texture( world, _shader_scene_terrain.id, - _uniform_scene_terrain_g_world_depth, 2 ); - world_bind_light_array( world, _shader_scene_terrain.id, - _uniform_scene_terrain_uLightsArray, 3 ); - world_bind_light_index( world, _shader_scene_terrain.id, - _uniform_scene_terrain_uLightsIndex, 4 ); - + WORLD_BIND_LIGHT_BUFFERS_UB0_TEX234( world, scene_terrain ); glActiveTexture( GL_TEXTURE0 ); glBindTexture( GL_TEXTURE_2D, world_render.tex_terrain_noise ); @@ -902,14 +889,7 @@ static void render_world_override( world_instance *world ){ shader_scene_override_uTexMain(1); shader_scene_override_uPv( pass.cam->mtx.pv ); - world_link_lighting_ub( world, _shader_scene_override.id ); - world_bind_position_texture( world, _shader_scene_override.id, - _uniform_scene_override_g_world_depth, 2 ); - world_bind_light_array( world, _shader_scene_override.id, - _uniform_scene_override_uLightsArray, 3 ); - world_bind_light_index( world, _shader_scene_override.id, - _uniform_scene_override_uLightsIndex, 4 ); - + WORLD_BIND_LIGHT_BUFFERS_UB0_TEX234( world, scene_override ); bind_terrain_noise(); shader_scene_override_uCamera( pass.cam->transform[3] ); @@ -989,8 +969,7 @@ static void render_world_cubemaps( world_instance *world ){ } } -static void render_world_depth( world_instance *world, camera *cam ) -{ +static void render_world_depth( world_instance *world, camera *cam ){ m4x3f identity_matrix; m4x3_identity( identity_matrix ); @@ -1005,8 +984,7 @@ static void render_world_depth( world_instance *world, camera *cam ) mesh_draw( &world->mesh_geo ); } -static void render_world_position( world_instance *world, camera *cam ) -{ +static void render_world_position( world_instance *world, camera *cam ){ m4x3f identity_matrix; m4x3_identity( identity_matrix );