System
The RenderSystem plugin aggregates the entire rendering pipeline into a single call. It supports rasterization, compute-based rasterization, and ray tracing, including combined screen-space and ray-traced ambient occlusion and reflections.
Multi-frame rendering using multiple RenderFrame instances is executed in an efficient, parallel manner, dramatically improving performance in multi-view scenarios.
info
This plugin is integrated into both Tellusim Explorer and Tellusim Executor, and is also used in the GravityMark benchmark for all rendering operations.
#include <render/system/include/TellusimRenderSystem.h>
Example
// Select render system flags based on command-line arguments
RenderSystem::Flags render_system_flags = RenderSystem::DefaultFlags;
if(app.isArgument("dlss")) render_system_flags |= RenderSystem::FlagDLSS;
else if(app.isArgument("fsr2")) render_system_flags |= RenderSystem::FlagFSR2;
else if(app.isArgument("fsr3")) render_system_flags |= RenderSystem::FlagFSR3;
else if(app.isArgument("xess")) render_system_flags |= RenderSystem::FlagXeSS;
else if(app.isArgument("mtlfx")) render_system_flags |= RenderSystem::FlagMTLFX;
// Initialize the RenderSystem plugin
RenderSystem::init(app.getPlatform(), render_system_flags);
// Select RenderRenderer flags
RenderRenderer::Flags render_renderer_flags = RenderRenderer::FlagNone;
render_renderer_flags |= RenderRenderer::FlagAntialiasing;
render_renderer_flags |= RenderRenderer::FlagMotionBuffer;
render_renderer_flags |= RenderRenderer::FlagScreenOcclusion;
render_renderer_flags |= RenderRenderer::FlagScreenReflection;
// Create the RenderSystem instance
RenderSystem render_system(scene_manager);
if(!render_system.create(device, window.getSurface(), render_renderer_flags);
// Set the RenderRenderer for the Scene
scene.setRender(render_system.getRender());
// Render all frames
if(!render_system.render(device, frames, render_system_flags)) return false;