Sodium

Sodium

49M Downloads

Deprecate "cutout" render type in favor of "cutout_mipped" when appropriate (at least for vanilla blocks)

djmrFunnyMan opened this issue ยท 9 comments

commented

Request Description

There are very few exceptions where this render type is used correctly. Glass, redstone wire and chains. These blocks melt away into nothing with mipmapping. So unless you have a way of fixing that (ie. anisotropic filtering) these blocks need to have mipmapping disabled.

However most blocks using it probably use it due to MC-114265 which makes mips of those blocks look terrible and mojang would rather disable mipmapping than fix it ๐Ÿ™„

Needless to say this causes terrible aliasing. Especially on 1080p

However sodium has MC-114265 fixed. Which means there's no reason to stick to vanillas terrible lack of mipmapping.

Vanilla vs Sodium with forced cutout_mipped
2024-10-18_15 54 38
2024-10-18_15 55 13

Vanilla vs Sodium with forced cutout_mipped
2024-10-18_15 52 54
2024-10-18_15 52 18

I see 2 ways of doing this

  • Automatically switch "cutout" to "cutout_mipped" but have an API to disable this for some blocks if some mods add blocks that really shouldn't have mipmapping.
  • Hardcode each affected vanilla block to "cutout_mipped". Which means mods will be unaffected and you'll need to keep doing this manually each update as mojang adds more blocks.

The first one seems more favourable.

commented

My two cents here:
https://youtu.be/jKLV6uWPvl8

Previously you could do that with Jagges Begone, but the mod seems to be abandoned.

commented

Sodium already merges cutout and cutout mipped render passes as you can see here.

commented

Well that doesn't solve the issue of blocks looking atrocious without mipmapping, which is the main reason I want this, even if there's no performance benefit.

commented

Does Sodium also merge the tripwire render type into the general translucent render type?

commented

There is no intention to "deprecate" the use of non-mipped materials. Doing so would alter the appearance of the game significantly, and cause problems with mods that add their own special blocks.

As was already pointed out, Sodium does not need additional draw calls to render mipped and non-mipped geometry for each render pass, so there is no performance impact.

If this is something that players really want, it would be easy enough to create a standalone mod which allows resource packs to alter the mipmap behavior of block models, without any special considerations needed for compatibility with Sodium.

commented

Sodium already alters the apperance of the game significantly (ie. cloud fog fix)
Fixing this would objectively be a significant change for the better.

And I understand your modded compatibility concerns, that's why you can chose the second way I mentioned and simply change some vanilla blocks to cutout_mipped without messing with anything else.

commented

I understand the points you are making, but you are simply repeating them here, and I don't agree with your assessment that it is "objectively better."

Enabling mip-mapping for these blocks (particularly foliage) significantly alters how much they affect the visuals when further away from the camera. Furthermore, this has already been done for ages in OptiFine and it has always been the source of complaints due to resource pack compatibility issues and such.

Unlike many of the other changes in Sodium (block lighting, fluid shading, biome color interpolation, cloud rendering, etc), they were fixing problems that were obviously the result of broken behavior. This behavior you describe is clearly not a bug, rather it's an intentional behavior that you view as (subjectively) unpleasant.

commented

Well grass is treated as a bug at least MC-195505 and so was pale hanging moss (though marked as won't fix) MC-277120

I do understand your reasoning however. I was just hoping it be added to sodium because there's no actively maintained mod that does this (besides optifine)

And I would argue that aliasing is seen as a bad thing pretty objectively.

commented

Ideally controlling what render type blocks use would be at the model level instead of the block ID level, but clearly Mojang don't see changing this as a priority.