IrisShaders / Iris

A modern shaders mod for Minecraft compatible with existing OptiFine shader packs
https://irisshaders.dev
GNU Lesser General Public License v3.0
3.31k stars 625 forks source link

Implement FSR 2.1 (Video attached showing potential performance improvements) #1637

Open alexhowell610 opened 2 years ago

alexhowell610 commented 2 years ago

Normally FSR wouldn't really benefit Minecraft because it's a very CPU intensive game but with shaders the GPU is utilized enough to warrant the addition of FSR.

Here's an old video of someone using a fairly hacky way to use an early version of FSR on Minecraft with shaders. As you can see the benefits are pretty exceptional. The improvements with FSR 2.1 and a real implementation could achieve massive performance gains.

ghost commented 2 years ago

a basic trilinear upscaling mod exists, but i don't think it would be easy to implement native FSR into Java, as it uses OpenGL, which isnt officially supported. You might have to use something like the experimental Vulkan Mod, and build off it there.

DioEgizio commented 1 year ago

tbh, you can definitely use fsr on opengl

coderbot16 commented 1 year ago

FSR 2 works very differently from FSR 1 and is not possible to get working with shaders unless the shader pack itself implements FSR 2. You can either have FSR 1 always, or FSR 2 when shaders are disabled, but Iris itself can't add FSR 2 to shaders on its own.

ghost commented 1 year ago

@coderbot16 i assume this is out of the scope of the mod?

coderbot16 commented 1 year ago

I'm not going to say it's out of scope, but it's not a high priority since there's not as much stopping another mod from implementing it, and there's a lot of OptiFine shader features that still need to be added to Iris.

towndown1629 commented 1 year ago

@coderbot16 Someone actually made FSR2 for OpenGL. It's an unofficial port, but I don't think FSR2 will be updated anymore, so it should be fine. Will this work?

coderbot16 commented 1 year ago

We did look into this a little more since the last time, but FSR 2 is actually quite a bit different from FSR 1 as shown in the video. In particular, while FSR 1 was more of something you could just duct-tape on to the end of the rendering process for immediate results, FSR 2 requires deeper integration into the rest of the pipeline since it's largely a souped-up version of temporal anti-aliasing.

TAA can be used for both upscaling and anti-aliasing because it's just a way of extracting additional detail from the same number of screen pixels, but this requires things like jittering vertices around in order to induce movement of pixels even when the screen is still. However, as most production shader packs use TAA already, and as FSR 2 isn't just something that can be stuck on the end of the rendering process and might potentially overlap with the TAA implementation, it makes more sense for shader packs themselves to integrate FSR 2.

That being said, FSR 1 integration in Iris is definitely possible, and would just be conditional on the time needed to develop it compared to other things.

coderbot16 commented 1 year ago

Overall, I'll say that the real challenge isn't porting FSR 1 / 2 to OpenGL, but rather conceptually determining how to integrate it into an existing rendering process.

towndown1629 commented 1 year ago

Thank you for your explanation. I hope someone makes an FSR2 shader one day :(

nonetrix commented 8 months ago

If this ever makes progress FSR 3 frame generation would be neat as well, but unless someone is willing to actively maintain a OpenGL port it might never become a reality. Maybe porting to the Vulkan mod would be doable however, but it defeats much of the point since you don't have shaders to tax the GPU much. I doubt any Vulkan capable GPU struggles with stock Minecraft graphics. Perhaps a hack solution could be to use Zink as a emulation layer between OpenGL and Vulkan, but I imagine you would have to fork Zink and Zink is hit or miss in general and usually comes with less proformance

The-Enigmatic-Negus commented 7 months ago

The people who can do this jsut don't want to coz they probs have pcs enough to run 5 gta v's is the background running at max graphics in 4k at a minimum of 30 fps. They would probs rather play some other game, they only people who could be bothered to do anything is the creators of optifine and sodium or maybe mojang themselves.

DrymarchonShaun commented 7 months ago

The people who can do this jsut don't want to coz they probs have pcs enough to run 5 gta v's is the background running at max graphics in 4k at a minimum of 30 fps. They would probs rather play some other game, they only people who could be bothered to do anything is the creators of optifine and sodium or maybe mojang themselves.

I'm sorry, what? For one, the lead dev for Iris is one of the top contributers to sodium, but thats not really important, being an asshole isn't going to convince anyone to do anything for you.

FluffyPuppyKasey commented 6 months ago

The people who can do this jsut don't want to coz they probs have pcs enough to run 5 gta v's is the background running at max graphics in 4k at a minimum of 30 fps. They would probs rather play some other game, they only people who could be bothered to do anything is the creators of optifine and sodium or maybe mojang themselves.

The lead dev of Iris (IMS) has a 3060 Ti as shown in the video posted recently to the Iris Discord server. They "don't want to" because:

  1. As someone mentioned before, FSR 2 does not support OpenGL. There is a port, but it's seemingly been abandoned as of ten months ago (and it also performs worse than expected on NVIDIA Ampere GPUs, so anything from the RTX 30 series).
  2. FSR 2 works in a fundamentally different way than FSR 1, and requires motion vectors, which as of right now, Iris does not support
  3. There are mods that can at least fill in the gaps (ResolutionControl+ comes to mind) and give you something close enough that it doesn't really matter