Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix car reflections in Outrun by implementing per-bit color masking #13640

Merged
merged 1 commit into from
Nov 9, 2020

Conversation

hrydgard
Copy link
Owner

@hrydgard hrydgard commented Nov 8, 2020

Followup to #13636 , implementing the fix for the yellow/blue reflection issue that surfaced after merging that. Just like that one, it's only enabled for Outrun for now, but I'll enable it wider once I gain confidence in it.

See #11358 (comment) for technical details - basically, the PSP can't just mask off the R,G,B and A channels when rendering, it can also mask off individual bits, and Outrun uses this to perform an intricate trick.

We do this masking in the shader. Note: This fix only works on Vulkan, GLES 3+ and desktop GL and D3D11. Not D3D9 and GLES 2.

ULES00262_00015

@thedax :)

@hrydgard hrydgard added the GE emulation Backend-independent GPU issues label Nov 8, 2020
@hrydgard hrydgard added this to the v1.11.0 milestone Nov 8, 2020
@thedax
Copy link
Collaborator

thedax commented Nov 9, 2020

The reflections appear to be fixed in both OpenGL & Vulkan (unable to test Direct3D stuff anymore since I can't realistically compile Windows builds here without a VM, which I'm not keen on doing :P).

At any rate, here are a couple shots from Vulkan:
image

image

Nice to see another long-standing issue getting some attention :)

@hrydgard hrydgard merged commit b9dd866 into master Nov 9, 2020
@hrydgard hrydgard deleted the shader-color-write-mask branch September 5, 2022 07:49
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.

3 participants