Rendering performance optimization for glass pane models
The bug
Glass panes and their stained variants are fairly commonly and extensively used blocks, but can contribute to frame drops in many occasions due to using a rather primitive multipart system to display connections. For example, a "straight" window-type pane with no branching will utilize three texture planes for the full face, when it really only requires one.
It is possible to optimize the models such that for side faces, the minimum number of faces is used to render the desired result, which results in a client performance bonus. This requires completely ripping out the old multipart system, model files and templates that pane blocks currently use, and replacing it with a new one. This system is more complex (nine models are required per pane type instead of five, and the blockstates file for each pane is twice as long), but performance is verifiably improved as a result. The appearances of panes should be unaffected aside from fixing some vanilla mapping issues.
I haven't optimized the top and bottom faces since ideally these should be culled by other pane blocks above and below them with respect to the shape of said panes, however this does not happen for some reason (MC-264676). See also MC-50349.
How to reproduce
- Create a creative superflat world with the following preset:
minecraft:barrier;minecraft:the_void
- Set the render distance to 12
- Run the command
/tp @s 0 -20 0 0 0
- Set up walls of panes by running the following six commands:
/fill -60 -63 30 60 63 30 glass_pane
,
/fill -60 -63 32 60 63 32 glass_pane
,
/fill -60 -63 34 60 63 34 glass_pane
,
/fill -60 -63 36 60 63 36 glass_pane
,
/fill -60 -63 38 60 63 38 glass_pane
,
/fill -60 -63 40 60 63 40 glass_pane
- Open the performance graph using F3+2
- Observe with the default resources versus the attached fix pack
Expected results
Good framerates with vanilla resources.
Actual results
The resource pack gives better performance.
How to fix
Remove all of the glass-pane related model files from the vanilla models/block directory and replace them with those in the resource pack, and replace the blockstates files in vanilla with those in the resource pack. I give full permission or whatever to Mojang to use these. Billions of computers will thank you.
Linked Issues
testing discovered1
relates to14
Created Issue:
Rendering performance optimization for glass pane models
Closely relates to
MC-260296, MC-262427,MC-262433, MC-262452, MC-262461, MC-262470, MC-262527, MC-262641,MC-262652, MC-262689, MC-262953, MC-267127 and MC-267281.The bug
Glass panes and their stained variants are fairly commonly and extensively used blocks, but can contribute to frame drops in many occasions due to using a rather primitive multipart system to display connections. For example, a "straight" window-type pane with no branching will utilize three texture planes for the full face, when it really only requires one.
It is possible to optimize the models such that for side faces, the minimum number of faces is used to render the desired result, which results in a client performance bonus. This requires completely ripping out the old multipart system, model files and templates that pane blocks currently use, and replacing it with a new one. This system is more complex (nine models are required per pane type instead of five, and the blockstates file for each pane is twice as long), but performance is verifiably improved as a result. The appearances of panes should be unaffected aside from fixing some vanilla mapping issues.
I haven't optimized the top and bottom faces since ideally these should be culled by other pane blocks above and below them with respect to the shape of said panes, however this does not happen for some reason (MC-264676). See also MC-50349.
How to reproduce
- Create a creative superflat world with the following preset:
minecraft:barrier;minecraft:the_void- Set the render distance to 12
- Run the command
/tp @s 0 -20 0 0 0- Set up walls of panes by running the following six commands:
/fill -60 -63 30 60 63 30 glass_pane,
/fill -60 -63 32 60 63 32 glass_pane,
/fill -60 -63 34 60 63 34 glass_pane,
/fill -60 -63 36 60 63 36 glass_pane,
/fill -60 -63 38 60 63 38 glass_pane,
/fill -60 -63 40 60 63 40 glass_pane- Open the performance graph using F3+2
- Observe with the default resources versus the attached fix pack
Expected results
Good framerates with vanilla resources.
Actual results
The resource pack gives better performance.
How to fix
Remove all of the glass-pane related model files from the vanilla models/block directory and replace them with those in the resource pack, and replace the blockstates files in vanilla with those in the resource pack. I give full permission or whatever to Mojang to use these. Billions of computers will thank you.
relates to
testing discovered
Closely relates to
MC-260296, MC-262427,MC-262433, MC-262452, MC-262461, MC-262470, MC-262527, MC-262641,MC-262652, MC-262689, MC-262953, MC-267127 and MC-267281.The bug
Glass panes and their stained variants are fairly commonly and extensively used blocks, but can contribute to frame drops in many occasions due to using a rather primitive multipart system to display connections. For example, a "straight" window-type pane with no branching will utilize three texture planes for the full face, when it really only requires one.
It is possible to optimize the models such that for side faces, the minimum number of faces is used to render the desired result, which results in a client performance bonus. This requires completely ripping out the old multipart system, model files and templates that pane blocks currently use, and replacing it with a new one. This system is more complex (nine models are required per pane type instead of five, and the blockstates file for each pane is twice as long), but performance is verifiably improved as a result. The appearances of panes should be unaffected aside from fixing some vanilla mapping issues.
I haven't optimized the top and bottom faces since ideally these should be culled by other pane blocks above and below them with respect to the shape of said panes, however this does not happen for some reason (MC-264676). See also MC-50349.
How to reproduce
- Create a creative superflat world with the following preset:
minecraft:barrier;minecraft:the_void- Set the render distance to 12
- Run the command
/tp @s 0 -20 0 0 0- Set up walls of panes by running the following six commands:
/fill -60 -63 30 60 63 30 glass_pane,
/fill -60 -63 32 60 63 32 glass_pane,
/fill -60 -63 34 60 63 34 glass_pane,
/fill -60 -63 36 60 63 36 glass_pane,
/fill -60 -63 38 60 63 38 glass_pane,
/fill -60 -63 40 60 63 40 glass_pane- Open the performance graph using F3+2
- Observe with the default resources versus the attached fix pack
Expected results
Good framerates with vanilla resources.
Actual results
The resource pack gives better performance.
How to fix
Remove all of the glass-pane related model files from the vanilla models/block directory and replace them with those in the resource pack, and replace the blockstates files in vanilla with those in the resource pack. I give full permission or whatever to Mojang to use these. Billions of computers will thank you.
relates to
The bug
The edge texture is mapped onto the top and bottom of glass panes in such a way that it "repeats" within the same block space, which is unexpected.
How to reproduce
Compare the texture on the top of a glass pane to the texture on the side (when connected to a block you can see through). The top should match the side, but does not.
How to fix
The resource pack attached to MC-267315 fixes this issue entirely.
Relates to: MC-260296 MC-262427 MC-262452 MC-262461 MC-262470 MC-262527 MC-262641 MC-262652 MC-262689 MC-262953 MC-267127 MC-267315 MC-267864 MC-279350
The bug
The current multipart system for walls can use more quads than are necessary to achieve an identical visual result. Making Minecraft render more quads increases render lag, so decreasing the amount needed will improve performance.
The case in question is much the same as MC-267281, arising where two opposite connections of a wall are either both "low" or both "tall". Minecraft, by default, will render one model in each direction, with a total of two. However, the exact same visual outcome can be achieved using a single, continuous model, reducing the amount of quads used for this case from 10 to 6. Since there are no texture mapping issues on walls (unlike MC-109478 and MC-225819/MC-267871), this fix also completely preserves their appearance, so we get no bonus fixes.
How to reproduce
- Create this superflat world:
minecraft:barrier;minecraft:the_void
- Initiate flying mode
/fill -30 -63 -30 30 -56 30 cobblestone_wall
/fill -30 -55 -30 30 -48 30 cobblestone_wall
/tp @s 0 0 0 0 90
- Compare framerates with and without the attached resource pack using F3+2
Expected results
Vanilla's framerates would be ideal.
Actual results
The resource pack gives better results.
How to fix
Adopt the system demonstrated by this resource pack for walls. I give Mojang full permission to use this resource pack to fix this optimization problem.
Relates to: MC-260296 MC-262427 MC-262452 MC-262461 MC-262470 MC-262527 MC-262641 MC-262652 MC-262689 MC-262953 MC-267127 MC-267281 MC-267315 MC-267864 MC-279350 MC-279354
The bug
Bamboo fences, like other fence types (see MC-267281), are not modelled in a way which is optimal for rendering performances. As a result, areas which use large amounts of bamboo fences will decrease framerate much more than otherwise should be the case.
Bamboo fences use a fundamentally different system for modelling compared to other fences, which is why I'm reporting this separately from the other fences. Tragically the issues with the normal fence model have carried over to the system used for bamboo fences.
The model system bamboo fences use is also more complicated than is neccessary - it uses four models for orthogonal connections, whereas this optimized system achieves a visually identical outcome using just three.
Note that since bamboo models use a unique texture rather than just copying the bamboo planks texture, the texture mapping will need to be shifted around. A modified version is found within the attached resource pack - the visual outcome will be identical, but existing resource packs will need to be changed by their authors to fit around it (assuming they don't take the lazy route and just copy over the old, terrible models).
How to reproduce
- Create a creative Superflat world with the following preset:
minecraft:barrier;minecraft:the_void
- Enter flying mode by double pressing the jump button
- Run the command
/tp @s 0 -20 0 0 90
- Run the command
/fill -30 -63 -30 30 -56 30 bamboo_fence
- Open the performance graphs via F3+2
- Switch between the default resources and the attached resource pack, comparing the performance
Expected results
Good framerates in vanilla.
Actual results
We can do far better.
How to fix
Simply implement the resources in the attached resource pack into vanilla. I give Mojang my full permission and encouragement to use these files to make vanilla Minecraft run better.
Further notes
Mipmapping will be affected, however this is a non-issue.
The bamboo fence item model is also updated to fit the new system.
Many of the old model files can be safely deleted once the new ones are added, as this improved system renders them completely superseded.




Can confirm. More walls may need to be added to observe clearer results if running on newer hardware, but I was still able to reproduce a substantial difference of FPS when using the pack vs not.
Without the pack, ~455 fps
With the pack, ~574 fps
Same goes for walls and iron bars (for walls both ends must have short, or both tall, in order to become 1 element).
I plan on covering both in future.
It may be possible to improve panes even further if new texture files are implemented, for which a new setup will be required.
I have since decided against said "further optimization" as this would introduce complications due to
MC-277806. The currently attached optimization is not subject to this.