Added post processing effects and custom render process functions

This commit is contained in:
n00b87
2025-11-10 23:22:10 -06:00
parent e5deb6bc86
commit 5bedafc8c8
18 changed files with 3225 additions and 1007 deletions

View File

@@ -206,6 +206,13 @@ rc_getSpriteCanvasBilinearFilter( GETSPRITECANVASBILINEARFILTER_C_NUM )
rc_getSpriteCanvasPhysics( GETSPRITECANVASPHYSICS_C_NUM )
rc_setSpriteCanvasRenderPriority( SETSPRITECANVASRENDERPRIORITY_C_NUM, SETSPRITECANVASRENDERPRIORITY_PRIORITY, SETSPRITECANVASRENDERPRIORITY_ORDER )
rc_getSpriteCanvasRenderPriority( GETSPRITECANVASRENDERPRIORITY_C_NUM, &GETSPRITECANVASRENDERPRIORITY_PRIORITY, &GETSPRITECANVASRENDERPRIORITY_ORDER )
rc_addPostEffect( ADDPOSTEFFECT_C_NUM, ADDPOSTEFFECT_EFFECT_TYPE )
rc_removePostEffect( REMOVEPOSTEFFECT_C_NUM, REMOVEPOSTEFFECT_EFFECT_NUM )
rc_setPostEffectProperty( SETPOSTEFFECTPROPERTY_C_NUM, SETPOSTEFFECTPROPERTY_EFFECT_NUM, SETPOSTEFFECTPROPERTY_PROPERTY, SETPOSTEFFECTPROPERTY_PROPERTY_VALUE )
rc_getPostEffectProperty( GETPOSTEFFECTPROPERTY_C_NUM, GETPOSTEFFECTPROPERTY_EFFECT_NUM, GETPOSTEFFECTPROPERTY_PROPERTY )
rc_clearPostEffects( CLEARPOSTEFFECTS_C_NUM )
rc_setPostEffectActive( SETPOSTEFFECTACTIVE_C_NUM, SETPOSTEFFECTACTIVE_EFFECT_NUM, SETPOSTEFFECTACTIVE_FLAG )
rc_postEffectIsActive( POSTEFFECTISACTIVE_C_NUM, POSTEFFECTISACTIVE_EFFECT_NUM )
rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS )
rc_drawCircleFill( CIRCLEFILL_X, CIRCLEFILL_Y, CIRCLEFILL_RADIUS )
rc_drawEllipse( ELLIPSE_X, ELLIPSE_Y, ELLIPSE_RX, ELLIPSE_RY )
@@ -691,6 +698,11 @@ rc_makePlanarTextureMap( MAKEPLANARTEXTUREMAP_MESH, MAKEPLANARTEXTUREMAP_RESOLU
rc_reCalculateMeshNormals( RECALCULATEMESHNORMALS_MESH )
rc_getMeshPolygonCount( GETMESHPOLYGONCOUNT_MESH )
rc_flipMeshSurfaces( FLIPMESHSURFACES_MESH )
rc_setMeshBuffer( SETMESHBUFFER_MESH_ID, SETMESHBUFFER_BUFFER_NUM, SETMESHBUFFER_VERTEX_COUNT, &SETMESHBUFFER_VERTEX_DATA, &SETMESHBUFFER_NORMAL_DATA, &SETMESHBUFFER_UV_DATA, SETMESHBUFFER_INDEX_COUNT, &SETMESHBUFFER_INDEX_DATA )
rc_getMeshBufferCount( GETMESHBUFFERCOUNT_MESH_ID )
rc_getMeshBufferVertexCount( GETMESHBUFFERVERTEXCOUNT_MESH_ID, GETMESHBUFFERVERTEXCOUNT_BUFFER_INDEX )
rc_getMeshBufferIndexCount( GETMESHBUFFERINDEXCOUNT_MESH_ID, GETMESHBUFFERINDEXCOUNT_BUFFER_INDEX )
rc_getMeshBuffer( GETMESHBUFFER_MESH_ID, GETMESHBUFFER_BUFFER_INDEX, &GETMESHBUFFER_VERTEX_DATA, &GETMESHBUFFER_NORMAL_DATA, &GETMESHBUFFER_UV_DATA, &GETMESHBUFFER_INDEX_DATA )
rc_createAnimatedActor( CREATEANIMATEDACTOR_MESH )
rc_createOctreeActor( CREATEOCTREEACTOR_MESH )
rc_createCubeActor( CREATECUBEACTOR_CUBE_SIZE )
@@ -938,6 +950,9 @@ rc_setSceneShadowColor( SETSCENESHADOWCOLOR_COLOR )
rc_getSceneShadowColor( )
rc_setSceneAmbientColor( SETSCENEAMBIENTCOLOR_COLOR )
rc_getSceneAmbientColor( )
rc_pipeline_Begin( )
rc_pipeline_End( )
rc_pipeline_Render( )
rc_startParticleEmitter( STARTPARTICLEEMITTER_ACTOR )
rc_stopParticleEmitter( STOPPARTICLEEMITTER_ACTOR )
rc_setParticleDirection( SETPARTICLEDIRECTION_ACTOR, SETPARTICLEDIRECTION_X, SETPARTICLEDIRECTION_Y, SETPARTICLEDIRECTION_Z )

View File

@@ -30,3 +30,10 @@ function GetSpriteCanvasBilinearFilter( c_num )
function GetSpriteCanvasPhysics( c_num )
function SetSpriteCanvasRenderPriority( c_num, priority, order )
sub GetSpriteCanvasRenderPriority( c_num, ByRef priority, ByRef order )
function AddPostEffect( c_num, effect_type )
sub RemovePostEffect( c_num, effect_num )
sub SetPostEffectProperty( c_num, effect_num, property, property_value )
function GetPostEffectProperty( c_num, effect_num, property)
sub ClearPostEffects( c_num )
sub SetPostEffectActive( c_num, effect_num, flag )
function PostEffectIsActive( c_num, effect_num )

View File

@@ -19,3 +19,8 @@ Sub MakePlanarTextureMap( mesh, resolution )
Sub ReCalculateMeshNormals( mesh )
Function GetMeshPolygonCount( mesh )
Sub FlipMeshSurfaces( mesh )
Function SetMeshBuffer( mesh_id, buffer_num, vertex_count, ByRef vertex_data, ByRef normal_data, ByRef uv_data, index_count, ByRef index_data )
Function GetMeshBufferCount( mesh_id )
Function GetMeshBufferVertexCount( mesh_id, buffer_index )
Function GetMeshBufferIndexCount( mesh_id, buffer_index )
Function GetMeshBuffer( mesh_id, buffer_index, ByRef vertex_data, ByRef normal_data, ByRef uv_data, ByRef index_data )

View File

@@ -13,3 +13,6 @@ Sub SetSceneShadowColor(color)
Function GetSceneShadowColor()
Sub SetSceneAmbientColor(color)
Function GetSceneAmbientColor()
Sub Pipeline_Begin()
Sub Pipeline_End()
Sub Pipeline_Render()

View File

@@ -966,7 +966,7 @@ int main(int argc, char * argv[])
if(rc_filename.compare("--version")==0)
{
cout << "RCBASIC Compiler v4.6" << endl;
cout << "RCBASIC Compiler v4.7" << endl;
return 0;
}

View File

@@ -551,6 +551,30 @@ void init_embedded_functions()
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("priority", ID_TYPE_BYREF_NUM);
add_embedded_arg("order", ID_TYPE_BYREF_NUM);
embed_function("AddPostEffect", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_type", ID_TYPE_NUM);
embed_function("RemovePostEffect", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
embed_function("SetPostEffectProperty", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
add_embedded_arg("property", ID_TYPE_NUM);
add_embedded_arg("property_value", ID_TYPE_NUM);
embed_function("GetPostEffectProperty", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
add_embedded_arg("property", ID_TYPE_NUM);
embed_function("ClearPostEffects", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("SetPostEffectActive", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("PostEffectIsActive", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
embed_function("Circle", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
@@ -2090,6 +2114,30 @@ void init_embedded_functions()
add_embedded_arg("mesh", ID_TYPE_NUM);
embed_function("FlipMeshSurfaces", ID_TYPE_SUB);
add_embedded_arg("mesh", ID_TYPE_NUM);
embed_function("SetMeshBuffer", ID_TYPE_FN_NUM);
add_embedded_arg("mesh_id", ID_TYPE_NUM);
add_embedded_arg("buffer_num", ID_TYPE_NUM);
add_embedded_arg("vertex_count", ID_TYPE_NUM);
add_embedded_arg("vertex_data", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_data", ID_TYPE_BYREF_NUM);
add_embedded_arg("uv_data", ID_TYPE_BYREF_NUM);
add_embedded_arg("index_count", ID_TYPE_NUM);
add_embedded_arg("index_data", ID_TYPE_BYREF_NUM);
embed_function("GetMeshBufferCount", ID_TYPE_FN_NUM);
add_embedded_arg("mesh_id", ID_TYPE_NUM);
embed_function("GetMeshBufferVertexCount", ID_TYPE_FN_NUM);
add_embedded_arg("mesh_id", ID_TYPE_NUM);
add_embedded_arg("buffer_index", ID_TYPE_NUM);
embed_function("GetMeshBufferIndexCount", ID_TYPE_FN_NUM);
add_embedded_arg("mesh_id", ID_TYPE_NUM);
add_embedded_arg("buffer_index", ID_TYPE_NUM);
embed_function("GetMeshBuffer", ID_TYPE_FN_NUM);
add_embedded_arg("mesh_id", ID_TYPE_NUM);
add_embedded_arg("buffer_index", ID_TYPE_NUM);
add_embedded_arg("vertex_data", ID_TYPE_BYREF_NUM);
add_embedded_arg("normal_data", ID_TYPE_BYREF_NUM);
add_embedded_arg("uv_data", ID_TYPE_BYREF_NUM);
add_embedded_arg("index_data", ID_TYPE_BYREF_NUM);
embed_function("CreateAnimatedActor", ID_TYPE_FN_NUM);
add_embedded_arg("mesh", ID_TYPE_NUM);
embed_function("CreateOctreeActor", ID_TYPE_FN_NUM);
@@ -2956,6 +3004,9 @@ void init_embedded_functions()
embed_function("SetSceneAmbientColor", ID_TYPE_SUB);
add_embedded_arg("color", ID_TYPE_NUM);
embed_function("GetSceneAmbientColor", ID_TYPE_FN_NUM);
embed_function("Pipeline_Begin", ID_TYPE_SUB);
embed_function("Pipeline_End", ID_TYPE_SUB);
embed_function("Pipeline_Render", ID_TYPE_SUB);
embed_function("startParticleEmitter", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("stopParticleEmitter", ID_TYPE_SUB);

Binary file not shown.

View File

@@ -1300,6 +1300,30 @@ string rc_keywordToken(string sline)
return "<num>0";
else if(sline.compare("SPRITE_ORDER_DESCENDING")==0)
return "<num>1";
else if(sline.compare("POST_PROCESS_TYPE_BLOOM")==0)
return "<num>1";
else if(sline.compare("POST_PROCESS_TYPE_BLUR")==0)
return "<num>2";
else if(sline.compare("POST_PROCESS_TYPE_MOTION_BLUR")==0)
return "<num>3";
else if(sline.compare("POST_PROCESS_TYPE_RADIAL_BLUR")==0)
return "<num>4";
else if(sline.compare("POST_PROCESS_TYPE_COLORIZE")==0)
return "<num>5";
else if(sline.compare("POST_PROCESS_TYPE_INVERT")==0)
return "<num>6";
else if(sline.compare("POST_PROCESS_TYPE_DISTORTION")==0)
return "<num>7";
else if(sline.compare("POST_PROCESS_PROPERTY_STRENGTH")==0)
return "<num>1";
else if(sline.compare("POST_PROCESS_PROPERTY_DISTANCE")==0)
return "<num>2";
else if(sline.compare("POST_PROCESS_PROPERTY_MULTIPLIER")==0)
return "<num>3";
else if(sline.compare("POST_PROCESS_PROPERTY_SATURATION")==0)
return "<num>4";
else if(sline.compare("POST_PROCESS_PROPERTY_COLOR")==0)
return "<num>5";
else
{
for(int i = 0; i < rc_constants.size(); i++)