From 1c53060d110ea570ea9ff73aee94864b8740c89d Mon Sep 17 00:00:00 2001 From: kerbalcadet Date: Mon, 26 Jan 2026 03:30:57 -0600 Subject: [PATCH 1/2] center RT camera UV coords --- lua/entities/gmod_wire_rt_screen.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lua/entities/gmod_wire_rt_screen.lua b/lua/entities/gmod_wire_rt_screen.lua index 936db643e8..89537e1db3 100644 --- a/lua/entities/gmod_wire_rt_screen.lua +++ b/lua/entities/gmod_wire_rt_screen.lua @@ -255,13 +255,15 @@ if CLIENT then local y1 = -yraw local y2 = yraw - local u1, v1 = 0, 0 - local u2, v2 = self:GetScaleX(), monitor.RatioX * self:GetScaleY() + local y_center_offset = self:GetScaleY() * (1 - monitor.RatioX) / 2 + local u1, v1 = 0, y_center_offset + local u2, v2 = self:GetScaleX(), v1 + monitor.RatioX * self:GetScaleY() local scrU = self:GetScrollX() local scrV = self:GetScrollY() u1 = u1 + scrU u2 = u2 + scrU v1 = v1 + scrV v2 = v2 + scrV + cam.Start3D2D( self:LocalToWorld(monitor.offset), self:LocalToWorldAngles(monitor.rot), From ce82bd13b64bda5adce902844f6f754231d5fd6b Mon Sep 17 00:00:00 2001 From: kerbalcadet Date: Mon, 26 Jan 2026 03:53:18 -0600 Subject: [PATCH 2/2] add support for vertical screens --- lua/entities/gmod_wire_rt_screen.lua | 31 +++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/lua/entities/gmod_wire_rt_screen.lua b/lua/entities/gmod_wire_rt_screen.lua index 89537e1db3..48402c7f98 100644 --- a/lua/entities/gmod_wire_rt_screen.lua +++ b/lua/entities/gmod_wire_rt_screen.lua @@ -255,13 +255,34 @@ if CLIENT then local y1 = -yraw local y2 = yraw - local y_center_offset = self:GetScaleY() * (1 - monitor.RatioX) / 2 - local u1, v1 = 0, y_center_offset - local u2, v2 = self:GetScaleX(), v1 + monitor.RatioX * self:GetScaleY() + local scaleX = self:GetScaleX() + local scaleY = self:GetScaleY() + local u1, v1, u2, v2 + -- center smaller side + if monitor.RatioX <= 1 then + local y_offset = scaleY * (1 - monitor.RatioX) * 0.5 + + u1 = 0 + u2 = scaleX + + v1 = y_offset + v2 = y_offset + monitor.RatioX * scaleY + else + local x_offset = scaleX * (1 - 1 / monitor.RatioX) * 0.5 + + u1 = x_offset + u2 = x_offset + scaleX / monitor.RatioX + + v1 = 0 + v2 = scaleY + end + local scrU = self:GetScrollX() local scrV = self:GetScrollY() - u1 = u1 + scrU u2 = u2 + scrU - v1 = v1 + scrV v2 = v2 + scrV + u1 = u1 + scrU + u2 = u2 + scrU + v1 = v1 + scrV + v2 = v2 + scrV cam.Start3D2D(