diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml
index 68e12b5ff2..f75e12ccd6 100644
--- a/.github/workflows/meson.yml
+++ b/.github/workflows/meson.yml
@@ -178,7 +178,7 @@ jobs:
echo "::group::Installing pkg-config"
sudo apt install pkg-config
echo "::group::Installing mac deps"
- omp install libsdl2 onetbb lz4 libpng minizip luajit flac
+ omp install libsdl2 libsdl2_image onetbb lz4 libpng minizip luajit flac
echo "OSXCROSS_PKG_CONFIG_PATH=${{env.OSXCROSS_TARGET}}/macports/pkgs/opt/local/libexec/onetbb/lib/pkgconfig" >> $GITHUB_ENV
echo "::endgroup::"
echo "::group::Installing meson"
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 2b172cbaca..81416f8e04 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -13,7 +13,7 @@
"request": "launch",
"program": "${workspaceFolder}/${config:mesonbuild.buildFolder}/CortexCommand",
"cwd": "${workspaceFolder}",
- "preLaunchTask": "meson Build Release",
+ "preLaunchTask": "Meson: Build all targets",
"envFile": "${workspaceFolder}/${config:mesonbuild.buildFolder}/meson-vscode.env",
"presentation": {
"group": "unix"
diff --git a/Data/Base.rte/GUIs/Controllers/CPU.png b/Data/Base.rte/GUIs/Controllers/CPU.png
index 60632d99ca..5dc1ef1624 100644
Binary files a/Data/Base.rte/GUIs/Controllers/CPU.png and b/Data/Base.rte/GUIs/Controllers/CPU.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad000.png b/Data/Base.rte/GUIs/Controllers/D-Pad000.png
index 6a8592696c..d512f5af8b 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad000.png and b/Data/Base.rte/GUIs/Controllers/D-Pad000.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad001.png b/Data/Base.rte/GUIs/Controllers/D-Pad001.png
index 853484afae..6c3291a9d4 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad001.png and b/Data/Base.rte/GUIs/Controllers/D-Pad001.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad002.png b/Data/Base.rte/GUIs/Controllers/D-Pad002.png
index 8a711a2fcb..ee5e972af7 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad002.png and b/Data/Base.rte/GUIs/Controllers/D-Pad002.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad003.png b/Data/Base.rte/GUIs/Controllers/D-Pad003.png
index afe7e86cff..871c4ebfe0 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad003.png and b/Data/Base.rte/GUIs/Controllers/D-Pad003.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad004.png b/Data/Base.rte/GUIs/Controllers/D-Pad004.png
index 724c74791a..de1dec3bb9 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad004.png and b/Data/Base.rte/GUIs/Controllers/D-Pad004.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad005.png b/Data/Base.rte/GUIs/Controllers/D-Pad005.png
index 655fc338f5..35f46f01af 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad005.png and b/Data/Base.rte/GUIs/Controllers/D-Pad005.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad006.png b/Data/Base.rte/GUIs/Controllers/D-Pad006.png
index d870d38597..ae79c5138a 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad006.png and b/Data/Base.rte/GUIs/Controllers/D-Pad006.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad007.png b/Data/Base.rte/GUIs/Controllers/D-Pad007.png
index f45d508c6d..fa6cf5b32d 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad007.png and b/Data/Base.rte/GUIs/Controllers/D-Pad007.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad008.png b/Data/Base.rte/GUIs/Controllers/D-Pad008.png
index f2ff46a79a..1b7137eb1a 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad008.png and b/Data/Base.rte/GUIs/Controllers/D-Pad008.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad009.png b/Data/Base.rte/GUIs/Controllers/D-Pad009.png
index 848c19d405..90345b351d 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad009.png and b/Data/Base.rte/GUIs/Controllers/D-Pad009.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad010.png b/Data/Base.rte/GUIs/Controllers/D-Pad010.png
index de59c0b280..bba1a28578 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad010.png and b/Data/Base.rte/GUIs/Controllers/D-Pad010.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad011.png b/Data/Base.rte/GUIs/Controllers/D-Pad011.png
index 1128516366..ee591e98bc 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad011.png and b/Data/Base.rte/GUIs/Controllers/D-Pad011.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/D-Pad012.png b/Data/Base.rte/GUIs/Controllers/D-Pad012.png
index cf6a3d776f..bdaf4765e9 100644
Binary files a/Data/Base.rte/GUIs/Controllers/D-Pad012.png and b/Data/Base.rte/GUIs/Controllers/D-Pad012.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS000.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS000.png
index 4340dc023a..c41e3d3f09 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS000.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS000.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS001.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS001.png
index 0b92a1a131..24d6629840 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS001.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS001.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS002.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS002.png
index ba785b363e..433e7894d7 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS002.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS002.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS003.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS003.png
index 04993127c7..02ef4b72ff 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS003.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS003.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS004.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS004.png
index ebc87e2b78..d5d7d089c9 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS004.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS004.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS005.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS005.png
index 76e6513afb..7a3afdc170 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS005.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS005.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS006.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS006.png
index 498efcf1bc..9a5719ac33 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS006.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS006.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS007.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS007.png
index 9f7061a7ad..0940d2740f 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS007.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS007.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS008.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS008.png
index c691a8e7a0..ec5d0b4d06 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS008.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS008.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS009.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS009.png
index 7dace7fcee..98461b00cd 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS009.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS009.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS010.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS010.png
index c35c5a0155..a3119eb52c 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS010.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS010.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS011.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS011.png
index 405eb60af3..b2f8bbc451 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS011.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS011.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS012.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS012.png
index 884d7eba00..845765ec03 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS012.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS012.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS013.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS013.png
index 42d8815355..6aab26e780 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS013.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS013.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS014.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS014.png
index 118e27a4b9..823fc69bfa 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS014.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS014.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS015.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS015.png
index 2cefbc53ba..21bd39cae6 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS015.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS015.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS016.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS016.png
index e284f52693..34d7fd5bae 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS016.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS016.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS017.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS017.png
index 84c060f680..5b5c64ff41 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS017.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS017.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS018.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS018.png
index 6a82369726..afb08f7c0a 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS018.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS018.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS019.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS019.png
index 3ba5587430..dc1c60635d 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS019.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS019.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS020.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS020.png
index d61c5eca35..b7a31ab39e 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS020.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS020.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS021.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS021.png
index 2af9a9d9f5..ff5462877a 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS021.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS021.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogDS022.png b/Data/Base.rte/GUIs/Controllers/DualAnalogDS022.png
index d75f675de8..434647977c 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogDS022.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogDS022.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB000.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB000.png
index 9b7e661c5b..af92830439 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB000.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB000.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB001.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB001.png
index c6a6fe06c1..20ff5143bf 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB001.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB001.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB002.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB002.png
index 7a525a4f91..15ef1d9eac 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB002.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB002.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB003.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB003.png
index effcba6ef6..aec2a2c555 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB003.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB003.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB004.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB004.png
index 9763ff71a0..e16ba33fa3 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB004.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB004.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB005.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB005.png
index 7fec5d9a52..b2a059c0ae 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB005.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB005.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB006.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB006.png
index fc9aeda566..fd473f6ea7 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB006.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB006.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB007.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB007.png
index 435b816057..1f578fc568 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB007.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB007.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB008.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB008.png
index 839ce58652..1df9730b39 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB008.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB008.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB009.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB009.png
index e0b21bc5ea..a71de723ab 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB009.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB009.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB010.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB010.png
index b53105cbea..47ea1762e9 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB010.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB010.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB011.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB011.png
index 887c88719b..9612f5b59a 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB011.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB011.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB012.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB012.png
index dc548e187b..c87b28b085 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB012.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB012.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB013.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB013.png
index 02295e6085..a2dfb3b6f9 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB013.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB013.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB014.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB014.png
index f15662fa32..05ece84b25 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB014.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB014.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB015.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB015.png
index fe0120b60d..f1152b413e 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB015.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB015.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB016.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB016.png
index 7b959e3a21..c38b6255e6 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB016.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB016.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB017.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB017.png
index ec57c9c378..cd54251c5d 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB017.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB017.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB018.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB018.png
index 82756d1f54..a43067fd73 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB018.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB018.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB019.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB019.png
index d1841aa1da..596046e5de 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB019.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB019.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB020.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB020.png
index 59f0fb7da7..d5fa533063 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB020.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB020.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB021.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB021.png
index ea8c2cc981..8140a98afe 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB021.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB021.png differ
diff --git a/Data/Base.rte/GUIs/Controllers/DualAnalogXB022.png b/Data/Base.rte/GUIs/Controllers/DualAnalogXB022.png
index 9c32b2d0c0..0c6d1c6563 100644
Binary files a/Data/Base.rte/GUIs/Controllers/DualAnalogXB022.png and b/Data/Base.rte/GUIs/Controllers/DualAnalogXB022.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/Cursor.png b/Data/Base.rte/GUIs/Skins/Menus/Cursor.png
index 84fe76be97..9edac2374a 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/Cursor.png and b/Data/Base.rte/GUIs/Skins/Menus/Cursor.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/FontConsoleMonospace.png b/Data/Base.rte/GUIs/Skins/Menus/FontConsoleMonospace.png
index e7f6e851b5..77ccca5f08 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/FontConsoleMonospace.png and b/Data/Base.rte/GUIs/Skins/Menus/FontConsoleMonospace.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/FontLarge.png b/Data/Base.rte/GUIs/Skins/Menus/FontLarge.png
index 6637601b07..51a7a1f409 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/FontLarge.png and b/Data/Base.rte/GUIs/Skins/Menus/FontLarge.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/FontMainMenu.png b/Data/Base.rte/GUIs/Skins/Menus/FontMainMenu.png
index c88649a1ce..8cf177f8cd 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/FontMainMenu.png and b/Data/Base.rte/GUIs/Skins/Menus/FontMainMenu.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/FontSmall.png b/Data/Base.rte/GUIs/Skins/Menus/FontSmall.png
index dd0cf37962..e2a3ce0c6d 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/FontSmall.png and b/Data/Base.rte/GUIs/Skins/Menus/FontSmall.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/Null.png b/Data/Base.rte/GUIs/Skins/Menus/Null.png
index 21c781ee6d..a8d60f8a3a 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/Null.png and b/Data/Base.rte/GUIs/Skins/Menus/Null.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/SkinBlue.png b/Data/Base.rte/GUIs/Skins/Menus/SkinBlue.png
index 05644d3635..719a8bc2a0 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/SkinBlue.png and b/Data/Base.rte/GUIs/Skins/Menus/SkinBlue.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/SkinBrown.png b/Data/Base.rte/GUIs/Skins/Menus/SkinBrown.png
index a9b5f09296..913f057a10 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/SkinBrown.png and b/Data/Base.rte/GUIs/Skins/Menus/SkinBrown.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/SkinGray.png b/Data/Base.rte/GUIs/Skins/Menus/SkinGray.png
index 0390866336..84c8561ae5 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/SkinGray.png and b/Data/Base.rte/GUIs/Skins/Menus/SkinGray.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/SkinGreen.png b/Data/Base.rte/GUIs/Skins/Menus/SkinGreen.png
index a54cb82d24..537952ce84 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/SkinGreen.png and b/Data/Base.rte/GUIs/Skins/Menus/SkinGreen.png differ
diff --git a/Data/Base.rte/GUIs/Skins/Menus/TabBlue.png b/Data/Base.rte/GUIs/Skins/Menus/TabBlue.png
index 86b29bc4dd..20cfaea302 100644
Binary files a/Data/Base.rte/GUIs/Skins/Menus/TabBlue.png and b/Data/Base.rte/GUIs/Skins/Menus/TabBlue.png differ
diff --git a/Data/Base.rte/GUIs/Title/Moon.png b/Data/Base.rte/GUIs/Title/Moon.png
index e1710d2fea..8ebf118edc 100644
Binary files a/Data/Base.rte/GUIs/Title/Moon.png and b/Data/Base.rte/GUIs/Title/Moon.png differ
diff --git a/Data/Base.rte/GUIs/Title/Planet.png b/Data/Base.rte/GUIs/Title/Planet.png
index ac88ee0e3f..21fa4bc37b 100644
Binary files a/Data/Base.rte/GUIs/Title/Planet.png and b/Data/Base.rte/GUIs/Title/Planet.png differ
diff --git a/Data/Base.rte/GUIs/Title/Station.png b/Data/Base.rte/GUIs/Title/Station.png
index f7a398576d..bbef1171cd 100644
Binary files a/Data/Base.rte/GUIs/Title/Station.png and b/Data/Base.rte/GUIs/Title/Station.png differ
diff --git a/Data/Base.rte/GUIs/Title/Title.png b/Data/Base.rte/GUIs/Title/Title.png
index 748fbdb252..2c955dcd4e 100644
Binary files a/Data/Base.rte/GUIs/Title/Title.png and b/Data/Base.rte/GUIs/Title/Title.png differ
diff --git a/Data/Base.rte/Index.ini b/Data/Base.rte/Index.ini
index ad27b83999..b1dc2d7eb5 100644
--- a/Data/Base.rte/Index.ini
+++ b/Data/Base.rte/Index.ini
@@ -1,5 +1,6 @@
DataModule
ModuleName = Base Set
+ IncludeFile = Base.rte/Shaders/Shaders.ini
ScriptPath = Base.rte/Constants.lua
IncludeFile = Base.rte/GUIs.ini
IncludeFile = Base.rte/Materials.ini
diff --git a/Data/Base.rte/Shaders/Background.frag b/Data/Base.rte/Shaders/Background.frag
new file mode 100644
index 0000000000..e148f9440b
--- /dev/null
+++ b/Data/Base.rte/Shaders/Background.frag
@@ -0,0 +1,29 @@
+#version 130
+
+in vec2 textureUV;
+in vec4 vertexColor;
+
+out vec4 FragColor;
+
+uniform sampler2D rteTexture;
+uniform sampler2D rtePalette;
+uniform vec4 rteColor;
+uniform bool drawMasked;
+
+
+vec4 texture2DAA(sampler2D tex, vec2 uv) {
+ vec2 texsize = vec2(textureSize(tex, 0));
+ vec2 uv_texspace = uv * texsize;
+ vec2 seam = floor(uv_texspace + .5);
+ uv_texspace = (uv_texspace - seam) / fwidth(uv_texspace) + seam;
+ uv_texspace = clamp(uv_texspace, seam - .5, seam + .5);
+ return texture(tex, uv_texspace / texsize);
+}
+
+void main() {
+ float red = texture2D(rteTexture, textureUV).r;
+ if (red==0 && drawMasked) {
+ discard;
+ }
+ FragColor = texture2DAA(rtePalette, vec2(red * rteColor.r * vertexColor.r, 0.0)) * vec4(vec3(1.0), rteColor.a * vertexColor.a);
+}
diff --git a/Data/Base.rte/Shaders/Blit8.vert b/Data/Base.rte/Shaders/Blit8.vert
index 1abac7d2cf..489d0eb9fb 100644
--- a/Data/Base.rte/Shaders/Blit8.vert
+++ b/Data/Base.rte/Shaders/Blit8.vert
@@ -1,15 +1,16 @@
#version 130
-in vec2 rteVertexPosition;
-in vec2 rteTexUV;
+in vec3 rteVertexPosition;
+in vec2 rteVertexTexUV;
+in vec4 rteVertexColor;
out vec2 textureUV;
-
-uniform mat4 rteTransform;
+out vec4 vertexColor;
+//uniform mat4 rteModelViewProjection;
uniform mat4 rteProjection;
-uniform mat4 rteUVTransform;
void main() {
- gl_Position = rteProjection * rteTransform * vec4(rteVertexPosition, 0.0, 1.0);
- textureUV = (rteUVTransform * vec4(rteTexUV, 0.0, 1.0)).xy;
+ gl_Position = rteProjection * vec4(rteVertexPosition, 1.0);
+ textureUV = rteVertexTexUV;
+ vertexColor = rteVertexColor;
}
diff --git a/Data/Base.rte/Shaders/Flat.frag b/Data/Base.rte/Shaders/Flat.frag
new file mode 100644
index 0000000000..cb0e6e1dfe
--- /dev/null
+++ b/Data/Base.rte/Shaders/Flat.frag
@@ -0,0 +1,12 @@
+#version 130
+
+in vec2 textureUV;
+
+out vec4 FragColor;
+
+uniform sampler2D rteTexture;
+uniform vec4 rteColor;
+
+void main() {
+ FragColor = rteColor;
+}
diff --git a/Data/Base.rte/Shaders/PostProcess.vert b/Data/Base.rte/Shaders/PostProcess.vert
index 54548590c8..85316fb3f2 100644
--- a/Data/Base.rte/Shaders/PostProcess.vert
+++ b/Data/Base.rte/Shaders/PostProcess.vert
@@ -1,14 +1,14 @@
#version 130
-in vec2 rteVertexPosition;
-in vec2 rteTexUV;
+in vec3 rteVertexPosition;
+in vec2 rteVertexTexUV;
out vec2 textureUV;
-uniform mat4 rteTransform;
+uniform mat4 rteModel;
uniform mat4 rteProjection;
void main() {
- gl_Position = rteProjection * rteTransform * vec4(rteVertexPosition, 0.0, 1.0);
- textureUV = vec2(rteTexUV.x, -rteTexUV.y);
+ gl_Position = rteProjection * rteModel * vec4(rteVertexPosition, 1.0);
+ textureUV = rteVertexTexUV;
}
diff --git a/Data/Base.rte/Shaders/ScreenBlit.frag b/Data/Base.rte/Shaders/ScreenBlit.frag
index 739835f533..6ce4707916 100644
--- a/Data/Base.rte/Shaders/ScreenBlit.frag
+++ b/Data/Base.rte/Shaders/ScreenBlit.frag
@@ -17,8 +17,8 @@ vec4 texture2DAA(sampler2D tex, vec2 uv) {
}
void main() {
- vec4 guiColor = texture2DAA(rteGUITexture, textureUV);
- float guiSolid = step(0.00000001, guiColor.r + guiColor.g + guiColor.b);
+ vec4 guiColor = texture2DAA(rteGUITexture, vec2(textureUV.x, -textureUV.y));
+ float guiSolid = float((guiColor.r + guiColor.g + guiColor.b) > 0.0);
float blendRatio = max(guiColor.a, guiSolid);
FragColor = (texture2DAA(rteTexture, textureUV) * (1.0F - blendRatio)) + guiColor * blendRatio;
}
diff --git a/Data/Base.rte/Shaders/ScreenBlit.vert b/Data/Base.rte/Shaders/ScreenBlit.vert
index 1cca55eb43..85316fb3f2 100644
--- a/Data/Base.rte/Shaders/ScreenBlit.vert
+++ b/Data/Base.rte/Shaders/ScreenBlit.vert
@@ -1,14 +1,14 @@
#version 130
-in vec2 rteVertexPosition;
-in vec2 rteTexUV;
+in vec3 rteVertexPosition;
+in vec2 rteVertexTexUV;
out vec2 textureUV;
-uniform mat4 rteTransform;
+uniform mat4 rteModel;
uniform mat4 rteProjection;
void main() {
- gl_Position = rteProjection * rteTransform * vec4(rteVertexPosition.xy, 0.0, 1.0);
- textureUV = rteTexUV;
+ gl_Position = rteProjection * rteModel * vec4(rteVertexPosition, 1.0);
+ textureUV = rteVertexTexUV;
}
diff --git a/Data/Base.rte/Shaders/Shaders.ini b/Data/Base.rte/Shaders/Shaders.ini
new file mode 100644
index 0000000000..6575f0b548
--- /dev/null
+++ b/Data/Base.rte/Shaders/Shaders.ini
@@ -0,0 +1,19 @@
+AddShader = Shader
+ PresetName = Blit8
+ VertexShader = Base.rte/Shaders/Blit8.vert
+ FragmentShader = Base.rte/Shaders/Blit8.frag
+
+AddShader = Shader
+ PresetName = PostProcess
+ VertexShader = Base.rte/Shaders/PostProcess.vert
+ FragmentShader = Base.rte/Shaders/PostProcess.frag
+
+AddShader = Shader
+ PresetName = ScreenBlit
+ VertexShader = Base.rte/Shaders/ScreenBlit.vert
+ FragmentShader = Base.rte/Shaders/ScreenBlit.frag
+
+AddShader = Shader
+ PresetName = Background
+ VertexShader = Base.rte/Shaders/Blit8.vert
+ FragmentShader = Base.rte/Shaders/Background.frag
diff --git a/RTEA.vcxproj b/RTEA.vcxproj
index 5d914d1a97..21ddfefbe1 100644
--- a/RTEA.vcxproj
+++ b/RTEA.vcxproj
@@ -161,7 +161,7 @@
/bigobj /Zm300 %(AdditionalOptions)
/bigobj %(AdditionalOptions)
Disabled
- $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
+ $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)Source\Renderer;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\SDL2_image-2.8.2\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
_ITERATOR_DEBUG_LEVEL=0;ZLIB_COMPAT;_WINDOWS;WIN32;DEBUG_BUILD;DEBUGMODE;TARGET_MACHINE_X86;%(PreprocessorDefinitions)
false
EnableFastChecks
@@ -184,9 +184,9 @@
false
- winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic-32.lib;libminizip-32.lib;libpng16-static-32.lib;setupapi.lib;version.lib;imm32.lib;fmodL_vc.lib;allegro-debug-32.lib;loadpng-debug-32.lib;liblz4_debug_static.lib;luajit-debug-32.lib;luabind-debug-32.lib;raknet-debug-32.lib;sdl2main-debug-32.lib;sdl2-debug-32.lib;opengl32.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic-32.lib;libminizip-32.lib;libpng16-static-32.lib;SDL2_image-Debug-Win32.lib;setupapi.lib;version.lib;imm32.lib;fmodL_vc.lib;allegro-debug-32.lib;loadpng-debug-32.lib;liblz4_debug_static.lib;luajit-debug-32.lib;luabind-debug-32.lib;raknet-debug-32.lib;sdl2main-debug-32.lib;sdl2-debug-32.lib;opengl32.lib;%(AdditionalDependencies)
$(OutDir)$(TargetName)$(TargetExt)
- external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win\x86;%(AdditionalLibraryDirectories)
+ external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\SDL2_image-2.8.2\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win\x86;%(AdditionalLibraryDirectories)
DebugFull
$(OutDir)$(TargetName).pdb
Windows
@@ -214,7 +214,7 @@
/bigobj /Zm300 %(AdditionalOptions)
/bigobj %(AdditionalOptions)
Disabled
- $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
+ $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)Source\Renderer;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\SDL2_image-2.8.2\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
_ITERATOR_DEBUG_LEVEL=0;ZLIB_COMPAT;_WINDOWS;WIN32;DEBUG_BUILD;DEBUGMODE;%(PreprocessorDefinitions)
false
EnableFastChecks
@@ -238,9 +238,9 @@
false
- winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic.lib;libminizip.lib;libpng16-static.lib;setupapi.lib;version.lib;imm32.lib;fmod_vc.lib;allegro-debug.lib;loadpng-debug.lib;liblz4_debug_static.lib;luajit-debug.lib;luabind-debug.lib;raknet-debug.lib;sdl2main-debug.lib;sdl2-debug.lib;opengl32.lib;dbghelp.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic.lib;libminizip.lib;libpng16-static.lib;SDL2_image-Debug-x64.lib;setupapi.lib;version.lib;imm32.lib;fmod_vc.lib;allegro-debug.lib;loadpng-debug.lib;liblz4_debug_static.lib;luajit-debug.lib;luabind-debug.lib;raknet-debug.lib;sdl2main-debug.lib;sdl2-debug.lib;opengl32.lib;dbghelp.lib;%(AdditionalDependencies)
$(OutDir)$(TargetName)$(TargetExt)
- external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win;%(AdditionalLibraryDirectories)
+ external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\SDL2_image-2.8.2\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win;%(AdditionalLibraryDirectories)
DebugFull
$(OutDir)$(TargetName).pdb
Windows
@@ -267,7 +267,7 @@
/bigobj /Zm300 %(AdditionalOptions)
/bigobj %(AdditionalOptions)
Disabled
- $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
+ $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)Source\Renderer;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\SDL2_image-2.8.2\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
_ITERATOR_DEBUG_LEVEL=0;ZLIB_COMPAT;_WINDOWS;WIN32;MIN_DEBUG_BUILD;DEBUGMODE;TARGET_MACHINE_X86;%(PreprocessorDefinitions)
false
EnableFastChecks
@@ -290,9 +290,9 @@
#undef GetClassName
- winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic-32.lib;libminizip-32.lib;libpng16-static-32.lib;setupapi.lib;version.lib;imm32.lib;fmodL_vc.lib;allegro-debug-32.lib;loadpng-debug-32.lib;liblz4_debug_static.lib;luajit-debug-release-32.lib;luabind-debug-32.lib;raknet-debug-32.lib;sdl2main-debug-32.lib;sdl2-debug-32.lib;opengl32.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic-32.lib;libminizip-32.lib;libpng16-static-32.lib;SDL2_image-Debug-Win32.lib;setupapi.lib;version.lib;imm32.lib;fmodL_vc.lib;allegro-debug-32.lib;loadpng-debug-32.lib;liblz4_debug_static.lib;luajit-debug-release-32.lib;luabind-debug-32.lib;raknet-debug-32.lib;sdl2main-debug-32.lib;sdl2-debug-32.lib;opengl32.lib;%(AdditionalDependencies)
$(OutDir)$(TargetName)$(TargetExt)
- external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win\x86;%(AdditionalLibraryDirectories)
+ external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\SDL2_image-2.8.2\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win\x86;%(AdditionalLibraryDirectories)
DebugFull
$(OutDir)$(TargetName).pdb
Windows
@@ -320,7 +320,7 @@
/bigobj /Zm300 %(AdditionalOptions)
/bigobj %(AdditionalOptions)
Disabled
- $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
+ $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)Source\Renderer;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\SDL2_image-2.8.2\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
_ITERATOR_DEBUG_LEVEL=0;ZLIB_COMPAT;_WINDOWS;WIN32;MIN_DEBUG_BUILD;DEBUGMODE;%(PreprocessorDefinitions)
false
EnableFastChecks
@@ -344,9 +344,9 @@
false
- winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic.lib;libminizip.lib;libpng16-static.lib;setupapi.lib;version.lib;imm32.lib;fmod_vc.lib;allegro-debug.lib;loadpng-debug.lib;liblz4_debug_static.lib;luajit-debug-release.lib;luabind-debug.lib;raknet-debug.lib;sdl2main-debug.lib;sdl2-debug.lib;opengl32.lib;dbghelp.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic.lib;libminizip.lib;libpng16-static.lib;SDL2_image-Debug-x64.lib;setupapi.lib;version.lib;imm32.lib;fmod_vc.lib;allegro-debug.lib;loadpng-debug.lib;liblz4_debug_static.lib;luajit-debug-release.lib;luabind-debug.lib;raknet-debug.lib;sdl2main-debug.lib;sdl2-debug.lib;opengl32.lib;dbghelp.lib;%(AdditionalDependencies)
$(OutDir)$(TargetName)$(TargetExt)
- external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win;%(AdditionalLibraryDirectories)
+ external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\SDL2_image-2.8.2\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win;%(AdditionalLibraryDirectories)
DebugFull
$(OutDir)$(TargetName).pdb
Windows
@@ -376,7 +376,7 @@
true
Speed
false
- $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
+ $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)Source\Renderer;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\SDL2_image-2.8.2\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
_ITERATOR_DEBUG_LEVEL=0;ZLIB_COMPAT;_WINDOWS;WIN32;DEBUG_RELEASE_BUILD;NDEBUG;TRACY_ENABLE;TRACY_ON_DEMAND;TARGET_MACHINE_X86;%(PreprocessorDefinitions)
Sync
MultiThreadedDLL
@@ -402,9 +402,9 @@
#undef GetClassName
- winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic-32.lib;libminizip-32.lib;libpng16-static-32.lib;fmodL_vc.lib;allegro-debug-release-32.lib;loadpng-debug-release-32.lib;liblz4_release_static.lib;luajit-debug-release-32.lib;luabind-debug-release-32.lib;raknet-release-32.lib;opengl32.lib;SDL2-32.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic-32.lib;libminizip-32.lib;libpng16-static-32.lib;SDL2_image-Debug-Win32.lib;fmodL_vc.lib;allegro-debug-release-32.lib;loadpng-debug-release-32.lib;liblz4_release_static.lib;luajit-debug-release-32.lib;luabind-debug-release-32.lib;raknet-release-32.lib;opengl32.lib;SDL2-32.lib;%(AdditionalDependencies)
$(OutDir)$(TargetName)$(TargetExt)
- external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win\x86;%(AdditionalLibraryDirectories)
+ external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\SDL2_image-2.8.2\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win\x86;%(AdditionalLibraryDirectories)
true
Windows
true
@@ -438,7 +438,7 @@
true
Speed
false
- $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
+ $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)Source\Renderer;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\SDL2_image-2.8.2\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
_ITERATOR_DEBUG_LEVEL=0;ZLIB_COMPAT;_WINDOWS;WIN32;TRACY_ENABLE;TRACY_ON_DEMAND;PROFILING_BUILD;NDEBUG;TARGET_MACHINE_X86;%(PreprocessorDefinitions)
Sync
MultiThreadedDLL
@@ -464,9 +464,9 @@
#undef GetClassName
- winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic-32.lib;libminizip-32.lib;libpng16-static-32.lib;fmodL_vc.lib;allegro-debug-release-32.lib;loadpng-debug-release-32.lib;liblz4_release_static.lib;luajit-debug-release-32.lib;luabind-debug-release-32.lib;raknet-release-32.lib;opengl32.lib;SDL2-32.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic-32.lib;libminizip-32.lib;libpng16-static-32.lib;fmodL_vc.lib;allegro-debug-release-32.lib;loadpng-debug-release-32.lib;liblz4_release_static.lib;luajit-debug-release-32.lib;luabind-debug-release-32.lib;raknet-release-32.lib;opengl32.lib;SDL2-32.lib;SDL2_image-Release-Win32.lib;%(AdditionalDependencies)
$(OutDir)$(TargetName)$(TargetExt)
- external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win\x86;%(AdditionalLibraryDirectories)
+ external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\SDL2_image-2.8.2\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win\x86;%(AdditionalLibraryDirectories)
true
Windows
true
@@ -500,7 +500,7 @@
true
Speed
false
- $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
+ $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)Source\Renderer;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\SDL2_image-2.8.2\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
_ITERATOR_DEBUG_LEVEL=0;ZLIB_COMPAT;_WINDOWS;WIN32;DEBUG_RELEASE_BUILD;NDEBUG;TRACY_ENABLE;TRACY_ON_DEMAND;%(PreprocessorDefinitions)
Sync
MultiThreadedDLL
@@ -527,9 +527,9 @@
#undef GetClassName
- winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic.lib;libminizip.lib;libpng16-static.lib;fmod_vc.lib;allegro-debug-release.lib;loadpng-debug-release.lib;liblz4_release_static.lib;luajit-debug-release.lib;luabind-debug-release.lib;raknet-release.lib;opengl32.lib;SDL2.lib;dbghelp.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic.lib;libminizip.lib;libpng16-static.lib;SDL2_image-Debug-x64.lib;fmod_vc.lib;allegro-debug-release.lib;loadpng-debug-release.lib;liblz4_release_static.lib;luajit-debug-release.lib;luabind-debug-release.lib;raknet-release.lib;opengl32.lib;SDL2.lib;dbghelp.lib;%(AdditionalDependencies)
$(OutDir)$(TargetName)$(TargetExt)
- external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win;%(AdditionalLibraryDirectories)
+ external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\SDL2_image-2.8.2\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win;%(AdditionalLibraryDirectories)
true
Windows
true
@@ -562,7 +562,7 @@
true
Speed
true
- $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
+ $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)Source\Renderer;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\SDL2_image-2.8.2\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
_ITERATOR_DEBUG_LEVEL=0;ZLIB_COMPAT;_WINDOWS;WIN32;TRACY_ENABLE;TRACY_ON_DEMAND;PROFILING_BUILD;NDEBUG;%(PreprocessorDefinitions)
Sync
MultiThreadedDLL
@@ -589,9 +589,9 @@
#undef GetClassName
- winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic.lib;libminizip.lib;libpng16-static.lib;fmod_vc.lib;allegro-debug-release.lib;loadpng-debug-release.lib;liblz4_release_static.lib;luajit-debug-release.lib;luabind-debug-release.lib;raknet-release.lib;opengl32.lib;SDL2.lib;dbghelp.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic.lib;libminizip.lib;libpng16-static.lib;fmod_vc.lib;allegro-debug-release.lib;loadpng-debug-release.lib;liblz4_release_static.lib;luajit-debug-release.lib;luabind-debug-release.lib;raknet-release.lib;opengl32.lib;SDL2.lib;SDL2_image-Release-x64.lib;dbghelp.lib;%(AdditionalDependencies)
$(OutDir)$(TargetName)$(TargetExt)
- external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win;%(AdditionalLibraryDirectories)
+ external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\SDL2_image-2.8.2\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win;%(AdditionalLibraryDirectories)
true
Windows
true
@@ -624,7 +624,7 @@
true
Speed
true
- $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
+ $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)Source\Renderer;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\SDL2_image-2.8.2\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
_ITERATOR_DEBUG_LEVEL=0;ZLIB_COMPAT;_WINDOWS;WIN32;RELEASE_BUILD;NDEBUG;TRACY_ENABLE;TRACY_ON_DEMAND;TRACY_ONLY_LOCALHOST;TRACY_NO_BROADCAST;TARGET_MACHINE_X86;%(PreprocessorDefinitions)
Sync
MultiThreadedDLL
@@ -648,9 +648,9 @@
#undef GetClassName
- winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic-32.lib;libminizip-32.lib;libpng16-static-32.lib;fmodL_vc.lib;allegro-release-32.lib;loadpng-release-32.lib;liblz4_release_static.lib;luajit-release-32.lib;luabind-release-32.lib;raknet-release-32.lib;opengl32.lib;SDL2-32.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic-32.lib;libminizip-32.lib;libpng16-static-32.lib;fmodL_vc.lib;allegro-release-32.lib;loadpng-release-32.lib;liblz4_release_static.lib;luajit-release-32.lib;luabind-release-32.lib;raknet-release-32.lib;opengl32.lib;SDL2-32.lib;SDL2_image-Release-Win32.lib;%(AdditionalDependencies)
$(OutDir)$(TargetName)$(TargetExt)
- external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win\x86;%(AdditionalLibraryDirectories)
+ external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\SDL2_image-2.8.2\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win\x86;%(AdditionalLibraryDirectories)
DebugFull
Windows
true
@@ -684,7 +684,7 @@
true
Speed
true
- $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
+ $(ProjectDir);$(ProjectDir)\Source;$(ProjectDir)Source\System;$(ProjectDir)Source\Lua;$(ProjectDir)Source\Entities;$(ProjectDir)Source\Activities;$(ProjectDir)Source\Managers;$(ProjectDir)Source\Menus;$(ProjectDir)Source\GUI;$(ProjectDir)Source\GUI\Wrappers;$(ProjectDir)Source\Renderer;$(ProjectDir)external\include\boost_1_75;$(ProjectDir)external\include\glm-0.9.9.8;$(ProjectDir)external\include\glad-2.0.0-beta;$(ProjectDir)external\include\LZ4-1.9.3\LZ4;$(ProjectDir)external\include\fmod-2.2.13;$(ProjectDir)external\include\thread-pool-3.5.0\include;$(ProjectDir)external\include\hopscotch-map-2.3.1\include;$(ProjectDir)external\sources\libpng-1.6.40\include;$(ProjectDir)external\sources\zlib-ng-2.1.3\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\include;$(ProjectDir)external\sources\allegro 4.4.3.1-custom\addons\loadpng;$(ProjectDir)external\sources\SDL2-2.26.3\include;$(ProjectDir)external\sources\SDL2_image-2.8.2\include;$(ProjectDir)external\sources\LuaJIT-2.1\src;$(ProjectDir)external\sources\luabind-0.7.1\;$(ProjectDir)external\sources\luabind-0.7.1\luabind;$(ProjectDir)external\sources\RakNet\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\include;$(ProjectDir)external\sources\minizip-ng-4.0.0\src;$(ProjectDir)external\sources\tracy\public
_ITERATOR_DEBUG_LEVEL=0;ZLIB_COMPAT;_WINDOWS;WIN32;RELEASE_BUILD;NDEBUG;TRACY_ENABLE;TRACY_ON_DEMAND;TRACY_ONLY_LOCALHOST;TRACY_NO_BROADCAST;%(PreprocessorDefinitions)
Sync
MultiThreadedDLL
@@ -709,9 +709,9 @@
#undef GetClassName
- winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic.lib;libminizip.lib;libpng16-static.lib;fmod_vc.lib;allegro-release.lib;loadpng-release.lib;liblz4_release_static.lib;luajit-release.lib;luabind-release.lib;raknet-release.lib;opengl32.lib;SDL2.lib;dbghelp.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;dinput8.lib;ddraw.lib;dxguid.lib;dsound.lib;zlibstatic.lib;libminizip.lib;libpng16-static.lib;fmod_vc.lib;allegro-release.lib;loadpng-release.lib;liblz4_release_static.lib;luajit-release.lib;luabind-release.lib;raknet-release.lib;opengl32.lib;SDL2.lib;SDL2_image-Release-x64.lib;dbghelp.lib;%(AdditionalDependencies)
$(OutDir)$(TargetName)$(TargetExt)
- external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win;%(AdditionalLibraryDirectories)
+ external\sources\zlib-ng-2.1.3\_Bin;external\sources\libpng-1.6.40\_Bin;external\sources\allegro 4.4.3.1-custom\_Bin;external\sources\SDL2-2.26.3\_Bin;external\sources\SDL2_image-2.8.2\_Bin;external\sources\luabind-0.7.1\_Bin;external\sources\LuaJIT-2.1\_Bin;external\sources\RakNet\_Bin;external\sources\minizip-ng-4.0.0\_Bin;external\lib\win;%(AdditionalLibraryDirectories)
DebugFull
Windows
true
@@ -760,6 +760,7 @@
+
@@ -785,6 +786,11 @@
+
+
+
+
+
@@ -793,7 +799,7 @@
-
+
@@ -803,7 +809,6 @@
-
@@ -824,6 +829,10 @@
+
+
+
+
@@ -987,6 +996,7 @@
NotUsing
stdcpp17
+
false
@@ -1030,35 +1040,287 @@
+
+
+
+
-
- NotUsing
- NotUsing
- NotUsing
- NotUsing
- NotUsing
- NotUsing
- NotUsing
- NotUsing
- NotUsing
- NotUsing
- CompileAsCpp
- CompileAsCpp
- CompileAsCpp
- CompileAsCpp
- CompileAsCpp
- CompileAsCpp
- CompileAsCpp
- CompileAsCpp
- CompileAsCpp
- CompileAsCpp
+
+ NotUsing
+ CompileAsC
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NotUsing
+ CompileAsC
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NotUsing
+ CompileAsC
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NotUsing
+ CompileAsC
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NotUsing
+ CompileAsC
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -1067,7 +1329,6 @@
-
diff --git a/RTEA.vcxproj.filters b/RTEA.vcxproj.filters
index b4b09215bd..a49d7408d7 100644
--- a/RTEA.vcxproj.filters
+++ b/RTEA.vcxproj.filters
@@ -46,9 +46,15 @@
{6f517ec6-8c53-4d34-b320-c408e1fd374d}
-
+
{a92cf676-7096-4641-ae98-d02861c1acde}
+
+ {456e743f-249a-4e29-91e2-348668548158}
+
+
+ {5aa83e16-d772-476c-b51a-72480c976207}
+
@@ -93,6 +99,15 @@
System\MicroPather
+
+ Renderer\raylib
+
+
+ Renderer\raylib
+
+
+ Renderer\raylib
+
Managers
@@ -606,10 +621,7 @@
Entities
-
- System
-
-
+
System
@@ -624,6 +636,26 @@
Managers
+
+
+
+ Renderer
+
+
+ Renderer
+
+
+ Renderer
+
+
+ Renderer
+
+
+ Managers
+
+
+ Renderer\raylib
+
@@ -1173,13 +1205,10 @@
System
-
- System
-
-
- System\glad
+
+ Renderer\glad
-
+
System
@@ -1200,6 +1229,35 @@
Managers
+
+
+
+ Renderer
+
+
+ Renderer
+
+
+ Renderer
+
+
+ Renderer
+
+
+ Managers
+
+
+ Renderer\raylib
+
+
+ Renderer\raylib
+
+
+ Renderer\raylib
+
+
+ Renderer\raylib
+
diff --git a/Source/Entities/BunkerAssembly.cpp b/Source/Entities/BunkerAssembly.cpp
index 445207f155..e1ce60c73a 100644
--- a/Source/Entities/BunkerAssembly.cpp
+++ b/Source/Entities/BunkerAssembly.cpp
@@ -4,6 +4,8 @@
#include "TerrainObject.h"
#include "BunkerAssemblyScheme.h"
#include "Deployment.h"
+#include "Draw.h"
+#include "FrameMan.h"
using namespace RTE;
@@ -391,7 +393,7 @@ void BunkerAssembly::Draw(BITMAP* pTargetBitmap, const Vector& targetPos, DrawMo
} else if (mode == g_DrawMaterial) {
masked_blit(m_MaterialBitmap, pTargetBitmap, 0, 0, aDrawPos[i].GetFloorIntX(), aDrawPos[i].GetFloorIntY(), m_MaterialBitmap->w, m_MaterialBitmap->h);
} else if (mode == g_DrawTrans) {
- draw_trans_sprite(pTargetBitmap, m_pPresentationBitmap, aDrawPos[i].GetFloorIntX(), aDrawPos[i].GetFloorIntY());
+ DrawTexture(m_pPresentationBitmap, aDrawPos[i].GetFloorIntX(), aDrawPos[i].GetFloorIntY(), {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
}
}
}
diff --git a/Source/Entities/BunkerAssemblyScheme.cpp b/Source/Entities/BunkerAssemblyScheme.cpp
index 77bb6fd898..b5776e77e7 100644
--- a/Source/Entities/BunkerAssemblyScheme.cpp
+++ b/Source/Entities/BunkerAssemblyScheme.cpp
@@ -1,6 +1,7 @@
#include "BunkerAssemblyScheme.h"
#include "PresetMan.h"
#include "FrameMan.h"
+#include "Draw.h"
#include "GUI.h"
#include "AllegroBitmap.h"
@@ -295,6 +296,6 @@ void BunkerAssemblyScheme::Draw(BITMAP* pTargetBitmap, const Vector& targetPos,
else if (mode == g_DrawMaterial)
masked_blit(m_pPresentationBitmap, pTargetBitmap, 0, 0, aDrawPos[i].GetFloorIntX(), aDrawPos[i].GetFloorIntY(), m_pPresentationBitmap->w, m_pPresentationBitmap->h);
else if (mode == g_DrawTrans)
- draw_trans_sprite(pTargetBitmap, m_pPresentationBitmap, aDrawPos[i].GetFloorIntX(), aDrawPos[i].GetFloorIntY());
+ DrawTexture(m_pPresentationBitmap, aDrawPos[i].GetFloorIntX(), aDrawPos[i].GetFloorIntY(), {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
}
}
diff --git a/Source/Entities/Deployment.cpp b/Source/Entities/Deployment.cpp
index 5251b1313a..d98a800d2b 100644
--- a/Source/Entities/Deployment.cpp
+++ b/Source/Entities/Deployment.cpp
@@ -8,6 +8,8 @@
#include "ACraft.h"
#include "ActivityMan.h"
#include "DataModule.h"
+#include "Draw.h"
+#include "FrameMan.h"
using namespace RTE;
@@ -550,9 +552,10 @@ void Deployment::Draw(BITMAP* pTargetBitmap, const Vector& targetPos, DrawMode m
// Draw the spawn radius circle too
circle(pTargetBitmap, aDrawPos[i].GetFloorIntX() + (pBitmap->w / 2), aDrawPos[i].GetFloorIntY() + (pBitmap->h / 2), m_SpawnRadius, c_GUIColorGray);
} else if (mode == g_DrawTrans) {
+ DrawTextureV(pBitmap, aDrawPos[i], {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
draw_trans_sprite(pTargetBitmap, pBitmap, aDrawPos[i].GetFloorIntX(), aDrawPos[i].GetFloorIntY());
// Draw the spawn radius circle too
- circle(pTargetBitmap, aDrawPos[i].GetFloorIntX() + (pBitmap->w / 2), aDrawPos[i].GetFloorIntY() + (pBitmap->h / 2), m_SpawnRadius, c_GUIColorGray);
+ DrawCircleLines(aDrawPos[i].GetFloorIntX() + (pBitmap->w / 2), aDrawPos[i].GetFloorIntY() + (pBitmap->h / 2), m_SpawnRadius, {static_cast(c_GUIColorGray), 0, 0, g_FrameMan.GetCurrentAlpha()});
}
}
}
@@ -608,7 +611,7 @@ void Deployment::Draw(BITMAP* pTargetBitmap, const Vector& targetPos, DrawMode m
if (mode == g_DrawColor) {
masked_blit(pBitmap, pTargetBitmap, 0, 0, aDrawPos[i].GetFloorIntX(), aDrawPos[i].GetFloorIntY(), pBitmap->w, pBitmap->h);
} else if (mode == g_DrawTrans) {
- draw_trans_sprite(pTargetBitmap, pBitmap, aDrawPos[i].GetFloorIntX(), aDrawPos[i].GetFloorIntY());
+ DrawTexture(pBitmap, aDrawPos[i].GetFloorIntX(), aDrawPos[i].GetFloorIntY(), {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
}
}
}
diff --git a/Source/Entities/MOSParticle.cpp b/Source/Entities/MOSParticle.cpp
index 63769a91b5..848c77f08a 100644
--- a/Source/Entities/MOSParticle.cpp
+++ b/Source/Entities/MOSParticle.cpp
@@ -2,7 +2,8 @@
#include "Atom.h"
#include "PostProcessMan.h"
-
+#include "Draw.h"
+#include "FrameMan.h"
#include
using namespace RTE;
@@ -201,11 +202,10 @@ void MOSParticle::Draw(BITMAP* targetBitmap, const Vector& targetPos, DrawMode m
draw_character_ex(targetBitmap, m_aSprite[m_Frame], spriteX, spriteY, g_WhiteColor, -1);
break;
case g_DrawTrans:
- draw_trans_sprite(targetBitmap, m_aSprite[m_Frame], spriteX, spriteY);
+ DrawTexture(m_aSprite[m_Frame], spriteX, spriteY, {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
break;
case g_DrawAlpha:
- set_alpha_blender();
- draw_trans_sprite(targetBitmap, m_aSprite[m_Frame], spriteX, spriteY);
+ DrawTexture(m_aSprite[m_Frame], spriteX, spriteY, {255, 255, 255, 255});
break;
case g_DrawMOID:
break;
diff --git a/Source/Entities/MOSRotating.cpp b/Source/Entities/MOSRotating.cpp
index 54e239c19b..c1fb9ebded 100644
--- a/Source/Entities/MOSRotating.cpp
+++ b/Source/Entities/MOSRotating.cpp
@@ -12,6 +12,8 @@
#include "HDFirearm.h"
#include "SoundContainer.h"
#include "PostProcessMan.h"
+#include "FrameMan.h"
+#include "Draw.h"
#include "RTEError.h"
@@ -1688,20 +1690,16 @@ void MOSRotating::Draw(BITMAP* pTargetBitmap, const Vector& targetPos, DrawMode
}
if (mode == g_DrawTrans) {
- clear_to_color(pTempBitmap, keyColor);
-
- // Draw the rotated thing onto the intermediate bitmap so its COM position aligns with the middle of the temp bitmap.
- // The temp bitmap should be able to hold the full size since it is larger than the max diameter.
- // Take into account the h-flipped pivot point
- pivot_scaled_sprite(pTempBitmap, pFlipBitmap, pTempBitmap->w / 2, pTempBitmap->h / 2, pFlipBitmap->w + m_SpriteOffset.m_X, -(m_SpriteOffset.m_Y), ftofix(m_Rotation.GetAllegroAngle()), ftofix(m_Scale));
-
// Draw the now rotated object's temporary bitmap onto the final drawing bitmap with transperency
// Do the passes loop in here so the intermediate drawing doesn't get done multiple times
for (int i = 0; i < passes; ++i) {
int spriteX = aDrawPos[i].GetFloorIntX() - (pTempBitmap->w / 2);
int spriteY = aDrawPos[i].GetFloorIntY() - (pTempBitmap->h / 2);
+ DrawTexturePro(m_aSprite[m_Frame],
+ {0.0f, 0.0f, -1.0f * m_aSprite[m_Frame]->w, static_cast(m_aSprite[m_Frame]->h)},
+ {aDrawPos[i].m_X, aDrawPos[i].m_Y, static_cast(m_aSprite[m_Frame]->w), static_cast(m_aSprite[m_Frame]->h)},
+ {m_aSprite[m_Frame]->w + m_SpriteOffset.m_X , -m_SpriteOffset.m_Y}, m_Rotation.GetRadAngle(), {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
g_SceneMan.RegisterDrawing(pTargetBitmap, g_NoMOID, spriteX, spriteY, spriteX + pTempBitmap->w, spriteY + pTempBitmap->h);
- draw_trans_sprite(pTargetBitmap, pTempBitmap, spriteX, spriteY);
}
} else {
// Do the passes loop in here so the flipping operation doesn't get done multiple times
@@ -1719,20 +1717,16 @@ void MOSRotating::Draw(BITMAP* pTargetBitmap, const Vector& targetPos, DrawMode
}
} else {
if (mode == g_DrawTrans) {
- clear_to_color(pTempBitmap, keyColor);
-
- // Draw the rotated thing onto the intermediate bitmap so its COM position aligns with the middle of the temp bitmap.
- // The temp bitmap should be able to hold the full size since it is larger than the max diameter.
- // Take into account the h-flipped pivot point
- pivot_scaled_sprite(pTempBitmap, m_aSprite[m_Frame], pTempBitmap->w / 2, pTempBitmap->h / 2, -m_SpriteOffset.GetFloorIntX(), -m_SpriteOffset.GetFloorIntY(), ftofix(m_Rotation.GetAllegroAngle()), ftofix(m_Scale));
-
// Draw the now rotated object's temporary bitmap onto the final drawing bitmap with transperency
// Do the passes loop in here so the intermediate drawing doesn't get done multiple times
for (int i = 0; i < passes; ++i) {
+ DrawTexturePro(m_aSprite[m_Frame],
+ {0.0f, 0.0f, static_cast(m_aSprite[m_Frame]->w), static_cast(m_aSprite[m_Frame]->h)},
+ {aDrawPos[i].m_X, aDrawPos[i].m_Y, static_cast(m_aSprite[m_Frame]->w), static_cast(m_aSprite[m_Frame]->h)},
+ -m_SpriteOffset, m_Rotation.GetRadAngle(), {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
int spriteX = aDrawPos[i].GetFloorIntX() - (pTempBitmap->w / 2);
int spriteY = aDrawPos[i].GetFloorIntY() - (pTempBitmap->h / 2);
g_SceneMan.RegisterDrawing(pTargetBitmap, g_NoMOID, spriteX, spriteY, spriteX + pTempBitmap->w, spriteY + pTempBitmap->h);
- draw_trans_sprite(pTargetBitmap, pTempBitmap, spriteX, spriteY);
}
} else {
for (int i = 0; i < passes; ++i) {
diff --git a/Source/Entities/MOSprite.cpp b/Source/Entities/MOSprite.cpp
index e1ac95cc12..235176c0b2 100644
--- a/Source/Entities/MOSprite.cpp
+++ b/Source/Entities/MOSprite.cpp
@@ -3,6 +3,8 @@
#include "AEmitter.h"
#include "PresetMan.h"
#include "SceneMan.h"
+#include "FrameMan.h"
+#include "Draw.h"
using namespace RTE;
@@ -466,7 +468,7 @@ void MOSprite::Draw(BITMAP* pTargetBitmap,
draw_character_ex(pTargetBitmap, m_aSprite[m_Frame], spriteX, spriteY, g_WhiteColor, -1);
break;
case g_DrawTrans:
- draw_trans_sprite(pTargetBitmap, m_aSprite[m_Frame], spriteX, spriteY);
+ DrawTexture(m_aSprite[m_Frame], spriteX, spriteY, {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
break;
case g_DrawAlpha:
set_alpha_blender();
diff --git a/Source/Entities/PieMenu.cpp b/Source/Entities/PieMenu.cpp
index c079ff9c66..0c23f70506 100644
--- a/Source/Entities/PieMenu.cpp
+++ b/Source/Entities/PieMenu.cpp
@@ -5,6 +5,7 @@
#include "PresetMan.h"
#include "SettingsMan.h"
#include "LuaMan.h"
+#include "GLResourceMan.h"
#include "AHuman.h"
#include "ContentFile.h"
@@ -637,9 +638,11 @@ void PieMenu::Draw(BITMAP* targetBitmap, const Vector& targetPos) const {
if (m_EnabledState != EnabledState::Disabled) {
if (m_DrawBackgroundTransparent && !g_FrameMan.IsInMultiplayerMode()) {
g_FrameMan.SetTransTableFromPreset(TransparencyPreset::MoreTrans);
- draw_trans_sprite(targetBitmap, m_BGBitmap, drawPos.GetFloorIntX() - m_BGBitmap->w / 2, drawPos.GetFloorIntY() - m_BGBitmap->h / 2);
+ g_GLResourceMan.UpdateDynamicBitmap(m_BGBitmap, true);
+ DrawTexture(g_GLResourceMan.GetStaticTextureFromBitmap(m_BGBitmap), drawPos.GetFloorIntX() - m_BGBitmap->w / 2, drawPos.GetFloorIntY() - m_BGBitmap->h / 2, {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
} else {
- draw_sprite(targetBitmap, m_BGBitmap, drawPos.GetFloorIntX() - m_BGBitmap->w / 2, drawPos.GetFloorIntY() - m_BGBitmap->h / 2);
+ g_GLResourceMan.UpdateDynamicBitmap(m_BGBitmap, true);
+ DrawTexture(g_GLResourceMan.GetStaticTextureFromBitmap(m_BGBitmap), drawPos.GetFloorIntX() - m_BGBitmap->w / 2, drawPos.GetFloorIntY() - m_BGBitmap->h / 2, {255, 255, 255, 255});
}
}
diff --git a/Source/Entities/SLBackground.cpp b/Source/Entities/SLBackground.cpp
index aeb6fde8c4..9808180e12 100644
--- a/Source/Entities/SLBackground.cpp
+++ b/Source/Entities/SLBackground.cpp
@@ -2,10 +2,14 @@
#include "FrameMan.h"
#include "SceneMan.h"
#include "SettingsMan.h"
+#include
+
+#include "raylib/raylib.h"
+#include "raylib/rlgl.h"
using namespace RTE;
-ConcreteClassInfo(SLBackground, SceneLayer, 0);
+ConcreteClassInfo(SLBackground, StaticSceneLayer, 0);
SLBackground::SLBackground() {
Clear();
@@ -39,7 +43,7 @@ void SLBackground::Clear() {
}
int SLBackground::Create() {
- SceneLayer::Create();
+ StaticSceneLayer::Create();
m_Bitmaps.clear();
m_BitmapFile.GetAsAnimation(m_Bitmaps, m_FrameCount);
@@ -63,7 +67,7 @@ int SLBackground::Create() {
}
int SLBackground::Create(const SLBackground& reference) {
- SceneLayer::Create(reference);
+ StaticSceneLayer::Create(reference);
// The main bitmap is created and owned by SceneLayer because it can be modified. We need to destroy it to avoid a leak because the bitmaps we'll be using here are owned by ContentFile static maps and are unmodifiable.
destroy_bitmap(m_MainBitmap);
@@ -93,7 +97,7 @@ int SLBackground::Create(const SLBackground& reference) {
}
int SLBackground::ReadProperty(const std::string_view& propName, Reader& reader) {
- StartPropertyList(return SceneLayer::ReadProperty(propName, reader));
+ StartPropertyList(return StaticSceneLayer::ReadProperty(propName, reader));
MatchProperty("FrameCount", { reader >> m_FrameCount; });
MatchProperty("SpriteAnimMode", {
@@ -124,7 +128,7 @@ int SLBackground::ReadProperty(const std::string_view& propName, Reader& reader)
}
int SLBackground::Save(Writer& writer) const {
- SceneLayer::Save(writer);
+ StaticSceneLayer::Save(writer);
writer.NewPropertyWithValue("FrameCount", m_FrameCount);
writer.NewPropertyWithValue("SpriteAnimMode", m_SpriteAnimMode);
@@ -208,8 +212,8 @@ void SLBackground::Update() {
}
}
-void SLBackground::Draw(BITMAP* targetBitmap, Box& targetBox, bool offsetNeedsScrollRatioAdjustment) {
- SceneLayer::Draw(targetBitmap, targetBox, !IsAutoScrolling());
+void SLBackground::Draw(const Box& targetDimensions, Box& targetBox, bool offsetNeedsScrollRatioAdjustment) {
+ StaticSceneLayer::Draw(targetDimensions, targetBox, !IsAutoScrolling());
int bitmapWidth = m_ScaledDimensions.GetFloorIntX();
int bitmapHeight = m_ScaledDimensions.GetFloorIntY();
@@ -218,24 +222,21 @@ void SLBackground::Draw(BITMAP* targetBitmap, Box& targetBox, bool offsetNeedsSc
int targetBoxWidth = static_cast(targetBox.GetWidth());
int targetBoxHeight = static_cast(targetBox.GetHeight());
- set_clip_rect(targetBitmap, targetBoxCornerX, targetBoxCornerY, targetBoxCornerX + targetBoxWidth - 1, targetBoxCornerY + targetBoxHeight - 1);
-
// Detect if non-wrapping layer dimensions can't cover the whole target area with its main bitmap. If so, fill in the gap with appropriate solid color sampled from the hanging edge.
if (!m_WrapX && bitmapWidth <= targetBoxWidth) {
if (m_FillColorLeft != ColorKeys::g_MaskColor && m_Offset.GetFloorIntX() != 0) {
- rectfill(targetBitmap, targetBoxCornerX, targetBoxCornerY, targetBoxCornerX - m_Offset.GetFloorIntX(), targetBoxCornerY + targetBoxHeight, m_FillColorLeft);
+ DrawRectangle(targetBoxCornerX, targetBoxCornerY, -m_Offset.m_X, targetBoxHeight, {static_cast(m_FillColorLeft), 0, 0, 255});
}
if (m_FillColorRight != ColorKeys::g_MaskColor) {
- rectfill(targetBitmap, targetBoxCornerX + bitmapWidth - m_Offset.GetFloorIntX(), targetBoxCornerY, targetBoxCornerX + targetBoxWidth, targetBoxCornerY + targetBoxHeight, m_FillColorRight);
+ DrawRectangle(targetBoxCornerX + bitmapWidth - m_Offset.m_X, targetBoxCornerY, targetBoxWidth - bitmapWidth + m_Offset.m_X, targetBoxHeight, {static_cast(m_FillColorRight), 0, 0, 255});
}
}
if (!m_WrapY && bitmapHeight <= targetBoxHeight) {
if (m_FillColorUp != ColorKeys::g_MaskColor && m_Offset.GetFloorIntY() != 0) {
- rectfill(targetBitmap, targetBoxCornerX, targetBoxCornerY, targetBoxCornerX + targetBoxWidth, targetBoxCornerY - m_Offset.GetFloorIntY(), m_FillColorUp);
+ DrawRectangle(targetBoxCornerX, targetBoxCornerY, targetBoxWidth, - m_Offset.m_Y, {static_cast(m_FillColorUp), 0, 0, 255});
}
if (m_FillColorDown != ColorKeys::g_MaskColor) {
- rectfill(targetBitmap, targetBoxCornerX, targetBoxCornerY + bitmapHeight - m_Offset.GetFloorIntY(), targetBoxCornerX + targetBoxWidth, targetBoxCornerY + targetBoxHeight, m_FillColorDown);
+ DrawRectangle(targetBoxCornerX, targetBoxCornerY + bitmapHeight - m_Offset.m_Y, targetBoxWidth, targetBoxHeight - bitmapHeight + m_Offset.m_Y, {static_cast(m_FillColorDown), 0, 0, 255});
}
}
- set_clip_rect(targetBitmap, 0, 0, targetBitmap->w - 1, targetBitmap->h - 1);
}
diff --git a/Source/Entities/SLBackground.h b/Source/Entities/SLBackground.h
index 1bba2af8ed..5febfe7893 100644
--- a/Source/Entities/SLBackground.h
+++ b/Source/Entities/SLBackground.h
@@ -6,7 +6,7 @@
namespace RTE {
/// A scrolling background layer of the Scene, placed behind the terrain.
- class SLBackground : public SceneLayer {
+ class SLBackground : public StaticSceneLayer {
friend class NetworkServer;
public:
@@ -36,7 +36,7 @@ namespace RTE {
/// @param notInherited Whether to only destroy the members defined in this derived class, or to destroy all inherited members also.
void Destroy(bool notInherited = false) override {
if (!notInherited) {
- SceneLayer::Destroy();
+ StaticSceneLayer::Destroy();
}
Clear();
}
@@ -142,9 +142,8 @@ namespace RTE {
/// @param targetBitmap The bitmap to draw to.
/// @param targetBox The box on the target bitmap to limit drawing to, with the corner of box being where the scroll position lines up.
/// @param offsetNeedsScrollRatioAdjustment Whether the offset of this SceneLayer or the passed in offset override need to be adjusted to scroll ratio.
- void Draw(BITMAP* targetBitmap, Box& targetBox, bool offsetNeedsScrollRatioAdjustment = false) override;
+ void Draw(const Box& targetDimensions, Box& targetBox, bool offsetNeedsScrollRatioAdjustment = false) override;
#pragma endregion
-
private:
/// Enumeration for the different modes of SLBackground auto-scaling.
enum LayerAutoScaleMode {
diff --git a/Source/Entities/SLTerrain.cpp b/Source/Entities/SLTerrain.cpp
index 5d7bca955e..9da2d46c7e 100644
--- a/Source/Entities/SLTerrain.cpp
+++ b/Source/Entities/SLTerrain.cpp
@@ -479,16 +479,16 @@ void SLTerrain::Update() {
m_BGColorLayer->SetOffset(m_Offset);
}
-void SLTerrain::Draw(BITMAP* targetBitmap, Box& targetBox, bool offsetNeedsScrollRatioAdjustment) {
+void SLTerrain::Draw(const Box& targetDimensions, Box& targetBox, bool offsetNeedsScrollRatioAdjustment) {
switch (m_LayerToDraw) {
case LayerType::MaterialLayer:
- SceneLayer::Draw(targetBitmap, targetBox);
+ SceneLayer::Draw(targetDimensions, targetBox);
break;
case LayerType::ForegroundLayer:
- m_FGColorLayer->Draw(targetBitmap, targetBox);
+ m_FGColorLayer->Draw(targetDimensions, targetBox);
break;
case LayerType::BackgroundLayer:
- m_BGColorLayer->Draw(targetBitmap, targetBox);
+ m_BGColorLayer->Draw(targetDimensions, targetBox);
break;
default:
RTEAbort("Invalid LayerType was set to draw in SLTerrain::Draw!");
diff --git a/Source/Entities/SLTerrain.h b/Source/Entities/SLTerrain.h
index 71ec1951ea..d558cc7348 100644
--- a/Source/Entities/SLTerrain.h
+++ b/Source/Entities/SLTerrain.h
@@ -88,11 +88,11 @@ namespace RTE {
/// Gets the foreground color bitmap of this SLTerrain.
/// @return A pointer to the foreground color bitmap.
- BITMAP* GetFGColorBitmap() { return m_FGColorLayer->GetBitmap(); }
+ BITMAP* GetFGColorBitmap() { return m_FGColorLayer->GetBitmap(); m_FGColorLayer->SetUpdated(); }
/// Gets the background color bitmap of this SLTerrain.
/// @return A pointer to the background color bitmap.
- BITMAP* GetBGColorBitmap() { return m_BGColorLayer->GetBitmap(); }
+ BITMAP* GetBGColorBitmap() { return m_BGColorLayer->GetBitmap(); m_BGColorLayer->SetUpdated(); }
/// Gets the material bitmap of this SLTerrain.
/// @return A pointer to the material bitmap.
@@ -186,10 +186,10 @@ namespace RTE {
void Update() override;
/// Draws this SLTerrain's current scrolled position to a bitmap.
- /// @param targetBitmap The bitmap to draw to.
+ /// @param targetDimensions Dimensions of the draw target.
/// @param targetBox The box on the target bitmap to limit drawing to, with the corner of box being where the scroll position lines up.
/// @param offsetNeedsScrollRatioAdjustment Whether the offset of this SceneLayer or the passed in offset override need to be adjusted to scroll ratio.
- void Draw(BITMAP* targetBitmap, Box& targetBox, bool offsetNeedsScrollRatioAdjustment = false) override;
+ void Draw(const Box& targetDimensions, Box& targetBox, bool offsetNeedsScrollRatioAdjustment = false) override;
#pragma endregion
private:
diff --git a/Source/Entities/SceneLayer.cpp b/Source/Entities/SceneLayer.cpp
index 6be1cc8e82..7b720ef785 100644
--- a/Source/Entities/SceneLayer.cpp
+++ b/Source/Entities/SceneLayer.cpp
@@ -5,31 +5,38 @@
#include "SettingsMan.h"
#include "ActivityMan.h"
#include "ThreadMan.h"
+#include "GLResourceMan.h"
+#include "BigTexture.h"
+#include "Draw.h"
#include "tracy/Tracy.hpp"
+#include "tracy/TracyOpenGL.hpp"
#include
+#include
using namespace RTE;
ConcreteClassInfo(SceneLayerTracked, Entity, 0);
ConcreteClassInfo(SceneLayer, Entity, 0);
+ConcreteClassInfo(StaticSceneLayer, Entity, 0);
-template
-SceneLayerImpl::SceneLayerImpl() {
+template
+SceneLayerImpl::SceneLayerImpl() {
Clear();
}
-template
-SceneLayerImpl::~SceneLayerImpl() {
+template
+SceneLayerImpl::~SceneLayerImpl() {
Destroy(true);
}
-template
-void SceneLayerImpl::Clear() {
+template
+void SceneLayerImpl::Clear() {
m_BitmapFile.Reset();
m_MainBitmap = nullptr;
m_BackBitmap = nullptr;
+ m_MainTexture.reset();
m_LastClearColor = ColorKeys::g_InvalidColor;
m_Drawings.clear();
m_MainBitmapOwned = false;
@@ -44,8 +51,8 @@ void SceneLayerImpl::Clear() {
m_ScaledDimensions.SetXY(1.0F, 1.0F);
}
-template
-int SceneLayerImpl::Create(const ContentFile& bitmapFile, bool drawMasked, const Vector& offset, bool wrapX, bool wrapY, const Vector& scrollInfo) {
+template
+int SceneLayerImpl::Create(const ContentFile& bitmapFile, bool drawMasked, const Vector& offset, bool wrapX, bool wrapY, const Vector& scrollInfo) {
m_BitmapFile = bitmapFile;
m_MainBitmap = m_BitmapFile.GetAsBitmap();
Create(m_MainBitmap, drawMasked, offset, wrapX, wrapY, scrollInfo);
@@ -55,8 +62,8 @@ int SceneLayerImpl::Create(const ContentFile& bitmapFile, bool d
return 0;
}
-template
-int SceneLayerImpl::Create(BITMAP* bitmap, bool drawMasked, const Vector& offset, bool wrapX, bool wrapY, const Vector& scrollInfo) {
+template
+int SceneLayerImpl::Create(BITMAP* bitmap, bool drawMasked, const Vector& offset, bool wrapX, bool wrapY, const Vector& scrollInfo) {
m_MainBitmap = bitmap;
RTEAssert(m_MainBitmap, "Null bitmap passed in when creating SceneLayerImpl!");
@@ -64,6 +71,9 @@ int SceneLayerImpl::Create(BITMAP* bitmap, bool drawMasked, cons
m_BackBitmap = create_bitmap_ex(bitmap_color_depth(m_MainBitmap), m_MainBitmap->w, m_MainBitmap->h);
m_LastClearColor = ColorKeys::g_InvalidColor;
+ if constexpr (!STATIC_TEXTURE) {
+ m_MainTexture = std::make_unique(m_MainBitmap);
+ }
m_DrawMasked = drawMasked;
m_Offset = offset;
@@ -76,8 +86,8 @@ int SceneLayerImpl::Create(BITMAP* bitmap, bool drawMasked, cons
return 0;
}
-template
-int SceneLayerImpl::Create(const SceneLayerImpl& reference) {
+template
+int SceneLayerImpl::Create(const SceneLayerImpl& reference) {
Entity::Create(reference);
m_BitmapFile = reference.m_BitmapFile;
@@ -102,6 +112,10 @@ int SceneLayerImpl::Create(const SceneLayerImpl& reference) {
m_BackBitmap = create_bitmap_ex(bitmap_color_depth(m_MainBitmap), m_MainBitmap->w, m_MainBitmap->h);
m_LastClearColor = ColorKeys::g_InvalidColor;
+ if constexpr (!STATIC_TEXTURE) {
+ m_MainTexture = std::make_unique(m_MainBitmap);
+ }
+
InitScrollRatios();
m_MainBitmapOwned = true;
@@ -112,8 +126,8 @@ int SceneLayerImpl::Create(const SceneLayerImpl& reference) {
return 0;
}
-template
-int SceneLayerImpl::ReadProperty(const std::string_view& propName, Reader& reader) {
+template
+int SceneLayerImpl::ReadProperty(const std::string_view& propName, Reader& reader) {
StartPropertyList(return Entity::ReadProperty(propName, reader));
MatchProperty("WrapX", { reader >> m_WrapX; });
@@ -123,8 +137,8 @@ int SceneLayerImpl::ReadProperty(const std::string_view& propNam
EndPropertyList;
}
-template
-int SceneLayerImpl::Save(Writer& writer) const {
+template
+int SceneLayerImpl::Save(Writer& writer) const {
Entity::Save(writer);
writer.NewPropertyWithValue("WrapX", m_WrapX);
@@ -134,8 +148,8 @@ int SceneLayerImpl::Save(Writer& writer) const {
return 0;
}
-template
-void SceneLayerImpl::Destroy(bool notInherited) {
+template
+void SceneLayerImpl::Destroy(bool notInherited) {
if (m_MainBitmapOwned) {
destroy_bitmap(m_MainBitmap);
}
@@ -148,8 +162,8 @@ void SceneLayerImpl::Destroy(bool notInherited) {
Clear();
}
-template
-void SceneLayerImpl::InitScrollRatios(bool initForNetworkPlayer, int player) {
+template
+void SceneLayerImpl::InitScrollRatios(bool initForNetworkPlayer, int player) {
float mainBitmapWidth = static_cast(m_MainBitmap->w);
float mainBitmapHeight = static_cast(m_MainBitmap->h);
float playerScreenWidth = static_cast(initForNetworkPlayer ? g_FrameMan.GetPlayerFrameBufferWidth(player) : g_FrameMan.GetPlayerScreenWidth());
@@ -184,21 +198,24 @@ void SceneLayerImpl::InitScrollRatios(bool initForNetworkPlayer,
m_ScaledDimensions.SetXY(mainBitmapWidth * m_ScaleFactor.GetX(), mainBitmapHeight * m_ScaleFactor.GetY());
}
-template
-int SceneLayerImpl::LoadData() {
+template
+int SceneLayerImpl::LoadData() {
// Load from disk and take ownership. Don't cache because the bitmap will be modified.
m_MainBitmap = m_BitmapFile.GetAsBitmap(COLORCONV_NONE, false);
m_MainBitmapOwned = true;
m_BackBitmap = create_bitmap_ex(bitmap_color_depth(m_MainBitmap), m_MainBitmap->w, m_MainBitmap->h);
+ if constexpr (!STATIC_TEXTURE) {
+ m_MainTexture = std::make_unique(m_MainBitmap);
+ }
m_LastClearColor = ColorKeys::g_InvalidColor;
InitScrollRatios();
return 0;
}
-template
-int SceneLayerImpl::SaveData(const std::string& bitmapPath, bool doAsyncSaves) {
+template
+int SceneLayerImpl::SaveData(const std::string& bitmapPath, bool doAsyncSaves) {
if (bitmapPath.empty()) {
return -1;
}
@@ -227,12 +244,13 @@ int SceneLayerImpl::SaveData(const std::string& bitmapPath, bool
return 0;
}
-template
-int SceneLayerImpl::ClearData() {
+template
+int SceneLayerImpl::ClearData() {
if (m_MainBitmap && m_MainBitmapOwned) {
destroy_bitmap(m_MainBitmap);
}
m_MainBitmap = nullptr;
+ m_MainTexture.reset();
m_MainBitmapOwned = false;
if (m_BackBitmap) {
@@ -244,22 +262,22 @@ int SceneLayerImpl::ClearData() {
return 0;
}
-template
-void SceneLayerImpl::SetScaleFactor(const Vector& newScale) {
+template
+void SceneLayerImpl::SetScaleFactor(const Vector& newScale) {
m_ScaleFactor = newScale;
if (m_MainBitmap) {
m_ScaledDimensions.SetXY(static_cast(m_MainBitmap->w) * newScale.GetX(), static_cast(m_MainBitmap->h) * newScale.GetY());
}
}
-template
-int SceneLayerImpl::GetPixel(int pixelX, int pixelY) const {
+template
+int SceneLayerImpl::GetPixel(int pixelX, int pixelY) const {
WrapPosition(pixelX, pixelY);
return (pixelX < 0 || pixelX >= m_MainBitmap->w || pixelY < 0 || pixelY >= m_MainBitmap->h) ? MaterialColorKeys::g_MaterialAir : _getpixel(m_MainBitmap, pixelX, pixelY);
}
-template
-void SceneLayerImpl::SetPixel(int pixelX, int pixelY, int materialID) {
+template
+void SceneLayerImpl::SetPixel(int pixelX, int pixelY, int materialID) {
RTEAssert(m_MainBitmapOwned, "Trying to set a pixel of a SceneLayer's bitmap which isn't owned!");
WrapPosition(pixelX, pixelY);
@@ -272,13 +290,13 @@ void SceneLayerImpl::SetPixel(int pixelX, int pixelY, int materi
RegisterDrawing(pixelX, pixelY, pixelX, pixelY);
}
-template
-bool SceneLayerImpl::IsWithinBounds(const int pixelX, const int pixelY, const int margin) const {
+template
+bool SceneLayerImpl::IsWithinBounds(const int pixelX, const int pixelY, const int margin) const {
return (m_WrapX || (pixelX >= -margin && pixelX < m_MainBitmap->w + margin)) && (m_WrapY || (pixelY >= -margin && pixelY < m_MainBitmap->h + margin));
}
-template
-void SceneLayerImpl::ClearBitmap(ColorKeys clearTo) {
+template
+void SceneLayerImpl::ClearBitmap(ColorKeys clearTo) {
RTEAssert(m_MainBitmapOwned, "Bitmap not owned! We shouldn't be clearing this!");
if (m_BitmapClearTask.valid()) {
@@ -297,14 +315,13 @@ void SceneLayerImpl::ClearBitmap(ColorKeys clearTo) {
m_BitmapClearTask = g_ThreadMan.GetPriorityThreadPool().submit([this, clearTo](BITMAP* bitmap, std::vector drawings) {
ZoneScopedN("Clear Tracked Backbuffer");
ClearDrawings(bitmap, drawings, clearTo);
- },
- m_BackBitmap, m_Drawings);
+ }, m_BackBitmap, m_Drawings);
m_Drawings.clear(); // This was copied into the new thread, so can be safely deleted.
}
-template
-bool SceneLayerImpl::WrapPosition(int& posX, int& posY) const {
+template
+bool SceneLayerImpl::WrapPosition(int& posX, int& posY) const {
int oldX = posX;
int oldY = posY;
@@ -327,8 +344,8 @@ bool SceneLayerImpl::WrapPosition(int& posX, int& posY) const {
return oldX != posX || oldY != posY;
}
-template
-bool SceneLayerImpl::ForceBounds(int& posX, int& posY) const {
+template
+bool SceneLayerImpl::ForceBounds(int& posX, int& posY) const {
bool wrapped = false;
int width = m_ScaledDimensions.GetFloorIntX();
int height = m_ScaledDimensions.GetFloorIntY();
@@ -372,8 +389,8 @@ bool SceneLayerImpl::ForceBounds(int& posX, int& posY) const {
return wrapped;
}
-template
-bool SceneLayerImpl::ForceBoundsOrWrapPosition(Vector& pos, bool forceBounds) const {
+template
+bool SceneLayerImpl::ForceBoundsOrWrapPosition(Vector& pos, bool forceBounds) const {
int posX = pos.GetFloorIntX();
int posY = pos.GetFloorIntY();
bool wrapped = forceBounds ? ForceBounds(posX, posY) : WrapPosition(posX, posY);
@@ -382,113 +399,132 @@ bool SceneLayerImpl::ForceBoundsOrWrapPosition(Vector& pos, bool
return wrapped;
}
-template
-void SceneLayerImpl::RegisterDrawing(int left, int top, int right, int bottom) {
+template
+void SceneLayerImpl::RegisterDrawing(int left, int top, int right, int bottom) {
+ m_MainBitmapUpdated = true;
if constexpr (TRACK_DRAWINGS) {
m_Drawings.emplace_back(left, top, right, bottom);
}
}
-template
-void SceneLayerImpl::RegisterDrawing(const Vector& center, float radius) {
+template
+void SceneLayerImpl::RegisterDrawing(const Vector& center, float radius) {
if (radius != 0.0F) {
RegisterDrawing(static_cast(center.GetX() - radius), static_cast(center.GetY() - radius), static_cast(center.GetX() + radius), static_cast(center.GetY() + radius));
}
}
-template
-void SceneLayerImpl::Draw(BITMAP* targetBitmap, Box& targetBox, bool offsetNeedsScrollRatioAdjustment) {
- RTEAssert(m_MainBitmap, "Data of this SceneLayerImpl has not been loaded before trying to draw!");
+template
+void SceneLayerImpl::UpdateTargetRegion(const Box& targetBox) {
+ if constexpr (TRACK_DRAWINGS) {
+ m_MainTexture->m_Bitmap = m_MainBitmap;
+ }
+ if constexpr (!STATIC_TEXTURE) {
+ RTEAssert(bitmap_color_depth(m_MainBitmap) == 8, "Truecolor scenelayer used for non gpu drawing!");
+ std::vector updateRegions{};
+ float bitmapWidth = m_MainBitmap->w;
+ float bitmapHeight = m_MainBitmap->h;
+ int areaToCoverX = (m_Offset.GetFloorIntX() + targetBox.GetCorner().GetFloorIntX() + targetBox.GetWidth()) / m_ScaleFactor.m_X;
+ int areaToCoverY = (m_Offset.GetFloorIntY() + targetBox.GetCorner().GetFloorIntY() + targetBox.GetHeight()) / m_ScaleFactor.m_Y;
+ Box scaledTarget(targetBox.m_Corner / m_ScaleFactor, targetBox.m_Width / m_ScaleFactor.m_X, targetBox.m_Height / m_ScaleFactor.m_Y);
+ Vector scaledOffset(m_Offset/m_ScaleFactor);
+ Box bitmapDimensions(Vector(), bitmapWidth, bitmapHeight);
+
+ for (int tiledOffsetX = 0; tiledOffsetX < areaToCoverX;) {
+ float destX = scaledTarget.GetCorner().GetFloorIntX() + tiledOffsetX - scaledOffset.GetFloorIntX();
+
+ for (int tiledOffsetY = 0; tiledOffsetY < areaToCoverY;) {
+ float destY = scaledTarget.GetCorner().GetFloorIntY() + tiledOffsetY - scaledOffset.GetFloorIntY();
+ Box update = bitmapDimensions.GetIntersection({-Vector(destX, destY), scaledTarget.m_Width, scaledTarget.m_Height});
+ update.m_Corner = update.m_Corner.GetFloored();
+ update.m_Width = std::ceil(update.m_Width) + 1;
+ update.m_Height = std::ceil(update.m_Height) + 1;
+ updateRegions.emplace_back(update);
+ if (!m_WrapY) {
+ break;
+ }
+ tiledOffsetY += bitmapHeight;
+ }
+ if (!m_WrapX) {
+ break;
+ }
+ tiledOffsetX += bitmapWidth;
+ }
+
+ for (auto& region: updateRegions) {
+ m_MainTexture->Update(region);
+ }
+ // g_GLResourceMan.UpdateDynamicBitmap(m_MainBitmap, true, updateRegions);
+ } else {}
+}
+
+template
+void SceneLayerImpl::Draw(const Box& targetDimensions, Box& targetBox, bool offsetNeedsScrollRatioAdjustment) {
+ RTEAssert(m_MainBitmap, "Data of this SceneLayerImpl has not been loaded before trying to draw!");
+ if constexpr(!STATIC_TEXTURE) {
+ RTEAssert(m_MainTexture, "Texture of this SceneLayerImpl has not bee created before trying to draw!");
+ }
+ ZoneScoped;
+ TracyGpuZone("SceneLayer::Draw");
if (offsetNeedsScrollRatioAdjustment) {
m_Offset.SetXY(std::floor(m_Offset.GetX() * m_ScrollRatio.GetX()), std::floor(m_Offset.GetY() * m_ScrollRatio.GetY()));
}
if (targetBox.IsEmpty()) {
- targetBox = Box(Vector(), static_cast(targetBitmap->w), static_cast(targetBitmap->h));
+ targetBox = targetDimensions;
}
- if (!m_WrapX && static_cast(targetBitmap->w) > targetBox.GetWidth()) {
+ if (!m_WrapX && targetDimensions.GetWidth() > targetBox.GetWidth()) {
m_Offset.SetX(0);
}
- if (!m_WrapY && static_cast(targetBitmap->h) > targetBox.GetHeight()) {
+ if (!m_WrapY && targetDimensions.GetHeight() > targetBox.GetHeight()) {
m_Offset.SetY(0);
}
m_Offset -= m_OriginOffset;
WrapPosition(m_Offset);
+ if constexpr (!STATIC_TEXTURE) {
+ if (m_MainBitmapOwned) {
+ UpdateTargetRegion(targetBox);
+ }
+ }
+ m_MainBitmapUpdated = false;
- set_clip_rect(targetBitmap, targetBox.GetCorner().GetFloorIntX(), targetBox.GetCorner().GetFloorIntY(), static_cast(targetBox.GetCorner().GetX() + targetBox.GetWidth()) - 1, static_cast(targetBox.GetCorner().GetY() + targetBox.GetHeight()) - 1);
bool drawScaled = m_ScaleFactor.GetX() > 1.0F || m_ScaleFactor.GetY() > 1.0F;
- if (m_MainBitmap->w > targetBitmap->w && m_MainBitmap->h > targetBitmap->h) {
- DrawWrapped(targetBitmap, targetBox, drawScaled);
- } else {
- DrawTiled(targetBitmap, targetBox, drawScaled);
- }
- set_clip_rect(targetBitmap, 0, 0, targetBitmap->w - 1, targetBitmap->h - 1);
+ DrawTiled(targetDimensions, targetBox, drawScaled);
}
-template
-void SceneLayerImpl::DrawWrapped(BITMAP* targetBitmap, const Box& targetBox, bool drawScaled) const {
- if (!drawScaled) {
- std::array sourcePosX = {m_Offset.GetFloorIntX(), 0};
- std::array sourcePosY = {m_Offset.GetFloorIntY(), 0};
- std::array sourceWidth = {m_MainBitmap->w - m_Offset.GetFloorIntX(), m_Offset.GetFloorIntX()};
- std::array sourceHeight = {m_MainBitmap->h - m_Offset.GetFloorIntY(), m_Offset.GetFloorIntY()};
- std::array destPosX = {targetBox.GetCorner().GetFloorIntX(), targetBox.GetCorner().GetFloorIntX() + m_MainBitmap->w - m_Offset.GetFloorIntX()};
- std::array destPosY = {targetBox.GetCorner().GetFloorIntY(), targetBox.GetCorner().GetFloorIntY() + m_MainBitmap->h - m_Offset.GetFloorIntY()};
-
- for (int i = 0; i < 2; ++i) {
- for (int j = 0; j < 2; ++j) {
- if (m_DrawMasked) {
- masked_blit(m_MainBitmap, targetBitmap, sourcePosX[j], sourcePosY[i], destPosX[j], destPosY[i], sourceWidth[j], sourceHeight[i]);
- } else {
- blit(m_MainBitmap, targetBitmap, sourcePosX[j], sourcePosY[i], destPosX[j], destPosY[i], sourceWidth[j], sourceHeight[i]);
- }
- }
- }
- } else {
- std::array sourceWidth = {m_MainBitmap->w, m_Offset.GetFloorIntX() / m_ScaleFactor.GetFloorIntX()};
- std::array sourceHeight = {m_MainBitmap->h, m_Offset.GetFloorIntY() / m_ScaleFactor.GetFloorIntY()};
- std::array destPosX = {targetBox.GetCorner().GetFloorIntX() - m_Offset.GetFloorIntX(), targetBox.GetCorner().GetFloorIntX() + m_ScaledDimensions.GetFloorIntX() - m_Offset.GetFloorIntX()};
- std::array destPosY = {targetBox.GetCorner().GetFloorIntY() - m_Offset.GetFloorIntY(), targetBox.GetCorner().GetFloorIntY() + m_ScaledDimensions.GetFloorIntY() - m_Offset.GetFloorIntY()};
-
- for (int i = 0; i < 2; ++i) {
- for (int j = 0; j < 2; ++j) {
- if (m_DrawMasked) {
- masked_stretch_blit(m_MainBitmap, targetBitmap, 0, 0, sourceWidth[j], sourceHeight[i], destPosX[j], destPosY[i], sourceWidth[j] * m_ScaleFactor.GetFloorIntX() + 1, sourceHeight[i] * m_ScaleFactor.GetFloorIntY() + 1);
- } else {
- stretch_blit(m_MainBitmap, targetBitmap, 0, 0, sourceWidth[j], sourceHeight[i], destPosX[j], destPosY[i], sourceWidth[j] * m_ScaleFactor.GetFloorIntX() + 1, sourceHeight[i] * m_ScaleFactor.GetFloorIntY() + 1);
- }
- }
- }
+template
+void SceneLayerImpl::DrawTiled(const Box& targetDimensions, const Box& targetBox, bool drawScaled) const {
+ ZoneScoped;
+ TracyGpuZone("SceneLayer::DrawTiled");
+ float bitmapWidth = m_ScaledDimensions.m_X;
+ float bitmapHeight = m_ScaledDimensions.m_Y;
+ int areaToCoverX = m_Offset.GetFloorIntX() + targetBox.GetCorner().GetFloorIntX() + std::min(targetDimensions.GetWidth(), targetBox.GetWidth());
+ int areaToCoverY = m_Offset.GetFloorIntY() + targetBox.GetCorner().GetFloorIntY() + std::min(targetDimensions.GetHeight(), targetBox.GetHeight());
+
+ if (!m_DrawMasked) {
+ rlDrawRenderBatchActive();
+ int maskedUniformLocation = rlGetLocationUniform(rlGetShaderCurrent(), "drawMasked");
+ rlEnableShader(rlGetShaderCurrent());
+ glUniform1i(maskedUniformLocation, 0);
}
-}
-
-template
-void SceneLayerImpl::DrawTiled(BITMAP* targetBitmap, const Box& targetBox, bool drawScaled) const {
- int bitmapWidth = m_ScaledDimensions.GetFloorIntX();
- int bitmapHeight = m_ScaledDimensions.GetFloorIntY();
- int areaToCoverX = m_Offset.GetFloorIntX() + targetBox.GetCorner().GetFloorIntX() + std::min(targetBitmap->w, static_cast(targetBox.GetWidth()));
- int areaToCoverY = m_Offset.GetFloorIntY() + targetBox.GetCorner().GetFloorIntY() + std::min(targetBitmap->h, static_cast(targetBox.GetHeight()));
for (int tiledOffsetX = 0; tiledOffsetX < areaToCoverX;) {
- int destX = targetBox.GetCorner().GetFloorIntX() + tiledOffsetX - m_Offset.GetFloorIntX();
+ float destX = targetBox.GetCorner().GetFloorIntX() + tiledOffsetX - m_Offset.GetFloorIntX();
for (int tiledOffsetY = 0; tiledOffsetY < areaToCoverY;) {
- int destY = targetBox.GetCorner().GetFloorIntY() + tiledOffsetY - m_Offset.GetFloorIntY();
-
- if (!drawScaled) {
- if (m_DrawMasked) {
- masked_blit(m_MainBitmap, targetBitmap, 0, 0, destX, destY, bitmapWidth, bitmapHeight);
- } else {
- blit(m_MainBitmap, targetBitmap, 0, 0, destX, destY, bitmapWidth, bitmapHeight);
- }
+ float destY = targetBox.GetCorner().GetFloorIntY() + tiledOffsetY - m_Offset.GetFloorIntY();
+ if constexpr (STATIC_TEXTURE) {
+ DrawTexturePro(
+ g_GLResourceMan.GetStaticTextureFromBitmap(m_MainBitmap),
+ {0.0f, 0.0f, static_cast(m_MainBitmap->w), static_cast(m_MainBitmap->h)},
+ {destX, destY, bitmapWidth, bitmapHeight},
+ {0.0f, 0.0f}, 0.0f, {255, 255, 255, 255});
} else {
- if (m_DrawMasked) {
- masked_stretch_blit(m_MainBitmap, targetBitmap, 0, 0, m_MainBitmap->w, m_MainBitmap->h, destX, destY, bitmapWidth, bitmapHeight);
- } else {
- stretch_blit(m_MainBitmap, targetBitmap, 0, 0, m_MainBitmap->w, m_MainBitmap->h, destX, destY, bitmapWidth, bitmapHeight);
- }
+ m_MainTexture->Draw(
+ {0.0f, 0.0f, static_cast(m_MainBitmap->w), static_cast(m_MainBitmap->h)},
+ {destX, destY, bitmapWidth, bitmapHeight});
}
if (!m_WrapY) {
break;
@@ -500,10 +536,17 @@ void SceneLayerImpl::DrawTiled(BITMAP* targetBitmap, const Box&
}
tiledOffsetX += bitmapWidth;
}
+
+ if (!m_DrawMasked) {
+ rlDrawRenderBatchActive();
+ int drawMaskedUniform = rlGetLocationUniform(rlGetShaderCurrent(), "drawMasked");
+ rlEnableShader(rlGetShaderCurrent());
+ glUniform1i(drawMaskedUniform, 1);
+ }
}
-template
-void SceneLayerImpl::ClearDrawings(BITMAP* bitmap, const std::vector& drawings, ColorKeys clearTo) const {
+template
+void SceneLayerImpl::ClearDrawings(BITMAP* bitmap, const std::vector& drawings, ColorKeys clearTo) const {
if constexpr (TRACK_DRAWINGS) {
for (const IntRect& rect: drawings) {
int left = rect.m_Left;
@@ -548,4 +591,5 @@ void SceneLayerImpl::ClearDrawings(BITMAP* bitmap, const std::ve
// Force instantiation
template class RTE::SceneLayerImpl;
+template class RTE::SceneLayerImpl;
template class RTE::SceneLayerImpl;
diff --git a/Source/Entities/SceneLayer.h b/Source/Entities/SceneLayer.h
index 6c776e1150..5b0fbe89fb 100644
--- a/Source/Entities/SceneLayer.h
+++ b/Source/Entities/SceneLayer.h
@@ -5,11 +5,14 @@
#include "Box.h"
#include
+#include
namespace RTE {
+ struct BigTexture;
+
/// A scrolling layer of the Scene.
- template
+ template
class SceneLayerImpl : public Entity {
friend class NetworkServer;
@@ -133,6 +136,8 @@ namespace RTE {
/// @param materialID The color index to set the pixel to.
void SetPixel(int pixelX, int pixelY, int materialID);
+ void SetUpdated() { m_MainBitmapUpdated = true; }
+
/// Returns whether the integer coordinates passed in are within the bounds of this SceneLayer.
/// @param pixelX The X coordinates of the pixel.
/// @param pixelY The Y coordinates of the pixel.
@@ -190,15 +195,16 @@ namespace RTE {
virtual void Update() {}
/// Draws this SceneLayer's current scrolled position to a bitmap.
- /// @param targetBitmap The bitmap to draw to.
+ /// @param targetDimensions Dimensions of the draw target.
/// @param targetBox The box on the target bitmap to limit drawing to, with the corner of box being where the scroll position lines up.
/// @param offsetNeedsScrollRatioAdjustment Whether the offset of this SceneLayer or the passed in offset override need to be adjusted to scroll ratio.
- virtual void Draw(BITMAP* targetBitmap, Box& targetBox, bool offsetNeedsScrollRatioAdjustment = false);
+ virtual void Draw(const Box& targetDimensions, Box& targetBox, bool offsetNeedsScrollRatioAdjustment = false);
#pragma endregion
protected:
ContentFile m_BitmapFile; //!< ContentFile containing the path to this SceneLayer's sprite file.
+ std::unique_ptr m_MainTexture; //!< The Main texture of this SceneLayer, may be tiled for very large scenes.
BITMAP* m_MainBitmap; //!< The main BITMAP of this SceneLayer.
BITMAP* m_BackBitmap; //!< The backbuffer BITMAP of this SceneLayer.
@@ -208,6 +214,7 @@ namespace RTE {
std::vector m_Drawings; //!< All the areas drawn within on this SceneLayer since the last clear.
bool m_MainBitmapOwned; //!< Whether the main bitmap is owned by this.
+ bool m_MainBitmapUpdated; //!< Whether the main bitmap was updated since the last draw.
bool m_DrawMasked; //!< Whether pixels marked as transparent (index 0, magenta) are skipped when drawing or not (masked drawing).
bool m_WrapX; //!< Whether wrapping is enabled on the X axis.
@@ -233,17 +240,16 @@ namespace RTE {
bool ForceBoundsOrWrapPosition(Vector& pos, bool forceBounds) const;
#pragma region Draw Breakdown
- /// Performs wrapped drawing of this SceneLayer's bitmap to the screen in cases where it is both wider and taller than the target bitmap.
- /// @param targetBitmap The bitmap to draw to.
- /// @param targetBox The box on the target bitmap to limit drawing to, with the corner of box being where the scroll position lines up.
- /// @param drawScaled Whether to use scaled drawing routines or not.
- void DrawWrapped(BITMAP* targetBitmap, const Box& targetBox, bool drawScaled) const;
+
+ /// @brief Update the target region of the current frontbuffer texture.
+ /// @param targetBox The region to update (will be wrapped if neccessary)
+ void UpdateTargetRegion(const Box& targetBox);
/// Performs tiled drawing of this SceneLayer's bitmap to the screen in cases where the target bitmap is larger in some dimension.
/// @param targetBitmap The bitmap to draw to.
/// @param targetBox The box on the target bitmap to limit drawing to, with the corner of box being where the scroll position lines up.
/// @param drawScaled Whether to use scaled drawing routines or not.
- void DrawTiled(BITMAP* targetBitmap, const Box& targetBox, bool drawScaled) const;
+ void DrawTiled(const Box& targetDim, const Box& targetBox, bool drawScaled) const;
#pragma endregion
private:
@@ -292,6 +298,25 @@ namespace RTE {
/// Gets the BITMAP that this SceneLayer uses.
/// @return A pointer to the BITMAP of this SceneLayer. Ownership is NOT transferred!
+ BITMAP* GetBitmap() const {
+ return m_MainBitmap;
+ }
+
+ protected:
+ static Entity::ClassInfo m_sClass; //!< ClassInfo for this class.
+ };
+
+ /// SceneLayer that promises to never update its MainBitmap.
+ class StaticSceneLayer : public SceneLayerImpl {
+ public:
+ EntityAllocation(StaticSceneLayer);
+ ClassInfoGetters;
+
+ /// Constructor method used to instantiate a SceneLayer object in system memory. Create() should be called before using the object.
+ StaticSceneLayer(): SceneLayerImpl() {}
+
+ /// Gets the BITMAP that this StaticSceneLayer uses.
+ /// The bitmap will only be uploaded to GPU once on the first draw. So any modifcations after that will not be drawn.
BITMAP* GetBitmap() const { return m_MainBitmap; }
protected:
diff --git a/Source/Entities/TerrainObject.cpp b/Source/Entities/TerrainObject.cpp
index ef8caf27f7..6aabb1a20c 100644
--- a/Source/Entities/TerrainObject.cpp
+++ b/Source/Entities/TerrainObject.cpp
@@ -1,6 +1,8 @@
#include "TerrainObject.h"
#include "SLTerrain.h"
#include "SceneMan.h"
+#include "Draw.h"
+#include "FrameMan.h"
using namespace RTE;
@@ -220,10 +222,10 @@ void TerrainObject::Draw(BITMAP* targetBitmap, const Vector& targetPos, DrawMode
break;
case DrawMode::g_DrawTrans:
if (HasFGColorBitmap()) {
- draw_trans_sprite(targetBitmap, m_FGColorBitmap, drawPos.at(i).GetFloorIntX(), drawPos.at(i).GetFloorIntY());
+ DrawTexture(m_FGColorBitmap, drawPos.at(i).GetFloorIntX(), drawPos.at(i).GetFloorIntY(), {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
}
if (HasBGColorBitmap()) {
- draw_trans_sprite(targetBitmap, m_BGColorBitmap, drawPos.at(i).GetFloorIntX(), drawPos.at(i).GetFloorIntY());
+ DrawTexture(m_BGColorBitmap, drawPos.at(i).GetFloorIntX(), drawPos.at(i).GetFloorIntY(), {255, 255, 255, g_FrameMan.GetCurrentAlpha()});
}
break;
default:
diff --git a/Source/Entities/TerrainObject.h b/Source/Entities/TerrainObject.h
index fa37466e06..c97f4c90c3 100644
--- a/Source/Entities/TerrainObject.h
+++ b/Source/Entities/TerrainObject.h
@@ -2,6 +2,7 @@
#include "SceneObject.h"
#include "ContentFile.h"
+#include
namespace RTE {
diff --git a/Source/GUI/Wrappers/AllegroScreen.cpp b/Source/GUI/Wrappers/AllegroScreen.cpp
index b1181aec89..a18e92f567 100644
--- a/Source/GUI/Wrappers/AllegroScreen.cpp
+++ b/Source/GUI/Wrappers/AllegroScreen.cpp
@@ -69,8 +69,7 @@ unsigned long AllegroScreen::ConvertColor(unsigned long color, int targetColorDe
if (color >= 0 && color <= 255) {
RGB rgbEntry;
get_color(color, &rgbEntry);
- // Times 4 because RGB struct's elements are in range 0-63, and makecol needs 0-255.
- color = makecol(rgbEntry.r * 4, rgbEntry.g * 4, rgbEntry.b * 4);
+ color = makecol(rgbEntry.r, rgbEntry.g, rgbEntry.b);
}
}
return color;
diff --git a/Source/Lua/LuaBindingRegisterDefinitions.h b/Source/Lua/LuaBindingRegisterDefinitions.h
index 70dd73392b..851ae3c02d 100644
--- a/Source/Lua/LuaBindingRegisterDefinitions.h
+++ b/Source/Lua/LuaBindingRegisterDefinitions.h
@@ -87,7 +87,7 @@ namespace RTE {
/* Base Classes */ \
PER_LUA_BINDING(SoundSet) \
PER_LUA_BINDING(Gib) \
- PER_LUA_BINDING(SceneLayer) \
+ PER_LUA_BINDING(StaticSceneLayer) \
PER_LUA_BINDING(Entity) \
/* ActivityLuaBindings */ \
PER_LUA_BINDING(GameActivity) \
@@ -240,7 +240,7 @@ namespace RTE {
LuaBindingRegisterFunctionDeclarationForType(Round);
LuaBindingRegisterFunctionDeclarationForType(Scene);
LuaBindingRegisterFunctionDeclarationForType(SceneArea);
- LuaBindingRegisterFunctionDeclarationForType(SceneLayer);
+ LuaBindingRegisterFunctionDeclarationForType(StaticSceneLayer);
LuaBindingRegisterFunctionDeclarationForType(SceneObject);
LuaBindingRegisterFunctionDeclarationForType(SLBackground);
LuaBindingRegisterFunctionDeclarationForType(SoundContainer);
diff --git a/Source/Lua/LuaBindingsEntities.cpp b/Source/Lua/LuaBindingsEntities.cpp
index 3cd77284e8..39d7999af3 100644
--- a/Source/Lua/LuaBindingsEntities.cpp
+++ b/Source/Lua/LuaBindingsEntities.cpp
@@ -1241,8 +1241,8 @@ LuaBindingRegisterFunctionDefinitionForType(EntityLuaBindings, SceneArea) {
.def("GetRandomPoint", &Scene::Area::GetRandomPoint);
}
-LuaBindingRegisterFunctionDefinitionForType(EntityLuaBindings, SceneLayer) {
- return luabind::class_("SceneLayer");
+LuaBindingRegisterFunctionDefinitionForType(EntityLuaBindings, StaticSceneLayer) {
+ return luabind::class_("StaticSceneLayer");
}
LuaBindingRegisterFunctionDefinitionForType(EntityLuaBindings, SceneObject) {
@@ -1273,7 +1273,7 @@ LuaBindingRegisterFunctionDefinitionForType(EntityLuaBindings, SceneObject) {
}
LuaBindingRegisterFunctionDefinitionForType(EntityLuaBindings, SLBackground) {
- return luabind::class_("SLBackground")
+ return luabind::class_("SLBackground")
.property("Frame", &SLBackground::GetFrame, &SLBackground::SetFrame)
.property("SpriteAnimMode", &SLBackground::GetSpriteAnimMode, &SLBackground::SetSpriteAnimMode)
diff --git a/Source/Main.cpp b/Source/Main.cpp
index e2ee2153f2..66540013ff 100644
--- a/Source/Main.cpp
+++ b/Source/Main.cpp
@@ -20,6 +20,7 @@
#include "allegro.h"
#include "SDL.h"
+#include "SDL_image.h"
#include "GUI.h"
#include "GUIInputWrapper.h"
@@ -41,6 +42,7 @@
#include "FrameMan.h"
#include "MetaMan.h"
#include "WindowMan.h"
+#include "GLResourceMan.h"
#include "NetworkServer.h"
#include "NetworkClient.h"
#include "CameraMan.h"
@@ -51,6 +53,7 @@
#include "MusicMan.h"
#include "System.h"
+#include "RenderTarget.h"
#include "tracy/Tracy.hpp"
extern "C" {
@@ -68,6 +71,7 @@ void InitializeManagers() {
PresetMan::Construct();
SettingsMan::Construct();
WindowMan::Construct();
+ GLResourceMan::Construct();
LuaMan::Construct();
NetworkServer::Construct();
NetworkClient::Construct();
@@ -91,6 +95,7 @@ void InitializeManagers() {
g_ThreadMan.Initialize();
g_SettingsMan.Initialize();
g_WindowMan.Initialize();
+ g_GLResourceMan.Initialize();
g_LuaMan.Initialize();
g_NetworkServer.Initialize();
@@ -141,6 +146,7 @@ void DestroyManagers() {
g_LuaMan.Destroy();
ContentFile::FreeAllLoaded();
g_ConsoleMan.Destroy();
+ g_GLResourceMan.Destroy();
g_WindowMan.Destroy();
#ifdef DEBUG_BUILD
@@ -247,7 +253,7 @@ void RunMenuLoop() {
g_UInputMan.TrapMousePos(false);
while (!System::IsSetToQuit()) {
- g_WindowMan.ClearRenderer();
+ g_WindowMan.ClearBackbuffer();
PollSDLEvents();
g_WindowMan.Update();
@@ -271,8 +277,10 @@ void RunMenuLoop() {
}
g_ConsoleMan.Update();
+ g_WindowMan.GetScreenBuffer()->Begin();
g_MenuMan.Draw();
g_ConsoleMan.Draw(g_FrameMan.GetBackBuffer32());
+ g_WindowMan.GetScreenBuffer()->End();
g_WindowMan.UploadFrame();
}
}
@@ -309,7 +317,7 @@ void RunGameLoop() {
PollSDLEvents();
g_WindowMan.Update();
- g_WindowMan.ClearRenderer();
+ g_WindowMan.ClearBackbuffer();
g_TimerMan.Update();
@@ -429,6 +437,7 @@ int main(int argc, char** argv) {
loadpng_init();
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS | SDL_INIT_GAMECONTROLLER | SDL_INIT_TIMER);
+ IMG_Init(IMG_INIT_PNG);
#if SDL_MINOR_VERSION > 22
SDL_SetHint(SDL_HINT_MOUSE_AUTO_CAPTURE, "0");
diff --git a/Source/Managers/FrameMan.cpp b/Source/Managers/FrameMan.cpp
index 1d211651f9..5804a817ee 100644
--- a/Source/Managers/FrameMan.cpp
+++ b/Source/Managers/FrameMan.cpp
@@ -10,12 +10,15 @@
#include "ConsoleMan.h"
#include "SettingsMan.h"
#include "UInputMan.h"
+#include "GLResourceMan.h"
#include "SLTerrain.h"
#include "SLBackground.h"
#include "Scene.h"
#include "System.h"
+#include "RenderTarget.h"
+
#include "GUI.h"
#include "AllegroBitmap.h"
#include "AllegroScreen.h"
@@ -24,6 +27,8 @@
#include "glad/gl.h"
#include "tracy/Tracy.hpp"
+#include "tracy/TracyOpenGL.hpp"
+#include "SDL_image.h"
using namespace RTE;
@@ -137,6 +142,8 @@ int FrameMan::CreateBackBuffers() {
m_BackBuffer32 = std::unique_ptr(create_bitmap_ex(c_BPP, resX, resY));
ClearBackBuffer32();
+ m_BackBuffer = std::make_unique(FloatRect(0, 0, resX, resY), FloatRect(0, 0, resX, resY));
+
m_OverlayBitmap32 = std::unique_ptr(create_bitmap_ex(c_BPP, resX, resY));
clear_to_color(m_OverlayBitmap32.get(), 0);
@@ -162,13 +169,18 @@ int FrameMan::CreateBackBuffers() {
// Create the splitscreen buffer
if (m_HSplit || m_VSplit) {
- m_PlayerScreen = std::unique_ptr(create_bitmap_ex(8, resX / (m_VSplit ? 2 : 1), resY / (m_HSplit ? 2 : 1)));
- clear_to_color(m_PlayerScreen.get(), m_BlackColor);
- set_clip_state(m_PlayerScreen.get(), 1);
+ m_PlayerScreen8 = std::unique_ptr(create_bitmap_ex(8, resX / (m_VSplit ? 2 : 1), resY / (m_HSplit ? 2 : 1)));
+ clear_to_color(m_PlayerScreen8.get(), 0);
+ set_clip_state(m_PlayerScreen8.get(), 1);
+
+ m_PlayerScreen = std::make_unique(FloatRect(0, 0, resX / (m_VSplit ? 2 : 1), resY / (m_HSplit ? 2 : 1)), FloatRect(0, 0, resX / (m_VSplit ? 2 : 1), resY / (m_HSplit ? 2 : 1)));
// Update these to represent the split screens
- m_PlayerScreenWidth = m_PlayerScreen->w;
- m_PlayerScreenHeight = m_PlayerScreen->h;
+ m_PlayerScreenWidth = m_PlayerScreen->GetSize().w;
+ m_PlayerScreenHeight = m_PlayerScreen->GetSize().h;
+ } else {
+ m_PlayerScreen8 = m_BackBuffer8;
+ m_PlayerScreen = m_BackBuffer;
}
m_ScreenDumpBuffer = std::unique_ptr(create_bitmap_ex(24, m_BackBuffer32->w, m_BackBuffer32->h));
@@ -178,8 +190,8 @@ int FrameMan::CreateBackBuffers() {
void FrameMan::CreatePresetColorTables() {
// Create RGB lookup table that supposedly speeds up calculation of other color tables.
- create_rgb_table(&m_RGBTable, m_DefaultPalette, nullptr);
- rgb_map = &m_RGBTable;
+ //create_rgb_table(&m_RGBTable, m_DefaultPalette, nullptr);
+ //rgb_map = &m_RGBTable;
// Create transparency color tables. Tables for other blend modes will be created on demand.
int transparencyPresetCount = BlendAmountLimits::MaxBlend / c_BlendAmountStep;
@@ -253,13 +265,18 @@ void FrameMan::ResetSplitScreens(bool hSplit, bool vSplit) {
// Create the splitscreen buffer
if (m_HSplit || m_VSplit) {
- m_PlayerScreen = std::unique_ptr(create_bitmap_ex(8, g_WindowMan.GetResX() / (m_VSplit ? 2 : 1), g_WindowMan.GetResY() / (m_HSplit ? 2 : 1)));
- clear_to_color(m_PlayerScreen.get(), m_BlackColor);
- set_clip_state(m_PlayerScreen.get(), 1);
+ m_PlayerScreen8 = std::unique_ptr(create_bitmap_ex(8, g_WindowMan.GetResX() / (m_VSplit ? 2 : 1), g_WindowMan.GetResY() / (m_HSplit ? 2 : 1)));
+ clear_to_color(m_PlayerScreen8.get(), 0);
+ set_clip_state(m_PlayerScreen8.get(), 1);
+
+ m_PlayerScreen = std::make_unique(FloatRect(0, 0, g_WindowMan.GetResX() / (m_VSplit ? 2 : 1), g_WindowMan.GetResY() / (m_HSplit ? 2 : 1)), FloatRect(0, 0, g_WindowMan.GetResX() / (m_VSplit ? 2 : 1), g_WindowMan.GetResY() / (m_HSplit ? 2 : 1)));
- m_PlayerScreenWidth = m_PlayerScreen->w;
- m_PlayerScreenHeight = m_PlayerScreen->h;
+ // Update these to represent the split screens
+ m_PlayerScreenWidth = m_PlayerScreen->GetSize().w;
+ m_PlayerScreenHeight = m_PlayerScreen->GetSize().h;
} else {
+ m_PlayerScreen8 = m_BackBuffer8;
+ m_PlayerScreen = m_BackBuffer;
// No splits, so set the screen dimensions equal to the back buffer
m_PlayerScreenWidth = m_BackBuffer8->w;
m_PlayerScreenHeight = m_BackBuffer8->h;
@@ -455,6 +472,8 @@ void FrameMan::SetTransTableFromPreset(TransparencyPreset transPreset) {
color_map = &m_ColorTables[DrawBlendMode::BlendTransparency].at(colorChannelBlendAmounts).first;
m_ColorTables[DrawBlendMode::BlendTransparency].at(colorChannelBlendAmounts).second = -1;
}
+ constexpr int transparencyPresetCount = BlendAmountLimits::MaxBlend / c_BlendAmountStep;
+ m_CurrentAlpha = 255 - (static_cast(255.0F * ((1.0F / static_cast(transparencyPresetCount)) * static_cast(transPreset / c_BlendAmountStep))));
}
void FrameMan::CreateNewNetworkPlayerBackBuffer(int player, int width, int height) {
@@ -470,8 +489,19 @@ void FrameMan::CreateNewNetworkPlayerBackBuffer(int player, int width, int heigh
bool FrameMan::LoadPalette(const std::string& palettePath) {
const std::string fullPalettePath = g_PresetMan.GetFullModulePath(palettePath);
- BITMAP* tempBitmap = load_bitmap(fullPalettePath.c_str(), m_Palette);
- RTEAssert(tempBitmap, ("Failed to load palette from bitmap with following path:\n\n" + fullPalettePath).c_str());
+ SDL_Surface* paletteImage = IMG_Load(palettePath.c_str());
+ RTEAssert(paletteImage && paletteImage->format->palette, ("Failed to load palette from bitmap with following path:\n\n" + fullPalettePath).c_str());
+
+ SDL_Palette* palette = paletteImage->format->palette;
+ for (size_t i = 0; i < 256; i++) {
+ m_Palette[i] = {
+ palette->colors[i].r,
+ palette->colors[i].g,
+ palette->colors[i].b,
+ 0
+ };
+ }
+ SDL_FreeSurface(paletteImage);
set_palette(m_Palette);
@@ -479,8 +509,6 @@ bool FrameMan::LoadPalette(const std::string& palettePath) {
m_BlackColor = bestfit_color(m_Palette, 0, 0, 0);
m_AlmostBlackColor = bestfit_color(m_Palette, 5, 5, 5);
- destroy_bitmap(tempBitmap);
-
return true;
}
@@ -588,7 +616,7 @@ void FrameMan::SaveScreenToBitmap() {
return;
}
- GL_CHECK(glBindTexture(GL_TEXTURE_2D, g_WindowMan.GetScreenBufferTexture()));
+ GL_CHECK(glBindTexture(GL_TEXTURE_2D, g_WindowMan.GetScreenBuffer()->GetColorTexture().id));
GL_CHECK(glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_UNSIGNED_BYTE, m_ScreenDumpBuffer->line[0]));
}
@@ -776,6 +804,14 @@ void FrameMan::UpdateScreenOffsetForSplitScreen(int playerScreen, Vector& screen
void FrameMan::Draw() {
ZoneScopedN("Draw");
+ TracyGpuZone("FrameMan::Draw");
+
+ //rlSetShader(rlGetShaderIdDefault(), rlGetShaderLocsDefault());
+ Shader backgroundShader;
+ g_PresetMan.GetEntityPreset("Shader", "Background")->Clone(&backgroundShader);
+ glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
+ clear_to_color(m_BackBuffer8.get(), 0);
+ m_BackBuffer->Begin(true);
// Count how many split screens we'll need
int screenCount = (m_HSplit ? 2 : 1) * (m_VSplit ? 2 : 1);
@@ -792,9 +828,19 @@ void FrameMan::Draw() {
for (int playerScreen = 0; playerScreen < screenCount; ++playerScreen) {
screenRelativeEffects.clear();
screenRelativeGlowBoxes.clear();
-
- BITMAP* drawScreen = (screenCount == 1) ? m_BackBuffer8.get() : m_PlayerScreen.get();
- BITMAP* drawScreenGUI = drawScreen;
+ rlEnableColorBlend();
+ rlSetBlendMode(RL_BLEND_ALPHA);
+ rlEnableDepthTest();
+
+ m_PlayerScreen->Begin(true);
+ backgroundShader.Begin();
+ backgroundShader.Enable();
+ rlSetUniformSampler(backgroundShader.GetUniformLocation("rtePalette"), g_PostProcessMan.GetPaletteTexture());
+ backgroundShader.SetInt("drawMasked", 1);
+
+ //rlSetUniformSampler(backgroundShader.GetUniformLocation("rtePalette"), g_PostProcessMan.GetPaletteTexture());
+ BITMAP* drawScreen = (screenCount == 1) ? m_BackBuffer8.get() : m_PlayerScreen8.get();
+ BITMAP* drawScreenGUI = (screenCount == 1) ? m_BackBuffer8.get() : m_PlayerScreen8.get();
if (IsInMultiplayerMode()) {
drawScreen = m_NetworkBackBufferIntermediate8[m_NetworkFrameCurrent][playerScreen].get();
drawScreenGUI = m_NetworkBackBufferIntermediateGUI8[m_NetworkFrameCurrent][playerScreen].get();
@@ -802,7 +848,7 @@ void FrameMan::Draw() {
// Need to clear the backbuffers because Scene background layers can be too small to fill the whole backbuffer or drawn masked resulting in artifacts from the previous frame.
clear_to_color(drawScreenGUI, ColorKeys::g_MaskColor);
// If in online multiplayer mode clear to mask color otherwise the scene background layers will get drawn over.
- clear_to_color(drawScreen, IsInMultiplayerMode() ? ColorKeys::g_MaskColor : m_BlackColor);
+ clear_to_color(drawScreen, 0);
AllegroBitmap playerGUIBitmap(drawScreenGUI);
@@ -813,7 +859,7 @@ void FrameMan::Draw() {
if (IsInMultiplayerMode()) {
int layerCount = 0;
- for (const SceneLayer* sceneLayer: g_SceneMan.GetScene()->GetBackLayers()) {
+ for (const SLBackground* sceneLayer: g_SceneMan.GetScene()->GetBackLayers()) {
SLOffset[playerScreen][layerCount] = sceneLayer->GetOffset();
layerCount++;
@@ -873,7 +919,13 @@ void FrameMan::Draw() {
if (!IsInMultiplayerMode()) {
// Draw the intermediate draw splitscreen to the appropriate spot on the back buffer
blit(drawScreen, m_BackBuffer8.get(), 0, 0, screenOffset.GetFloorIntX(), screenOffset.GetFloorIntY(), drawScreen->w, drawScreen->h);
-
+ m_PlayerScreen->End();
+ backgroundShader.End();
+ if (screenCount > 1) {
+ m_BackBuffer->Begin(false);
+ DrawTextureRec(m_PlayerScreen->GetColorTexture(), {0, 0, static_cast(m_PlayerScreen8->w), -static_cast(m_PlayerScreen8->h)}, {screenOffset.m_X, screenOffset.m_Y}, {255, 255, 255, 255});
+ m_BackBuffer->End();
+ }
g_PostProcessMan.AdjustEffectsPosToPlayerScreen(playerScreen, drawScreen, screenOffset, screenRelativeEffects, screenRelativeGlowBoxes);
}
}
@@ -910,7 +962,16 @@ void FrameMan::Draw() {
if (IsInMultiplayerMode()) {
PrepareFrameForNetwork();
}
-
+ rlDisableDepthTest();
+ g_GLResourceMan.UpdateDynamicBitmap(m_BackBuffer8.get(), true);
+ backgroundShader.Begin();
+ backgroundShader.Enable();
+ rlSetUniformSampler(backgroundShader.GetUniformLocation("rtePalette"), g_PostProcessMan.GetPaletteTexture());
+ backgroundShader.SetInt("drawMasked", 1);
+ m_BackBuffer->Begin(false);
+ DrawTexture(g_GLResourceMan.GetStaticTextureFromBitmap(m_BackBuffer8.get()), 0.0f, 0.0f, {255, 255, 255, 255});
+ m_BackBuffer->End();
+ backgroundShader.End();
if (g_ActivityMan.IsInActivity()) {
g_PostProcessMan.PostProcess();
}
diff --git a/Source/Managers/FrameMan.h b/Source/Managers/FrameMan.h
index b6da8605ca..0e041efb97 100644
--- a/Source/Managers/FrameMan.h
+++ b/Source/Managers/FrameMan.h
@@ -7,6 +7,7 @@
#include
#include
+#include "glad/gl.h"
#define g_FrameMan FrameMan::Instance()
@@ -15,8 +16,8 @@ namespace RTE {
class AllegroScreen;
class AllegroBitmap;
class GUIFont;
- class ScreenShader;
-
+ class Shader;
+ class RenderTarget;
struct BitmapDeleter {
void operator()(BITMAP* bitmap) const;
};
@@ -68,6 +69,8 @@ namespace RTE {
/// Gets the 32bpp bitmap that is used for overlaying the screen.
/// @return A pointer to the overlay BITMAP. OWNERSHIP IS NOT TRANSFERRED!
BITMAP* GetOverlayBitmap32() const { return m_OverlayBitmap32.get(); }
+
+ std::shared_ptr GetBackBuffer() const { return m_BackBuffer; }
#pragma endregion
#pragma region Split - Screen Handling
@@ -182,7 +185,7 @@ namespace RTE {
#pragma region Drawing
/// Clears the 8bpp backbuffer with black.
- void ClearBackBuffer8() { clear_to_color(m_BackBuffer8.get(), m_BlackColor); }
+ void ClearBackBuffer8() { clear_to_color(m_BackBuffer8.get(), 0); }
/// Clears the 32bpp backbuffer with black.
void ClearBackBuffer32() { clear_to_color(m_BackBuffer32.get(), 0); }
@@ -196,6 +199,10 @@ namespace RTE {
/// @param transValue The transparency preset value. See the TransparencyPreset enumeration for values.
void SetTransTableFromPreset(TransparencyPreset transValue);
+ /// @brief Get the current alpha level for transparent draws.
+ /// @return Integer between 0-255 of alpha value.
+ unsigned char GetCurrentAlpha() {return m_CurrentAlpha;}
+
/// Flashes any of the players' screen with the specified color for this frame.
/// @param screen Which screen to flash.
/// @param color What color to flash it. -1 means no color or flash.
@@ -328,6 +335,10 @@ namespace RTE {
/// @return An reference to a ContentFile which described the palette location.
const ContentFile& GetPaletteFile() const { return m_PaletteFile; }
+ /// Getter for the default palette for image loading purposes, etc.
+ /// @return Const reference to the default palette.
+ const PALETTE& GetDefaultPalette() const { return m_DefaultPalette; }
+
/// Fades the palette in from black at a specified speed.
/// @param fadeSpeed Speed specified from (slowest) 1 - 64 (fastest).
void FadeInPalette(int fadeSpeed = 1) {
@@ -391,8 +402,10 @@ namespace RTE {
/// The key is an array of the RGBA values. The value is a pair of the color table itself and a time stamp of when it was last accessed for use during color table pruning.
std::array, std::pair>, DrawBlendMode::BlendModeCount> m_ColorTables;
Timer m_ColorTablePruneTimer; //!< Timer for pruning unused color tables to prevent ridiculous memory usage.
+ int m_CurrentAlpha; //!< Current alpha level for emulating trans colortables.
- std::unique_ptr m_PlayerScreen; //!< Intermediary split screen bitmap.
+ std::shared_ptr m_PlayerScreen8; //!< Intermediary split screen bitmap.
+ std::shared_ptr m_PlayerScreen; //!< Intermediary split screen bitmap.
int m_PlayerScreenWidth; //!< Width of the screen of each player. Will be smaller than resolution only if the screen is split.
int m_PlayerScreenHeight; //!< Height of the screen of each player. Will be smaller than resolution only if the screen is split.
@@ -414,7 +427,7 @@ namespace RTE {
Timer m_FlashTimer[c_MaxScreenCount]; //!< Flash screen timer.
std::string m_ScreenDumpName; //!< The filename of the screenshot to save.
- std::unique_ptr m_BackBuffer8; //!< Screen backbuffer, always 8bpp, gets copied to the 32bpp buffer for post-processing.
+ std::shared_ptr m_BackBuffer8; //!< Screen backbuffer, always 8bpp, gets copied to the 32bpp buffer for post-processing.
std::unique_ptr m_BackBuffer32; //!< 32bpp backbuffer, only used for post-processing.
std::unique_ptr m_OverlayBitmap32; //!< 32bpp bitmap used for overlaying (fading in/out or darkening) the screen.
std::unique_ptr m_ScreenDumpBuffer; //!< Temporary buffer for making quick screencaps. This is used for color conversion between 32bpp and 24bpp so we can save the file.
@@ -427,6 +440,8 @@ namespace RTE {
std::unique_ptr m_NetworkBackBufferFinal8[2][c_MaxScreenCount]; //!< Per-player allocated frame buffer to copy Intermediate before sending.
std::unique_ptr m_NetworkBackBufferFinalGUI8[2][c_MaxScreenCount]; //!< Per-player allocated frame buffer to copy Intermediate before sending. Used to draw UI only.
+ std::shared_ptr m_BackBuffer; //!< Main render backbuffer.
+
Vector m_TargetPos[2][c_MaxScreenCount]; //!< Frame target position for network players.
bool m_StoreNetworkBackBuffer; //!< If true, dumps the contents of the m_BackBuffer8 to the network backbuffers every frame.
diff --git a/Source/Managers/GLResourceMan.cpp b/Source/Managers/GLResourceMan.cpp
new file mode 100644
index 0000000000..19fd2e4c75
--- /dev/null
+++ b/Source/Managers/GLResourceMan.cpp
@@ -0,0 +1,153 @@
+#include "GLResourceMan.h"
+
+#include "ContentFile.h"
+#include "RTEError.h"
+
+#include "GLCheck.h"
+#include "allegro.h"
+#include
+
+#include "tracy/Tracy.hpp"
+#include "tracy/TracyOpenGL.hpp"
+
+#include "raylib/raylib.h"
+#include "raylib/rlgl.h"
+
+using namespace RTE;
+
+GLResourceMan::GLResourceMan() = default;
+
+GLResourceMan::~GLResourceMan() = default;
+
+void GLResourceMan::Clear() {
+ for (auto prog: m_Shaders) {
+ GL_CHECK(glDeleteProgram(prog));
+ }
+ for (auto& texture: m_StaticTextures) {
+ glDeleteTextures(1, &texture->m_Texture);
+ }
+ for (auto& shaderData: m_ShaderCache) {
+ glDeleteShader(shaderData.second.second);
+ }
+}
+
+void GLResourceMan::Destroy() { Clear(); }
+void GLResourceMan::Initialize() { Clear(); }
+
+GLuint GLResourceMan::CompileShader(const std::string& filename, ShaderType type) {
+ return 0;
+}
+
+GLuint GLResourceMan::MakeGLProgram() {
+ return glCreateProgram();
+}
+
+// std::shared_ptr GLResourceMan::MakeShaderProgram(const std::string& name, const std::string& vertexShaderPath, const std::string& fragmentShaderPath) {
+// if (m_Shaders.find(name) != m_Shaders.end()) {
+// RTEAbort("Attempted to reregister Shader: " + name);
+// } else {
+// m_Shaders[name] = std::make_shared(vertexShaderPath, fragmentShaderPath);
+// return m_Shaders[name];
+// }
+// return nullptr;
+// }
+
+GLBitmapInfo* GLResourceMan::GetBitmapInfo(BITMAP* bitmap) {
+ return reinterpret_cast(bitmap->extra);
+}
+
+Texture2D GLResourceMan::GetStaticTextureFromFile(const std::string& filename) {
+ BITMAP* bitmap = ContentFile(filename.c_str()).GetAsBitmap();
+ return GetStaticTextureFromBitmap(bitmap);
+}
+
+GLBitmapInfo* GLResourceMan::MakeBitmapInfo() {
+ m_StaticTextures.emplace_back(new GLBitmapInfo);
+ m_StaticTextures.back()->m_ID = m_StaticTextures.size();
+ return m_StaticTextures.back().get();
+}
+
+Texture2D GLResourceMan::GetStaticTextureFromBitmap(BITMAP* bitmap) {
+ if (!bitmap->extra) {
+ m_StaticTextures.emplace_back(new GLBitmapInfo);
+ m_StaticTextures.back()->m_ID = m_StaticTextures.size();
+ bitmap->extra = reinterpret_cast(m_StaticTextures.back().get());
+ GL_CHECK(glPixelStorei(GL_UNPACK_ALIGNMENT, bitmap_color_depth(bitmap) == 8 ? 1 : 4));
+ m_StaticTextures.back()->m_Texture = rlLoadTexture(bitmap->line[0], bitmap->w, bitmap->h, bitmap_color_depth(bitmap) == 8 ? PIXELFORMAT_UNCOMPRESSED_GRAYSCALE : PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, 1);
+
+ return {
+ .id = m_StaticTextures.back()->m_Texture,
+ .width = bitmap->w,
+ .height = bitmap->h,
+ .mipmaps = 0,
+ .format = bitmap_color_depth(bitmap) == 8 ? PIXELFORMAT_UNCOMPRESSED_GRAYSCALE : PIXELFORMAT_UNCOMPRESSED_R8G8B8A8};
+ } else {
+ return {
+ .id = GetBitmapInfo(bitmap)->m_Texture,
+ .width = bitmap->w,
+ .height = bitmap->h,
+ .mipmaps = 0,
+ .format = 0};
+ }
+ return {0, 0, 0, 0, -1};
+}
+
+
+GLuint GLResourceMan::GetDynamicUploadBuffer(BITMAP* bitmap) {
+ if (!bitmap->extra) {
+ GetStaticTextureFromBitmap(bitmap);
+ }
+ GLBitmapInfo* info = GetBitmapInfo(bitmap);
+
+ if (!info->m_UpdateBuffer) {
+ GLuint updateBuffer;
+ glGenBuffers(1, &updateBuffer);
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, updateBuffer);
+ glBufferData(GL_PIXEL_UNPACK_BUFFER, bitmap->w * bitmap->h * bitmap_color_depth(bitmap) / 8, nullptr, GL_DYNAMIC_DRAW);
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
+ info->m_UpdateBuffer = updateBuffer;
+ }
+ return info->m_UpdateBuffer;
+}
+
+GLuint GLResourceMan::UpdateDynamicBitmap(BITMAP* bitmap, bool updated, const std::vector& updateRegions) {
+ ZoneScopedN("Bitmap Upload");
+ GLuint texture = GetStaticTextureFromBitmap(bitmap).id;
+ if (updated) {
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glPixelStorei(GL_UNPACK_ALIGNMENT, bitmap_color_depth(bitmap) == 8 ? 1 : 4);
+ if (updateRegions.size() == 0) {
+ GL_CHECK(glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, bitmap->w, bitmap->h, bitmap_color_depth(bitmap) == 8 ? GL_RED : GL_RGBA, GL_UNSIGNED_BYTE, bitmap->line[0]));
+ } else {
+ int bytesPerPixel = bitmap_color_depth(bitmap) / 8;
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, GetDynamicUploadBuffer(bitmap));
+ std::vector offsets = {0};
+ for (size_t i = 0; i < updateRegions.size(); ++i) {
+ std::vector pixels(updateRegions[i].m_Width * updateRegions[i].m_Height * bytesPerPixel);
+ for (size_t y = 0; y < updateRegions[i].m_Height; y++) {
+ memcpy(
+ pixels.data() + y * static_cast(updateRegions[i].m_Width) * bytesPerPixel,
+ bitmap->line[y + updateRegions[i].m_Corner.GetFloorIntY()] + updateRegions[i].m_Corner.GetFloorIntX(),
+ updateRegions[i].m_Width * bytesPerPixel);
+ }
+ glBufferSubData(GL_PIXEL_UNPACK_BUFFER, offsets[i], updateRegions[i].m_Width * updateRegions[i].m_Height * bytesPerPixel, pixels.data());
+ offsets.emplace_back(updateRegions[i].m_Width * updateRegions[i].m_Height * bytesPerPixel);
+ }
+ for (size_t i = 0; i < updateRegions.size(); ++i) {
+ GL_CHECK(glTexSubImage2D(
+ GL_TEXTURE_2D,
+ 0,
+ updateRegions[i].m_Corner.GetFloorIntX(),
+ updateRegions[i].m_Corner.GetFloorIntY(),
+ updateRegions[i].m_Width,
+ updateRegions[i].m_Height,
+ bytesPerPixel == 1 ? GL_RED : GL_RGBA,
+ GL_UNSIGNED_BYTE,
+ (void*)offsets[i]
+ ));
+ }
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
+ }
+ }
+ return texture;
+}
\ No newline at end of file
diff --git a/Source/Managers/GLResourceMan.h b/Source/Managers/GLResourceMan.h
new file mode 100644
index 0000000000..eb8f029e13
--- /dev/null
+++ b/Source/Managers/GLResourceMan.h
@@ -0,0 +1,58 @@
+#pragma once
+
+#include "Singleton.h"
+
+#include "glad/gl.h"
+#include
+#include
+#include
+#include
+#include
+#include "Shader.h"
+#include "Box.h"
+
+#include "raylib/raylib.h"
+namespace RTE {
+#define g_GLResourceMan GLResourceMan::Instance()
+ enum class ShaderType {
+ Fragment,
+ Vertex
+ };
+ struct GLBitmapInfo {
+ GLuint m_Texture{0};
+ GLuint* m_Textures{nullptr};
+ size_t m_ID{0};
+ GLuint m_UpdateBuffer{0};
+ };
+ class GLResourceMan : public Singleton {
+ public:
+ GLResourceMan();
+ ~GLResourceMan();
+
+ void Initialize();
+ void Destroy();
+ void Clear();
+
+ GLuint CompileShader(const std::string& filename, ShaderType type);
+ GLuint MakeGLProgram();
+
+ // std::shared_ptr MakeShaderProgram(const std::string& name, const std::string& vertexShaderPath, const std::string& fragmentShaderPath);
+ // std::shared_ptr GetShaderByName(const std::string& name);
+ Texture2D GetStaticTextureFromFile(const std::string& filename);
+ Texture2D GetStaticTextureFromBitmap(BITMAP* bitmap);
+
+ GLBitmapInfo* GetBitmapInfo(BITMAP* bitmap);
+ GLuint GetDynamicUploadBuffer(BITMAP* bitmap);
+ GLuint UpdateDynamicBitmap(BITMAP* bitmap, bool updated, const std::vector& = {});
+
+ GLBitmapInfo* MakeBitmapInfo();
+
+
+ private:
+ std::vector> m_StaticTextures;
+ std::vector