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

Efficient CPU Translucency Sorting with BSP Trees and Heuristics #2016

Merged
merged 284 commits into from Feb 15, 2024

Conversation

douira
Copy link
Contributor

@douira douira commented Aug 16, 2023

This PR implements efficient CPU translucency sorting. See https://hackmd.io/@douira100/sodium-sl-gfni for a slightly outdated but still useful overview of the concepts.

Included in this PR

  • Implementation of GFNI and direct (angle or distance) sort triggering
  • Implementation of various sorting algorithms of increasing complexity (static normal relative, static topological, BSP tree, dynamic topological)
  • User-facing debug info and option to turn it off or restrict to non-dynamic sorting only
  • Index buffer rendering of translucent geometry
  • Compatibility with Indium is implemented in this branch

Closes #38

Non-goals

Translucency sorting on the GPU is certainly possible to be integrated with triggering with GFNI but not the focus of this PR. A first implementation of sorting on the CPU that works with GFNI is important to gauge performance of the triggering system and to enable the translucency sorting problem to be fixed without getting into the considerable effort of GPU sorting. Furthermore a CPU sorting implementation is needed in order to take advantage of the significant work-savings achievable by designating sections statically sorted.

My measurements indicate that triggering and sorting perform well, and usually beat distance-based sorting by either not needing to do any work, by doing the work more efficiently, or less often.

@ateijelo

This comment was marked as off-topic.

@Lolothepro

This comment was marked as off-topic.

@douira
Copy link
Contributor Author

douira commented Aug 22, 2023

Nobody should try to actually run this PR how it is currently, it does not to do what you think it does and it will not work until further work (outlined in the top comment) is done. I'm assuming you haven't even read what I wrote there, because if you did it would be clear that this is nowhere near functioning in a playable sense.

@Lolothepro

This comment was marked as off-topic.

@douira
Copy link
Contributor Author

douira commented Sep 15, 2023

Current work on getting this to render is being done on a separate branch until it starts to function at least a little bit. Currently rendering the index buffer does not work and things become corrupted in the render or crash. Help is appreciated. https://github.com/douira/sodium-fabric/tree/gfni-index-rendering

douira and others added 11 commits February 6, 2024 18:47
…ap-rename

# Conflicts:
#	src/api/java/net/caffeinemc/mods/sodium/api/util/NormI8.java
#	src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java
#	src/main/java/me/jellysquid/mods/sodium/client/model/quad/ModelQuadView.java
#	src/main/java/me/jellysquid/mods/sodium/client/model/quad/properties/ModelQuadFacing.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/SodiumWorldRenderer.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/chunk/RenderSection.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/chunk/RenderSectionManager.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuildContext.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/executor/ChunkBuilder.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/pipeline/FluidRenderer.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask.java
#	src/main/java/me/jellysquid/mods/sodium/client/util/ModelQuadUtil.java
#	src/main/java/me/jellysquid/mods/sodium/client/util/sorting/VertexSorters.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/core/model/quad/BakedQuadMixin.java
…NED geometry in the fluid renderer, fix use of fallback paths where not necessary, change the partition node's intersecting geometry handler and just fall back to other sorting methods for better results, add heuristic to better deal with intersecting geometry in topo sort (WIP: this together with static topo sort within partition node would probably fix all outstanding problems with waterlogged glass panes)
…back sometimes and improves the visuals of waterlogged glass panes in many cases
# Conflicts:
#	src/api/java/net/caffeinemc/mods/sodium/api/util/NormI8.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/chunk/compile/pipeline/FluidRenderer.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/texture/SpriteContentsExtended.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/vertex/buffer/ExtendedBufferBuilder.java
#	src/main/java/me/jellysquid/mods/sodium/client/render/vertex/buffer/SodiumBufferBuilder.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/core/MinecraftClientMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/core/gui/WorldLoadingStateMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/core/render/immediate/consumer/OutlineVertexConsumerMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/core/render/immediate/consumer/OverlayVertexConsumerMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/core/render/immediate/consumer/SpriteTexturedVertexConsumerMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/core/render/immediate/consumer/VertexConsumersMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/core/render/world/WorldRendererMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/core/world/chunk/PackedIntegerArrayMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/debug/checks/FramebufferMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/debug/checks/SpriteAtlasTextureMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/debug/checks/WindowFramebufferMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/gui/hooks/debug/DebugHudMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/model/MultipartBakedModelMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/options/overlays/InGameHudMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/options/render_layers/RenderLayersMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/render/entity/CuboidMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/render/gui/font/GlyphRendererMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/render/gui/outlines/WorldRendererMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/render/particle/BillboardParticleMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/render/world/clouds/WorldRendererMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/render/world/sky/WorldRendererMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/shader/uniform/ShaderProgramMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/textures/animations/tracking/DrawContextMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsAnimatorImplMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/textures/mipmaps/MipmapHelperMixin.java
#	src/main/java/me/jellysquid/mods/sodium/mixin/features/world/storage/ClientChunkMapMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/client/SodiumClientMod.java
#	src/main/java/net/caffeinemc/mods/sodium/client/compatibility/checks/EarlyDriverScanner.java
#	src/main/java/net/caffeinemc/mods/sodium/client/compatibility/checks/ModuleScanner.java
#	src/main/java/net/caffeinemc/mods/sodium/client/compatibility/workarounds/Workarounds.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gl/arena/staging/MappedStagingBuffer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gl/buffer/IndexedVertexData.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gl/shader/GlProgram.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gl/shader/ShaderParser.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumGameOptionPages.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumGameOptions.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumOptionsGUI.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/console/Console.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/console/ConsoleHooks.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/console/ConsoleRenderer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/options/OptionImpact.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/options/control/ControlElement.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/options/control/CyclingControl.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/options/control/SliderControl.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/options/control/TickBoxControl.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/options/storage/MinecraftOptionsStorage.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/prompt/ScreenPrompt.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/screen/ConfigCorruptedScreen.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/widgets/AbstractWidget.java
#	src/main/java/net/caffeinemc/mods/sodium/client/gui/widgets/FlatButtonWidget.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/color/ColorProvider.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/color/ColorProviderRegistry.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/color/DefaultColorProviders.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/color/interop/BlockColorsExtended.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/light/data/ArrayLightDataCache.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/light/data/HashLightDataCache.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/light/data/LightDataAccess.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/light/flat/FlatLightPipeline.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/light/smooth/SmoothLightPipeline.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/quad/BakedQuadView.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/quad/ModelQuad.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/quad/ModelQuadView.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/quad/blender/BlendedColorProvider.java
#	src/main/java/net/caffeinemc/mods/sodium/client/model/quad/properties/ModelQuadFacing.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/SodiumWorldRenderer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/ChunkUpdateType.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/DefaultChunkRenderer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/RenderSection.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/RenderSectionManager.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/ShaderChunkRenderer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/SharedQuadIndexBuffer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/ChunkBuildContext.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/ChunkBuildOutput.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/buffers/BakedChunkModelBuilder.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/buffers/ChunkModelBuilder.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkBuilder.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJob.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobCollector.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobResult.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/executor/ChunkJobTyped.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderCache.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderContext.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/FluidRenderer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderMeshingTask.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/tasks/ChunkBuilderTask.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/data/SectionRenderDataStorage.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/map/ChunkTrackerHolder.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/occlusion/OcclusionCuller.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegion.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/region/RenderRegionManager.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/terrain/TerrainRenderPass.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/immediate/CloudRenderer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/immediate/model/EntityRenderer.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/immediate/model/ModelCuboid.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/immediate/model/ModelPartData.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/texture/SpriteContentsExtended.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/texture/SpriteContentsExtension.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/texture/SpriteUtil.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/vertex/VertexConsumerTracker.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/vertex/VertexFormatDescriptionImpl.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/vertex/buffer/BufferBuilderExtension.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/vertex/buffer/DirectBufferBuilder.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/vertex/buffer/ExtendedBufferBuilder.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/vertex/buffer/SodiumBufferBuilder.java
#	src/main/java/net/caffeinemc/mods/sodium/client/render/viewport/Viewport.java
#	src/main/java/net/caffeinemc/mods/sodium/client/util/MathUtil.java
#	src/main/java/net/caffeinemc/mods/sodium/client/util/ModelQuadUtil.java
#	src/main/java/net/caffeinemc/mods/sodium/client/util/NativeImageHelper.java
#	src/main/java/net/caffeinemc/mods/sodium/client/util/sorting/VertexSorters.java
#	src/main/java/net/caffeinemc/mods/sodium/client/world/BiomeSeedProvider.java
#	src/main/java/net/caffeinemc/mods/sodium/client/world/PaletteStorageExtended.java
#	src/main/java/net/caffeinemc/mods/sodium/client/world/ReadableContainerExtended.java
#	src/main/java/net/caffeinemc/mods/sodium/client/world/WorldSlice.java
#	src/main/java/net/caffeinemc/mods/sodium/client/world/biome/BiomeColorCache.java
#	src/main/java/net/caffeinemc/mods/sodium/client/world/biome/BiomeSlice.java
#	src/main/java/net/caffeinemc/mods/sodium/client/world/cloned/ChunkRenderContext.java
#	src/main/java/net/caffeinemc/mods/sodium/client/world/cloned/ClonedChunkSection.java
#	src/main/java/net/caffeinemc/mods/sodium/client/world/cloned/ClonedChunkSectionCache.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/MinecraftClientMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/MinecraftMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/gui/LevelLoadStatusManagerMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/gui/WorldLoadingStateMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/model/colors/BlockColorsMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/model/colors/ItemColorsMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/model/quad/BakedQuadMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/BufferBuilderMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/EntityOutlineGeneratorMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/OutlineVertexConsumerMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/OverlayVertexConsumerMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/SheetedDecalTextureGeneratorMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/SpriteCoordinateExpanderMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/SpriteTexturedVertexConsumerMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/VertexConsumerProviderImmediateMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/VertexConsumersMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/immediate/consumer/VertexMultiConsumerMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/world/LevelRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/render/world/WorldRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/world/chunk/EmptyPaletteStorageMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/world/chunk/PackedIntegerArrayMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/world/chunk/PalettedContainerMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/world/chunk/SimpleBitStorageMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/core/world/map/ClientWorldMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/debug/checks/AsyncTextureMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/debug/checks/FramebufferMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/debug/checks/MainTargetMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/debug/checks/RenderTargetMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/debug/checks/SpriteAtlasTextureMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/debug/checks/TextureAtlasMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/debug/checks/WindowFramebufferMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugHudMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/gui/hooks/debug/DebugScreenOverlayMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/gui/screen/LevelLoadingScreenMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/model/MultiPartBakedModelMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/model/MultipartBakedModelMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/options/overlays/GuiMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/options/overlays/InGameHudMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/options/render_layers/ItemBlockRenderTypesMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/options/render_layers/RenderLayersMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/entity/CubeMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/entity/CuboidMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/entity/shadows/EntityRenderDispatcherMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/gui/font/BakedGlyphMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/gui/font/GlyphRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/gui/outlines/LevelRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/gui/outlines/WorldRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/immediate/DirectionMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/immediate/buffer_builder/sorting/VertexSorterMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/model/block/BlockModelRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/model/item/ItemRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/particle/BillboardParticleMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/particle/SingleQuadParticleMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/world/clouds/LevelRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/world/clouds/WorldRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/world/sky/LevelRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/render/world/sky/WorldRendererMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/shader/uniform/ShaderInstanceMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/shader/uniform/ShaderProgramMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/DrawContextMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/GuiGraphicsMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsAnimationFrameAccessor.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsAnimatorImplMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/textures/animations/tracking/SpriteContentsTickerMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/textures/animations/upload/SpriteContentsAnimationFrameAccessor.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/textures/animations/upload/SpriteContentsInterpolationMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/textures/mipmaps/MipmapGeneratorMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/textures/mipmaps/MipmapHelperMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/world/biome/BiomeMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/world/storage/ClientChunkCacheMixin.java
#	src/main/java/net/caffeinemc/mods/sodium/mixin/features/world/storage/ClientChunkMapMixin.java
@jellysquid3 jellysquid3 merged commit 866c66f into CaffeineMC:dev Feb 15, 2024
1 check passed
@BigClarky
Copy link

I'm assuming the fix will not be back-ported to any 1.19.x versions

@douira
Copy link
Contributor Author

douira commented Mar 15, 2024

Sodium's LTS version that is a back port of the main version targeting the latest MC is on 1.20.1 at the moment and would only get more recent if the focus of the modding community changes. I wouldn't expect an official version for 1.19.x but I can imagine it's doable.

IMS212 pushed a commit to IMS212/sodium-fabric that referenced this pull request Apr 6, 2024
…feineMC#2016)

This PR implements efficient CPU translucency sorting. See CaffeineMC#2016 for a useful overview of the concepts.
Closes CaffeineMC#38
IMS212 pushed a commit to IMS212/sodium-fabric that referenced this pull request Apr 6, 2024
…feineMC#2016)

This PR implements efficient CPU translucency sorting. See CaffeineMC#2016 for a useful overview of the concepts.
Closes CaffeineMC#38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good pr This is an example of a good PR P-high Priority: High
Development

Successfully merging this pull request may close these issues.

Layered translucent blocks do not render correctly
9 participants