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

@@ -114,7 +114,47 @@ void rc_pipeline_Render()
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)
SceneManager->setActiveCamera(rc_canvas[rc_active_canvas].camera.camera);
@@ -153,7 +193,16 @@ void rc_pipeline_Render()
rc_active_color = current_color;
rc_setDriverMaterial();
SceneManager->drawAll();
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();
}
for(int p_actor = 0; p_actor < rc_projector_actors.size(); p_actor++)
{
@@ -173,9 +222,9 @@ void rc_pipeline_Render()
}
//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);
}
}