From a1b878e2cdbf145b59d611b5060d3c1a1a80d017 Mon Sep 17 00:00:00 2001 From: hgn Date: Thu, 13 Jul 2023 16:16:52 +0100 Subject: [PATCH] challange entitites --- blender_export.py | 39 ++++++++++++++++++++++++++++++++++--- entity.h | 12 +++++++++++- maps_src/mp_spawn/main.mdl | Bin 8402824 -> 8417624 bytes shaders/scene_fxglow.fs | 5 ++--- shaders/scene_fxglow.h | 5 ++--- skaterift.c | 29 +++++++++++++++++++-------- world.h | 3 ++- world_load.c | 1 + world_render.c | 23 +++++++++++++++++++--- 9 files changed, 95 insertions(+), 22 deletions(-) diff --git a/blender_export.py b/blender_export.py index 2b059d9..ae8b641 100644 --- a/blender_export.py +++ b/blender_export.py @@ -35,7 +35,8 @@ sr_entity_list = [ ('ent_swspreview', 'Workshop Preview', '', 14 ), ('ent_menuitem', 'Menu Item', '', 15 ), ('ent_worldinfo', 'World Info', '', 16 ), - ('ent_ccmd', 'CCmd', '', 17 ) + ('ent_ccmd', 'CCmd', '', 17 ), + ('ent_challenge', 'Challenge', '', 18 ) ] def get_entity_enum_id( alias ): @@ -445,6 +446,13 @@ class ent_ccmd(Structure): _fields_ = [("pstr_command",c_uint32)] #} +class ent_challenge(Structure):#{ + _fields_ = [("transform",mdl_transform), + ("submesh_start",c_uint32), ("submesh_count",c_uint32), + ("id_next",c_uint32), + ("filter",c_uint32)] +#} + def obj_ent_type( obj ): #{ if obj.type == 'ARMATURE': return 'mdl_armature' @@ -793,8 +801,9 @@ def sr_armature_bones( armature ): yield from _recurse_bone( b ) #} -def sr_entity_id( obj ): -#{ +def sr_entity_id( obj ):#{ + if not obj: return 0 + tipo = get_entity_enum_id( obj_ent_type(obj) ) index = sr_compile.entity_ids[ obj.name ] @@ -1531,6 +1540,7 @@ def sr_compile( collection ): if ent_type == 'ent_font': continue if ent_type == 'ent_font_variant': continue if ent_type == 'ent_menuitem': continue + if ent_type == 'ent_challenge': continue #-------------------------- print( F'[SR] {i: 3}/{mesh_count} {obj.name:<40}', end='\r' ) @@ -1743,6 +1753,17 @@ def sr_compile( collection ): ccmd.pstr_command = sr_compile_string( obj_data.command ) sr_ent_push( ccmd ) #} + elif ent_type == 'ent_challenge':#{ + challenge = ent_challenge() + obj_data = obj.SR_data.ent_challenge[0] + challenge.id_next = sr_entity_id( obj_data.proxima ) + + compile_obj_transform( obj, challenge.transform ) + challenge.submesh_start, challenge.submesh_count, _ = \ + sr_compile_mesh_internal( obj ) + + sr_ent_push( challenge ) + #} #} #} @@ -2982,6 +3003,16 @@ class SR_OBJECT_ENT_CCMD(bpy.types.PropertyGroup): command: bpy.props.StringProperty(name="Command Line") #} +class SR_OBJECT_ENT_CHALLENGE(bpy.types.PropertyGroup):#{ + proxima: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="Next", \ + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_challenge'])) + target: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="Target", \ + poll=lambda self,obj: sr_filter_ent_type(obj,\ + ['ent_audio','ent_ccmd'])) +#} + class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup): #{ ent_gate: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_GATE) @@ -2999,6 +3030,7 @@ class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup): ent_menuitem: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_MENU_ITEM) ent_worldinfo: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_WORLD_INFO) ent_ccmd: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_CCMD) + ent_challenge: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_CHALLENGE) ent_type: bpy.props.EnumProperty( name="Type", @@ -4121,6 +4153,7 @@ classes = [ SR_INTERFACE, SR_MATERIAL_PANEL,\ SR_OBJECT_ENT_FONT,SR_OBJECT_ENT_TRAFFIC,SR_OBJECT_ENT_SKATESHOP,\ SR_OBJECT_ENT_WORKSHOP_PREVIEW,SR_OBJECT_ENT_MENU_ITEM,\ SR_OBJECT_ENT_WORLD_INFO,SR_OBJECT_ENT_CCMD,\ + SR_OBJECT_ENT_CHALLENGE,\ \ SR_OBJECT_PROPERTIES, SR_LIGHT_PROPERTIES, SR_BONE_PROPERTIES, SR_MESH_PROPERTIES, SR_MATERIAL_PROPERTIES \ diff --git a/entity.h b/entity.h index 7143a41..487c4d3 100644 --- a/entity.h +++ b/entity.h @@ -26,6 +26,7 @@ typedef struct ent_camera ent_camera; typedef struct ent_swspreview ent_swspreview; typedef struct ent_worldinfo ent_worldinfo; typedef struct ent_ccmd ent_ccmd; +typedef struct ent_challenge ent_challenge; enum entity_alias{ k_ent_none = 0, @@ -45,7 +46,8 @@ enum entity_alias{ k_ent_swspreview = 14, k_ent_menuitem = 15, k_ent_worldinfo = 16, - k_ent_ccmd = 17 + k_ent_ccmd = 17, + k_ent_challenge = 18 }; static u32 mdl_entity_id_type( u32 entity_id ){ @@ -378,6 +380,14 @@ struct ent_ccmd{ u32 pstr_command; }; +struct ent_challenge{ + mdl_transform transform; + u32 submesh_start, + submesh_count, + id_next, + filter; +}; + typedef struct ent_call ent_call; struct ent_call{ u32 id, function; diff --git a/maps_src/mp_spawn/main.mdl b/maps_src/mp_spawn/main.mdl index bbb3004225d647fa5e265224734508cfa12d4503..f54719a991f9a0a29885410f10feb5ee5b6000a2 100644 GIT binary patch delta 16124 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 delta 3241 zcmYk-4^&iD9tZF@f9{)k%{(PB7(f&YR#e0>`~xyG7b64`3-b?{n2v%DG6KS&gCei8 z1oP;EqdwZ~@2(w9X-Uh6!Hm>K3m)ALbuvsPOc(K_krqX+>3(PC4M)!TFz4NS-@U(k z@9*B%{lkmu+JP6;<^qOcq97c`Kw)uyffK)hzab^V*fk8JKtZ{qtgv`(d7z51)te)T zEs|lD)GrTBGR85?NYt5NeZGCgdaI+Ltk7!rHgBHFFa*Cra-E~V>8L34j?FOI`o;)_ zw!SkWQfu^&gN~SjV#kW|QtPH-UmJ!=bSV^Q=8D9BgDXi9F*|XZzjc<}+FFrcSR%Ks zMV)u77vws7;aZy`P?zM|tq524T3qid!Xryl7)FH}Z`8gqix76Xt)vvsv98O$G5_?9 z8K#UFYkY!X)Tnt$#%CFD9#o1UgsR`i*+aIPTVMfwpC&o9e_*8`Ytb zVNh-79%!`dp8AM_tJ+^l=Rcm~sS`JJ62r$!NwSfrcRD@qCKu5R>FXB%%VM*U*!API z&v~pBm2{b~$1VQcs5Xch(};%!LiRHOz&L8p(2vPO}JM?M||Lx%cNX8xv1m*W8LQ&>?x%$NoFURI#OL-UNl2| z`xu6(ts#1aM%-6JW|692ch0C6-#Lb5>8~MqG5lQ1n;vI-3B9bI=&L3p!TL>lRU8VG&+jtn_=2C zD9~9)*96KBp`81rW})egUj^DBxlfZCRv+25$^DsKprbzevDLqnwk|B?oSB2IOD_v_ zNyXU~F}qtGCcf5%Fk;^RxBIadt7&Ji8PoACWk(kY(r(YIqCd5X@~#e{2R^H6nP+^p zldinkBR7>|zan`GzSW>{PrfM7gl`{7mLop&HI}wV`uJ<|CE<%rFQ35arPWVqPsn2& zI*$&^x9#wiU*C4;V>uhT&yy@Af8)tLmbUF>bjokR7P%thB2g>I==~qf4s6CHGMYqR zdsBXv8ZMDI4ZmSm!l`F9GidG_$t=Iwf0Z;TwcW-%dVF9|POj!_nBuJdBC7m!yIU-^ zYQn_p*RUEVH@G}0stT(4khuMuA{zR!cqivB_H-`WO!pqNw~BSQNSKt_PyVM;REcRf z$OwIP0M*T`SM+Xo|V?$BpRi@rSmO!VxmBQ%x^vE&y0ovOkewl z);<3MHY)GU+48b<43HqQ;ZK29OP2;niBes%?J<@E1Op5tL^owROmsK>YIQvY4@tAcF*DlxDnL-)u5{>a+#?r+Wrw8xRuA}?g~ zeZ-=(hr9E;1X|y=B(R|U_ermg_^u4`td5;ZB68k6c}}!;;j|g_>}a*|?7C0Hm0jLL zuV+o%@Y$Aj>DkFDE@|+9W$LzNNP6F8(>;>4tN6nQc3R$Fmrftv9VAzXwqQ0zyZdF1 z##TS!KR8lHFndwSkNRSFf;Vkm`RT-TIo6I4*2JfuIqxg4?2n%=-!2nF*$YaAQzGGP ziBhkdv&+13xj>KHD!>UiO_1ti*ku03^*+;3vp~B~gkp2OM_n8m!|M6{s}7qse>ca4uUr?m_8T-6@ATrx~zjWOKOpR_a~dVJty*q&imh7ez`(%Ay``{`=$ zsSu6cjY-5IQF{-K*j9)D{`ea^IfNUYuQcUD_P&nnSa>P$MaXco*;;KN8h;(B$AzDEFQavH1#;^@KayEdJbrT)2J(d#jF3 zFt5H}O?z_RK(80rFfr^Z8>|kseP{L^H!0&Pdqbg{8Xrb~cVyBgbGSIrh&wa44?7-o zY#jAyQYqK+xJAtV1I0V~SjxS+c{4pY_me<4{bHhw^udxpD`D@Qx?P!r(sr}$-9|hV&!R~ zu`m%P!DNVoDG(1+!3fjfaY%saFau`7EJ%bTm<`Eb0y9{ELJG`*Cm5u`L z@D$90ESL{Z!!wXAIp;65k> zm%8^CM4uMhx^tpy8rH6XwP1rnSO-O5hxJelB~S_*pbW~v0Tr+jHh~i=VKZ!jD%c9u MAV>{sUufh054u_6v;Y7A diff --git a/shaders/scene_fxglow.fs b/shaders/scene_fxglow.fs index 6d7df91..5d1a5bb 100644 --- a/shaders/scene_fxglow.fs +++ b/shaders/scene_fxglow.fs @@ -4,9 +4,8 @@ uniform vec3 uCamera; #include "common_scene.glsl" #include "motion_vectors_fs.glsl" -void main() -{ - compute_motion_vectors(); +void main(){ + oMotionVec = vec2(0.0); vec4 vsamplemain = texture( uTexMain, aUv ); diff --git a/shaders/scene_fxglow.h b/shaders/scene_fxglow.h index e67c665..3f5e0c6 100644 --- a/shaders/scene_fxglow.h +++ b/shaders/scene_fxglow.h @@ -424,9 +424,8 @@ static struct vg_shader _shader_scene_fxglow = { "\n" "#line 6 0 \n" "\n" -"void main()\n" -"{\n" -" compute_motion_vectors();\n" +"void main(){\n" +" oMotionVec = vec2(0.0);\n" "\n" " vec4 vsamplemain = texture( uTexMain, aUv );\n" "\n" diff --git a/skaterift.c b/skaterift.c index fa9459c..a575fc5 100644 --- a/skaterift.c +++ b/skaterift.c @@ -411,16 +411,10 @@ VG_STATIC void render_player_transparent(void){ camera_finalize( &small_cam ); /* Draw player to window buffer and blend background ontop */ - glBindFramebuffer( GL_FRAMEBUFFER, 0 ); - glViewport( 0,0, vg.window_x, vg.window_y ); player__render( &small_cam, &localplayer ); } VG_STATIC void render_scene(void){ - render_fb_bind( gpipeline.fb_main, 1 ); - glClearColor( 0.0f, 0.0f, 0.0f, 1.0f ); - glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT ); - /* Draw world */ glEnable( GL_DEPTH_TEST ); @@ -493,15 +487,34 @@ VG_STATIC void render_main_game(void){ skaterift_composite_maincamera(); - render_scene(); + /* --------------------------------------------------------------------- */ + + /* variable res target */ + render_fb_bind( gpipeline.fb_main, 1 ); + glClearColor( 0.0f, 0.0f, 0.0f, 1.0f ); + glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT ); + render_scene(); glEnable( GL_DEPTH_TEST ); - render_player_transparent(); + /* full res target */ + glBindFramebuffer( GL_FRAMEBUFFER, 0 ); + glViewport( 0,0, vg.window_x, vg.window_y ); + + render_player_transparent(); /* needs to read the depth buffer before we fuck + it up with the oblique rendering inside the + portals */ + + world_render_challenges( localplayer.viewable_world ); + + /* continue with variable rate */ render_scene_gate_subview(); + /* composite */ present_view_with_post_processing(); + /* --------------------------------------------------------------------- */ + /* capture the current resume frame at the very last point */ if( button_down( k_srbind_reset ) ){ if( skaterift.activity == k_skaterift_default ){ diff --git a/world.h b/world.h index ddb82e1..7d513f9 100644 --- a/world.h +++ b/world.h @@ -155,7 +155,8 @@ struct world_instance { ent_marker, ent_camera, ent_swspreview, - ent_ccmd; + ent_ccmd, + ent_challenge; ent_gate *rendering_gate; diff --git a/world_load.c b/world_load.c index bbf5c91..9ca847c 100644 --- a/world_load.c +++ b/world_load.c @@ -59,6 +59,7 @@ VG_STATIC void world_load_mdl( const char *path ) mdl_load_array( meta, &world->ent_skateshop, "ent_skateshop", heap ); mdl_load_array( meta, &world->ent_swspreview,"ent_swspreview", heap ); mdl_load_array( meta, &world->ent_ccmd, "ent_ccmd", heap ); + mdl_load_array( meta, &world->ent_challenge, "ent_challenge", heap ); mdl_array_ptr infos; mdl_load_array( meta, &infos, "ent_worldinfo", vg_mem.scratch ); diff --git a/world_render.c b/world_render.c index c332ace..950e35f 100644 --- a/world_render.c +++ b/world_render.c @@ -154,7 +154,10 @@ struct world_pass{ void (*fn_set_uPvmPrev)( m4x4f pvm ); }; -VG_STATIC void world_render_if( world_instance *world, struct world_pass *pass ) +/* TODO: high level control pass renders. */ + +VG_STATIC +void world_render_if( world_instance *world, struct world_pass *pass ) { for( int i=0; isurface_count; i++ ){ struct world_surface *mat = &world->surfaces[i]; @@ -202,6 +205,20 @@ VG_STATIC void world_render_if( world_instance *world, struct world_pass *pass ) } } +VG_STATIC +void world_render_challenges( world_instance *world ){ + if( !world ) return; + + shader_scene_fxglow_use(); + for( u32 i=0; ient_challenge); i++ ){ + ent_challenge *challenge = mdl_arritm(&world->ent_challenge,i); + + m4x3f mmdl; + mdl_transform_m4x3( &challenge->transform, mmdl ); + shader_scene_fxglow_uMdl( mmdl ); + } +} + VG_STATIC void world_render_both_stages( world_instance *world, struct world_pass *pass ) { @@ -320,7 +337,7 @@ VG_STATIC void render_world_alphatest( world_instance *world, camera *cam ) } VG_STATIC void render_world_fxglow( world_instance *world, camera *cam ){ - glDrawBuffers( 1, (GLenum[]){ GL_COLOR_ATTACHMENT0 } ); + //glDrawBuffers( 1, (GLenum[]){ GL_COLOR_ATTACHMENT0 } ); shader_scene_fxglow_use(); shader_scene_fxglow_uTexMain(1); @@ -348,7 +365,7 @@ VG_STATIC void render_world_fxglow( world_instance *world, camera *cam ){ world_render_both_stages( world, &pass ); glEnable(GL_CULL_FACE); - glDrawBuffers( 2, (GLenum[]){ GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1 } ); + //glDrawBuffers( 2, (GLenum[]){ GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1 } ); } VG_STATIC void bindpoint_terrain( world_instance *world, -- 2.25.1