Skip to content

Split the main framebuffer in Killzone, to avoid texturing-from-current-rendertarget#15934

Merged
hrydgard merged 8 commits intomasterfrom
killzone-split-framebuffer
Aug 31, 2022
Merged

Split the main framebuffer in Killzone, to avoid texturing-from-current-rendertarget#15934
hrydgard merged 8 commits intomasterfrom
killzone-split-framebuffer

Conversation

@hrydgard
Copy link
Copy Markdown
Owner

@hrydgard hrydgard commented Aug 30, 2022

Fixes #6207

Work-in-progress, need to verify that it's actually doing the effect right, and maybe can do the checks better.

There's no way around a compat.ini hack for this game, we just can't practically detect this situation in a generic way. But this approach does appear to work fine.

Additionally, tweaks ForceMax60Fps to work for the game and enables it, for more speed. Not sure if I should make a separate compat.ini flag for the tweak there.

@hrydgard hrydgard added this to the v1.14.0 milestone Aug 30, 2022
@hrydgard hrydgard changed the title Killzone split framebuffer Split the main framebuffer in Killzone, to avoid texturing-from-current-rendertarget Aug 30, 2022
@hrydgard
Copy link
Copy Markdown
Owner Author

Alright, the full effect is working now, and runs pretty fast.

Some cleanup left to do (like getting rid of the matrix multiplication), but almost ready for review, so marking as such.

@hrydgard hrydgard marked this pull request as ready for review August 30, 2022 23:48
@hrydgard hrydgard added the GE emulation Backend-independent GPU issues label Aug 30, 2022
@hrydgard
Copy link
Copy Markdown
Owner Author

Alright, I'm pretty happy with it now, despite minor gross-ness. The results are great, and we don't really have a better way to deal with games that aggressively use the edge of the same framebuffer it's rendering to as heavily-used temporary storage.

@hrydgard hrydgard merged commit 3168f8d into master Aug 31, 2022
@hrydgard hrydgard deleted the killzone-split-framebuffer branch August 31, 2022 07:37
Comment on lines +960 to 963
if (matchInfo->yOffset < 0 && matchInfo->yOffset - minSubareaHeight <= 0) {
// Can't be inside the framebuffer.
return false;
}
Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screwed up the logic here, will fix tomorrow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

GE emulation Backend-independent GPU issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Killzone liberation - slow framebuffer CLUT effects, similar to Sonic

1 participant