Fixed Post Processing functions

This commit is contained in:
n00b87
2025-11-23 03:16:43 -06:00
parent f53f486c54
commit f11d41622b
18 changed files with 2095 additions and 2077 deletions

View File

@@ -208,13 +208,12 @@ rc_getSpriteCanvasBilinearFilter( GETSPRITECANVASBILINEARFILTER_C_NUM )
rc_getSpriteCanvasPhysics( GETSPRITECANVASPHYSICS_C_NUM ) rc_getSpriteCanvasPhysics( GETSPRITECANVASPHYSICS_C_NUM )
rc_setSpriteCanvasRenderPriority( SETSPRITECANVASRENDERPRIORITY_C_NUM, SETSPRITECANVASRENDERPRIORITY_PRIORITY, SETSPRITECANVASRENDERPRIORITY_ORDER ) rc_setSpriteCanvasRenderPriority( SETSPRITECANVASRENDERPRIORITY_C_NUM, SETSPRITECANVASRENDERPRIORITY_PRIORITY, SETSPRITECANVASRENDERPRIORITY_ORDER )
rc_getSpriteCanvasRenderPriority( GETSPRITECANVASRENDERPRIORITY_C_NUM, &GETSPRITECANVASRENDERPRIORITY_PRIORITY, &GETSPRITECANVASRENDERPRIORITY_ORDER ) rc_getSpriteCanvasRenderPriority( GETSPRITECANVASRENDERPRIORITY_C_NUM, &GETSPRITECANVASRENDERPRIORITY_PRIORITY, &GETSPRITECANVASRENDERPRIORITY_ORDER )
rc_addPostEffect( ADDPOSTEFFECT_C_NUM, ADDPOSTEFFECT_EFFECT_TYPE ) rc_setPostEffect( SETPOSTEFFECT_C_NUM, SETPOSTEFFECT_EFFECT_TYPE )
rc_removePostEffect( REMOVEPOSTEFFECT_C_NUM, REMOVEPOSTEFFECT_EFFECT_NUM ) rc_clearPostEffect( CLEARPOSTEFFECT_C_NUM )
rc_setPostEffectProperty( SETPOSTEFFECTPROPERTY_C_NUM, SETPOSTEFFECTPROPERTY_EFFECT_NUM, SETPOSTEFFECTPROPERTY_PROPERTY, SETPOSTEFFECTPROPERTY_PROPERTY_VALUE ) rc_setPostEffectProperty( SETPOSTEFFECTPROPERTY_C_NUM, SETPOSTEFFECTPROPERTY_PROPERTY, SETPOSTEFFECTPROPERTY_PROPERTY_VALUE )
rc_getPostEffectProperty( GETPOSTEFFECTPROPERTY_C_NUM, GETPOSTEFFECTPROPERTY_EFFECT_NUM, GETPOSTEFFECTPROPERTY_PROPERTY ) rc_getPostEffectProperty( GETPOSTEFFECTPROPERTY_C_NUM, GETPOSTEFFECTPROPERTY_PROPERTY )
rc_clearPostEffects( CLEARPOSTEFFECTS_C_NUM ) rc_setPostEffectActive( SETPOSTEFFECTACTIVE_C_NUM, SETPOSTEFFECTACTIVE_FLAG )
rc_setPostEffectActive( SETPOSTEFFECTACTIVE_C_NUM, SETPOSTEFFECTACTIVE_EFFECT_NUM, SETPOSTEFFECTACTIVE_FLAG ) rc_postEffectIsActive( POSTEFFECTISACTIVE_C_NUM )
rc_postEffectIsActive( POSTEFFECTISACTIVE_C_NUM, POSTEFFECTISACTIVE_EFFECT_NUM )
rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS ) rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS )
rc_drawCircleFill( CIRCLEFILL_X, CIRCLEFILL_Y, CIRCLEFILL_RADIUS ) rc_drawCircleFill( CIRCLEFILL_X, CIRCLEFILL_Y, CIRCLEFILL_RADIUS )
rc_drawEllipse( ELLIPSE_X, ELLIPSE_Y, ELLIPSE_RX, ELLIPSE_RY ) rc_drawEllipse( ELLIPSE_X, ELLIPSE_Y, ELLIPSE_RX, ELLIPSE_RY )

View File

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

View File

@@ -926,7 +926,7 @@ int main(int argc, char * argv[])
bool clean_after_build = true; bool clean_after_build = true;
//DEBUG START //DEBUG START
//chdir("/home/n00b/GameDev/Ambient/Ambient_Project"); //chdir("/home/n00b/Music/v47/RCBasic_Package/examples/Serenity_Demo2");
//rc_filename = "main.bas"; //rc_filename = "main.bas";
//rc_filename = "/home/n00b/test/SpriteShapeTest/main.bas"; //rc_filename = "/home/n00b/test/SpriteShapeTest/main.bas";
//rc_filename = "/home/n00b/Programs/RCBasic_v400_Linux64/examples/Constraint/main.bas"; //rc_filename = "/home/n00b/Programs/RCBasic_v400_Linux64/examples/Constraint/main.bas";

View File

@@ -555,30 +555,23 @@ void init_embedded_functions()
add_embedded_arg("c_num", ID_TYPE_NUM); add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("priority", ID_TYPE_BYREF_NUM); add_embedded_arg("priority", ID_TYPE_BYREF_NUM);
add_embedded_arg("order", ID_TYPE_BYREF_NUM); add_embedded_arg("order", ID_TYPE_BYREF_NUM);
embed_function("AddPostEffect", ID_TYPE_FN_NUM); embed_function("SetPostEffect", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM); add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_type", ID_TYPE_NUM); add_embedded_arg("effect_type", ID_TYPE_NUM);
embed_function("RemovePostEffect", ID_TYPE_SUB); embed_function("ClearPostEffect", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM); add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
embed_function("SetPostEffectProperty", ID_TYPE_SUB); embed_function("SetPostEffectProperty", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM); 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", ID_TYPE_NUM);
add_embedded_arg("property_value", ID_TYPE_NUM); add_embedded_arg("property_value", ID_TYPE_NUM);
embed_function("GetPostEffectProperty", ID_TYPE_FN_NUM); embed_function("GetPostEffectProperty", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM); 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", ID_TYPE_NUM);
embed_function("ClearPostEffects", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("SetPostEffectActive", ID_TYPE_SUB); embed_function("SetPostEffectActive", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM); add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM); add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("PostEffectIsActive", ID_TYPE_FN_NUM); embed_function("PostEffectIsActive", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM); add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
embed_function("Circle", ID_TYPE_SUB); embed_function("Circle", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM); add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM); add_embedded_arg("y", ID_TYPE_NUM);

Binary file not shown.

View File

@@ -1,5 +1,5 @@
# depslib dependency file v1.0 # depslib dependency file v1.0
1762837514 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp 1763875570 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp
<iostream> <iostream>
<stack> <stack>
<vector> <vector>
@@ -54,7 +54,7 @@
1752004854 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_global.h 1752004854 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_global.h
<inttypes.h> <inttypes.h>
1762837355 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h 1763875558 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h
"identifier.h" "identifier.h"
1752004854 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_vm_asm.h 1752004854 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_vm_asm.h

View File

@@ -549,30 +549,23 @@ embed_function("GetSpriteCanvasRenderPriority", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM); add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("priority", ID_TYPE_BYREF_NUM); add_embedded_arg("priority", ID_TYPE_BYREF_NUM);
add_embedded_arg("order", ID_TYPE_BYREF_NUM); add_embedded_arg("order", ID_TYPE_BYREF_NUM);
embed_function("AddPostEffect", ID_TYPE_FN_NUM); embed_function("SetPostEffect", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM); add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_type", ID_TYPE_NUM); add_embedded_arg("effect_type", ID_TYPE_NUM);
embed_function("RemovePostEffect", ID_TYPE_SUB); embed_function("ClearPostEffect", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM); add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
embed_function("SetPostEffectProperty", ID_TYPE_SUB); embed_function("SetPostEffectProperty", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM); 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", ID_TYPE_NUM);
add_embedded_arg("property_value", ID_TYPE_NUM); add_embedded_arg("property_value", ID_TYPE_NUM);
embed_function("GetPostEffectProperty", ID_TYPE_FN_NUM); embed_function("GetPostEffectProperty", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM); 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", ID_TYPE_NUM);
embed_function("ClearPostEffects", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
embed_function("SetPostEffectActive", ID_TYPE_SUB); embed_function("SetPostEffectActive", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM); add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
add_embedded_arg("flag", ID_TYPE_NUM); add_embedded_arg("flag", ID_TYPE_NUM);
embed_function("PostEffectIsActive", ID_TYPE_FN_NUM); embed_function("PostEffectIsActive", ID_TYPE_FN_NUM);
add_embedded_arg("c_num", ID_TYPE_NUM); add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("effect_num", ID_TYPE_NUM);
embed_function("Circle", ID_TYPE_SUB); embed_function("Circle", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM); add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM); add_embedded_arg("y", ID_TYPE_NUM);

File diff suppressed because it is too large Load Diff

View File

@@ -655,26 +655,23 @@ case FN_SetSpriteCanvasRenderPriority: //Number Function
case FN_GetSpriteCanvasRenderPriority: //Sub Procedure case FN_GetSpriteCanvasRenderPriority: //Sub Procedure
rc_getSpriteCanvasRenderPriority( GETSPRITECANVASRENDERPRIORITY_C_NUM, &GETSPRITECANVASRENDERPRIORITY_PRIORITY, &GETSPRITECANVASRENDERPRIORITY_ORDER ); rc_getSpriteCanvasRenderPriority( GETSPRITECANVASRENDERPRIORITY_C_NUM, &GETSPRITECANVASRENDERPRIORITY_PRIORITY, &GETSPRITECANVASRENDERPRIORITY_ORDER );
break; break;
case FN_AddPostEffect: //Number Function case FN_SetPostEffect: //Number Function
rc_push_num(rc_addPostEffect( ADDPOSTEFFECT_C_NUM, ADDPOSTEFFECT_EFFECT_TYPE )); rc_push_num(rc_setPostEffect( SETPOSTEFFECT_C_NUM, SETPOSTEFFECT_EFFECT_TYPE ));
break; break;
case FN_RemovePostEffect: //Sub Procedure case FN_ClearPostEffect: //Sub Procedure
rc_removePostEffect( REMOVEPOSTEFFECT_C_NUM, REMOVEPOSTEFFECT_EFFECT_NUM ); rc_clearPostEffect( CLEARPOSTEFFECT_C_NUM );
break; break;
case FN_SetPostEffectProperty: //Sub Procedure case FN_SetPostEffectProperty: //Sub Procedure
rc_setPostEffectProperty( SETPOSTEFFECTPROPERTY_C_NUM, SETPOSTEFFECTPROPERTY_EFFECT_NUM, SETPOSTEFFECTPROPERTY_PROPERTY, SETPOSTEFFECTPROPERTY_PROPERTY_VALUE ); rc_setPostEffectProperty( SETPOSTEFFECTPROPERTY_C_NUM, SETPOSTEFFECTPROPERTY_PROPERTY, SETPOSTEFFECTPROPERTY_PROPERTY_VALUE );
break; break;
case FN_GetPostEffectProperty: //Number Function case FN_GetPostEffectProperty: //Number Function
rc_push_num(rc_getPostEffectProperty( GETPOSTEFFECTPROPERTY_C_NUM, GETPOSTEFFECTPROPERTY_EFFECT_NUM, GETPOSTEFFECTPROPERTY_PROPERTY )); rc_push_num(rc_getPostEffectProperty( GETPOSTEFFECTPROPERTY_C_NUM, GETPOSTEFFECTPROPERTY_PROPERTY ));
break;
case FN_ClearPostEffects: //Sub Procedure
rc_clearPostEffects( CLEARPOSTEFFECTS_C_NUM );
break; break;
case FN_SetPostEffectActive: //Sub Procedure case FN_SetPostEffectActive: //Sub Procedure
rc_setPostEffectActive( SETPOSTEFFECTACTIVE_C_NUM, SETPOSTEFFECTACTIVE_EFFECT_NUM, SETPOSTEFFECTACTIVE_FLAG ); rc_setPostEffectActive( SETPOSTEFFECTACTIVE_C_NUM, SETPOSTEFFECTACTIVE_FLAG );
break; break;
case FN_PostEffectIsActive: //Number Function case FN_PostEffectIsActive: //Number Function
rc_push_num(rc_postEffectIsActive( POSTEFFECTISACTIVE_C_NUM, POSTEFFECTISACTIVE_EFFECT_NUM )); rc_push_num(rc_postEffectIsActive( POSTEFFECTISACTIVE_C_NUM ));
break; break;
case FN_Circle: //Sub Procedure case FN_Circle: //Sub Procedure
rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS ); rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS );

View File

@@ -4453,7 +4453,7 @@ int main(int argc, char * argv[])
//ogles2 test //ogles2 test
#ifdef RC_TESTING #ifdef RC_TESTING
rc_intern_dirChange("/home/n00b/GameDev/Irrlicht Demo"); rc_intern_dirChange("/home/n00b/Music/v47/RCBasic_Package/examples/Serenity_Demo2");
//rc_intern_dirChange(""); //rc_intern_dirChange("");
rc_filename = "main.cbc"; rc_filename = "main.cbc";

File diff suppressed because it is too large Load Diff

View File

@@ -655,26 +655,23 @@ case FN_SetSpriteCanvasRenderPriority: //Number Function
case FN_GetSpriteCanvasRenderPriority: //Sub Procedure case FN_GetSpriteCanvasRenderPriority: //Sub Procedure
rc_getSpriteCanvasRenderPriority( GETSPRITECANVASRENDERPRIORITY_C_NUM, &GETSPRITECANVASRENDERPRIORITY_PRIORITY, &GETSPRITECANVASRENDERPRIORITY_ORDER ); rc_getSpriteCanvasRenderPriority( GETSPRITECANVASRENDERPRIORITY_C_NUM, &GETSPRITECANVASRENDERPRIORITY_PRIORITY, &GETSPRITECANVASRENDERPRIORITY_ORDER );
break; break;
case FN_AddPostEffect: //Number Function case FN_SetPostEffect: //Number Function
rc_push_num(rc_addPostEffect( ADDPOSTEFFECT_C_NUM, ADDPOSTEFFECT_EFFECT_TYPE )); rc_push_num(rc_setPostEffect( SETPOSTEFFECT_C_NUM, SETPOSTEFFECT_EFFECT_TYPE ));
break; break;
case FN_RemovePostEffect: //Sub Procedure case FN_ClearPostEffect: //Sub Procedure
rc_removePostEffect( REMOVEPOSTEFFECT_C_NUM, REMOVEPOSTEFFECT_EFFECT_NUM ); rc_clearPostEffect( CLEARPOSTEFFECT_C_NUM );
break; break;
case FN_SetPostEffectProperty: //Sub Procedure case FN_SetPostEffectProperty: //Sub Procedure
rc_setPostEffectProperty( SETPOSTEFFECTPROPERTY_C_NUM, SETPOSTEFFECTPROPERTY_EFFECT_NUM, SETPOSTEFFECTPROPERTY_PROPERTY, SETPOSTEFFECTPROPERTY_PROPERTY_VALUE ); rc_setPostEffectProperty( SETPOSTEFFECTPROPERTY_C_NUM, SETPOSTEFFECTPROPERTY_PROPERTY, SETPOSTEFFECTPROPERTY_PROPERTY_VALUE );
break; break;
case FN_GetPostEffectProperty: //Number Function case FN_GetPostEffectProperty: //Number Function
rc_push_num(rc_getPostEffectProperty( GETPOSTEFFECTPROPERTY_C_NUM, GETPOSTEFFECTPROPERTY_EFFECT_NUM, GETPOSTEFFECTPROPERTY_PROPERTY )); rc_push_num(rc_getPostEffectProperty( GETPOSTEFFECTPROPERTY_C_NUM, GETPOSTEFFECTPROPERTY_PROPERTY ));
break;
case FN_ClearPostEffects: //Sub Procedure
rc_clearPostEffects( CLEARPOSTEFFECTS_C_NUM );
break; break;
case FN_SetPostEffectActive: //Sub Procedure case FN_SetPostEffectActive: //Sub Procedure
rc_setPostEffectActive( SETPOSTEFFECTACTIVE_C_NUM, SETPOSTEFFECTACTIVE_EFFECT_NUM, SETPOSTEFFECTACTIVE_FLAG ); rc_setPostEffectActive( SETPOSTEFFECTACTIVE_C_NUM, SETPOSTEFFECTACTIVE_FLAG );
break; break;
case FN_PostEffectIsActive: //Number Function case FN_PostEffectIsActive: //Number Function
rc_push_num(rc_postEffectIsActive( POSTEFFECTISACTIVE_C_NUM, POSTEFFECTISACTIVE_EFFECT_NUM )); rc_push_num(rc_postEffectIsActive( POSTEFFECTISACTIVE_C_NUM ));
break; break;
case FN_Circle: //Sub Procedure case FN_Circle: //Sub Procedure
rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS ); rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS );

View File

@@ -1078,6 +1078,9 @@ int rc_canvasOpen(int w, int h, int vx, int vy, int vw, int vh, int mode, int ca
canvas.type = canvas_type; canvas.type = canvas_type;
canvas.show3D = false; canvas.show3D = false;
canvas.physics2D.enabled = false; canvas.physics2D.enabled = false;
canvas.post_effect.object = NULL;
canvas.post_effect.type = -1;
canvas.post_effect.is_active = false;
#ifdef RC_DRIVER_GLES2 #ifdef RC_DRIVER_GLES2
Uint32 size_n = 2; Uint32 size_n = 2;
@@ -1247,12 +1250,8 @@ void rc_canvasClose(int canvas_id)
rc_canvas[canvas_id].sprite_id.clear(); rc_canvas[canvas_id].sprite_id.clear();
//delete post effects for canvas //delete post effects for canvas
for(int i = 0; i < rc_canvas[canvas_id].post_effect.size(); i++) rc_clearPostEffect(canvas_id);
{
rc_removePostEffect(canvas_id, i);
}
rc_canvas[canvas_id].post_effect.clear();
if(rc_active_canvas == canvas_id) if(rc_active_canvas == canvas_id)
rc_active_canvas = -1; rc_active_canvas = -1;
@@ -1537,6 +1536,9 @@ int rc_cloneCanvas(int origin_canvas_id, int mode)
canvas.show3D = rc_canvas[origin_canvas_id].show3D; canvas.show3D = rc_canvas[origin_canvas_id].show3D;
canvas.color_mod = rc_canvas[origin_canvas_id].color_mod; canvas.color_mod = rc_canvas[origin_canvas_id].color_mod;
canvas.texture = rc_canvas[origin_canvas_id].texture; canvas.texture = rc_canvas[origin_canvas_id].texture;
canvas.post_effect.is_active = false;
canvas.post_effect.object = NULL;
canvas.post_effect.type = -1;
//canvas.sprite_layer = rc_canvas[origin_canvas_id].sprite_layer; //canvas.sprite_layer = rc_canvas[origin_canvas_id].sprite_layer;
if(!canvas.texture) if(!canvas.texture)

View File

@@ -405,7 +405,7 @@ struct rc_canvas_obj
irr::core::array<irr::s32> sprite_id; irr::core::array<irr::s32> sprite_id;
rc_spriteCanvasProperties spriteCanvasProperties; rc_spriteCanvasProperties spriteCanvasProperties;
irr::core::array<rc_post_effect> post_effect; rc_post_effect post_effect;
}; };
irr::core::array<rc_canvas_obj> rc_canvas; irr::core::array<rc_canvas_obj> rc_canvas;

View File

@@ -920,39 +920,83 @@ public:
void rc_clearPostEffect(int canvas_id)
int rc_addPostEffect(int canvas_id, int effect_type)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return -1; return;
int pp_id = -1; rc_canvas[canvas_id].post_effect.is_active = false;
for(int i = 0; i < rc_canvas[canvas_id].post_effect.size(); i++) if(rc_canvas[canvas_id].post_effect.object)
{ {
if(rc_canvas[canvas_id].post_effect[i].type < 0) switch(rc_canvas[canvas_id].post_effect.type)
{ {
pp_id = i; case RC_POST_PROCESS_BLOOM:
{
IPostProcessBloom* post_process = (IPostProcessBloom*)rc_canvas[canvas_id].post_effect.object;
post_process->remove();
}
break;
case RC_POST_PROCESS_BLUR:
{
IPostProcessBlur* post_process = (IPostProcessBlur*)rc_canvas[canvas_id].post_effect.object;
post_process->remove();
}
break;
case RC_POST_PROCESS_COLORIZE:
{
IPostProcessColor* post_process = (IPostProcessColor*)rc_canvas[canvas_id].post_effect.object;
post_process->remove();
}
break;
case RC_POST_PROCESS_DISTORTION:
{
IPostProcessGlass* post_process = (IPostProcessGlass*)rc_canvas[canvas_id].post_effect.object;
post_process->remove();
}
break;
case RC_POST_PROCESS_INVERT:
{
IPostProcessInvert* post_process = (IPostProcessInvert*)rc_canvas[canvas_id].post_effect.object;
post_process->remove();
}
break;
case RC_POST_PROCESS_MOTION_BLUR:
{
IPostProcessMotionBlur* post_process = (IPostProcessMotionBlur*)rc_canvas[canvas_id].post_effect.object;
post_process->remove();
}
break;
case RC_POST_PROCESS_RADIAL_BLUR:
{
IPostProcessRadialBlur* post_process = (IPostProcessRadialBlur*)rc_canvas[canvas_id].post_effect.object;
post_process->remove();
}
break;
} }
} }
if(pp_id < 0) rc_canvas[canvas_id].post_effect.object = NULL;
{ rc_canvas[canvas_id].post_effect.type = -1;
pp_id = rc_canvas[canvas_id].post_effect.size(); }
rc_post_effect pfx;
pfx.type = effect_type; bool rc_setPostEffect(int canvas_id, int effect_type)
pfx.object = NULL;
pfx.is_active = true;
rc_canvas[canvas_id].post_effect.push_back(pfx);
}
else
{ {
rc_canvas[canvas_id].post_effect[pp_id].type = effect_type; if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
rc_canvas[canvas_id].post_effect[pp_id].object = NULL; return false;
rc_canvas[canvas_id].post_effect[pp_id].is_active = true;
} rc_clearPostEffect(canvas_id);
rc_canvas[canvas_id].post_effect.type = effect_type;
rc_canvas[canvas_id].post_effect.object = NULL;
rc_canvas[canvas_id].post_effect.is_active = true;
switch(effect_type) switch(effect_type)
@@ -968,7 +1012,7 @@ int rc_addPostEffect(int canvas_id, int effect_type)
Bloom->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, setup, SceneManager); Bloom->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, setup, SceneManager);
rc_canvas[canvas_id].post_effect[pp_id].object = Bloom; rc_canvas[canvas_id].post_effect.object = Bloom;
} }
break; break;
@@ -979,7 +1023,7 @@ int rc_addPostEffect(int canvas_id, int effect_type)
float sampleDist = 0.001; float sampleDist = 0.001;
Blur->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, sampleDist, SceneManager); Blur->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, sampleDist, SceneManager);
rc_canvas[canvas_id].post_effect[pp_id].object = Blur; rc_canvas[canvas_id].post_effect.object = Blur;
} }
break; break;
@@ -992,7 +1036,7 @@ int rc_addPostEffect(int canvas_id, int effect_type)
setup.col=video::SColorf(0,0,0,0); setup.col=video::SColorf(0,0,0,0);
PPE_Color->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, setup, SceneManager); PPE_Color->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, setup, SceneManager);
rc_canvas[canvas_id].post_effect[pp_id].object = PPE_Color; rc_canvas[canvas_id].post_effect.object = PPE_Color;
} }
break; break;
@@ -1001,7 +1045,7 @@ int rc_addPostEffect(int canvas_id, int effect_type)
IPostProcessInvert *Invert = new IPostProcessInvert(SceneManager->getRootSceneNode(), SceneManager, -1); IPostProcessInvert *Invert = new IPostProcessInvert(SceneManager->getRootSceneNode(), SceneManager, -1);
Invert->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, SceneManager); Invert->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, SceneManager);
rc_canvas[canvas_id].post_effect[pp_id].object = Invert; rc_canvas[canvas_id].post_effect.object = Invert;
} }
break; break;
@@ -1011,7 +1055,7 @@ int rc_addPostEffect(int canvas_id, int effect_type)
float strength = 0.1; float strength = 0.1;
Blur->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, strength, SceneManager); Blur->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, strength, SceneManager);
rc_canvas[canvas_id].post_effect[pp_id].object = Blur; rc_canvas[canvas_id].post_effect.object = Blur;
} }
break; break;
@@ -1022,7 +1066,7 @@ int rc_addPostEffect(int canvas_id, int effect_type)
float strength = 1; float strength = 1;
Blur->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, dist, strength, SceneManager); Blur->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, dist, strength, SceneManager);
rc_canvas[canvas_id].post_effect[pp_id].object = Blur; rc_canvas[canvas_id].post_effect.object = Blur;
} }
break; break;
@@ -1032,120 +1076,62 @@ int rc_addPostEffect(int canvas_id, int effect_type)
float strength = 0.1; float strength = 0.1;
Glass->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, strength, SceneManager); Glass->initiate(rc_canvas[canvas_id].viewport.dimension.Width, rc_canvas[canvas_id].viewport.dimension.Height, strength, SceneManager);
rc_canvas[canvas_id].post_effect[pp_id].object = Glass; rc_canvas[canvas_id].post_effect.object = Glass;
} }
break; break;
} }
if(!rc_canvas[canvas_id].post_effect.object)
return pp_id; {
rc_canvas[canvas_id].post_effect.is_active = false;
rc_canvas[canvas_id].post_effect.type = -1;
} }
void rc_removePostEffect(int canvas_id, int effect_id)
return true;
}
void rc_setPostEffectStrength(int canvas_id, double strength)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return; return;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
return;
rc_canvas[canvas_id].post_effect[effect_id].is_active = false;
if(rc_canvas[canvas_id].post_effect[effect_id].object)
{
switch(rc_canvas[canvas_id].post_effect[effect_id].type)
{
case RC_POST_PROCESS_BLOOM:
delete (IPostProcessBloom*)rc_canvas[canvas_id].post_effect[effect_id].object;
break;
case RC_POST_PROCESS_BLUR:
delete (IPostProcessBlur*)rc_canvas[canvas_id].post_effect[effect_id].object;
break;
case RC_POST_PROCESS_COLORIZE:
delete (IPostProcessColor*)rc_canvas[canvas_id].post_effect[effect_id].object;
break;
case RC_POST_PROCESS_DISTORTION:
delete (IPostProcessGlass*)rc_canvas[canvas_id].post_effect[effect_id].object;
break;
case RC_POST_PROCESS_INVERT:
delete (IPostProcessInvert*)rc_canvas[canvas_id].post_effect[effect_id].object;
break;
case RC_POST_PROCESS_MOTION_BLUR:
delete (IPostProcessMotionBlur*)rc_canvas[canvas_id].post_effect[effect_id].object;
break;
case RC_POST_PROCESS_RADIAL_BLUR:
delete (IPostProcessRadialBlur*)rc_canvas[canvas_id].post_effect[effect_id].object;
break;
}
}
rc_canvas[canvas_id].post_effect[effect_id].object = NULL;
rc_canvas[canvas_id].post_effect[effect_id].type = -1;
}
void rc_clearPostEffects(int canvas_id)
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return;
for(int i = 0; i < rc_canvas[canvas_id].post_effect.size(); i++)
{
rc_removePostEffect(canvas_id, i);
}
rc_canvas[canvas_id].post_effect.clear();
}
void rc_setPostEffectStrength(int canvas_id, int effect_id, double strength)
{
if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size())
return;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_BLOOM: case RC_POST_PROCESS_BLOOM:
{ {
IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect.object;
Bloom->callback->strength = (float)strength; Bloom->callback->strength = (float)strength;
} }
break; break;
case RC_POST_PROCESS_COLORIZE: case RC_POST_PROCESS_COLORIZE:
{ {
IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect.object;
PPE_Color->callback->coloringStrength = (float)strength; PPE_Color->callback->coloringStrength = (float)strength;
} }
break; break;
case RC_POST_PROCESS_MOTION_BLUR: case RC_POST_PROCESS_MOTION_BLUR:
{ {
IPostProcessMotionBlur *Blur = (IPostProcessMotionBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessMotionBlur *Blur = (IPostProcessMotionBlur*) rc_canvas[canvas_id].post_effect.object;
Blur->callback->strength = (float)strength; Blur->callback->strength = (float)strength;
} }
break; break;
case RC_POST_PROCESS_RADIAL_BLUR: case RC_POST_PROCESS_RADIAL_BLUR:
{ {
IPostProcessRadialBlur *Blur = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessRadialBlur *Blur = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect.object;
Blur->callback->sampleStrength = (float)strength; Blur->callback->sampleStrength = (float)strength;
} }
break; break;
case RC_POST_PROCESS_DISTORTION: case RC_POST_PROCESS_DISTORTION:
{ {
IPostProcessGlass *Glass = (IPostProcessGlass*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessGlass *Glass = (IPostProcessGlass*) rc_canvas[canvas_id].post_effect.object;
Glass->callback->strength = (float)strength; Glass->callback->strength = (float)strength;
} }
break; break;
@@ -1153,35 +1139,32 @@ void rc_setPostEffectStrength(int canvas_id, int effect_id, double strength)
} }
void rc_setPostEffectDistance(int canvas_id, int effect_id, double dist) void rc_setPostEffectDistance(int canvas_id, double dist)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return; return;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
return;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_BLOOM: case RC_POST_PROCESS_BLOOM:
{ {
IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect.object;
Bloom->callback->sampleDist = (float)dist; Bloom->callback->sampleDist = (float)dist;
} }
break; break;
case RC_POST_PROCESS_BLUR: case RC_POST_PROCESS_BLUR:
{ {
IPostProcessBlur *Blur = (IPostProcessBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessBlur *Blur = (IPostProcessBlur*) rc_canvas[canvas_id].post_effect.object;
Blur->callback->sampleDist = (float)dist; Blur->callback->sampleDist = (float)dist;
} }
break; break;
case RC_POST_PROCESS_RADIAL_BLUR: case RC_POST_PROCESS_RADIAL_BLUR:
{ {
IPostProcessRadialBlur *Blur = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessRadialBlur *Blur = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect.object;
Blur->callback->sampleDist = (float)dist; Blur->callback->sampleDist = (float)dist;
} }
break; break;
@@ -1190,21 +1173,18 @@ void rc_setPostEffectDistance(int canvas_id, int effect_id, double dist)
void rc_setPostEffectMultiplier(int canvas_id, int effect_id, double multiplier) void rc_setPostEffectMultiplier(int canvas_id, double multiplier)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return; return;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
return;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_BLOOM: case RC_POST_PROCESS_BLOOM:
{ {
IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect.object;
Bloom->callback->multiplier = (float)multiplier; Bloom->callback->multiplier = (float)multiplier;
} }
break; break;
@@ -1212,21 +1192,18 @@ void rc_setPostEffectMultiplier(int canvas_id, int effect_id, double multiplier)
} }
void rc_setPostEffectSaturation(int canvas_id, int effect_id, double saturation) void rc_setPostEffectSaturation(int canvas_id, double saturation)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return; return;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
return;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_COLORIZE: case RC_POST_PROCESS_COLORIZE:
{ {
IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect.object;
PPE_Color->callback->saturation = (float)saturation; PPE_Color->callback->saturation = (float)saturation;
} }
break; break;
@@ -1234,21 +1211,18 @@ void rc_setPostEffectSaturation(int canvas_id, int effect_id, double saturation)
} }
void rc_setPostEffectColor(int canvas_id, int effect_id, double c_color) void rc_setPostEffectColor(int canvas_id, double c_color)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return; return;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
return;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_COLORIZE: case RC_POST_PROCESS_COLORIZE:
{ {
IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect.object;
PPE_Color->callback->col = irr::video::SColorf( irr::video::SColor((irr::u32) c_color) ); PPE_Color->callback->col = irr::video::SColorf( irr::video::SColor((irr::u32) c_color) );
} }
break; break;
@@ -1256,37 +1230,37 @@ void rc_setPostEffectColor(int canvas_id, int effect_id, double c_color)
} }
void rc_setPostEffectProperty(int canvas_id, int effect_id, int effect_property, double effect_value) void rc_setPostEffectProperty(int canvas_id, int effect_property, double effect_value)
{ {
switch(effect_property) switch(effect_property)
{ {
case RC_PP_PROPERTY_STRENGTH: case RC_PP_PROPERTY_STRENGTH:
{ {
rc_setPostEffectStrength(canvas_id, effect_id, effect_value); rc_setPostEffectStrength(canvas_id, effect_value);
} }
break; break;
case RC_PP_PROPERTY_DISTANCE: case RC_PP_PROPERTY_DISTANCE:
{ {
rc_setPostEffectDistance(canvas_id, effect_id, effect_value); rc_setPostEffectDistance(canvas_id, effect_value);
} }
break; break;
case RC_PP_PROPERTY_MULTIPLIER: case RC_PP_PROPERTY_MULTIPLIER:
{ {
rc_setPostEffectMultiplier(canvas_id, effect_id, effect_value); rc_setPostEffectMultiplier(canvas_id, effect_value);
} }
break; break;
case RC_PP_PROPERTY_SATURATION: case RC_PP_PROPERTY_SATURATION:
{ {
rc_setPostEffectSaturation(canvas_id, effect_id, effect_value); rc_setPostEffectSaturation(canvas_id, effect_value);
} }
break; break;
case RC_PP_PROPERTY_COLOR: case RC_PP_PROPERTY_COLOR:
{ {
rc_setPostEffectColor(canvas_id, effect_id, effect_value); rc_setPostEffectColor(canvas_id, effect_value);
} }
break; break;
} }
@@ -1298,49 +1272,46 @@ void rc_setPostEffectProperty(int canvas_id, int effect_id, int effect_property,
double rc_getPostEffectStrength(int canvas_id, int effect_id) double rc_getPostEffectStrength(int canvas_id)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return 0; return 0;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
return 0;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_BLOOM: case RC_POST_PROCESS_BLOOM:
{ {
IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect.object;
return (double)Bloom->callback->strength; return (double)Bloom->callback->strength;
} }
break; break;
case RC_POST_PROCESS_COLORIZE: case RC_POST_PROCESS_COLORIZE:
{ {
IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect.object;
return (double)PPE_Color->callback->coloringStrength; return (double)PPE_Color->callback->coloringStrength;
} }
break; break;
case RC_POST_PROCESS_MOTION_BLUR: case RC_POST_PROCESS_MOTION_BLUR:
{ {
IPostProcessMotionBlur *Blur = (IPostProcessMotionBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessMotionBlur *Blur = (IPostProcessMotionBlur*) rc_canvas[canvas_id].post_effect.object;
return (double)Blur->callback->strength; return (double)Blur->callback->strength;
} }
break; break;
case RC_POST_PROCESS_RADIAL_BLUR: case RC_POST_PROCESS_RADIAL_BLUR:
{ {
IPostProcessRadialBlur *Blur = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessRadialBlur *Blur = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect.object;
return (double)Blur->callback->sampleStrength; return (double)Blur->callback->sampleStrength;
} }
break; break;
case RC_POST_PROCESS_DISTORTION: case RC_POST_PROCESS_DISTORTION:
{ {
IPostProcessGlass *Glass = (IPostProcessGlass*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessGlass *Glass = (IPostProcessGlass*) rc_canvas[canvas_id].post_effect.object;
return (double)Glass->callback->strength; return (double)Glass->callback->strength;
} }
break; break;
@@ -1350,35 +1321,32 @@ double rc_getPostEffectStrength(int canvas_id, int effect_id)
} }
double rc_getPostEffectDistance(int canvas_id, int effect_id) double rc_getPostEffectDistance(int canvas_id)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return 0; return 0;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
return 0;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_BLOOM: case RC_POST_PROCESS_BLOOM:
{ {
IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect.object;
return (double)Bloom->callback->sampleDist; return (double)Bloom->callback->sampleDist;
} }
break; break;
case RC_POST_PROCESS_BLUR: case RC_POST_PROCESS_BLUR:
{ {
IPostProcessBlur *Blur = (IPostProcessBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessBlur *Blur = (IPostProcessBlur*) rc_canvas[canvas_id].post_effect.object;
return (double)Blur->callback->sampleDist; return (double)Blur->callback->sampleDist;
} }
break; break;
case RC_POST_PROCESS_RADIAL_BLUR: case RC_POST_PROCESS_RADIAL_BLUR:
{ {
IPostProcessRadialBlur *Blur = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessRadialBlur *Blur = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect.object;
return (double)Blur->callback->sampleDist; return (double)Blur->callback->sampleDist;
} }
break; break;
@@ -1389,21 +1357,18 @@ double rc_getPostEffectDistance(int canvas_id, int effect_id)
double rc_getPostEffectMultiplier(int canvas_id, int effect_id) double rc_getPostEffectMultiplier(int canvas_id)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return 0; return 0;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
return 0;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_BLOOM: case RC_POST_PROCESS_BLOOM:
{ {
IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect.object;
return (double)Bloom->callback->multiplier; return (double)Bloom->callback->multiplier;
} }
break; break;
@@ -1413,21 +1378,18 @@ double rc_getPostEffectMultiplier(int canvas_id, int effect_id)
} }
double rc_getPostEffectSaturation(int canvas_id, int effect_id) double rc_getPostEffectSaturation(int canvas_id)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return 0; return 0;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
return 0;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_COLORIZE: case RC_POST_PROCESS_COLORIZE:
{ {
IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect.object;
return (double)PPE_Color->callback->saturation; return (double)PPE_Color->callback->saturation;
} }
break; break;
@@ -1437,21 +1399,18 @@ double rc_getPostEffectSaturation(int canvas_id, int effect_id)
} }
double rc_getPostEffectColor(int canvas_id, int effect_id) double rc_getPostEffectColor(int canvas_id)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return 0; return 0;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
return 0;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_COLORIZE: case RC_POST_PROCESS_COLORIZE:
{ {
IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect.object;
return (double)PPE_Color->callback->col.toSColor().color; return (double)PPE_Color->callback->col.toSColor().color;
} }
break; break;
@@ -1461,37 +1420,37 @@ double rc_getPostEffectColor(int canvas_id, int effect_id)
} }
double rc_getPostEffectProperty(int canvas_id, int effect_id, int effect_property) double rc_getPostEffectProperty(int canvas_id, int effect_property)
{ {
switch(effect_property) switch(effect_property)
{ {
case RC_PP_PROPERTY_STRENGTH: case RC_PP_PROPERTY_STRENGTH:
{ {
return rc_getPostEffectStrength(canvas_id, effect_id); return rc_getPostEffectStrength(canvas_id);
} }
break; break;
case RC_PP_PROPERTY_DISTANCE: case RC_PP_PROPERTY_DISTANCE:
{ {
return rc_getPostEffectDistance(canvas_id, effect_id); return rc_getPostEffectDistance(canvas_id);
} }
break; break;
case RC_PP_PROPERTY_MULTIPLIER: case RC_PP_PROPERTY_MULTIPLIER:
{ {
return rc_getPostEffectMultiplier(canvas_id, effect_id); return rc_getPostEffectMultiplier(canvas_id);
} }
break; break;
case RC_PP_PROPERTY_SATURATION: case RC_PP_PROPERTY_SATURATION:
{ {
return rc_getPostEffectSaturation(canvas_id, effect_id); return rc_getPostEffectSaturation(canvas_id);
} }
break; break;
case RC_PP_PROPERTY_COLOR: case RC_PP_PROPERTY_COLOR:
{ {
return rc_getPostEffectColor(canvas_id, effect_id); return rc_getPostEffectColor(canvas_id);
} }
break; break;
} }
@@ -1500,84 +1459,78 @@ double rc_getPostEffectProperty(int canvas_id, int effect_id, int effect_propert
} }
void rc_setPostEffectActive(int canvas_id, int effect_id, bool flag) void rc_setPostEffectActive(int canvas_id, bool flag)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return; return;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) rc_canvas[canvas_id].post_effect.is_active = flag;
return;
rc_canvas[canvas_id].post_effect[effect_id].is_active = flag;
} }
bool rc_postEffectIsActive(int canvas_id, int effect_id) bool rc_postEffectIsActive(int canvas_id)
{ {
if(canvas_id <= 0 || canvas_id >= rc_canvas.size()) if(canvas_id <= 0 || canvas_id >= rc_canvas.size())
return false; return false;
if(effect_id < 0 || effect_id >= rc_canvas[canvas_id].post_effect.size()) return rc_canvas[canvas_id].post_effect.is_active;
return false;
return rc_canvas[canvas_id].post_effect[effect_id].is_active;
} }
void rc_renderPostEffect(int canvas_id, int effect_id) void rc_renderPostEffect(int canvas_id)
{ {
if(!rc_canvas[canvas_id].post_effect[effect_id].is_active) if(!rc_canvas[canvas_id].post_effect.is_active)
return; return;
int effect_type = rc_canvas[canvas_id].post_effect[effect_id].type; //type will be -1 if effect has been removed int effect_type = rc_canvas[canvas_id].post_effect.type; //type will be -1 if effect has been removed
switch(effect_type) switch(effect_type)
{ {
case RC_POST_PROCESS_BLOOM: case RC_POST_PROCESS_BLOOM:
{ {
IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessBloom *Bloom = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect.object;
Bloom->render(); Bloom->render();
} }
break; break;
case RC_POST_PROCESS_BLUR: case RC_POST_PROCESS_BLUR:
{ {
IPostProcessBlur *Blur = (IPostProcessBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessBlur *Blur = (IPostProcessBlur*) rc_canvas[canvas_id].post_effect.object;
Blur->render(); Blur->render();
} }
break; break;
case RC_POST_PROCESS_COLORIZE: case RC_POST_PROCESS_COLORIZE:
{ {
IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessColor * PPE_Color = (IPostProcessColor*) rc_canvas[canvas_id].post_effect.object;
PPE_Color->render(); PPE_Color->render();
} }
break; break;
case RC_POST_PROCESS_INVERT: case RC_POST_PROCESS_INVERT:
{ {
IPostProcessInvert *Invert = (IPostProcessInvert*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessInvert *Invert = (IPostProcessInvert*) rc_canvas[canvas_id].post_effect.object;
Invert->render(); Invert->render();
} }
break; break;
case RC_POST_PROCESS_MOTION_BLUR: case RC_POST_PROCESS_MOTION_BLUR:
{ {
IPostProcessMotionBlur *Blur = (IPostProcessMotionBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessMotionBlur *Blur = (IPostProcessMotionBlur*) rc_canvas[canvas_id].post_effect.object;
Blur->render(); Blur->renderFinal();
} }
break; break;
case RC_POST_PROCESS_RADIAL_BLUR: case RC_POST_PROCESS_RADIAL_BLUR:
{ {
IPostProcessRadialBlur *Blur = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessRadialBlur *Blur = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect.object;
Blur->render(); Blur->render();
} }
break; break;
case RC_POST_PROCESS_DISTORTION: case RC_POST_PROCESS_DISTORTION:
{ {
IPostProcessGlass *Glass = (IPostProcessGlass*) rc_canvas[canvas_id].post_effect[effect_id].object; IPostProcessGlass *Glass = (IPostProcessGlass*) rc_canvas[canvas_id].post_effect.object;
Glass->render(); Glass->render();
} }
break; break;

View File

@@ -114,7 +114,47 @@ void rc_pipeline_Render()
if(rc_canvas[rc_active_canvas].show3D) if(rc_canvas[rc_active_canvas].show3D)
{ {
//VideoDriver->setRenderTarget(rc_canvas[rc_active_canvas].texture, true, true, irr::video::SColor(255,120,120,120)); if(rc_canvas[rc_active_canvas].post_effect.is_active)
{
if(rc_canvas[rc_active_canvas].post_effect.type == RC_POST_PROCESS_DISTORTION)
{
IPostProcessGlass* post_process = (IPostProcessGlass*) rc_canvas[rc_active_canvas].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true);
}
else if(rc_canvas[rc_active_canvas].post_effect.type == RC_POST_PROCESS_BLOOM)
{
IPostProcessBloom* post_process = (IPostProcessBloom*) rc_canvas[rc_active_canvas].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true);
}
else if(rc_canvas[rc_active_canvas].post_effect.type == RC_POST_PROCESS_BLUR)
{
IPostProcessBlur* post_process = (IPostProcessBlur*) rc_canvas[rc_active_canvas].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true);
}
else if(rc_canvas[rc_active_canvas].post_effect.type == RC_POST_PROCESS_COLORIZE)
{
IPostProcessColor* post_process = (IPostProcessColor*) rc_canvas[rc_active_canvas].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true);
}
else if(rc_canvas[rc_active_canvas].post_effect.type == RC_POST_PROCESS_INVERT)
{
IPostProcessInvert* post_process = (IPostProcessInvert*) rc_canvas[rc_active_canvas].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true, irr::video::SColor(0,0,0,0));
}
else if(rc_canvas[rc_active_canvas].post_effect.type == RC_POST_PROCESS_RADIAL_BLUR)
{
IPostProcessRadialBlur* post_process = (IPostProcessRadialBlur*) rc_canvas[rc_active_canvas].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true);
}
else
{
VideoDriver->setRenderTarget(rc_canvas[rc_active_canvas].texture, true, true, rc_clear_color);
}
}
else
{
VideoDriver->setRenderTarget(rc_canvas[rc_active_canvas].texture, true, true, rc_clear_color);
}
if(rc_canvas[rc_active_canvas].camera.camera) if(rc_canvas[rc_active_canvas].camera.camera)
SceneManager->setActiveCamera(rc_canvas[rc_active_canvas].camera.camera); SceneManager->setActiveCamera(rc_canvas[rc_active_canvas].camera.camera);
@@ -153,7 +193,16 @@ void rc_pipeline_Render()
rc_active_color = current_color; rc_active_color = current_color;
rc_setDriverMaterial(); rc_setDriverMaterial();
if(rc_canvas[rc_active_canvas].post_effect.type == RC_POST_PROCESS_MOTION_BLUR && rc_canvas[rc_active_canvas].post_effect.is_active)
{
//render motion blur
IPostProcessMotionBlur* post_process = (IPostProcessMotionBlur*) rc_canvas[rc_active_canvas].post_effect.object;
post_process->render();
}
else
{
SceneManager->drawAll(); SceneManager->drawAll();
}
for(int p_actor = 0; p_actor < rc_projector_actors.size(); p_actor++) for(int p_actor = 0; p_actor < rc_projector_actors.size(); p_actor++)
{ {
@@ -173,9 +222,9 @@ void rc_pipeline_Render()
} }
//render post effects //render post effects
for(int effect_num = 0; effect_num < rc_canvas[rc_active_canvas].post_effect.size(); effect_num++) if(rc_canvas[rc_active_canvas].post_effect.is_active)
{ {
rc_renderPostEffect(rc_active_canvas, effect_num); //It won't render if not active so no check needs to be done here rc_renderPostEffect(rc_active_canvas);
} }
} }

View File

@@ -541,8 +541,48 @@ bool rc_update()
for(int canvas_id = 0; canvas_id < rc_canvas.size(); canvas_id++) for(int canvas_id = 0; canvas_id < rc_canvas.size(); canvas_id++)
{ {
if(rc_canvas[canvas_id].show3D) if(rc_canvas[canvas_id].show3D)
{
if(rc_canvas[canvas_id].post_effect.is_active)
{
if(rc_canvas[canvas_id].post_effect.type == RC_POST_PROCESS_DISTORTION)
{
IPostProcessGlass* post_process = (IPostProcessGlass*) rc_canvas[canvas_id].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true);
}
else if(rc_canvas[canvas_id].post_effect.type == RC_POST_PROCESS_BLOOM)
{
IPostProcessBloom* post_process = (IPostProcessBloom*) rc_canvas[canvas_id].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true);
}
else if(rc_canvas[canvas_id].post_effect.type == RC_POST_PROCESS_BLUR)
{
IPostProcessBlur* post_process = (IPostProcessBlur*) rc_canvas[canvas_id].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true);
}
else if(rc_canvas[canvas_id].post_effect.type == RC_POST_PROCESS_COLORIZE)
{
IPostProcessColor* post_process = (IPostProcessColor*) rc_canvas[canvas_id].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true);
}
else if(rc_canvas[canvas_id].post_effect.type == RC_POST_PROCESS_INVERT)
{
IPostProcessInvert* post_process = (IPostProcessInvert*) rc_canvas[canvas_id].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true, irr::video::SColor(0,0,0,0));
}
else if(rc_canvas[canvas_id].post_effect.type == RC_POST_PROCESS_RADIAL_BLUR)
{
IPostProcessRadialBlur* post_process = (IPostProcessRadialBlur*) rc_canvas[canvas_id].post_effect.object;
VideoDriver->setRenderTarget(post_process->rt0, true, true);
}
else
{ {
VideoDriver->setRenderTarget(rc_canvas[canvas_id].texture, true, true, rc_clear_color); VideoDriver->setRenderTarget(rc_canvas[canvas_id].texture, true, true, rc_clear_color);
}
}
else
{
VideoDriver->setRenderTarget(rc_canvas[canvas_id].texture, true, true, rc_clear_color);
}
if(rc_canvas[canvas_id].camera.camera) if(rc_canvas[canvas_id].camera.camera)
SceneManager->setActiveCamera(rc_canvas[canvas_id].camera.camera); SceneManager->setActiveCamera(rc_canvas[canvas_id].camera.camera);
@@ -583,7 +623,16 @@ bool rc_update()
rc_active_color = current_color; rc_active_color = current_color;
rc_setDriverMaterial(); rc_setDriverMaterial();
if(rc_canvas[canvas_id].post_effect.type == RC_POST_PROCESS_MOTION_BLUR && rc_canvas[canvas_id].post_effect.is_active)
{
//render motion blur
IPostProcessMotionBlur* post_process = (IPostProcessMotionBlur*) rc_canvas[canvas_id].post_effect.object;
post_process->render();
}
else
{
SceneManager->drawAll(); SceneManager->drawAll();
}
for(int p_actor = 0; p_actor < rc_projector_actors.size(); p_actor++) for(int p_actor = 0; p_actor < rc_projector_actors.size(); p_actor++)
{ {
@@ -603,9 +652,10 @@ bool rc_update()
} }
//render post effects //render post effects
for(int effect_num = 0; effect_num < rc_canvas[rc_active_canvas].post_effect.size(); effect_num++) if(rc_canvas[canvas_id].post_effect.is_active)
{ {
rc_renderPostEffect(canvas_id, effect_num); //It won't render if not active so no check needs to be done here VideoDriver->setRenderTarget(rc_canvas[canvas_id].texture, true, true, rc_clear_color);
rc_renderPostEffect(canvas_id);
} }
//VideoDriver->draw2DRectangle(irr::video::SColor(255,0,255,0), irr::core::rect<irr::s32>(10,40,100,500)); //VideoDriver->draw2DRectangle(irr::video::SColor(255,0,255,0), irr::core::rect<irr::s32>(10,40,100,500));

View File

@@ -1,5 +1,5 @@
# depslib dependency file v1.0 # depslib dependency file v1.0
1762838155 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp 1763866998 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
"rc_os_defines.h" "rc_os_defines.h"
<emscripten.h> <emscripten.h>
<sys/param.h> <sys/param.h>
@@ -34,10 +34,10 @@
<irrtheora.h> <irrtheora.h>
"rc_func130_cases.h" "rc_func130_cases.h"
1759134832 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h 1763866870 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
<TargetConditionals.h> <TargetConditionals.h>
1763784345 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h 1763875558 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
1763522526 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h 1763522526 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h
"rc_os_defines.h" "rc_os_defines.h"
@@ -1249,7 +1249,7 @@
1734372058 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h 1734372058 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h
<irrlicht.h> <irrlicht.h>
1763708323 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h 1763874908 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
"SDL.h" "SDL.h"
<SDL2/SDL.h> <SDL2/SDL.h>
<irrlicht.h> <irrlicht.h>
@@ -1274,7 +1274,7 @@
"rc_post_fx.h" "rc_post_fx.h"
<irrtheora.h> <irrtheora.h>
1763707267 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h 1763871259 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
"SDL.h" "SDL.h"
"btBulletDynamicsCommon.h" "btBulletDynamicsCommon.h"
"BulletSoftBody/btSoftRigidDynamicsWorld.h" "BulletSoftBody/btSoftRigidDynamicsWorld.h"
@@ -2279,7 +2279,7 @@
"rc_gfx_core.h" "rc_gfx_core.h"
<irrtheora.h> <irrtheora.h>
1763784345 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h 1763875558 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h
1760243468 source:/home/n00b/Projects/irrBullet/src/irrBullet.cpp 1760243468 source:/home/n00b/Projects/irrBullet/src/irrBullet.cpp
"irrBullet.h" "irrBullet.h"
@@ -2552,7 +2552,7 @@
1758412944 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_camera.h 1758412944 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_camera.h
1763708061 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_windowclose.h 1763889169 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_windowclose.h
1650940764 /usr/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h 1650940764 /usr/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
"BulletCollision/CollisionShapes/btTriangleCallback.h" "BulletCollision/CollisionShapes/btTriangleCallback.h"
@@ -2746,12 +2746,12 @@
<sstream> <sstream>
"rc_steam.h" "rc_steam.h"
1763708113 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_render_control.h 1763888014 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_render_control.h
<irrlicht.h> <irrlicht.h>
"rc_gfx_core.h" "rc_gfx_core.h"
"rc_post_fx.h" "rc_post_fx.h"
1762838223 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_post_fx.h 1763885109 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_post_fx.h
<irrlicht.h> <irrlicht.h>
<cstdlib> <cstdlib>
"rc_gfx_core.h" "rc_gfx_core.h"