Refract
Refract copied to clipboard
Support Wide Displays
Is your feature request related to a problem? Please describe. Currently Refract only works with Looking Glass Portrait and only displays the center 1/3 of the game.
Describe the solution you'd like Support for wide screen LKG displays and full-frame games.
Describe alternatives you've considered N/A
Additional context
I can think of 3 potential ways of doing this:
-
Switch to rendering horizontal. The problem with this is that you have to get the game to render in half the vertical resolution but at the 2:1 compress ratio. This has to be done in Reglass (Reshade) before you can try to stretch it back out in Refrat to the full height and proper aspect ratio. You would need to add another shader pass in Reglass and expose an option for it in the shader settings. In Refract, you'd have to change the parameters on the UDD (desktop capture) object to capture the vertical half rather than the horizontal half. And you'd have to add an extra pass in the Refract displacement shader to stretch the result.
-
Interlace. Rather than splitting the screen half and half, you would do every-other line. This might require less effort because you wouldn't have to squish. You'd only have to stretch. But the process would be similar to the above.
-
The right way to do it would be to write a Reshade native plugin. These are new and are in Reshade 5. They're written in C++. The plugin would theoretically have access to the full color frame and the full depth buffer frame without screen splitting at all. The C++ plugin would then have to send this data to Refract over ICP (inter-process communication). Refract would need to be modified to receive frames over ICP rather than screen scraping. This is no small undertaking, but it's really the right way to do it if possible. It would get around the desktop duplication limitations some users are facing, and it would allow Refract to work on a much wider range of displays.
I haven't started this work because I don't have a wide screen display to test it on. If any users are thinking about implementing this, I highly recommend trying to implement it this way.