September 16, 20205 yr I've been experimenting with a workaround for the lack of multi-view for multi-monitor setups and reducing the distortion on the side screens. I figured I could write a ReShade shader that squeezes the outside screens while leaving the center one unchanged. I haven't had time to really test this much yet, but I wanted to share my efforts so far and see if that is of any benefit to any other multi-monitor simmers. This requires Reshade installed for MSFS. Just save the shader code to a file called MultiMonitor.fx and copy it to your ReShade shader folder for MSFS and enable it in the Reshade menu. It only works with 3 monitors of the same size and resolution. You can either run in surround mode or drag the MSFS window to cover all 3 screens. Yes, I know, some of the screen space is wasted, you can't click on anything in the outside views, performance impact, blah blah blah. The math still needs work but you can squeeze the side view with the Factor value and distort it with the Power value. When I have more time I will revisit the math and also add bezel correction. 3 monitor setup distortion Shader squeezing outside views with default settings ReShade shader Code: #include "ReShadeUI.fxh" uniform float factor < __UNIFORM_SLIDER_FLOAT1 ui_min = 0.0; ui_max = 5; ui_tooltip = "Factor"; > = 1; uniform float power < __UNIFORM_SLIDER_FLOAT1 ui_min = 1; ui_max = 10; ui_tooltip = "Power"; > = 2.5; #include "ReShade.fxh" float3 MultiMonitorPass(float4 vpos : SV_Position, float2 texcoord : TexCoord) : SV_Target { float3 color; float2 sourceCoord; float texTimes3 = texcoord.x * 3.0; float monitorPos = texTimes3 - 1.0; float monitorIx = floor(monitorPos); float texTimes3Centered = texTimes3 - 1.5; float absTex3 = abs(texTimes3Centered) - 0.5; if (absTex3 > 0 && absTex3 < 1) absTex3 = pow(absTex3, power); float centerOffs = absTex3 * monitorIx; float finalOffs = centerOffs * factor; float sourceX = texcoord.x + finalOffs; sourceCoord.x = sourceX; sourceCoord.y = texcoord.y; color = (sourceX < 0 || sourceX > 1) ? 0 : tex2D(ReShade::BackBuffer, sourceCoord).rgb; return color; } technique MultiMonitor { pass { VertexShader = PostProcessVS; PixelShader = MultiMonitorPass; } } Matthias - KCOS Sim: P3D 4.5, UTX V2, ORBX Base openLC NA EU, ASP3D, TOGA, RealityXP, SPAD.neXt, Carenado GA PC: i9-11900k, RTX 3090, Asus Rog Strix Z590-EHome Cockpit: Honeycomb AFC, Thrustmaster T.Flight, RealSimGear GNS530, Logitech FIP FMP FRP FSP FTQ*2, 3x55" 4K TVs (View), 26" 21:9 (Gauges)
September 16, 20205 yr 2 hours ago, Matthias1231 said: I've been experimenting with a workaround for the lack of multi-view for multi-monitor setups and reducing the distortion on the side screens. I figured I could write a ReShade shader that squeezes the outside screens while leaving the center one unchanged. I haven't had time to really test this much yet, but I wanted to share my efforts so far and see if that is of any benefit to any other multi-monitor simmers. This requires Reshade installed for MSFS. Just save the shader code to a file called MultiMonitor.fx and copy it to your ReShade shader folder for MSFS and enable it in the Reshade menu. It only works with 3 monitors of the same size and resolution. You can either run in surround mode or drag the MSFS window to cover all 3 screens. Yes, I know, some of the screen space is wasted, you can't click on anything in the outside views, performance impact, blah blah blah. The math still needs work but you can squeeze the side view with the Factor value and distort it with the Power value. When I have more time I will revisit the math and also add bezel correction. 3 monitor setup distortion I applaud the effort but surely this just gives the same result as using a narrower window and adjusting the zoom to achieve the same vertical FoV? To me this would only make sense if you ran a custom screen resolution at a wider-than-actual screen width and your tweak squashed it down to the actual screen width. Edited September 16, 20205 yr by MarkDH MarkH https://www.youtube.com/@AlmostAviation AMD Ryzen 7 9800X3D / 64Gb DDR5 / Zotac RTX 5070 Ti / 2560 x 1440 display
September 16, 20205 yr Author It's not the same as an FOV change. The default projection using three monitors is based on the monitors being aligned on a flat surface. This shader results in a partial (fake) projection adjustment compensating for the angle at which the outside screens are turned towards the user. Matthias - KCOS Sim: P3D 4.5, UTX V2, ORBX Base openLC NA EU, ASP3D, TOGA, RealityXP, SPAD.neXt, Carenado GA PC: i9-11900k, RTX 3090, Asus Rog Strix Z590-EHome Cockpit: Honeycomb AFC, Thrustmaster T.Flight, RealSimGear GNS530, Logitech FIP FMP FRP FSP FTQ*2, 3x55" 4K TVs (View), 26" 21:9 (Gauges)
September 16, 20205 yr 19 minutes ago, Matthias1231 said: It's not the same as an FOV change. The default projection using three monitors is based on the monitors being aligned on a flat surface. This shader results in a partial (fake) projection adjustment compensating for the angle at which the outside screens are turned towards the user. I maintain (at least on first glance) that you will get the same effect by running a narrower window and adjusting the zoom. The required zoom setting will be larger (longer effective focal length) and hence the distortion away from the centre of the image will be less extreme. I have yet to install MSFS but by all accounts it seems to behave pretty much exactly like FSX and P3D. MarkH https://www.youtube.com/@AlmostAviation AMD Ryzen 7 9800X3D / 64Gb DDR5 / Zotac RTX 5070 Ti / 2560 x 1440 display
September 16, 20205 yr Author You keep maintaining then. Thanks for participating. Matthias - KCOS Sim: P3D 4.5, UTX V2, ORBX Base openLC NA EU, ASP3D, TOGA, RealityXP, SPAD.neXt, Carenado GA PC: i9-11900k, RTX 3090, Asus Rog Strix Z590-EHome Cockpit: Honeycomb AFC, Thrustmaster T.Flight, RealSimGear GNS530, Logitech FIP FMP FRP FSP FTQ*2, 3x55" 4K TVs (View), 26" 21:9 (Gauges)
Archived
This topic is now archived and is closed to further replies.