Add better cull region calculation, change gCurrentScreenWidth to 1600 to allow aspect ratios up to 6.2.

This commit is contained in:
Malkierian 2024-12-09 15:06:02 -07:00 committed by Alejandro Asenjo Nitti
parent 7a333a68c2
commit 354de2f364
2 changed files with 16 additions and 5 deletions

View File

@ -110,7 +110,7 @@ f32 sGroundPositions360z[4] = {
};
// Declare global variables for screen dimensions
float gCurrentScreenWidth = 320.0f * 3; // Default width
float gCurrentScreenWidth = 320.0f * 5; // Default width
float gCurrentScreenHeight = 240.0f * 3; // Default height
// Custom floating-point modulo function (replaces fmodf)
@ -258,12 +258,15 @@ void Background_DrawStarfield(void) {
vx = (zCos * bx) + (zSin * by) + currentScreenWidth / 2.0f;
vy = (-zSin * bx) + (zCos * by) + currentScreenHeight / 2.0f;
float thirdWidth = currentScreenWidth / 3;
float thirdHeight = currentScreenHeight / 3;
float originalWidth = currentScreenWidth / 5;
float originalAspect = originalWidth / (currentScreenHeight / 3);
float renderMaskWidth = originalWidth * (OTRGetAspectRatio() / originalAspect);
float marginX = (currentScreenWidth - renderMaskWidth) / 2;
float renderMaskHeight = currentScreenHeight / 3;
// Check if the star is within the visible screen area with margin
if (vx >= (thirdWidth - STAR_MARGIN) && vx <= ((thirdWidth * 2) + STAR_MARGIN) &&
vy >= (thirdHeight - STAR_MARGIN) && vy <= ((thirdHeight * 2) + STAR_MARGIN)) {
if (vx >= (marginX - STAR_MARGIN) && vx <= (marginX + renderMaskWidth + STAR_MARGIN) &&
vy >= (renderMaskHeight - STAR_MARGIN) && vy <= ((renderMaskHeight * 2) + STAR_MARGIN)) {
FrameInterpolation_RecordOpenChild("Starfield", i);
FrameInterpolation_RecordMarker(__FILE__, __LINE__);

View File

@ -589,3 +589,11 @@ extern "C" void* GameEngine_Malloc(size_t size) {
SPDLOG_INFO("Memory pool resized from {} to {}", MemoryPool.length - chunk, MemoryPool.length);
return GameEngine_Malloc(size);
}
extern "C" float GetWindowWidth() {
return Ship::Context::GetInstance()->GetWindow()->GetWidth();
}
extern "C" float GetWindowHeight() {
return Ship::Context::GetInstance()->GetWindow()->GetHeight();
}