Skip to main content

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 integrates with DLSS, FSR, XeSS, and MTLFX upscalers.

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;