How to change resolution of specific elements on screen.

Started by
3 comments, last by MessiasALT 1 year, 1 month ago

Hi,

I've read recently that Fornite's “3D resolution” parameter, changes the resolution for 3D elements only, eveything 2D (even if it's in 3D ambient like particles, VFX) is not affected. How that works? How to specify what I want to be affected by the resolution parameter?

I want to know the logic behind it, not necessarily the code. Just the logic. But if you want to show code snippets to exemplify, any object-oriented language will do the job.

Thanks devs! ?

Advertisement

At a guess, I would imagine that they render their 3D objects to an off-screen buffer (something that they may well be doing anyway for the purposes of post-process shaders and/or deferred rendering), which is then drawn as a full-screen image (perhaps via an intermediate quad). I would guess, then, that the “3D resolution” refers to the resolution of that buffer.

Since 2D elements are likely not rendered to said buffer, they would thus be unaffected by changes to its resolution.

(Which is actually a fairly clever idea, come to think of it: doing so would allow one to down-scale 3D rendering without affecting the actual window/screen resolution, and without affecting 2D elements.)

MWAHAHAHAHAHAHA!!!

My Twitter Account: @EbornIan

At a very high level, different rendering systems often output to separate buffers that can have different resolutions. For example, the primary 3D scene might render at 1440p and be upscaled to 4k while the UI might be rendered after upscaling at native 4k. Other systems that render to separate buffers might do something similar. For example, particles might be rendered at some other resolution based on performance budgets and composited onto the 3D scene. Water rendering is sometimes done in a similar manner.

I don't have too much experience with Fortnite or UE5, but I imagine the “3D resolution” refers to my first point where the main scene is rendered at some resolution less than the final output resolution and upscaled using one of a variety of techniques.

Thanks guys! Sorry for the late reply.

After your responses I've been searching about graphics programming, shaders and buffers. Now everything makes sense, I would never reach the answer on my own. Kudos!

This topic is closed to new replies.

Advertisement