-
Notifications
You must be signed in to change notification settings - Fork 11
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
RPLE and OptiFine compatibility #43
Conversation
Co-authored-by: Ven <[email protected]>
Also, the This bypasses all the redundant logic that FalseTweaks does in that method, and lets us avoid any FalseTweaks will have the other half of this specific optimization added in 2.8.0, but it depends on the changes added to Neodymium in this PR, otherwise it spams GL errors in the log. |
hi whats RPLE |
|
Yes, the main difference we noticed during testing is a huge decrease in microstuttering. This compat is mainly useful to reduce those spikes in frametimes instead of getting a huge FPS boost.
This seems to be an odd issue in the vanilla culling logic, FalseTweaks' occlusion engine (with the mentioned patches planned for 2.8.0) seems to fix it. We couldn't pinpoint what exactly causes this unfortunately.
One solution i can propose for this is moving the 4 implementation variants into utility classes. I will add this to the PR in a bit, it should reduce the spamminess of the compat variants by a bit. |
OptiFine has a few internal bugs, (some fixed by RPLE or FalseTweaks, with all being eventually migrated to the latter). Optimally with no FPS limit, 50%+ of the time should be spent waiting on |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We couldn't pinpoint what exactly causes this unfortunately.
No worries then, I was just hoping it was a simple issue.
One solution i can propose for this is moving the 4 implementation variants into utility classes.
Nice, it's a lot better now.
some fixed by RPLE or FalseTweaks
I see, I probably should've tried with a less minimal setup too then.
- Make `shortUV` config comment mention interaction with RPLE/OF - Fix NeoRenderer#init implSpec javadoc - Update OF shader status in readme
Summary
We have implemented full compatibility for OptiFine Shaders and RPLE colored light.
The following configurations have been tested:
Any bugs we could find have been patched, although some external validation would is advised.
Flying far off to the world border still works as expected with no noticeable jitter.
Both RPLE & OptiFine extend the vertex stride, with OptiFine shaders having the most significant impact:
4 attributes, 28 bytes (24 bytes with short UVs)
9 attributes, 72 bytes
6 attributes, 36 bytes (32 bytes with short UVs)
12 attributes, 88 bytes
(Note that short UVs are currently not supported with OptiFine shaders)
This leads to a significant increase in VRAM usage, as such we may need to increase the default VRAM size depending on the current configuration. Currently, around 1GiB~ was needed in order to load a 16 chunk radius. With the maximum possible allocation being a little under 2GiB, dynamic memory allocation may also be needed in the future.
Technical