How-To: Live Render Target Preview
Goal: replace the static background with a live-rendered 3D scene - your character rotating on a stand, or a camera flyover - captured by a SceneCapture2D into a render target the widget displays.
1. Create the render target and capture
In the Content Browser: right-click -> Materials & Textures... -> Render Target, name it RT_Showcase, set its size (1920x1080 is plenty). In your showcase level, place a Scene Capture 2D actor framed on the stand, set its Texture Target to RT_Showcase, and keep Capture Every Frame enabled.
RT_Showcase while the showcase level is open: it shows the captured view live.2. Enable live preview in Project Settings
In Project Settings -> Crimson -> Crimson Loading Screen -> Cinematic Preview, tick Use Live Preview and set Showcase Render Target to RT_Showcase (the field only unlocks once the checkbox is on).
Images/CrimsonLoadingScreen/howto-livepreview-settings.pngbUseLivePreview on, world rendering stays enabled so the capture keeps updating - that costs GPU during loads. Keep the showcase scene lightweight. Get Showcase Render Target returns null whenever bUseLivePreview is off, even with a render target assigned.Get Showcase Render Target (pure node) returns a valid object.3. Keep the showcase alive during the load
A non-seamless travel destroys the entire current world - including your capture. The capture must live in a world that survives the load. Two proven setups:
| Approach | How | Best for |
|---|---|---|
| Seamless travel transition map | GameMode: bUseSeamlessTravel = true; set the showcase level as the transition map (below). The showcase IS the world while the destination loads. | Online multiplayer; standalone games wanting a full 3D interlude |
| Always-loaded streaming sublevel | Add the showcase as a sublevel of your persistent level, set Always Loaded. Zone swaps stream in/out around it. | Games already built on level streaming (no full LoadMap) |
; Config/DefaultEngine.ini - the seamless-travel transition map[/Script/EngineSettings.GameMapsSettings]TransitionMap=/Game/LoadingScreen/Maps/ShowcaseMap.ShowcaseMap
// MyGameMode.cpp constructorAMyGameMode::AMyGameMode(){bUseSeamlessTravel = true;}
4. Display the render target in the widget
Make one base material M_ShowcaseBackground: a Texture Sample Parameter 2D named RenderTarget into Emissive Color, Material Domain = User Interface. The widget wraps it in a dynamic instance and plugs in the live render target - falling back to the static background when live preview is off.
Images/CrimsonLoadingScreen/howto-livepreview-widget-bp.pngSee also
- How-To: Showcase the Player's Character - the stand, the provider, and the director.
- Concept: The Cinematic Preview Pipeline - how the pieces talk to each other and when.