How do I increase the Render Target Resolution beyond 1280x960? Need Higher Res for VR project

Dear Friends at Epic,

I am having great difficulty increasing the resolution of a render target past 1280x960, which apparently is the max for the ViewFamily that render targets use by default

#SceneRenderTargets.cpp

I am hitting this limit

case Clamped:
if (((uint32)BufferSize.X < ViewFamily.FamilySizeX) || ((uint32)BufferSize.Y < ViewFamily.FamilySizeY))
{
  UE_LOG(LogRenderer, Warning, TEXT("Capture target size: %ux%u clamped to %ux%u."), ViewFamily.FamilySizeX, ViewFamily.FamilySizeY, BufferSize.X, BufferSize.Y);
}

#Question

How do I change the ViewFamily during runtime or before game starts so I can set the resolution to be higher than 1280 x 960?

ViewFamily.FamilySizeX
ViewFamily.FamilySizeY

Is this even current feasible?

I know the data, but I dont know where/when to modify the ViewFamily and have it update to the render target system!

Please let me know the best way to proceed with this via C++ or config files as soon as you can!

Thanks!

Rama

I am not sure, but in engine v4.1, I think was able to create a render target with resolution 1600*900. I created it from the editor itself as an asset without C++.

well when I create a texture render, even in the editor, any time it goes above 1280x960 I get error message in the logs that it is being clamped to 1280x960

Tried it in 4.1 and 4.3.1 Worked in both. I created a material using the render target and applied it to mesh. Material was using a screen space node. Still everything worked. Since I was using a screen space node, if the resolution of RT were different from my screen resolution, I would have noticed some artifact. But it was perfect.

Can you tell me how to reproduce the issue. I am doing something that is very much dependant on Render Targets. So if there is bug in there, I would like to know.

Thanks

Right now scene captures are clamped to be smaller than the game window, because larger resolutions would allow a resize of the global scene render targets which causes a serious memory problem (plus hitching). I can see how this is a big problem for high quality, maybe we can improve this in the future.

ahh okay, thanks for the info !

Thank you for your attention to this . My team is working on a UE4 project where higher resolution render targets are critical. Any guidance you can provide on how we can increase this ourselves without breaking the rest of the engine would be much appreciated and save us considerable time and cost. Thanks again!

Daniels answer is correct. Using SceneCapture actors with a higher than screen resolutrion can be very expensive and doing so every frew frames would cause a reallocation of a lot of rendertargets. The current behavior is limiting but it prevents this huge performance and memory consumption problem. You can change the code but often this is not the right solution. To find the right solution you can ask yourself some questions: Do you need the feature to supersample? Does it need to be real-time, each frame or only on load? Do you need it in game or in editor? Do you want the texture result to be compressed? Would it need a gbuffer of that side or only a single color rendertarget? Maybe you want to create your own rendering not using the SceneCaptureActor (e.g. look at thumbnail rendering).

I have a question. So the size of a render target can be as much as the game window size? My screen is 1600X900. So if I play full screen, I can have a render target of size 1600X900?

I am asking because as far as I cna tell, I managed to create a render target of size 1600X900 on v4.1 and 4.3 (atleast I did not get any warnings and the render target properties said the size is 1600X900).

So what happens when the game is played in view port (in this case the game window size is less than 1600X900). What happens to the already created render target (with size 1600X900)?

Thanks

We actually changed this behavior again - we now favor simplicity over performance and memory savings. The new method does not force the RT to be smaller - you get at least the size you ask for. In the editor it always grows and in the game it tried to keep the minimum size needed.
The minimum size is computed each frame (all requests this frame are taken into account). We don’t have low fps SceneCapatures yet (was exposed in UE3 but not UE4) - for that we should make the time period a bit larger (e.g. take all requests within 0.1s). If you see a lot of resizing in your log you might have to think about that but normal applications shouldn’t have a problem with this method.

Thank you very much for the update Martin!

Regarding low fps captures, I tried to make my own, by ticking the component myself perdiocally, but the problem is that the component is hardwired to updated every frame it is moved.

I reported the fact that I could not extend capturecomponent2D to then re write how it works.

Thanks again Martin!

#:heart:

Rama

I can’t set my RenderTarget to more than 2048x2048 size. So it’s still limited?

Just noticed, this is c++ section, I am not using C++ but just setting the size in the Editor.