MultiView
The MultiView plugin enables configuration and rendering across multiple physical displays. It supports both straightforward multi-screen layouts defined by horizontal and vertical angles with bezel spacing, as well as advanced setups using a configuration mesh that precisely describes physical screen transformations and dimensions.
The plugin also automates display presentation by mapping each RenderFrame to the corresponding physical screen during the draw() operation, simplifying multi-display rendering logic.
info
The MultiView plugin is compatible with Fusion resources, enabling multiple GPUs rendering.
info
This plugin is integrated into Tellusim Executor.
#include <render/multiview/include/TellusimMultiView.h>
Example
// Create a MultiView instance
RenderMultiview render_multiview(desktop);
if(!render_multiview.create(device, window.getSurface())) return false;
// Create RenderFrames for each physical screen
Array<RenderFrame> render_frames;
for(uint32_t i = 0; i < render_multiview.getNumFrames(); i++) {
RenderFrame render_frame = RenderFrame(render_system.getManager(), sample_camera.getNode(), i);
if(!render_frame.create(device, render_system.getRenderer(), desktop.getScreenWidth(i), desktop.getScreenHeight(i))) return false;
render_frames.append(render_frame);
}
// create multiview camera
CameraMultiview camera_multiview = CameraMultiview(scene);
// Configure the MultiView camera using a geometry mesh that defines screens layout and the viewer physical position
render_multiview.update(camera_multiview, config_mesh, view_position);
// Perform rendering multi-GPU rendering
render_scene(render_frames);
// Display the rendered frames on physical output devices
render_multiview.draw(target, command, render_frames.get(), flipped);