-
Notifications
You must be signed in to change notification settings - Fork 812
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
Conversation
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
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. |
This comment was marked as off-topic.
This comment was marked as off-topic.
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 |
use vector3fc for camera pos and offset chunk pos
…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
…pstream before merging
# 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
I'm assuming the fix will not be back-ported to any 1.19.x versions |
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. |
…feineMC#2016) This PR implements efficient CPU translucency sorting. See CaffeineMC#2016 for a useful overview of the concepts. Closes CaffeineMC#38
…feineMC#2016) This PR implements efficient CPU translucency sorting. See CaffeineMC#2016 for a useful overview of the concepts. Closes CaffeineMC#38
…feineMC#2016) This PR implements efficient CPU translucency sorting. See CaffeineMC#2016 for a useful overview of the concepts. Closes CaffeineMC#38
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
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.