├── common └── src │ ├── .gitignore │ ├── main │ ├── java │ │ ├── net │ │ │ └── caffeinemc │ │ │ │ └── mods │ │ │ │ └── sodium │ │ │ │ └── client │ │ │ │ ├── render │ │ │ │ ├── chunk │ │ │ │ │ ├── lists │ │ │ │ │ │ ├── VisibleChunkCollector.java │ │ │ │ │ │ ├── CoordinateSectionVisitor.java │ │ │ │ │ │ ├── RenderSectionVisitor.java │ │ │ │ │ │ ├── ChunkRenderListIterable.java │ │ │ │ │ │ ├── SortItemsProvider.java │ │ │ │ │ │ ├── OcclusionSectionCollector.java │ │ │ │ │ │ └── SortedRenderLists.java │ │ │ │ │ ├── tree │ │ │ │ │ │ ├── RemovableForest.java │ │ │ │ │ │ ├── TraversableBiForest.java │ │ │ │ │ │ ├── Forest.java │ │ │ │ │ │ ├── BaseForest.java │ │ │ │ │ │ ├── TraversableMultiForest.java │ │ │ │ │ │ └── TraversableForest.java │ │ │ │ │ ├── compile │ │ │ │ │ │ ├── estimation │ │ │ │ │ │ │ ├── UploadResourceBudget.java │ │ │ │ │ │ │ ├── UploadDuration.java │ │ │ │ │ │ │ ├── UnlimitedResourceBudget.java │ │ │ │ │ │ │ ├── JobEffort.java │ │ │ │ │ │ │ ├── LimitedResourceBudget.java │ │ │ │ │ │ │ └── JobDurationEstimator.java │ │ │ │ │ │ ├── buffers │ │ │ │ │ │ │ └── ChunkModelBuilder.java │ │ │ │ │ │ ├── executor │ │ │ │ │ │ │ └── ChunkJob.java │ │ │ │ │ │ ├── pipeline │ │ │ │ │ │ │ ├── fluid │ │ │ │ │ │ │ │ └── FluidRenderer.java │ │ │ │ │ │ │ └── BlockOcclusionCache.java │ │ │ │ │ │ ├── ChunkBuildContext.java │ │ │ │ │ │ └── BuilderTaskOutput.java │ │ │ │ │ ├── terrain │ │ │ │ │ │ ├── material │ │ │ │ │ │ │ ├── parameters │ │ │ │ │ │ │ │ ├── AlphaCutoffParameter.java │ │ │ │ │ │ │ │ └── MaterialParameters.java │ │ │ │ │ │ │ └── Material.java │ │ │ │ │ │ ├── TerrainRenderPass.java │ │ │ │ │ │ └── DefaultTerrainRenderPasses.java │ │ │ │ │ ├── shader │ │ │ │ │ │ ├── ChunkShaderTextureSlot.java │ │ │ │ │ │ ├── ChunkShaderBindingPoints.java │ │ │ │ │ │ ├── ChunkShaderInterface.java │ │ │ │ │ │ ├── ShaderBindingContext.java │ │ │ │ │ │ ├── ChunkShaderOptions.java │ │ │ │ │ │ └── ChunkFogMode.java │ │ │ │ │ ├── translucent_sorting │ │ │ │ │ │ ├── data │ │ │ │ │ │ │ ├── Sorter.java │ │ │ │ │ │ │ ├── CombinedCameraPos.java │ │ │ │ │ │ │ ├── StaticSorter.java │ │ │ │ │ │ │ ├── PresentSortData.java │ │ │ │ │ │ │ ├── SharedIndexSorter.java │ │ │ │ │ │ │ ├── PresentSorter.java │ │ │ │ │ │ │ └── DynamicSorter.java │ │ │ │ │ │ ├── bsp_tree │ │ │ │ │ │ │ ├── BSPBuildFailureException.java │ │ │ │ │ │ │ ├── Partition.java │ │ │ │ │ │ │ ├── LeafSingleBSPNode.java │ │ │ │ │ │ │ ├── LeafMultiBSPNode.java │ │ │ │ │ │ │ ├── LeafDoubleBSPNode.java │ │ │ │ │ │ │ ├── BSPResult.java │ │ │ │ │ │ │ └── UpdatedQuadsList.java │ │ │ │ │ │ └── trigger │ │ │ │ │ │ │ └── CameraMovement.java │ │ │ │ │ ├── ChunkRenderMatrices.java │ │ │ │ │ ├── map │ │ │ │ │ │ ├── ChunkStatus.java │ │ │ │ │ │ ├── ChunkTrackerHolder.java │ │ │ │ │ │ └── ClientChunkEventListener.java │ │ │ │ │ ├── vertex │ │ │ │ │ │ └── format │ │ │ │ │ │ │ ├── ChunkVertexType.java │ │ │ │ │ │ │ ├── ChunkMeshFormats.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── DefaultChunkMeshAttributes.java │ │ │ │ │ ├── TaskQueueType.java │ │ │ │ │ ├── occlusion │ │ │ │ │ │ └── GraphDirectionSet.java │ │ │ │ │ ├── DeferMode.java │ │ │ │ │ └── RenderSectionFlags.java │ │ │ │ ├── viewport │ │ │ │ │ ├── ViewportProvider.java │ │ │ │ │ └── frustum │ │ │ │ │ │ ├── Frustum.java │ │ │ │ │ │ └── SimpleFrustum.java │ │ │ │ ├── texture │ │ │ │ │ ├── SpriteExtension.java │ │ │ │ │ └── SpriteUtil.java │ │ │ │ └── vertex │ │ │ │ │ └── VertexFormatAttribute.java │ │ │ │ ├── gl │ │ │ │ ├── util │ │ │ │ │ ├── EnumBit.java │ │ │ │ │ └── EnumBitField.java │ │ │ │ ├── shader │ │ │ │ │ ├── uniform │ │ │ │ │ │ ├── GlUniform.java │ │ │ │ │ │ ├── GlUniformInt.java │ │ │ │ │ │ ├── GlUniformFloat.java │ │ │ │ │ │ ├── GlUniformBool.java │ │ │ │ │ │ ├── GlUniformBlock.java │ │ │ │ │ │ ├── GlUniformFloat2v.java │ │ │ │ │ │ ├── GlUniformFloat3v.java │ │ │ │ │ │ ├── GlUniformFloat4v.java │ │ │ │ │ │ └── GlUniformMatrix4f.java │ │ │ │ │ └── ShaderType.java │ │ │ │ ├── tessellation │ │ │ │ │ ├── GlTessellation.java │ │ │ │ │ ├── GlPrimitiveType.java │ │ │ │ │ ├── GlIndexType.java │ │ │ │ │ ├── TessellationBinding.java │ │ │ │ │ └── GlVertexArrayTessellation.java │ │ │ │ ├── array │ │ │ │ │ └── GlVertexArray.java │ │ │ │ ├── device │ │ │ │ │ ├── DrawCommandList.java │ │ │ │ │ └── RenderDevice.java │ │ │ │ ├── buffer │ │ │ │ │ ├── GlImmutableBuffer.java │ │ │ │ │ ├── GlMutableBuffer.java │ │ │ │ │ ├── GlBuffer.java │ │ │ │ │ ├── GlBufferUsage.java │ │ │ │ │ ├── GlBufferStorageFlags.java │ │ │ │ │ ├── GlBufferMapFlags.java │ │ │ │ │ ├── GlBufferMapping.java │ │ │ │ │ └── GlBufferTarget.java │ │ │ │ ├── functions │ │ │ │ │ └── DeviceFunctions.java │ │ │ │ ├── arena │ │ │ │ │ ├── staging │ │ │ │ │ │ └── StagingBuffer.java │ │ │ │ │ ├── PendingUpload.java │ │ │ │ │ └── PendingBufferCopyCommand.java │ │ │ │ ├── attribute │ │ │ │ │ ├── GlVertexAttributeBinding.java │ │ │ │ │ └── GlVertexAttributeFormat.java │ │ │ │ └── GlObject.java │ │ │ │ ├── model │ │ │ │ ├── light │ │ │ │ │ ├── LightMode.java │ │ │ │ │ ├── smooth │ │ │ │ │ │ └── AoCompletionFlags.java │ │ │ │ │ ├── data │ │ │ │ │ │ ├── QuadLightData.java │ │ │ │ │ │ └── HashLightDataCache.java │ │ │ │ │ ├── LightPipelineProvider.java │ │ │ │ │ └── LightPipeline.java │ │ │ │ ├── quad │ │ │ │ │ ├── BakedQuadView.java │ │ │ │ │ └── properties │ │ │ │ │ │ └── ModelQuadWinding.java │ │ │ │ └── color │ │ │ │ │ └── ColorProvider.java │ │ │ │ ├── gui │ │ │ │ ├── options │ │ │ │ │ ├── named │ │ │ │ │ │ ├── NamedState.java │ │ │ │ │ │ ├── GraphicsMode.java │ │ │ │ │ │ └── ParticleMode.java │ │ │ │ │ ├── TextProvider.java │ │ │ │ │ ├── control │ │ │ │ │ │ ├── Control.java │ │ │ │ │ │ ├── AbstractOptionList.java │ │ │ │ │ │ └── AbstractScrollable.java │ │ │ │ │ └── OptionImpact.java │ │ │ │ ├── console │ │ │ │ │ ├── message │ │ │ │ │ │ ├── MessageLevel.java │ │ │ │ │ │ └── Message.java │ │ │ │ │ ├── ConsoleHooks.java │ │ │ │ │ ├── ConsoleSink.java │ │ │ │ │ └── Console.java │ │ │ │ ├── ButtonTheme.java │ │ │ │ ├── ColorTheme.java │ │ │ │ └── Layout.java │ │ │ │ ├── console │ │ │ │ ├── message │ │ │ │ │ ├── MessageLevel.java │ │ │ │ │ └── Message.java │ │ │ │ ├── ConsoleSink.java │ │ │ │ └── Console.java │ │ │ │ ├── config │ │ │ │ ├── search │ │ │ │ │ ├── Searchable.java │ │ │ │ │ ├── SearchQuerySession.java │ │ │ │ │ ├── SourceStoringIndex.java │ │ │ │ │ ├── TextSource.java │ │ │ │ │ └── SearchIndex.java │ │ │ │ ├── structure │ │ │ │ │ ├── OptionOverride.java │ │ │ │ │ ├── Page.java │ │ │ │ │ ├── OptionGroup.java │ │ │ │ │ ├── OptionPage.java │ │ │ │ │ ├── StaticOption.java │ │ │ │ │ ├── ExternalPage.java │ │ │ │ │ ├── ModOptions.java │ │ │ │ │ └── ExternalButtonOption.java │ │ │ │ ├── value │ │ │ │ │ ├── DependentValue.java │ │ │ │ │ └── ConstantValue.java │ │ │ │ ├── builder │ │ │ │ │ ├── PageBuilderImpl.java │ │ │ │ │ ├── StaticOptionBuilderImpl.java │ │ │ │ │ ├── OptionGroupBuilderImpl.java │ │ │ │ │ ├── OptionOverrideBuilderImpl.java │ │ │ │ │ └── ColorThemeBuilderImpl.java │ │ │ │ └── AnonymousOptionBinding.java │ │ │ │ ├── util │ │ │ │ ├── iterator │ │ │ │ │ ├── ByteIterator.java │ │ │ │ │ ├── ByteArrayIterator.java │ │ │ │ │ └── ReversibleByteArrayIterator.java │ │ │ │ ├── task │ │ │ │ │ └── CancellationToken.java │ │ │ │ ├── collections │ │ │ │ │ ├── ReadQueue.java │ │ │ │ │ └── WriteQueue.java │ │ │ │ ├── frustum │ │ │ │ │ └── ExtendedFrustum.java │ │ │ │ ├── BlockRenderType.java │ │ │ │ ├── sorting │ │ │ │ │ ├── AbstractSort.java │ │ │ │ │ └── InsertionSort.java │ │ │ │ ├── ListUtil.java │ │ │ │ ├── BitwiseMath.java │ │ │ │ ├── CameraUtils.java │ │ │ │ ├── UInt32.java │ │ │ │ ├── FileUtil.java │ │ │ │ ├── ScissorUtil.java │ │ │ │ └── DirectionUtil.java │ │ │ │ ├── world │ │ │ │ ├── LevelRendererExtension.java │ │ │ │ ├── cloned │ │ │ │ │ └── ChunkRenderContext.java │ │ │ │ ├── BiomeSeedProvider.java │ │ │ │ └── biome │ │ │ │ │ └── BiomeColorSource.java │ │ │ │ └── services │ │ │ │ ├── PlatformRuntimeInformation.java │ │ │ │ └── Services.java │ │ ├── com │ │ │ └── prupe │ │ │ │ └── mcpatcher │ │ │ │ ├── core │ │ │ │ └── AbstractTextureExpansion.java │ │ │ │ └── mal │ │ │ │ └── resource │ │ │ │ └── GLAPI.java │ │ └── dev │ │ │ └── vexor │ │ │ └── radium │ │ │ └── mixin │ │ │ ├── config │ │ │ └── CaffeineConfigPlatform.java │ │ │ ├── sodium │ │ │ ├── core │ │ │ │ ├── access │ │ │ │ │ ├── AGameRenderer.java │ │ │ │ │ ├── ABlockRenderManager.java │ │ │ │ │ └── AFluidRenderer.java │ │ │ │ ├── world │ │ │ │ │ ├── map │ │ │ │ │ │ └── ClientLevelMixin.java │ │ │ │ │ └── biome │ │ │ │ │ │ └── ClientLevelMixin.java │ │ │ │ └── render │ │ │ │ │ └── VertexFormatMixin.java │ │ │ └── features │ │ │ │ ├── textures │ │ │ │ └── tracking │ │ │ │ │ └── SpriteMixin.java │ │ │ │ ├── options │ │ │ │ ├── overlays │ │ │ │ │ └── GuiMixin.java │ │ │ │ ├── render_layers │ │ │ │ │ └── LeavesBlockMixin.java │ │ │ │ ├── world │ │ │ │ │ └── DimensionMixin.java │ │ │ │ ├── MinecraftClientMixin.java │ │ │ │ └── weather │ │ │ │ │ └── LevelRendererMixin.java │ │ │ │ └── gui │ │ │ │ └── hooks │ │ │ │ └── settings │ │ │ │ └── OptionsScreenMixin.java │ │ │ └── core │ │ │ ├── mcpatcher │ │ │ ├── MixinAbstractTexture.java │ │ │ └── base │ │ │ │ └── MixinReloadableResourceManagerImpl.java │ │ │ ├── MixinFramebuffer.java │ │ │ ├── MixinCullingCameraView.java │ │ │ ├── MixinScreenFixClipboard.java │ │ │ └── MixinBiome.java │ └── resources │ │ ├── radium-icon.png │ │ └── assets │ │ ├── radium │ │ ├── textures │ │ │ └── gui │ │ │ │ ├── icon.png │ │ │ │ ├── coffee_cup.png │ │ │ │ └── tooltip_arrows.png │ │ └── shaders │ │ │ └── include │ │ │ ├── chunk_matrices.glsl │ │ │ ├── chunk_material.glsl │ │ │ └── fog.glsl │ │ └── minecraft │ │ └── shaders │ │ ├── program │ │ ├── menu_blur.fsh │ │ └── menu_blur.json │ │ └── post │ │ └── menu_blur.json │ ├── api │ └── java │ │ ├── net │ │ └── caffeinemc │ │ │ └── mods │ │ │ └── sodium │ │ │ └── api │ │ │ ├── config │ │ │ ├── structure │ │ │ │ ├── PageBuilder.java │ │ │ │ ├── ColorThemeBuilder.java │ │ │ │ ├── OptionGroupBuilder.java │ │ │ │ ├── OptionPageBuilder.java │ │ │ │ ├── OptionOverrideBuilder.java │ │ │ │ ├── ExternalPageBuilder.java │ │ │ │ ├── OptionBuilder.java │ │ │ │ ├── ModOptionsBuilder.java │ │ │ │ ├── ExternalButtonOptionBuilder.java │ │ │ │ └── ConfigBuilder.java │ │ │ ├── StorageEventHandler.java │ │ │ ├── option │ │ │ │ ├── OptionBinding.java │ │ │ │ ├── NameProvider.java │ │ │ │ ├── ControlValueFormatter.java │ │ │ │ ├── OptionFlag.java │ │ │ │ ├── Range.java │ │ │ │ └── OptionImpact.java │ │ │ ├── ConfigEntryPoint.java │ │ │ ├── ConfigState.java │ │ │ └── ConfigEntryPointForge.java │ │ │ ├── internal │ │ │ └── package-info.java │ │ │ └── vertex │ │ │ ├── serializer │ │ │ ├── VertexSerializer.java │ │ │ └── VertexSerializerRegistry.java │ │ │ ├── attributes │ │ │ └── common │ │ │ │ ├── ColorAttribute.java │ │ │ │ ├── LightAttribute.java │ │ │ │ ├── NormalAttribute.java │ │ │ │ ├── OverlayAttribute.java │ │ │ │ ├── PositionAttribute.java │ │ │ │ └── TextureAttribute.java │ │ │ └── format │ │ │ ├── VertexFormatExtensions.java │ │ │ ├── VertexFormatRegistry.java │ │ │ └── common │ │ │ ├── LineVertex.java │ │ │ ├── GlyphVertex.java │ │ │ ├── EntityVertex.java │ │ │ └── ParticleVertex.java │ │ └── dev │ │ └── vexor │ │ └── radium │ │ └── compat │ │ └── mojang │ │ ├── minecraft │ │ ├── gui │ │ │ ├── Renderable.java │ │ │ └── event │ │ │ │ └── GuiEventListener.java │ │ ├── random │ │ │ └── LinearCongruentialGenerator.java │ │ ├── IBlockColor.java │ │ ├── math │ │ │ └── QuartPos.java │ │ ├── render │ │ │ ├── LightTexture.java │ │ │ └── FogHelper.java │ │ └── ChunkNibbleArrayExt.java │ │ └── Util.java │ └── desktop │ └── java │ └── net │ └── caffeinemc │ └── mods │ └── sodium │ └── desktop │ └── utils │ └── browse │ ├── CrossPlatformImpl.java │ ├── BrowseUrlHandler.java │ └── XDGImpl.java ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── fabric └── src │ └── main │ ├── resources │ ├── META-INF │ │ └── services │ │ │ ├── dev.vexor.radium.mixin.config.CaffeineConfigPlatform │ │ │ ├── net.caffeinemc.mods.sodium.client.services.PlatformMixinOverrides │ │ │ └── net.caffeinemc.mods.sodium.client.services.PlatformRuntimeInformation │ └── sodium-fabric.mixins.json │ └── java │ └── net │ └── caffeinemc │ └── mods │ └── sodium │ └── fabric │ ├── SodiumPreLaunch.java │ ├── FabricRuntimeInformation.java │ ├── SodiumFabricMod.java │ └── config │ └── ConfigLoaderFabric.java ├── gradle.properties ├── lwjgl3 ├── src │ └── main │ │ └── java │ │ └── org │ │ └── lwjgl │ │ └── opengl │ │ ├── ARBBufferObject.java │ │ ├── EXTAbgr.java │ │ └── EXTTextureRectangle.java └── build.gradle.kts ├── .gitignore ├── .github ├── ISSUE_TEMPLATE │ └── config.yml ├── PULL_REQUEST_TEMPLATE │ ├── new_feature.md │ └── bug_fix.md └── workflows │ ├── build-release.yml │ ├── build-pull-request.yml │ ├── build-tag.yml │ └── build-commit.yml ├── settings.gradle.kts ├── thirdparty └── licenses │ └── LICENSE-MIT.txt └── idea └── inspections.xml /common/src/.gitignore: -------------------------------------------------------------------------------- 1 | jmh -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/lists/VisibleChunkCollector.java: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VexorMC/sodium/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /common/src/main/resources/radium-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VexorMC/sodium/HEAD/common/src/main/resources/radium-icon.png -------------------------------------------------------------------------------- /fabric/src/main/resources/META-INF/services/dev.vexor.radium.mixin.config.CaffeineConfigPlatform: -------------------------------------------------------------------------------- 1 | dev.vexor.radium.mixin.config.CaffeineConfigFabric -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Done to increase the memory available to gradle. 2 | org.gradle.jvmargs=-Xmx2G 3 | org.gradle.caching=true 4 | org.gradle.parallel=true -------------------------------------------------------------------------------- /fabric/src/main/resources/META-INF/services/net.caffeinemc.mods.sodium.client.services.PlatformMixinOverrides: -------------------------------------------------------------------------------- 1 | net.caffeinemc.mods.sodium.fabric.FabricMixinOverrides -------------------------------------------------------------------------------- /lwjgl3/src/main/java/org/lwjgl/opengl/ARBBufferObject.java: -------------------------------------------------------------------------------- 1 | package org.lwjgl.opengl; 2 | 3 | public class ARBBufferObject extends ARBVertexBufferObject 4 | { 5 | } 6 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/radium/textures/gui/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VexorMC/sodium/HEAD/common/src/main/resources/assets/radium/textures/gui/icon.png -------------------------------------------------------------------------------- /fabric/src/main/resources/META-INF/services/net.caffeinemc.mods.sodium.client.services.PlatformRuntimeInformation: -------------------------------------------------------------------------------- 1 | net.caffeinemc.mods.sodium.fabric.FabricRuntimeInformation -------------------------------------------------------------------------------- /lwjgl3/src/main/java/org/lwjgl/opengl/EXTAbgr.java: -------------------------------------------------------------------------------- 1 | package org.lwjgl.opengl; 2 | 3 | public class EXTAbgr { 4 | public final static int GL_ABGR_EXT = EXTABGR.GL_ABGR_EXT; 5 | } 6 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/radium/textures/gui/coffee_cup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VexorMC/sodium/HEAD/common/src/main/resources/assets/radium/textures/gui/coffee_cup.png -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/structure/PageBuilder.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config.structure; 2 | 3 | public interface PageBuilder { 4 | } 5 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/radium/textures/gui/tooltip_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VexorMC/sodium/HEAD/common/src/main/resources/assets/radium/textures/gui/tooltip_arrows.png -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gl/util/EnumBit.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gl.util; 2 | 3 | public interface EnumBit { 4 | int getBits(); 5 | } 6 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/internal/package-info.java: -------------------------------------------------------------------------------- 1 | @ApiStatus.Internal 2 | package net.caffeinemc.mods.sodium.api.internal; 3 | 4 | import org.jetbrains.annotations.ApiStatus; -------------------------------------------------------------------------------- /common/src/main/java/com/prupe/mcpatcher/core/AbstractTextureExpansion.java: -------------------------------------------------------------------------------- 1 | package com.prupe.mcpatcher.core; 2 | 3 | public interface AbstractTextureExpansion { 4 | void unloadGLTexture(); 5 | } 6 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/model/light/LightMode.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.model.light; 2 | 3 | public enum LightMode { 4 | SMOOTH, 5 | FLAT 6 | } 7 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gui/options/named/NamedState.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gui.options.named; 2 | 3 | public interface NamedState { 4 | String getKey(); 5 | } 6 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/StorageEventHandler.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config; 2 | 3 | @FunctionalInterface 4 | public interface StorageEventHandler { 5 | void afterSave(); 6 | } 7 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/console/message/MessageLevel.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.console.message; 2 | 3 | public enum MessageLevel { 4 | INFO, 5 | WARN, 6 | SEVERE 7 | } 8 | -------------------------------------------------------------------------------- /common/src/api/java/dev/vexor/radium/compat/mojang/minecraft/gui/Renderable.java: -------------------------------------------------------------------------------- 1 | package dev.vexor.radium.compat.mojang.minecraft.gui; 2 | 3 | public interface Renderable { 4 | void render(int mouseX, int mouseY, float tickDelta); 5 | } -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/option/OptionBinding.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config.option; 2 | 3 | public interface OptionBinding { 4 | void save(V value); 5 | 6 | V load(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/config/search/Searchable.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.config.search; 2 | 3 | public interface Searchable { 4 | void registerTextSources(SearchIndex index); 5 | } 6 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gui/console/message/MessageLevel.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gui.console.message; 2 | 3 | public enum MessageLevel { 4 | INFO, 5 | WARN, 6 | SEVERE 7 | } 8 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/option/NameProvider.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config.option; 2 | 3 | import net.minecraft.text.Text; 4 | 5 | public interface NameProvider { 6 | Text getName(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/dev/vexor/radium/mixin/config/CaffeineConfigPlatform.java: -------------------------------------------------------------------------------- 1 | package dev.vexor.radium.mixin.config; 2 | 3 | public interface CaffeineConfigPlatform { 4 | void applyModOverrides(CaffeineConfig config, String jsonKey); 5 | } 6 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/util/iterator/ByteIterator.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.util.iterator; 2 | 3 | public interface ByteIterator { 4 | boolean hasNext(); 5 | 6 | int nextByteAsInt(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/console/message/Message.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.console.message; 2 | 3 | public record Message(MessageLevel level, String text, boolean translated, double duration) { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/util/task/CancellationToken.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.util.task; 2 | 3 | public interface CancellationToken { 4 | boolean isCancelled(); 5 | 6 | void setCancelled(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gui/options/TextProvider.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gui.options; 2 | 3 | import net.minecraft.text.Text; 4 | 5 | public interface TextProvider { 6 | Text getLocalizedName(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/viewport/ViewportProvider.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.viewport; 2 | 3 | public interface ViewportProvider { 4 | Viewport sodium$createViewport(double tickDelta); 5 | } 6 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/vertex/serializer/VertexSerializer.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.vertex.serializer; 2 | 3 | public interface VertexSerializer { 4 | void serialize(long srcBuffer, long dstBuffer, int count); 5 | } 6 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/lists/CoordinateSectionVisitor.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.lists; 2 | 3 | public interface CoordinateSectionVisitor { 4 | void visit(int x, int y, int z); 5 | } 6 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/option/ControlValueFormatter.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config.option; 2 | 3 | import net.minecraft.text.Text; 4 | 5 | public interface ControlValueFormatter { 6 | Text format(int value); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/RemovableForest.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.tree; 2 | 3 | public interface RemovableForest extends TraversableForest { 4 | void remove(int x, int y, int z); 5 | } 6 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/texture/SpriteExtension.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.texture; 2 | 3 | public interface SpriteExtension { 4 | void sodium$setActive(boolean value); 5 | boolean sodium$isActive(); 6 | } 7 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/util/collections/ReadQueue.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.util.collections; 2 | 3 | import org.jetbrains.annotations.Nullable; 4 | 5 | public interface ReadQueue { 6 | @Nullable E dequeue(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gui/console/message/Message.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gui.console.message; 2 | 3 | import net.minecraft.text.Text; 4 | 5 | public record Message(MessageLevel level, Text text, double duration) { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/config/structure/OptionOverride.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.config.structure; 2 | 3 | import net.minecraft.util.Identifier; 4 | 5 | public record OptionOverride(Identifier target, String source, Option replacement) { 6 | } 7 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/util/frustum/ExtendedFrustum.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.util.frustum; 2 | 3 | public interface ExtendedFrustum { 4 | int radium$intersect(double minX, double minY, double minZ, double maxX, double maxY, double maxZ); 5 | } -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/config/search/SearchQuerySession.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.config.search; 2 | 3 | import java.util.List; 4 | 5 | public interface SearchQuerySession { 6 | List getSearchResults(String query); 7 | } 8 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/UploadResourceBudget.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.compile.estimation; 2 | 3 | public interface UploadResourceBudget { 4 | boolean isAvailable(); 5 | 6 | void consume(long duration, long size); 7 | } -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/world/LevelRendererExtension.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.world; 2 | 3 | import net.caffeinemc.mods.sodium.client.render.SodiumWorldRenderer; 4 | 5 | public interface LevelRendererExtension { 6 | SodiumWorldRenderer sodium$getWorldRenderer(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/radium/shaders/include/chunk_matrices.glsl: -------------------------------------------------------------------------------- 1 | // The projection matrix 2 | uniform mat4 u_ProjectionMatrix; 3 | 4 | // The model-view matrix 5 | uniform mat4 u_ModelViewMatrix; 6 | 7 | // The model-view-projection matrix 8 | #define u_ModelViewProjectionMatrix (uProjectionMatrix * u_ModelViewMatrix) -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/lists/RenderSectionVisitor.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.lists; 2 | 3 | import net.caffeinemc.mods.sodium.client.render.chunk.RenderSection; 4 | 5 | public interface RenderSectionVisitor { 6 | void visit(RenderSection section); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/terrain/material/parameters/AlphaCutoffParameter.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.terrain.material.parameters; 2 | 3 | public enum AlphaCutoffParameter { 4 | ZERO, // 0.0f 5 | TINY, // 0.0001f 6 | HALF, // 0.5f 7 | ONE // 1.0f 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/util/collections/WriteQueue.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.util.collections; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | public interface WriteQueue { 6 | void ensureCapacity(int numElements); 7 | 8 | void enqueue(@NotNull E e); 9 | } 10 | -------------------------------------------------------------------------------- /fabric/src/main/java/net/caffeinemc/mods/sodium/fabric/SodiumPreLaunch.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.fabric; 2 | 3 | import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint; 4 | 5 | public class SodiumPreLaunch implements PreLaunchEntrypoint { 6 | @Override 7 | public void onPreLaunch() { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/option/OptionFlag.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config.option; 2 | 3 | public enum OptionFlag { 4 | REQUIRES_RENDERER_RELOAD, 5 | REQUIRES_RENDERER_UPDATE, 6 | REQUIRES_ASSET_RELOAD, 7 | REQUIRES_VIDEOMODE_RELOAD, 8 | REQUIRES_GAME_RESTART 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/shader/ChunkShaderTextureSlot.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.shader; 2 | 3 | public enum ChunkShaderTextureSlot { 4 | BLOCK, 5 | LIGHT; 6 | 7 | public static final ChunkShaderTextureSlot[] VALUES = ChunkShaderTextureSlot.values(); 8 | } 9 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/structure/ColorThemeBuilder.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config.structure; 2 | 3 | public interface ColorThemeBuilder { 4 | ColorThemeBuilder setBaseThemeRGB(int theme); 5 | 6 | ColorThemeBuilder setFullThemeRGB(int theme, int themeHighlight, int themeDisabled); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/data/Sorter.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.translucent_sorting.data; 2 | 3 | public interface Sorter extends PresentSortData { 4 | void writeIndexBuffer(CombinedCameraPos cameraPos, boolean initial); 5 | 6 | void destroy(); 7 | } -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/structure/OptionGroupBuilder.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config.structure; 2 | 3 | import net.minecraft.text.Text; 4 | 5 | public interface OptionGroupBuilder { 6 | OptionGroupBuilder setName(Text name); 7 | 8 | OptionGroupBuilder addOption(OptionBuilder option); 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/util/BlockRenderType.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.util; 2 | 3 | public class BlockRenderType { 4 | public static final int INVISIBLE = -1; 5 | public static final int LIQUID = 1; 6 | public static final int BLOCK_ENDER_CHEST = 2; 7 | public static final int MODEL = 3; 8 | } 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # gradle 2 | 3 | .gradle/ 4 | build/ 5 | out/ 6 | classes/ 7 | 8 | # idea 9 | 10 | .idea/ 11 | *.iml 12 | *.ipr 13 | *.iws 14 | 15 | # vscode 16 | 17 | .settings/ 18 | .vscode/ 19 | bin/ 20 | .classpath 21 | .project 22 | 23 | # fabric 24 | 25 | run/ 26 | neoforge/runs 27 | # macOS 28 | 29 | .DS_Store 30 | .AppleDouble 31 | .LSOverride 32 | -------------------------------------------------------------------------------- /common/src/api/java/dev/vexor/radium/compat/mojang/minecraft/random/LinearCongruentialGenerator.java: -------------------------------------------------------------------------------- 1 | package dev.vexor.radium.compat.mojang.minecraft.random; 2 | 3 | public class LinearCongruentialGenerator { 4 | public static long next(long l, long l2) { 5 | l *= l * 6364136223846793005L + 1442695040888963407L; 6 | return l += l2; 7 | } 8 | } -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/ChunkRenderMatrices.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk; 2 | 3 | import net.minecraft.client.render.Camera; 4 | import org.joml.Matrix4f; 5 | import org.joml.Matrix4fc; 6 | 7 | public record ChunkRenderMatrices(Matrix4fc projection, Matrix4fc modelView) { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /fabric/src/main/resources/sodium-fabric.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "package": "net.caffeinemc.mods.sodium.mixin", 3 | "required": true, 4 | "compatibilityLevel": "JAVA_17", 5 | "injectors": { 6 | "defaultRequire": 1 7 | }, 8 | "overwrites": { 9 | "conformVisibility": true 10 | }, 11 | "client": [ 12 | "core.model.quad.BakedQuadMixin" 13 | ] 14 | } -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gl/shader/uniform/GlUniform.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gl.shader.uniform; 2 | 3 | public abstract class GlUniform { 4 | protected final int index; 5 | 6 | protected GlUniform(int index) { 7 | this.index = index; 8 | } 9 | 10 | public abstract void set(T value); 11 | } 12 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/bsp_tree/BSPBuildFailureException.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.translucent_sorting.bsp_tree; 2 | 3 | public class BSPBuildFailureException extends RuntimeException { 4 | BSPBuildFailureException(String message) { 5 | super(message); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/world/cloned/ChunkRenderContext.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.world.cloned; 2 | 3 | import dev.vexor.radium.compat.mojang.minecraft.math.SectionPos; 4 | import net.minecraft.util.math.BlockBox; 5 | 6 | public record ChunkRenderContext(SectionPos origin, ClonedChunkSection[] sections, BlockBox volume) { 7 | } 8 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/structure/OptionPageBuilder.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config.structure; 2 | 3 | import net.minecraft.text.Text; 4 | 5 | public interface OptionPageBuilder extends PageBuilder { 6 | OptionPageBuilder setName(Text name); 7 | 8 | OptionPageBuilder addOptionGroup(OptionGroupBuilder group); 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/map/ChunkStatus.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.map; 2 | 3 | public class ChunkStatus { 4 | public static final int FLAG_HAS_BLOCK_DATA = 1; 5 | public static final int FLAG_HAS_LIGHT_DATA = 2; 6 | public static final int FLAG_ALL = FLAG_HAS_BLOCK_DATA | FLAG_HAS_LIGHT_DATA; 7 | } -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/vertex/VertexFormatAttribute.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.vertex; 2 | 3 | import net.caffeinemc.mods.sodium.client.gl.attribute.GlVertexAttributeFormat; 4 | 5 | public record VertexFormatAttribute(String name, GlVertexAttributeFormat format, int count, boolean normalized, boolean intType) { 6 | 7 | } -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: For help with other issues, join our Discord community 4 | url: https://discord.gg/xwYnQNTnpU 5 | about: This is the best option for getting help with mod installation, performance issues, and any other support inquiries 6 | # Copied from https://github.com/CaffeineMC/sodium#community 7 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | rootProject.name = "radium" 2 | 3 | pluginManagement { 4 | repositories { 5 | mavenLocal() 6 | maven { url = uri("https://maven.fabricmc.net/") } 7 | maven { url = uri("https://maven.neoforged.net/releases/") } 8 | gradlePluginPortal() 9 | } 10 | } 11 | 12 | include("lwjgl3") 13 | include("common") 14 | include("fabric") 15 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/structure/OptionOverrideBuilder.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config.structure; 2 | 3 | import net.minecraft.util.Identifier; 4 | 5 | public interface OptionOverrideBuilder { 6 | OptionOverrideBuilder setTarget(Identifier target); 7 | 8 | OptionOverrideBuilder setReplacement(OptionBuilder option); 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkVertexType.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.vertex.format; 2 | 3 | import net.caffeinemc.mods.sodium.client.gl.attribute.GlVertexFormat; 4 | 5 | public interface ChunkVertexType { 6 | GlVertexFormat getVertexFormat(); 7 | 8 | ChunkVertexEncoder getEncoder(); 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/viewport/frustum/Frustum.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.viewport.frustum; 2 | 3 | public interface Frustum { 4 | boolean testAab(float minX, float minY, float minZ, float maxX, float maxY, float maxZ); 5 | int intersectAab(float minX, float minY, float minZ, float maxX, float maxY, float maxZ); 6 | } 7 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/vertex/format/ChunkMeshFormats.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.vertex.format; 2 | 3 | import net.caffeinemc.mods.sodium.client.render.chunk.vertex.format.impl.CompactChunkVertex; 4 | 5 | public class ChunkMeshFormats { 6 | public static final ChunkVertexType COMPACT = new CompactChunkVertex(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/ConfigEntryPoint.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config; 2 | 3 | import net.caffeinemc.mods.sodium.api.config.structure.ConfigBuilder; 4 | 5 | public interface ConfigEntryPoint { 6 | default void registerConfigEarly(ConfigBuilder builder) { 7 | }; 8 | 9 | void registerConfigLate(ConfigBuilder builder); 10 | } 11 | -------------------------------------------------------------------------------- /common/src/api/java/dev/vexor/radium/compat/mojang/minecraft/IBlockColor.java: -------------------------------------------------------------------------------- 1 | package dev.vexor.radium.compat.mojang.minecraft; 2 | 3 | import net.minecraft.block.BlockState; 4 | import net.minecraft.util.math.BlockPos; 5 | import net.minecraft.world.BlockView; 6 | 7 | public interface IBlockColor { 8 | int colorMultiplier(BlockState state, BlockView worldIn, BlockPos pos, int tintIndex); 9 | } 10 | -------------------------------------------------------------------------------- /lwjgl3/src/main/java/org/lwjgl/opengl/EXTTextureRectangle.java: -------------------------------------------------------------------------------- 1 | package org.lwjgl.opengl; 2 | 3 | public class EXTTextureRectangle { 4 | public final static int GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT = 34040; 5 | public final static int GL_PROXY_TEXTURE_RECTANGLE_EXT = 34039; 6 | public final static int GL_TEXTURE_BINDING_RECTANGLE_EXT = 34038; 7 | public final static int GL_TEXTURE_RECTANGLE_EXT = 34037; 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/console/ConsoleSink.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.console; 2 | 3 | import net.caffeinemc.mods.sodium.client.console.message.MessageLevel; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public interface ConsoleSink { 7 | void logMessage(@NotNull MessageLevel level, @NotNull String text, boolean translatable, double duration); 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/data/CombinedCameraPos.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.translucent_sorting.data; 2 | 3 | import org.joml.Vector3dc; 4 | import org.joml.Vector3fc; 5 | 6 | public interface CombinedCameraPos { 7 | Vector3fc getRelativeCameraPos(); 8 | 9 | Vector3dc getAbsoluteCameraPos(); 10 | } 11 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/trigger/CameraMovement.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.translucent_sorting.trigger; 2 | 3 | import org.joml.Vector3dc; 4 | 5 | public record CameraMovement(Vector3dc start, Vector3dc end) { 6 | public boolean hasChanged() { 7 | return !this.start.equals(this.end); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/world/BiomeSeedProvider.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.world; 2 | 3 | import net.minecraft.client.world.ClientWorld; 4 | 5 | public interface BiomeSeedProvider { 6 | static long getBiomeZoomSeed(ClientWorld level) { 7 | return ((BiomeSeedProvider) level).sodium$getBiomeZoomSeed(); 8 | } 9 | 10 | long sodium$getBiomeZoomSeed(); 11 | } 12 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/lists/ChunkRenderListIterable.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.lists; 2 | 3 | import java.util.Iterator; 4 | 5 | public interface ChunkRenderListIterable { 6 | Iterator iterator(boolean reverse); 7 | 8 | default Iterator iterator() { 9 | return this.iterator(false); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gui/console/ConsoleHooks.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gui.console; 2 | 3 | import net.caffeinemc.mods.sodium.client.console.Console; 4 | 5 | public class ConsoleHooks { 6 | public static void render(double currentTime) { 7 | ConsoleRenderer.INSTANCE.update(Console.INSTANCE, currentTime); 8 | ConsoleRenderer.INSTANCE.draw(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/model/quad/BakedQuadView.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.model.quad; 2 | 3 | import net.caffeinemc.mods.sodium.client.model.quad.properties.ModelQuadFacing; 4 | 5 | public interface BakedQuadView extends ModelQuadView { 6 | ModelQuadFacing getNormalFace(); 7 | 8 | int getFaceNormal(); 9 | 10 | boolean hasShade(); 11 | 12 | boolean hasAO(); 13 | } 14 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gui/console/ConsoleSink.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gui.console; 2 | 3 | import net.caffeinemc.mods.sodium.client.gui.console.message.MessageLevel; 4 | import net.minecraft.text.Text; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public interface ConsoleSink { 8 | void logMessage(@NotNull MessageLevel level, @NotNull Text text, double duration); 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/util/sorting/AbstractSort.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.util.sorting; 2 | 3 | 4 | public class AbstractSort { 5 | protected static int[] createIndexBuffer(int length) { 6 | var indices = new int[length]; 7 | 8 | for (int i = 0; i < length; i++) { 9 | indices[i] = i; 10 | } 11 | 12 | return indices; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/map/ChunkTrackerHolder.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.map; 2 | 3 | import net.minecraft.client.world.ClientWorld; 4 | 5 | public interface ChunkTrackerHolder { 6 | static ChunkTracker get(ClientWorld level) { 7 | return ((ChunkTrackerHolder) level).sodium$getTracker(); 8 | } 9 | 10 | ChunkTracker sodium$getTracker(); 11 | } 12 | -------------------------------------------------------------------------------- /common/src/api/java/dev/vexor/radium/compat/mojang/minecraft/math/QuartPos.java: -------------------------------------------------------------------------------- 1 | package dev.vexor.radium.compat.mojang.minecraft.math; 2 | 3 | public final class QuartPos { 4 | public static final int BITS = 2; 5 | public static final int MASK = 3; 6 | 7 | public static int fromBlock(int pos) { 8 | return pos >> BITS; 9 | } 10 | 11 | public static int quartLocal(int pos) { 12 | return pos & MASK; 13 | } 14 | } -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/map/ClientChunkEventListener.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.map; 2 | 3 | public interface ClientChunkEventListener { 4 | void updateMapCenter(int chunkX, int chunkZ); 5 | 6 | void updateLoadDistance(int loadDistance); 7 | 8 | void onChunkStatusAdded(int x, int z, int flags); 9 | void onChunkStatusRemoved(int x, int z, int flags); 10 | } 11 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/vertex/attributes/common/ColorAttribute.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.vertex.attributes.common; 2 | 3 | import org.lwjgl.system.MemoryUtil; 4 | 5 | public class ColorAttribute { 6 | public static void set(long ptr, int color) { 7 | MemoryUtil.memPutInt(ptr + 0, color); 8 | } 9 | 10 | public static int get(long ptr) { 11 | return MemoryUtil.memGetInt(ptr); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/vertex/attributes/common/LightAttribute.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.vertex.attributes.common; 2 | 3 | import org.lwjgl.system.MemoryUtil; 4 | 5 | public class LightAttribute { 6 | public static void set(long ptr, int light) { 7 | MemoryUtil.memPutInt(ptr + 0, light); 8 | } 9 | 10 | public static int get(long ptr) { 11 | return MemoryUtil.memGetInt(ptr); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/vertex/format/VertexFormatExtensions.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.vertex.format; 2 | 3 | public interface VertexFormatExtensions { 4 | /** 5 | * Returns an integer identifier that represents this vertex format in the global namespace. These identifiers 6 | * are valid only for the current process lifetime and should not be saved to disk. 7 | */ 8 | int sodium$getGlobalId(); 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gl/tessellation/GlTessellation.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gl.tessellation; 2 | 3 | import net.caffeinemc.mods.sodium.client.gl.device.CommandList; 4 | 5 | public interface GlTessellation { 6 | void delete(CommandList commandList); 7 | 8 | void bind(CommandList commandList); 9 | 10 | void unbind(CommandList commandList); 11 | 12 | GlPrimitiveType getPrimitiveType(); 13 | } 14 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/vertex/attributes/common/NormalAttribute.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.vertex.attributes.common; 2 | 3 | import org.lwjgl.system.MemoryUtil; 4 | 5 | public class NormalAttribute { 6 | public static void set(long ptr, int normal) { 7 | MemoryUtil.memPutInt(ptr + 0, normal); 8 | } 9 | 10 | public static int get(long ptr) { 11 | return MemoryUtil.memGetInt(ptr); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/vertex/attributes/common/OverlayAttribute.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.vertex.attributes.common; 2 | 3 | import org.lwjgl.system.MemoryUtil; 4 | 5 | public class OverlayAttribute { 6 | public static void set(long ptr, int overlay) { 7 | MemoryUtil.memPutInt(ptr + 0, overlay); 8 | } 9 | 10 | public static int get(long ptr) { 11 | return MemoryUtil.memGetInt(ptr); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/src/main/java/dev/vexor/radium/mixin/sodium/core/access/AGameRenderer.java: -------------------------------------------------------------------------------- 1 | package dev.vexor.radium.mixin.sodium.core.access; 2 | 3 | import net.minecraft.client.render.GameRenderer; 4 | import net.minecraft.util.Identifier; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Invoker; 7 | 8 | @Mixin(GameRenderer.class) 9 | public interface AGameRenderer { 10 | @Invoker 11 | void invokeLoadShader(Identifier id); 12 | } 13 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/data/StaticSorter.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.translucent_sorting.data; 2 | 3 | class StaticSorter extends PresentSorter { 4 | StaticSorter(int quadCount) { 5 | this.initBufferWithQuadLength(quadCount); 6 | } 7 | 8 | @Override 9 | public void writeIndexBuffer(CombinedCameraPos cameraPos, boolean initial) { 10 | // no-op 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/ConfigState.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config; 2 | 3 | import net.minecraft.util.Identifier; 4 | 5 | public interface ConfigState { 6 | Identifier UPDATE_ON_REBUILD = new Identifier("__meta__:update_on_rebuild"); 7 | 8 | boolean readBooleanOption(Identifier id); 9 | 10 | int readIntOption(Identifier id); 11 | 12 | > E readEnumOption(Identifier id, Class enumClass); 13 | } 14 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/radium/shaders/include/chunk_material.glsl: -------------------------------------------------------------------------------- 1 | const uint MATERIAL_USE_MIP_OFFSET = 0u; 2 | const uint MATERIAL_ALPHA_CUTOFF_OFFSET = 1u; 3 | 4 | const float[4] ALPHA_CUTOFF = float[4](0.0, 0.0001, 0.5, 1.0); 5 | 6 | bool _material_use_mips(uint material) { 7 | return ((material >> MATERIAL_USE_MIP_OFFSET) & 1u) != 0u; 8 | } 9 | 10 | float _material_alpha_cutoff(uint material) { 11 | return ALPHA_CUTOFF[(material >> MATERIAL_ALPHA_CUTOFF_OFFSET) & 3u]; 12 | } -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/structure/ExternalPageBuilder.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config.structure; 2 | 3 | import net.minecraft.client.gui.screen.Screen; 4 | import net.minecraft.text.Text; 5 | 6 | import java.util.function.Consumer; 7 | 8 | public interface ExternalPageBuilder extends PageBuilder { 9 | ExternalPageBuilder setName(Text name); 10 | 11 | ExternalPageBuilder setScreenProvider(Consumer currentScreenConsumer); 12 | } 13 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/config/structure/Page.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.config.structure; 2 | 3 | import com.google.common.collect.ImmutableList; 4 | import net.caffeinemc.mods.sodium.client.config.search.SearchIndex; 5 | import net.minecraft.text.Text; 6 | 7 | public interface Page { 8 | Text name(); 9 | 10 | ImmutableList groups(); 11 | 12 | void registerTextSources(SearchIndex index, ModOptions modOptions); 13 | } 14 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/shader/ChunkShaderBindingPoints.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.shader; 2 | 3 | public class ChunkShaderBindingPoints { 4 | public static final int ATTRIBUTE_POSITION = 0; 5 | public static final int ATTRIBUTE_COLOR = 1; 6 | public static final int ATTRIBUTE_TEXTURE = 2; 7 | public static final int ATTRIBUTE_LIGHT_MATERIAL_INDEX = 3; 8 | 9 | public static final int FRAG_COLOR = 0; 10 | } 11 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/config/value/DependentValue.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.config.value; 2 | 3 | import net.caffeinemc.mods.sodium.client.config.structure.Config; 4 | import net.minecraft.util.Identifier; 5 | 6 | import java.util.Collection; 7 | import java.util.Set; 8 | 9 | public interface DependentValue { 10 | V get(Config state); 11 | 12 | default Collection getDependencies() { 13 | return Set.of(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/config/value/ConstantValue.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.config.value; 2 | 3 | import net.caffeinemc.mods.sodium.client.config.structure.Config; 4 | 5 | public class ConstantValue implements DependentValue { 6 | private final V value; 7 | 8 | public ConstantValue(V value) { 9 | this.value = value; 10 | } 11 | 12 | @Override 13 | public V get(Config state) { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/java/dev/vexor/radium/mixin/sodium/core/access/ABlockRenderManager.java: -------------------------------------------------------------------------------- 1 | package dev.vexor.radium.mixin.sodium.core.access; 2 | 3 | import net.minecraft.client.render.block.BlockRenderManager; 4 | import net.minecraft.client.render.block.FluidRenderer; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(BlockRenderManager.class) 9 | public interface ABlockRenderManager { 10 | @Accessor 11 | FluidRenderer getFluidRenderer(); 12 | } 13 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/data/PresentSortData.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.translucent_sorting.data; 2 | 3 | import net.caffeinemc.mods.sodium.client.util.NativeBuffer; 4 | 5 | import java.nio.IntBuffer; 6 | 7 | public interface PresentSortData { 8 | NativeBuffer getIndexBuffer(); 9 | 10 | default IntBuffer getIntBuffer() { 11 | return this.getIndexBuffer().getDirectBuffer().asIntBuffer(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/TaskQueueType.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk; 2 | 3 | public enum TaskQueueType { 4 | ZERO_FRAME_DEFER, 5 | ONE_FRAME_DEFER, 6 | ALWAYS_DEFER, 7 | INITIAL_BUILD; 8 | 9 | public boolean allowsUnlimitedUploadDuration() { 10 | return this == ZERO_FRAME_DEFER; 11 | } 12 | 13 | public int queueSizeLimit() { 14 | return this == INITIAL_BUILD ? 128 : Integer.MAX_VALUE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/util/ListUtil.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.util; 2 | 3 | import java.util.Collection; 4 | 5 | public class ListUtil { 6 | public static void updateList(Collection collection, Collection before, Collection after) { 7 | if (!before.isEmpty()) { 8 | collection.removeAll(before); 9 | } 10 | 11 | if (!after.isEmpty()) { 12 | collection.addAll(after); 13 | } 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gl/array/GlVertexArray.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gl.array; 2 | 3 | import net.caffeinemc.mods.sodium.client.gl.GlObject; 4 | import org.lwjgl.opengl.GL30; 5 | 6 | /** 7 | * Provides Vertex Array functionality on supported platforms. 8 | */ 9 | public class GlVertexArray extends GlObject { 10 | public static final int NULL_ARRAY_ID = 0; 11 | 12 | public GlVertexArray() { 13 | this.setHandle(GL30.glGenVertexArrays()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /common/src/main/java/dev/vexor/radium/mixin/sodium/core/access/AFluidRenderer.java: -------------------------------------------------------------------------------- 1 | package dev.vexor.radium.mixin.sodium.core.access; 2 | 3 | import net.minecraft.client.render.block.FluidRenderer; 4 | import net.minecraft.client.texture.Sprite; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(FluidRenderer.class) 9 | public interface AFluidRenderer { 10 | @Accessor 11 | Sprite[] getWaterSprites(); 12 | @Accessor 13 | Sprite[] getLavaSprites(); 14 | } 15 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gl/device/DrawCommandList.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gl.device; 2 | 3 | import net.caffeinemc.mods.sodium.client.gl.tessellation.GlIndexType; 4 | 5 | public interface DrawCommandList extends AutoCloseable { 6 | void multiDrawElementsBaseVertex(MultiDrawBatch batch, GlIndexType indexType); 7 | 8 | void endTessellating(); 9 | 10 | void flush(); 11 | 12 | @Override 13 | default void close() { 14 | this.flush(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/model/quad/properties/ModelQuadWinding.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.model.quad.properties; 2 | 3 | public enum ModelQuadWinding { 4 | CLOCKWISE(new int[] { 0, 1, 2, 2, 3, 0 }), 5 | COUNTERCLOCKWISE(new int[] { 0, 3, 2, 1, 0, 2 }); 6 | 7 | private final int[] indices; 8 | 9 | ModelQuadWinding(int[] indices) { 10 | this.indices = indices; 11 | } 12 | 13 | public int[] getIndices() { 14 | return this.indices; 15 | } 16 | } -------------------------------------------------------------------------------- /common/src/main/java/dev/vexor/radium/mixin/core/mcpatcher/MixinAbstractTexture.java: -------------------------------------------------------------------------------- 1 | package dev.vexor.radium.mixin.core.mcpatcher; 2 | 3 | import com.prupe.mcpatcher.core.AbstractTextureExpansion; 4 | import net.minecraft.client.texture.AbstractTexture; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | 7 | @Mixin(AbstractTexture.class) 8 | public class MixinAbstractTexture implements AbstractTextureExpansion { 9 | @Override 10 | public void unloadGLTexture() { 11 | ((AbstractTexture) (Object) this).clearGlId(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gl/shader/uniform/GlUniformInt.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gl.shader.uniform; 2 | 3 | import org.lwjgl.opengl.GL20; 4 | 5 | public class GlUniformInt extends GlUniform { 6 | public GlUniformInt(int index) { 7 | super(index); 8 | } 9 | 10 | @Override 11 | public void set(Integer value) { 12 | this.setInt(value); 13 | } 14 | 15 | public void setInt(int value) { 16 | GL20.glUniform1i(this.index, value); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/util/BitwiseMath.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.util; 2 | 3 | public class BitwiseMath { 4 | // returns (1) if (a < b), otherwise (0) 5 | // valid for all values of (a) and (b) 6 | public static int lessThan(int a, int b) { 7 | return (a - b) >>> 31; 8 | } 9 | 10 | // returns (1) if (a > b), otherwise (0) 11 | // valid for all values of (a) and (b) 12 | public static int greaterThan(int a, int b) { 13 | return (b - a) >>> 31; 14 | } 15 | } -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gl/shader/uniform/GlUniformFloat.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gl.shader.uniform; 2 | 3 | import org.lwjgl.opengl.GL20; 4 | 5 | public class GlUniformFloat extends GlUniform { 6 | public GlUniformFloat(int index) { 7 | super(index); 8 | } 9 | 10 | @Override 11 | public void set(Float value) { 12 | this.setFloat(value); 13 | } 14 | 15 | public void setFloat(float value) { 16 | GL20.glUniform1f(this.index, value); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gl/shader/uniform/GlUniformBool.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gl.shader.uniform; 2 | 3 | import org.lwjgl.opengl.GL30C; 4 | 5 | public class GlUniformBool extends GlUniform { 6 | public GlUniformBool(int index) { 7 | super(index); 8 | } 9 | 10 | @Override 11 | public void set(Boolean value) { 12 | this.setBool(value); 13 | } 14 | 15 | public void setBool(boolean value) { 16 | GL30C.glUniform1i(this.index, value ? 1 : 0); 17 | } 18 | } -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gl/buffer/GlImmutableBuffer.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gl.buffer; 2 | 3 | import net.caffeinemc.mods.sodium.client.gl.util.EnumBitField; 4 | 5 | public class GlImmutableBuffer extends GlBuffer { 6 | private final EnumBitField flags; 7 | 8 | public GlImmutableBuffer(EnumBitField flags) { 9 | this.flags = flags; 10 | } 11 | 12 | public EnumBitField getFlags() { 13 | return this.flags; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/buffers/ChunkModelBuilder.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.compile.buffers; 2 | 3 | import net.caffeinemc.mods.sodium.client.model.quad.properties.ModelQuadFacing; 4 | import net.caffeinemc.mods.sodium.client.render.chunk.vertex.builder.ChunkMeshBufferBuilder; 5 | import net.minecraft.client.texture.Sprite; 6 | 7 | public interface ChunkModelBuilder { 8 | ChunkMeshBufferBuilder getVertexBuffer(ModelQuadFacing facing); 9 | 10 | void addSprite(Sprite sprite); 11 | } 12 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/occlusion/GraphDirectionSet.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.occlusion; 2 | 3 | public class GraphDirectionSet { 4 | public static final int NONE = 0; 5 | public static final int ALL = (1 << GraphDirection.COUNT) - 1; 6 | 7 | public static int of(int direction) { 8 | return 1 << direction; 9 | } 10 | 11 | public static boolean contains(int set, int direction) { 12 | return (set & GraphDirectionSet.of(direction)) != 0; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/compile/estimation/UploadDuration.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.compile.estimation; 2 | 3 | public record UploadDuration(long uploadDuration, long size) implements ExpDecayLinear2DEstimator.DataPair { 4 | @Override 5 | public long x() { 6 | return this.size; 7 | } 8 | 9 | @Override 10 | public long y() { 11 | return this.uploadDuration; 12 | } 13 | 14 | @Override 15 | public Void category() { 16 | return null; 17 | } 18 | } -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/bsp_tree/Partition.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.translucent_sorting.bsp_tree; 2 | 3 | import it.unimi.dsi.fastutil.ints.IntArrayList; 4 | 5 | /** 6 | * Models a partition of the space into a set of quads that lie inside or on the 7 | * plane with the specified distance. If the distance is -1 this is the "end" 8 | * partition after the last partition plane. 9 | */ 10 | record Partition(float distance, IntArrayList quadsBefore, IntArrayList quadsOn) { 11 | } 12 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gl/tessellation/GlPrimitiveType.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gl.tessellation; 2 | 3 | import org.lwjgl.opengl.GL11; 4 | import org.lwjgl.opengl.GL40; 5 | 6 | public enum GlPrimitiveType { 7 | POINTS(GL11.GL_POINTS), 8 | LINES(GL11.GL_LINES), 9 | TRIANGLES(GL11.GL_TRIANGLES), 10 | PATCHES(GL40.GL_PATCHES); 11 | 12 | private final int id; 13 | 14 | GlPrimitiveType(int id) { 15 | this.id = id; 16 | } 17 | 18 | public int getId() { 19 | return this.id; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/terrain/material/parameters/MaterialParameters.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.render.chunk.terrain.material.parameters; 2 | 3 | public class MaterialParameters { 4 | public static final int OFFSET_USE_MIP = 0; 5 | public static final int OFFSET_ALPHA_CUTOFF = 1; 6 | 7 | public static int pack(AlphaCutoffParameter alphaCutoff, boolean useMipmaps) { 8 | return (((useMipmaps ? 1 : 0) << OFFSET_USE_MIP) | 9 | ((alphaCutoff.ordinal()) << OFFSET_ALPHA_CUTOFF)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /common/src/api/java/net/caffeinemc/mods/sodium/api/config/ConfigEntryPointForge.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.api.config; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Retention(RetentionPolicy.RUNTIME) 9 | @Target(ElementType.TYPE) 10 | public @interface ConfigEntryPointForge { 11 | /** 12 | * The mod id to associate this config entrypoint's "owner" with. 13 | * 14 | * @return the mod id 15 | */ 16 | String value(); 17 | } 18 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/gui/options/control/Control.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.gui.options.control; 2 | 3 | import net.caffeinemc.mods.sodium.client.config.structure.Option; 4 | import net.caffeinemc.mods.sodium.client.gui.ColorTheme; 5 | import net.caffeinemc.mods.sodium.client.util.Dim2i; 6 | import net.minecraft.client.gui.screen.Screen; 7 | 8 | public interface Control { 9 | Option getOption(); 10 | 11 | ControlElement createElement(Screen screen, AbstractOptionList list, Dim2i dim, ColorTheme theme); 12 | 13 | int getMaxWidth(); 14 | } 15 | -------------------------------------------------------------------------------- /common/src/desktop/java/net/caffeinemc/mods/sodium/desktop/utils/browse/CrossPlatformImpl.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.desktop.utils.browse; 2 | 3 | import java.awt.*; 4 | import java.io.IOException; 5 | import java.net.URI; 6 | 7 | class CrossPlatformImpl implements BrowseUrlHandler { 8 | public static boolean isSupported() { 9 | return Desktop.getDesktop() 10 | .isSupported(Desktop.Action.BROWSE); 11 | } 12 | 13 | @Override 14 | public void browseTo(String url) throws IOException { 15 | Desktop.getDesktop().browse(URI.create(url)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /common/src/main/java/net/caffeinemc/mods/sodium/client/config/structure/OptionGroup.java: -------------------------------------------------------------------------------- 1 | package net.caffeinemc.mods.sodium.client.config.structure; 2 | 3 | import net.caffeinemc.mods.sodium.client.config.search.SearchIndex; 4 | import net.minecraft.text.Text; 5 | 6 | import java.util.List; 7 | 8 | public record OptionGroup(Text name, List