Download

Movie Render Pipeline -> Rendering SplitScreen

Is it possible to request such functionality SplitScreen for Movie Render?>
After all, this is a very important functionality, and it is still unavailable.

I have rendering spitscreen → using Movie Render Queue.


But, if i using Movie Render not support SplitScreen.
Result Image:

I find in source code Movie render → MoviePipeline.cpp > this code

> if (UGameViewportClient Viewport = GetWorld()->GetGameViewport())*
> {
> Viewport->bDisableWorldRendering = true;
> }

If change this code to:
> if (UGameViewportClient Viewport = GetWorld()->GetGameViewport())*
> {
> Viewport->bDisableWorldRendering = false;
> }

Isee this result in Movie Render Prewiew.

I understand that the bDisableWorldRendering command
disables the outside world.

Tell me, how can I pass Splitscreen to rendering?
How do I transfer Splitscreen viewport data to task rendering?

In source file MoviePipelineDeferredPasses.cpp
This code responsible for copying from the buffer to the texture. But why does he take only one player?
Why does not accept Splitscreen.
> *
> // Render Target that the GBuffer is copied to
> int32 NumRenderTargets = (bAddDefaultLayer ? 1 : 0) + StencilLayers.Num() + 1;
> for (int32 Index = 0; Index < NumRenderTargets; Index++)
> {
> UTextureRenderTarget2D NewTarget = NewObject(GetTransientPackage());

> NewTarget->ClearColor = FLinearColor(0.0f, 0.0f, 0.0f, 0.0f);

A note for yourself:
File MoviePipelineSurfaceReader.cpp

RendererModule->DrawRectangle(
RHICmdList,
0, 0, // Dest X, Y
TargetSize.X, // Dest Width
TargetSize.Y, // Dest Height
0, 0, // Source U, V
1, 1, // Source USize, VSize
TargetSize, // Target buffer size
FIntPoint(1, 1), // Source texture size
VertexShader,
EDRF_Default);
}
RHICmdList.EndRenderPass();

Responsible for the output of the final image. For example, you can change the Source texture size of the saved file.

If changed: 1, 1 // Source USize, VSize to 2, 2 // Source USize, VSize

How do I figure out how to pass a SplitScreen GameViewport to a texture? SplitScreen not save in output file.

Notes for yourself:
After reviewing the code, there is a slight understanding that Movie Render and Sequencer use the engine code, Movie Scene Capture.

The sequencer supports SplitScreen, you need to understand why this is happening.
Movie Render uses the same code, but with certain changes that I have to understand.

Sequencer support SplitScreen,


Standart rendering(Not Using Custom Render).

but not support Custom Render Passes:


Example, if using CustomRenderPasses in Sequencer, rendering 1 screen.

(WorldNormal)

(BaseColor)

I have already created many requests for bugs, and one day I received an email.

Hey Ivan,
Sorry about the delay on this. It appears this behavior is expected because Custom Render Passes rely on post process materials and by default they are not supported with split-screen at all and are disabled. You would have to render each eye twice, using the normal sequencer rendering techniques.

I’m a little stumped. I think there should be a simple solution.

How to remove the 7680x7680 limit for Suquencer?
Max size 16384 px.
Yes, who is interested in circumventing the restriction for the 7680x7680 Sequencer, you can compile the source code with modified restrictions up to 16384x16384 in the following file Engine/Source/Runtime/MovieSceneCapture/MovieSceneCaptureSettings.h.



So more people will be able to see this topic, with useful information :slight_smile: