mojira.dev
MC-267864

Two-tall plant model/rendering not optimized

The bug

Two-block-tall plants such as tall grass and tall flowers can be optimized such that they take less of a toll on the game's rendering engine and increase game performance.

Currently, the bottom half and top half are both separate block models, meaning that each full plant takes up eight texture planes. However, we can cut this in half and render the same plant using four texture planes, considerably increasing performance. This involves redoing textures such that each plant uses a single 16×32 texture rather than two 16×16 textures.

While this results in a considerable performance increase, I don't like this nearly as much as the other model optimizations I've done due to it causing the particles of these blocks to become distorted, potentially affecting how the blocks look with respect to lighting, and also violating the paradigm that every block texture must be a 16×16 square by default, among other reasons. As such, the attached demo resource pack only applies this to five of seven potential target plants (leaving out pitcher plants and sunflowers). If Mojang is still interested in implementing this optimization, I can extend it to these two plants as well if desired.

How to reproduce

As MC-118624 remains unfixed for some reason, we will need to set up our test environment manually.

  1. Create a superflat world with the preset

    minecraft:bedrock,2*minecraft:dirt,minecraft:grass_block;minecraft:the_void
  2. Execute the command

    /tp @s 0 -60 0
  3. Execute the command

    /fill ~-90 ~ ~-90 ~90 ~ ~90 minecraft:tall_grass[half=lower]
  4. Execute the command

    /fill ~-90 ~1 ~-90 ~90 ~1 ~90 minecraft:tall_grass[half=upper]
  5. Execute the command

    /tp @s 0 0 0 0 90
  6. Set your render distance and simulation distance to five chunks

  7. Open the performance graphs with F3+2

  8. Observe with and without the attached resource pack

Expected results

Good framerates in vanilla.

Actual results

Not necessarily. The resource pack improves things considerably.

Linked issues

Attachments

Comments

migrated

Yeah... This will also ruin single-block rendering of these plants (which can be made with commands), note that double chests used to render 1 end as both and the other end invisible. This was changed so that each end renders its corresponding side.

Also, reminding you of https://bugs.mojang.com/browse/MC-249034?focusedId=1150345&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-1150345

muzikbike

I'd say this is different from the latter point given that there is a clear performance benefit to making this change. The major things that make me hesitant are other issues with the game that this fix exposes, which could potentially themselves be fixed via other means.

migrated

Fixing the particle stretching is just including a square texture file with part of the whole texture, kinda like how it already is 2 separate texture files. Making particles consider element/texture stretching requires quite a rewrite of the block/item particle code.
While yes, it optimizes it, realistically you're not going to get affected by this much, nobody out there is going to fill a massive area with just double plants,and even if they did, there's other blocks that're more impactful.

You say it's different from the latter point (the reminder), but, quoting you in this report: "I don't like this nearly as much as the other model optimizations", in other words, you dislike the suggested optimization, in other words you prefer the current behavior or solution.

muzikbike

Mojang have recently been trying to optimize Java Edition performance, so even though I don't think this is a particularly elegant optimization, it still improves the game overall. If they choose to implement it, fine, if they choose not to do this specific optimization, also fine.

In addition, this resource pack still makes lower-half and top-half blocks visually distinguishable, even if it's not in the normal intuitive way.

muzikbike

(Unassigned)

Confirmed

Gameplay

Normal

Performance, Rendering

model-optimization

1.20.4, 23w51b

Retrieved