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

upstream #1

Merged
merged 74 commits into from
Dec 15, 2024
Merged

upstream #1

merged 74 commits into from
Dec 15, 2024

Conversation

ThatMG393
Copy link
Owner

No description provided.

IMS212 and others added 30 commits September 14, 2024 13:42
This improves terrain rendering performance significantly
on Intel Xe-LP graphics under Linux.
The resolution controls would not fit in the allocated space, so the
rendering of slider controls was changed to enable rendering the slider
bar and the value text on separate lines.

Co-authored-by: MeeniMc <68366846+MeeniMc@users.noreply.github.com>
Additionally, adjust the rendering of the controls
to be less confusing when disabled, and provide an
explanation as to what the option does.
Some core shaders were relying on the model part faces being
written out in a specific order. We still don't support
core shaders, but the fix here is trivial enough.

Fixes #2745
The requested capacity was being multiplied by the vertex
stride more than once, which resulted in far too much
memory being allocated.

Closes #2792
This increases the maximum size of vertex and index buffers
to 4 billion elements, since the Uint32 types stored in memory are
now safely represented with Int64.

For vertex buffers, this increases their maximum size to 80 GiB,
and index buffers have a maximum size of 16 GiB, whereas both
were limited to 2 GiB prior.
This eliminates 8-13% of the rendered sections at higher render distances on average in testing, and correspondingly reduces graph search time by a similar amount.
This potentially fixes some cases of #2835.
We're no longer a Fabric-exclusive mod, so let's get rid of
the suffix.
Co-authored-by: muzikbike <52297970+muzikbike@users.noreply.github.com>
Use the accurate vertex positions for unaligned and aligned (but rotated) quads.
* Shared logic is moved into a build plugin where possible
* Build time is significantly improved when the Gradle daemon is warmed
* Mixins are remapped in-place now, eliminating the need for refmaps
  at runtime. This also gets rid of some warning messages at startup.
* Module relationships are now correctly represented in IDEA for other
  source sets (fixes a lot of code analysis features)
* Split Java source and resources into different configurations
* Run configurations are now consistent between NeoForge/Fabric
* The common project is no longer remapped unnecessarily
* Updated Gradle and build plugins
These files are only meant to be in the source distribution, and
Minecraft doesn't like them.
Some integrated GPUs, such as RDNA3.5, appear to use
the PCI_CLASS_DISPLAY_OTHER class.
The bugs with xdg-open have been resolved upstream and most
Linux distributions are shipping the patches.

Also, make sure we get a successful exit code from the XDG
implementation.
This will help to avoid class-load issues and makes the code more
hygienic.
jellysquid3 and others added 29 commits November 16, 2024 19:09
Some changes were made to cloud rendering in newer versions
that needed to be replicated in Sodium.

- The alpha cutoff for clouds was changed to (a < 10).
- Texture loading can now gracefully fail, and it is
expected that rendering is skipped when this happens.
- The movement/positioning of clouds was slightly changed.
- The render pass system now needs to be told about
render target usages (fixes #2883).

This commit also improves mesh building time by around 35% on
a fast processor (AMD Ryzen HX AI 370) through various
micro-optimizations.
Minecraft 1.21.2 changed some of the rules, and this was
causing the faces of transparent blocks to be rendered
even when they were hidden by full opaque blocks.

Fixes #2850
The NVIDIA driver enables a driver feature called
"Threaded Optimizations" when it finds Minecraft,
which causes severe performance issues and sometimes
even crashes.

Newer versions of the driver seem to use a slightly
different heuristic which our workaround doesn't
address.

So, instead, use an alternative method that enables
GL_DEBUG_OUTPUT_SYNCHRONOUS. This seems to reliably
disable the functionality *even if* the user has
configured it otherwise in their driver settings.

Additionally, on Windows, we now always indicate to
the driver that Minecraft is running, so that users
with hybrid graphics don't see regressed performance.
Render sections and regions are sorted after the graph traversal is performed. This decouples their ordering from the graph, which isn't entirely correct for draw call sorting.

Fixes #2266
The state of the depth test prior to cloud rendering is
undefined. After rendering, it is expected to be
disabled again.
Rounding of the values now happens after the 16-bit
intermediaries are added together.

This affected some animated textures, causing them to
exhibit flickering behavior.
This covers the following additional blocks:
- Cauldrons
- Brewing Stands
- Bells

Co-authored-by: JellySquid <jellysquid@pm.me>
Avoids rebuilding the render lists and doing a graph search
more often than necessary by checking if the section actually
changed in a way that's relevant to the graph search.

For worlds that update their blocks frequently (every tick or
every redstone tick) this avoids half the graph searches. Some
graph searches are still necessary to schedule rebuild tasks,
but when the task results come back, this doesn't do another
graph search unless the section's visibility data or build state
changed in a way that needs the render list to be updated.
This fixes some problems where very large block entities in
nearby sections may be incorrectly culled. But it does not
comprehensively fix the problem for all other sections,
since that would require visiting the 27-neighborhood of
every section, which is too slow.
The OpenGL ICD name now includes the file extension,
which the regex expressions were not matching.
For systems with hybrid graphics, it may be the case
that an incompatible graphics driver is installed, but that
it isn't used for the OpenGL context.

We can avoid showing errors in this situation by checking
the vendor string of the context immediately after
creation.

This is not the most robust check, but in practice, a single
system should not have multiple graphics drivers installed
from the same vendor, so checking the string should be
relatively safe.
Fix section and region sorting by using the correct section coordinate instead of the integer part of the camera transform, which is incorrect near the origin.

Closes #2918
@ThatMG393 ThatMG393 merged commit 1400074 into ThatMG393:dev Dec 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants