-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Improve performance of panning the viewport with OpenGL renderer #24413
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
For some bloody reason this works fine on Windows and Mac M1 but somehow not for M2. |
d13a62e
to
dc8121e
Compare
This comment was marked as outdated.
This comment was marked as outdated.
Really? Make sure you are not testing Software by accident, even on Windows there is something quite wrong. |
Screen.Recording.2025-05-18.at.17.32.19.mov |
The same issue happens on my M1 Macbook Pro. |
913c5aa
to
0297656
Compare
After a lot of trial and error I give up on getting this to work on MacOS, I have no idea to why it fails and I also don't have the hardware to test this on my own. So for now MacOS will have to use the sloppy pixel copy from GPU to memory and back, I will create a new issue after the PR so maybe someone else can figure this out, it also doesn't help that Apple just deprecated OpenGL because they are such bloody geniuses! The PR also makes a lot of things stricter with error checking so its not just making it faster for sane platforms, this PR also might potentially solve some of the artifacts some users got on laptops with integrated Intel GPU's but someone has to check that and hopefully it will show us some errors now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Back to working order on macOS. Even if this means it's less fast or smooth than it will be for its Windows and Linux brethren, at last it's without artefacts 😄
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested on Linux with a non-optimised build. The frame is noticeably higher during panning, and no artifacts are visible.
Using Ubuntu 24.04 with an AMD Ryzen 5 3400G with Radeon Vega Graphics.
…nRCT2#24413) * Improve performance of panning the viewport with OpenGL renderer * Use a shader to perform the copy rect operation * Clear the frame buffer after its initialized * Handle Y flip in shader, be explicit about FBO draw state * Target 330 core, remove the y flip handling * Explicitly use GL_RGB8 and not GL_RGB * Add more error handling, clear depth when depth is created * Lets try this * Make sure blend and depth are disabled * Bind the source fbo for reading * Try this alternative approach * Set read and draw buffer before glBlitFramebuffer * Apple is forcing my hand * Update changelog.txt
- Feature: [#22476] “Time since last inspection” statistic is available in the rides window. - Feature: [#24313] [Plugin] Add API for setting a ride vehicle’s sprite to a smoke plume. - Improved: [#24345] Vehicle fallback sprites are less likely to glitch with the track. - Improved: [#24362, #24491] The Windows installer is now translated as well. - Improved: [#24364] Improve the fallback vehicle sprites for Zero G Rolls, and allow small ones to be built without cheats if the fallbacks are available. - Improved: [#24368] Clicking the in-game update notication now leads to a more user-friendly download page. - Improved: [#24400] Ride list in preservation window is now sorted alphabetically. - Improved: [#24409] Steam installs of RCT Classic are now detected automatically. - Improved: [#24413] Better performance when moving the viewport on Windows and Linux platforms. - Improved: [#24417] Improve the fallback vehicle sprites for Dive Loops. - Improved: [#24433] The ride, new ride, scenery, path, viewport, park and tool windows no longer redraw every frame if they have not changed. - Improved: [#24467] Apply tweening only to on-screen entities when not zoomed out for better performance with uncapped FPS. - Improved: [#24474] More efficiently search viewports when playing Audio. - Improved: [#24479] More descriptive error messages for `set` commands in the in-game console. - Improved: [#24563] The Linux .desktop file will now request the more powerful dedicated GPU on hybrid graphics systems. - Change: [#24342, #24484] g2.dat is now split into g2.dat, fonts.dat and tracks.dat. - Change: [#24362] The Windows installer now prevents installing to the same folder as RollerCoaster Tycoon 2 or Classic. - Change: [#24418] Small & Large Zero G Rolls can now be built on the LIM Launched RC without cheats if vehicle sprites are available. - Fix: [#5269] Font bugs when using the Russian release of RCT2 as the base game. - Fix: [#11071, #22958] The virtual floor does not always draw correctly. - Fix: [#18220] Some custom RCT1 scenarios are detected as competition DLC scenarios. - Fix: [#20095] UCES Halloween - Cemetery Ridge scenario has mismatched entrance/exit on haunted house. - Fix: [#20158] Custom animated scenery .DATs with frame offsets draw a random sprite at the end of their animation. - Fix: [#22628] Potential crash while rebuilding the scenario index. - Fix: [#23289] Dodgems and Flying Saucer cars can spawn on top of each other when the ride is opened. - Fix: [#24332] Banner font renders differently when using RCT Classic as the base game. - Fix: [#24343] Large gently sloped turns are buildable without cheats when the vehicles do not have sprites for them. - Fix: [#24346] Possible crash during line drawing in OpenGL mode. - Fix: [#24353] ‘Show dirty visuals’ is off by one pixel and does not work correctly with higher framerates. - Fix: [#24362] When upgrading from an older version on Windows, old versions of official objects are not always removed. - Fix: [#24366] Zero G Rolls have some incorrect vehicle yaw rotations. - Fix: [#24371] Fix divide by zero in the scenery window when there is no scenery. - Fix: [#24378] Prevent ride and stall statistics from overflowing. - Fix: [#24388] Shortcut keys are not localised based on the user’s language settings. - Fix: [#24403] Park fences draw underneath and through opaque water. - Fix: [#24406] The network status window uses an undefined string for its title. - Fix: [#24444] In the object load error window, the guide text overlaps when the title bar is enlarged. - Fix: [#24446] [Plugin] Fix regression breaking the track iterator on specific track pieces. - Fix: [#24447] Shortcut list is not refreshed when changing language. - Fix: [#24448] Shortcuts involving the Caps Lock key are wrongly localised to NumPad Dot. - Fix: [#24464] Window and viewport visibility is not calculated correctly causing minor performance issues. - Fix: [#24488] Objects are not always redrawn immediately when they are reloaded from the Object Selection window. - Fix: [#24544] RCT1 Maze designs with wooden walls are not imported correctly. - Fix: [#24567] Long flat-to-steep wooden mine support sprites don't connect to flat supports exactly.
- Feature: [#22476] “Time since last inspection” statistic is available in the rides window. - Feature: [#24313] [Plugin] Add API for setting a ride vehicle’s sprite to a smoke plume. - Improved: [#24345] Vehicle fallback sprites are less likely to glitch with the track. - Improved: [#24362, #24491] The Windows installer is now translated as well. - Improved: [#24364] Improve the fallback vehicle sprites for Zero G Rolls, and allow small ones to be built without cheats if the fallbacks are available. - Improved: [#24368] Clicking the in-game update notication now leads to a more user-friendly download page. - Improved: [#24400] Ride list in preservation window is now sorted alphabetically. - Improved: [#24409] Steam installs of RCT Classic are now detected automatically. - Improved: [#24413] Better performance when moving the viewport on Windows and Linux platforms. - Improved: [#24417] Improve the fallback vehicle sprites for Dive Loops. - Improved: [#24433] The ride, new ride, scenery, path, viewport, park and tool windows no longer redraw every frame if they have not changed. - Improved: [#24467] Apply tweening only to on-screen entities when not zoomed out for better performance with uncapped FPS. - Improved: [#24474] More efficiently search viewports when playing Audio. - Improved: [#24479] More descriptive error messages for `set` commands in the in-game console. - Improved: [#24563] The Linux .desktop file will now request the more powerful dedicated GPU on hybrid graphics systems. - Change: [#24342, #24484] g2.dat is now split into g2.dat, fonts.dat and tracks.dat. - Change: [#24362] The Windows installer now prevents installing to the same folder as RollerCoaster Tycoon 2 or Classic. - Change: [#24418] Small & Large Zero G Rolls can now be built on the LIM Launched RC without cheats if vehicle sprites are available. - Fix: [#5269] Font bugs when using the Russian release of RCT2 as the base game. - Fix: [#11071, #22958] The virtual floor does not always draw correctly. - Fix: [#18220] Some custom RCT1 scenarios are detected as competition DLC scenarios. - Fix: [#20095] UCES Halloween - Cemetery Ridge scenario has mismatched entrance/exit on haunted house. - Fix: [#20158] Custom animated scenery .DATs with frame offsets draw a random sprite at the end of their animation. - Fix: [#22628] Potential crash while rebuilding the scenario index. - Fix: [#23289] Dodgems and Flying Saucer cars can spawn on top of each other when the ride is opened. - Fix: [#24332] Banner font renders differently when using RCT Classic as the base game. - Fix: [#24343] Large gently sloped turns are buildable without cheats when the vehicles do not have sprites for them. - Fix: [#24346] Possible crash during line drawing in OpenGL mode. - Fix: [#24353] ‘Show dirty visuals’ is off by one pixel and does not work correctly with higher framerates. - Fix: [#24362] When upgrading from an older version on Windows, old versions of official objects are not always removed. - Fix: [#24366] Zero G Rolls have some incorrect vehicle yaw rotations. - Fix: [#24371] Fix divide by zero in the scenery window when there is no scenery. - Fix: [#24378] Prevent ride and stall statistics from overflowing. - Fix: [#24388] Shortcut keys are not localised based on the user’s language settings. - Fix: [#24403] Park fences draw underneath and through opaque water. - Fix: [#24406] The network status window uses an undefined string for its title. - Fix: [#24444] In the object load error window, the guide text overlaps when the title bar is enlarged. - Fix: [#24446] [Plugin] Fix regression breaking the track iterator on specific track pieces. - Fix: [#24447] Shortcut list is not refreshed when changing language. - Fix: [#24448] Shortcuts involving the Caps Lock key are wrongly localised to NumPad Dot. - Fix: [#24464] Window and viewport visibility is not calculated correctly causing minor performance issues. - Fix: [#24488] Objects are not always redrawn immediately when they are reloaded from the Object Selection window. - Fix: [#24544] RCT1 Maze designs with wooden walls are not imported correctly. - Fix: [#24567] Long flat-to-steep wooden mine support sprites don't connect to flat supports exactly.
v0.4.23 Release v0.4.23 - Feature: [OpenRCT2#22476] “Time since last inspection” statistic is available in the rides window. - Feature: [OpenRCT2#24313] [Plugin] Add API for setting a ride vehicle’s sprite to a smoke plume. - Improved: [OpenRCT2#24345] Vehicle fallback sprites are less likely to glitch with the track. - Improved: [OpenRCT2#24362, OpenRCT2#24491] The Windows installer is now translated as well. - Improved: [OpenRCT2#24364] Improve the fallback vehicle sprites for Zero G Rolls, and allow small ones to be built without cheats if the fallbacks are available. - Improved: [OpenRCT2#24368] Clicking the in-game update notication now leads to a more user-friendly download page. - Improved: [OpenRCT2#24400] Ride list in preservation window is now sorted alphabetically. - Improved: [OpenRCT2#24409] Steam installs of RCT Classic are now detected automatically. - Improved: [OpenRCT2#24413] Better performance when moving the viewport on Windows and Linux platforms. - Improved: [OpenRCT2#24417] Improve the fallback vehicle sprites for Dive Loops. - Improved: [OpenRCT2#24433] The ride, new ride, scenery, path, viewport, park and tool windows no longer redraw every frame if they have not changed. - Improved: [OpenRCT2#24467] Apply tweening only to on-screen entities when not zoomed out for better performance with uncapped FPS. - Improved: [OpenRCT2#24474] More efficiently search viewports when playing Audio. - Improved: [OpenRCT2#24479] More descriptive error messages for `set` commands in the in-game console. - Improved: [OpenRCT2#24563] The Linux .desktop file will now request the more powerful dedicated GPU on hybrid graphics systems. - Change: [OpenRCT2#24342, OpenRCT2#24484] g2.dat is now split into g2.dat, fonts.dat and tracks.dat. - Change: [OpenRCT2#24362] The Windows installer now prevents installing to the same folder as RollerCoaster Tycoon 2 or Classic. - Change: [OpenRCT2#24418] Small & Large Zero G Rolls can now be built on the LIM Launched RC without cheats if vehicle sprites are available. - Fix: [OpenRCT2#5269] Font bugs when using the Russian release of RCT2 as the base game. - Fix: [OpenRCT2#11071, OpenRCT2#22958] The virtual floor does not always draw correctly. - Fix: [OpenRCT2#18220] Some custom RCT1 scenarios are detected as competition DLC scenarios. - Fix: [OpenRCT2#20095] UCES Halloween - Cemetery Ridge scenario has mismatched entrance/exit on haunted house. - Fix: [OpenRCT2#20158] Custom animated scenery .DATs with frame offsets draw a random sprite at the end of their animation. - Fix: [OpenRCT2#22628] Potential crash while rebuilding the scenario index. - Fix: [OpenRCT2#23289] Dodgems and Flying Saucer cars can spawn on top of each other when the ride is opened. - Fix: [OpenRCT2#24332] Banner font renders differently when using RCT Classic as the base game. - Fix: [OpenRCT2#24343] Large gently sloped turns are buildable without cheats when the vehicles do not have sprites for them. - Fix: [OpenRCT2#24346] Possible crash during line drawing in OpenGL mode. - Fix: [OpenRCT2#24353] ‘Show dirty visuals’ is off by one pixel and does not work correctly with higher framerates. - Fix: [OpenRCT2#24362] When upgrading from an older version on Windows, old versions of official objects are not always removed. - Fix: [OpenRCT2#24366] Zero G Rolls have some incorrect vehicle yaw rotations. - Fix: [OpenRCT2#24371] Fix divide by zero in the scenery window when there is no scenery. - Fix: [OpenRCT2#24378] Prevent ride and stall statistics from overflowing. - Fix: [OpenRCT2#24388] Shortcut keys are not localised based on the user’s language settings. - Fix: [OpenRCT2#24403] Park fences draw underneath and through opaque water. - Fix: [OpenRCT2#24406] The network status window uses an undefined string for its title. - Fix: [OpenRCT2#24444] In the object load error window, the guide text overlaps when the title bar is enlarged. - Fix: [OpenRCT2#24446] [Plugin] Fix regression breaking the track iterator on specific track pieces. - Fix: [OpenRCT2#24447] Shortcut list is not refreshed when changing language. - Fix: [OpenRCT2#24448] Shortcuts involving the Caps Lock key are wrongly localised to NumPad Dot. - Fix: [OpenRCT2#24464] Window and viewport visibility is not calculated correctly causing minor performance issues. - Fix: [OpenRCT2#24488] Objects are not always redrawn immediately when they are reloaded from the Object Selection window. - Fix: [OpenRCT2#24544] RCT1 Maze designs with wooden walls are not imported correctly. - Fix: [OpenRCT2#24567] Long flat-to-steep wooden mine support sprites don't connect to flat supports exactly.
This should hopefully work for all platforms as I don't use any special OpenGL API and instead use a temporary frame buffer to perform the operation. This vastly improves the performance on my end.