Showing preview only (948K chars total). Download the full file or copy to clipboard to get everything.
Repository: Argon4W/AcceleratedRendering
Branch: main
Commit: 2644bed53eb0
Files: 359
Total size: 805.2 KB
Directory structure:
gitextract_d9366gy4/
├── .gitattributes
├── .github/
│ └── workflows/
│ └── build.yml
├── .gitignore
├── LICENSE
├── README.md
├── build.gradle
├── changelogs/
│ ├── changelog-1.0.0.md
│ ├── changelog-1.0.1.md
│ ├── changelog-1.0.2.md
│ ├── changelog-1.0.3.md
│ ├── changelog-1.0.4.md
│ ├── changelog-1.0.5.1.md
│ ├── changelog-1.0.5.md
│ ├── changelog-1.0.6.md
│ ├── changelog-1.0.7.md
│ └── changelog-1.0.8.md
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── images/
│ ├── LOGO.psd
│ └── benchmark.psd
├── settings.gradle
└── src/
└── main/
├── java/
│ └── com/
│ └── github/
│ └── argon4w/
│ └── acceleratedrendering/
│ ├── AcceleratedRenderingModEntry.java
│ ├── compat/
│ │ ├── AbstractCompatMixinPlugin.java
│ │ ├── curios/
│ │ │ ├── CuriosCompatFeature.java
│ │ │ └── mixins/
│ │ │ └── CuriosLayerMixin.java
│ │ ├── immediatelyfast/
│ │ │ └── mixins/
│ │ │ ├── BatchableBufferSourceMixin.java
│ │ │ ├── BatchingBuffersMixin.java
│ │ │ └── WrappedRenderLayerMixin.java
│ │ └── iris/
│ │ ├── IrisCompatBuffers.java
│ │ ├── IrisCompatBuffersProvider.java
│ │ ├── IrisCompatFeature.java
│ │ ├── environments/
│ │ │ └── IrisBufferEnvironment.java
│ │ ├── interfaces/
│ │ │ ├── IIrisAcceleratedBufferBuilder.java
│ │ │ ├── IIrisMeshInfo.java
│ │ │ └── IIrisMeshInfoCache.java
│ │ ├── mixins/
│ │ │ ├── acceleratedrendering/
│ │ │ │ ├── AcceleratedBufferBuilderMixin.java
│ │ │ │ ├── AcceleratedBufferSourceMixin.java
│ │ │ │ ├── AcceleratedRenderingModEntryMixin.java
│ │ │ │ ├── CoreBuffersProviderMixin.java
│ │ │ │ ├── FlattenMeshInfoCacheMixin.java
│ │ │ │ ├── IBufferEnvironmentPresetsMixin.java
│ │ │ │ ├── MeshUploaderMixin.java
│ │ │ │ ├── MeshUploadingProgramDispatcherMixin.java
│ │ │ │ ├── RenderTypeUtilsMixin.java
│ │ │ │ ├── SimpleMeshInfoCacheMixin.java
│ │ │ │ ├── SimpleMeshInfoMixin.java
│ │ │ │ └── UnsafeMemoryMeshInfoCacheMixin.java
│ │ │ ├── iris/
│ │ │ │ ├── FullyBufferedMultiBufferSourceMixin.java
│ │ │ │ ├── HandRendererMixin.java
│ │ │ │ ├── IrisVertexFormatsMixin.java
│ │ │ │ ├── ModelToEntityVertexSerializerMixin.java
│ │ │ │ └── ShadowRendererMixin.java
│ │ │ ├── plugin/
│ │ │ │ └── IrisCompatMixinPlugin.java
│ │ │ └── vanilla/
│ │ │ └── LevelRendererMixin.java
│ │ └── programs/
│ │ ├── IrisPrograms.java
│ │ ├── culling/
│ │ │ ├── IrisCullingProgramDispatcher.java
│ │ │ └── IrisCullingProgramSelector.java
│ │ └── processing/
│ │ └── IrisPolygonProcessor.java
│ ├── configs/
│ │ ├── FeatureConfig.java
│ │ ├── FeatureStatus.java
│ │ └── PipelineSetting.java
│ ├── core/
│ │ ├── CoreBuffers.java
│ │ ├── CoreBuffersProvider.java
│ │ ├── CoreFeature.java
│ │ ├── CoreStates.java
│ │ ├── backends/
│ │ │ ├── DebugOutput.java
│ │ │ ├── GLConstants.java
│ │ │ ├── Sync.java
│ │ │ ├── VertexArray.java
│ │ │ ├── buffers/
│ │ │ │ ├── EmptyServerBuffer.java
│ │ │ │ ├── IClientBuffer.java
│ │ │ │ ├── IServerBuffer.java
│ │ │ │ ├── ImmutableBuffer.java
│ │ │ │ ├── MappedBuffer.java
│ │ │ │ └── MutableBuffer.java
│ │ │ ├── programs/
│ │ │ │ ├── BarrierFlags.java
│ │ │ │ ├── ComputeProgram.java
│ │ │ │ ├── ComputeShader.java
│ │ │ │ └── Uniform.java
│ │ │ └── states/
│ │ │ ├── EmptyBindingState.java
│ │ │ ├── FramebufferBindingState.java
│ │ │ ├── IBindingState.java
│ │ │ ├── buffers/
│ │ │ │ ├── BlockBufferBindingStateType.java
│ │ │ │ ├── BufferBlockType.java
│ │ │ │ ├── SimpleBlockBufferBindingState.java
│ │ │ │ └── cache/
│ │ │ │ ├── BlockBufferBindingCacheType.java
│ │ │ │ ├── FlattenBlockBufferBindingCache.java
│ │ │ │ ├── IBlockBufferBindingCache.java
│ │ │ │ ├── SimpleBlockBufferBinding.java
│ │ │ │ ├── SimpleBlockBufferBindingCache.java
│ │ │ │ └── UnsafeMemoryBlockBufferBindingCache.java
│ │ │ ├── scissors/
│ │ │ │ ├── MojangScissorBindingState.java
│ │ │ │ ├── OpenGLScissorBindingState.java
│ │ │ │ └── ScissorBindingStateType.java
│ │ │ └── viewports/
│ │ │ ├── MojangViewportBindingState.java
│ │ │ ├── OpenGLViewportBindingState.java
│ │ │ └── ViewportBindingStateType.java
│ │ ├── buffers/
│ │ │ ├── AcceleratedBufferSources.java
│ │ │ ├── EmptyAcceleratedBufferSources.java
│ │ │ ├── accelerated/
│ │ │ │ ├── AcceleratedBufferSource.java
│ │ │ │ ├── AcceleratedRingBuffers.java
│ │ │ │ ├── IAcceleratedBufferSource.java
│ │ │ │ ├── IAccelerationHolder.java
│ │ │ │ ├── builders/
│ │ │ │ │ ├── AcceleratedBufferBuilder.java
│ │ │ │ │ ├── AcceleratedEntityOutlineGenerator.java
│ │ │ │ │ ├── AcceleratedSheetedDecalTextureGenerator.java
│ │ │ │ │ ├── AcceleratedSpriteCoordinateExpander.java
│ │ │ │ │ ├── AcceleratedVertexConsumerWrapper.java
│ │ │ │ │ ├── BufferSourceExtension.java
│ │ │ │ │ ├── IAcceleratableBufferSource.java
│ │ │ │ │ ├── IAcceleratedVertexConsumer.java
│ │ │ │ │ ├── IBufferGraph.java
│ │ │ │ │ └── VertexConsumerExtension.java
│ │ │ │ ├── layers/
│ │ │ │ │ ├── LayerDrawType.java
│ │ │ │ │ ├── LayerKey.java
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── CustomLayerFunction.java
│ │ │ │ │ │ ├── EmptyLayerFunction.java
│ │ │ │ │ │ └── ILayerFunction.java
│ │ │ │ │ └── storage/
│ │ │ │ │ ├── ILayerContexts.java
│ │ │ │ │ ├── ILayerStorage.java
│ │ │ │ │ ├── LayerStorageType.java
│ │ │ │ │ ├── SeparatedLayerStorage.java
│ │ │ │ │ ├── SimpleLayerContexts.java
│ │ │ │ │ ├── empty/
│ │ │ │ │ │ ├── EmptyLayerContexts.java
│ │ │ │ │ │ └── EmptyLayerStorage.java
│ │ │ │ │ └── sorted/
│ │ │ │ │ ├── SortedLayerContexts.java
│ │ │ │ │ └── SortedLayerStorage.java
│ │ │ │ ├── pools/
│ │ │ │ │ ├── DrawContextPool.java
│ │ │ │ │ ├── ElementBufferPool.java
│ │ │ │ │ ├── StagingBufferPool.java
│ │ │ │ │ └── meshes/
│ │ │ │ │ ├── FlattenMeshInfoCache.java
│ │ │ │ │ ├── IMeshInfoCache.java
│ │ │ │ │ ├── MeshInfoCacheType.java
│ │ │ │ │ ├── MeshUploaderPool.java
│ │ │ │ │ ├── SimpleMeshInfo.java
│ │ │ │ │ ├── SimpleMeshInfoCache.java
│ │ │ │ │ └── UnsafeMemoryMeshInfoCache.java
│ │ │ │ └── renderers/
│ │ │ │ ├── DecoratedRenderer.java
│ │ │ │ ├── IAcceleratedRenderer.java
│ │ │ │ ├── IBufferDecorator.java
│ │ │ │ └── SheetedDecalTextureRenderer.java
│ │ │ ├── environments/
│ │ │ │ ├── IBufferEnvironment.java
│ │ │ │ └── VanillaBufferEnvironment.java
│ │ │ └── memory/
│ │ │ ├── IMemoryInterface.java
│ │ │ ├── IMemoryLayout.java
│ │ │ ├── NullMemoryInterface.java
│ │ │ ├── SimpleDynamicMemoryInterface.java
│ │ │ ├── SimpleMemoryInterface.java
│ │ │ └── VertexLayout.java
│ │ ├── meshes/
│ │ │ ├── ClientMesh.java
│ │ │ ├── EmptyMesh.java
│ │ │ ├── IMesh.java
│ │ │ ├── MeshType.java
│ │ │ ├── ServerMesh.java
│ │ │ ├── collectors/
│ │ │ │ ├── CulledMeshCollector.java
│ │ │ │ ├── IMeshCollector.java
│ │ │ │ └── SimpleMeshCollector.java
│ │ │ └── data/
│ │ │ ├── MeshData.java
│ │ │ └── cache/
│ │ │ ├── IMeshDataCache.java
│ │ │ ├── IgnoreMeshDataCache.java
│ │ │ ├── MeshDataCacheType.java
│ │ │ ├── MeshDataCaches.java
│ │ │ └── SimpleMeshDataCache.java
│ │ ├── mixins/
│ │ │ ├── GameRendererMixin.java
│ │ │ ├── LevelRendererMixin.java
│ │ │ ├── buffers/
│ │ │ │ ├── BufferBuilderMixin.java
│ │ │ │ ├── BufferSourceMixin.java
│ │ │ │ ├── EntityOutlineGeneratorMixin.java
│ │ │ │ ├── MinecraftMixin.java
│ │ │ │ ├── OutlineBufferSourceMixin.java
│ │ │ │ ├── SheetedDecalTextureGeneratorMixin.java
│ │ │ │ ├── SpriteCoordinateExpanderMixin.java
│ │ │ │ ├── VertexConsumerMixin.java
│ │ │ │ ├── VertexDoubleConsumerMixin.java
│ │ │ │ └── VertexMultipleConsumerMixin.java
│ │ │ └── compatibility/
│ │ │ ├── MinecraftMixin.java
│ │ │ ├── ParticleEngineMixin.java
│ │ │ ├── RenderTypeMixin.java
│ │ │ └── WindowMixin.java
│ │ ├── programs/
│ │ │ ├── ComputeShaderDefinition.java
│ │ │ ├── ComputeShaderProgramLoader.java
│ │ │ ├── ComputeShaderPrograms.java
│ │ │ ├── LoadComputeShaderEvent.java
│ │ │ ├── culling/
│ │ │ │ ├── ICullingProgramDispatcher.java
│ │ │ │ ├── ICullingProgramSelector.java
│ │ │ │ ├── LoadCullingProgramSelectorEvent.java
│ │ │ │ ├── PassThroughCullingProgramDispatcher.java
│ │ │ │ └── PassThroughCullingProgramSelector.java
│ │ │ ├── dispatchers/
│ │ │ │ ├── EmptyProgramDispatcher.java
│ │ │ │ ├── FixedPolygonProgramDispatcher.java
│ │ │ │ ├── IPolygonProgramDispatcher.java
│ │ │ │ ├── MeshUploadingProgramDispatcher.java
│ │ │ │ └── TransformProgramDispatcher.java
│ │ │ ├── overrides/
│ │ │ │ ├── IShaderProgramOverride.java
│ │ │ │ ├── IShaderProgramOverrides.java
│ │ │ │ ├── ITransformShaderProgramOverride.java
│ │ │ │ ├── IUploadingShaderProgramOverride.java
│ │ │ │ ├── LoadShaderProgramOverridesEvent.java
│ │ │ │ └── OverrideProgramType.java
│ │ │ └── processing/
│ │ │ ├── EmptyPolygonProcessor.java
│ │ │ ├── IPolygonProcessor.java
│ │ │ └── LoadPolygonProcessorEvent.java
│ │ └── utils/
│ │ ├── CullerUtils.java
│ │ ├── DirectionUtils.java
│ │ ├── EmptyIterator.java
│ │ ├── FastColorUtils.java
│ │ ├── FuzzyMatrix4f.java
│ │ ├── IntArrayHashStrategy.java
│ │ ├── LoopResetPool.java
│ │ ├── MemUtils.java
│ │ ├── MutableSize.java
│ │ ├── PackedVector2i.java
│ │ ├── PoseStackExtension.java
│ │ ├── RegistryFilter.java
│ │ ├── RenderTypeUtils.java
│ │ ├── ResourceLocationUtils.java
│ │ ├── SimpleCachedArray.java
│ │ ├── SimpleResetPool.java
│ │ ├── SimpleTextureTarget.java
│ │ ├── TextureUtils.java
│ │ └── Vertex.java
│ └── features/
│ ├── culling/
│ │ ├── OrientationCullingFeature.java
│ │ ├── OrientationCullingProgramDispatcher.java
│ │ ├── OrientationCullingProgramSelector.java
│ │ └── OrientationCullingPrograms.java
│ ├── emf/
│ │ ├── IEMFModelVariant.java
│ │ └── mixins/
│ │ ├── EMFModelPartMixin.java
│ │ └── EMFModelPartWithStateMixin.java
│ ├── entities/
│ │ ├── AcceleratedEntityRenderingFeature.java
│ │ ├── AcceleratedEntityShadowRenderer.java
│ │ └── mixins/
│ │ ├── EntityRenderDispatcherMixin.java
│ │ └── InventoryScreenMixin.java
│ ├── filter/
│ │ ├── FilterFeature.java
│ │ ├── FilterType.java
│ │ └── mixins/
│ │ ├── AbstractContainerScreenMixin.java
│ │ ├── BlockEntityRenderDispatcherMixin.java
│ │ ├── ClientHooksMixin.java
│ │ ├── ItemRendererMixin.java
│ │ └── LevelRendererMixin.java
│ ├── ftb/
│ │ └── mixins/
│ │ └── BaseScreenMixin.java
│ ├── geckolib/
│ │ └── mixins/
│ │ ├── GeoBoneMixin.java
│ │ └── GeoRendererMixin.java
│ ├── items/
│ │ ├── AcceleratedItemRenderingFeature.java
│ │ ├── AcceleratedQuadsRenderer.java
│ │ ├── BakedModelExtension.java
│ │ ├── IAcceleratedBakedModel.java
│ │ ├── IAcceleratedBakedQuad.java
│ │ ├── colors/
│ │ │ ├── BlockLayerColors.java
│ │ │ ├── EmptyBlockColor.java
│ │ │ ├── EmptyItemColor.java
│ │ │ ├── FixedColors.java
│ │ │ ├── ILayerColors.java
│ │ │ └── ItemLayerColors.java
│ │ ├── contexts/
│ │ │ ├── AcceleratedModelRenderContext.java
│ │ │ ├── AcceleratedQuadsRenderContext.java
│ │ │ └── DecorationRenderContext.java
│ │ ├── gui/
│ │ │ ├── GuiBatchingController.java
│ │ │ ├── GuiRenderTypes.java
│ │ │ ├── contexts/
│ │ │ │ ├── BlitDrawContext.java
│ │ │ │ ├── DecoratorDrawContext.java
│ │ │ │ ├── FillDrawContext.java
│ │ │ │ ├── GradientDrawContext.java
│ │ │ │ ├── HighlightDrawContext.java
│ │ │ │ ├── IGuiElementContext.java
│ │ │ │ ├── ItemRenderContext.java
│ │ │ │ └── string/
│ │ │ │ ├── ComponentStringDrawContext.java
│ │ │ │ ├── FormattedStringDrawContext.java
│ │ │ │ ├── IStringDrawContext.java
│ │ │ │ ├── Outline8StringDrawContext.java
│ │ │ │ └── RawStringDrawContext.java
│ │ │ └── renderer/
│ │ │ ├── AcceleratedBlitRenderer.java
│ │ │ ├── AcceleratedFillRenderer.java
│ │ │ └── AcceleratedGradientRenderer.java
│ │ └── mixins/
│ │ ├── ItemRendererMixin.java
│ │ ├── ModelBlockRendererMixin.java
│ │ ├── accessors/
│ │ │ ├── BlockColorsAccessor.java
│ │ │ └── ItemColorsAccessor.java
│ │ ├── compatibility/
│ │ │ ├── ClientHooksMixin.java
│ │ │ └── GuiLayerManagerMixin.java
│ │ ├── gui/
│ │ │ ├── AbstractContainerScreenMixin.java
│ │ │ ├── FontMixin.java
│ │ │ ├── GuiGraphicsMixin.java
│ │ │ └── GuiMixin.java
│ │ └── models/
│ │ ├── BakedCompositeModelMixin.java
│ │ ├── BakedModelMixin.java
│ │ ├── BakedQuadMixin.java
│ │ ├── BakedSeparateTransformsModelMixin.java
│ │ ├── MultipartBakedModelMixin.java
│ │ ├── SimpleBakedModelMixin.java
│ │ └── WeightedBakedModelMixin.java
│ ├── modelparts/
│ │ └── mixins/
│ │ └── ModelPartMixin.java
│ ├── simplebedrockmodel/
│ │ └── mixins/
│ │ └── BedrockPartMixin.java
│ ├── text/
│ │ ├── AcceleratedBakedGlyphRenderer.java
│ │ ├── AcceleratedTextRenderingFeature.java
│ │ └── mixins/
│ │ ├── BakedGlyphEffectMixin.java
│ │ └── BakedGlyphMixin.java
│ └── touhoulittlemaid/
│ └── mixins/
│ ├── GeoBoneMixin.java
│ └── IGeoRendererMixin.java
└── resources/
├── META-INF/
│ ├── accesstransformer.cfg
│ └── neoforge.mods.toml
├── acceleratedrendering.compat.curios.mixins.json
├── acceleratedrendering.compat.immediatelyfast.mixins.json
├── acceleratedrendering.compat.iris.mixins.json
├── acceleratedrendering.core.mixins.json
├── acceleratedrendering.feature.entities.mixins.json
├── acceleratedrendering.feature.entitymodelfeature.mixins.json
├── acceleratedrendering.feature.filter.mixins.json
├── acceleratedrendering.feature.ftb.mixins.json
├── acceleratedrendering.feature.geckolib.mixins.json
├── acceleratedrendering.feature.items.mixins.json
├── acceleratedrendering.feature.modelparts.mixins.json
├── acceleratedrendering.feature.simplebedrockmodel.mixins.json
├── acceleratedrendering.feature.text.mixins.json
├── acceleratedrendering.feature.touhoulittlemaid.mixins.json
└── assets/
└── acceleratedrendering/
├── lang/
│ ├── en_us.json
│ └── zh_cn.json
└── shaders/
├── compat/
│ ├── culling/
│ │ ├── iris_block_quad_culling_shader.compute
│ │ ├── iris_block_triangle_culling_shader.compute
│ │ ├── iris_entity_quad_culling_shader.compute
│ │ └── iris_entity_triangle_culling_shader.compute
│ ├── processing/
│ │ ├── iris_block_quad_processing_shader.compute
│ │ ├── iris_block_triangle_processing_shader.compute
│ │ ├── iris_entity_quad_processing_shader.compute
│ │ ├── iris_entity_triangle_processing_shader.compute
│ │ ├── iris_glyph_quad_processing_shader.compute
│ │ └── iris_glyph_triangle_processing_shader.compute
│ ├── transform/
│ │ ├── iris_block_vertex_transform_shader.compute
│ │ ├── iris_entity_vertex_transform_shader.compute
│ │ └── iris_glyph_vertex_transform_shader.compute
│ └── uploading/
│ ├── iris_block_mesh_uploading_shader.compute
│ ├── iris_entity_mesh_uploading_shader.compute
│ └── iris_glyph_mesh_uploading_shader.compute
└── core/
├── culling/
│ ├── block_quad_culling_shader.compute
│ ├── block_triangle_culling_shader.compute
│ ├── entity_quad_culling_shader.compute
│ ├── entity_triangle_culling_shader.compute
│ ├── pass_through_quad_culling_shader.compute
│ ├── pass_through_triangle_culling_shader.compute
│ ├── pos_tex_color_quad_culling_shader.compute
│ ├── pos_tex_color_triangle_culling_shader.compute
│ ├── pos_tex_quad_culling_shader.compute
│ └── pos_tex_triangle_culling_shader.compute
├── transform/
│ ├── block_vertex_transform_shader.compute
│ ├── entity_vertex_transform_shader.compute
│ ├── pos_color_tex_light_vertex_transform_shader.compute
│ ├── pos_color_vertex_transform_shader.compute
│ ├── pos_tex_color_vertex_transform_shader.compute
│ ├── pos_tex_vertex_transform_shader.compute
│ └── pos_vertex_transform_shader.compute
└── uploading/
├── block_mesh_uploading_shader.compute
├── entity_mesh_uploading_shader.compute
├── pos_color_mesh_uploading_shader.compute
├── pos_color_tex_light_mesh_uploading_shader.compute
├── pos_mesh_uploading_shader.compute
├── pos_tex_color_mesh_uploading_shader.compute
└── pos_tex_mesh_uploading_shader.compute
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Disable autocrlf on generated files, they always generate with LF
# Add any extra files or paths here to make git stop saying they
# are changed when only line endings change.
src/generated/**/.cache/cache text eol=lf
src/generated/**/*.json text eol=lf
================================================
FILE: .github/workflows/build.yml
================================================
name: Build
on: [push, pull_request, workflow_dispatch]
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Java 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
- name: Get Short Identifier
uses: benjlevesque/short-sha@v2.2
id: short-sha
- name: Build
id: build
run: |
chmod +x ./gradlew
./gradlew build
VERSION_IDENTIFIER=SNAPSHOT+${{ steps.short-sha.outputs.sha }}
FILE_NAME="$(ls ./build/libs -1 | head -n 1)"
NEW_NAME="${FILE_NAME%.jar}-${VERSION_IDENTIFIER}.jar"
mv "./build/libs/$FILE_NAME" "./build/libs/$NEW_NAME"
echo "artifact_name=$NEW_NAME" >> "$GITHUB_OUTPUT"
echo "artifact_path=./build/libs/$NEW_NAME" >> "$GITHUB_OUTPUT"
- name: GitHub Action Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build.outputs.artifact_name }}
path: ${{ steps.build.outputs.artifact_path }}
================================================
FILE: .gitignore
================================================
# eclipse
bin
*.launch
.settings
.metadata
.classpath
.project
# idea
out
*.ipr
*.iws
*.iml
.idea
# gradle
build
.gradle
# other
eclipse
run
runs
run-data
repo
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2023 Argon4W
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# 加速渲染 ([EN version](#english))
加速渲染是一个客户端实体渲染优化MOD.
目的是改善在渲染大量实体或拥有大量顶点的复杂MOD实体的情况下产生的渲染性能问题,
与此同时尽可能与光影MOD和其他MOD及其自定义实体兼容.

## 🍝赞助
加速渲染基本由我一人完成, 花费了数千小时对其进行开发和测试, 才得以发布.
来自广大玩家们的赞助将用于加速渲染后续的更快的开发, 创新和优化, 感谢所有支持者!
如果你喜欢这个MOD, 并且想要支持加速渲染的开发, 请前往[爱发电](https://afdian.com/a/argon4w)为狐狸买一份意面
## ✨为什么需要这个MOD
Minecraft拥有一个羸弱的, 继承使用OpenGL立即模式的老版本的渲染系统以用来渲染实体和方块实体.
这个渲染系统会在**CPU**上**单线程**每帧变换和上传实体渲染所需要的顶点.
这就导致有巨量的时间被浪费在这些单线程执行的操作上, 导致了在渲染大量顶点时CPU其他核心和GPU空闲, 而FPS却十分低的奇异景象.
## ⚙️工作原理
加速渲染构建了一个独特的渲染管线, 将变换前的顶点缓存至模型中, 并在需要渲染时将其提交到GPU使用计算着色器进行多线程并行变换.
之后使用原本渲染系统中所使用的着色器进行渲染绘制. 通过这个渲染管线, 加速渲染可以在将实体渲染效率大幅提升,
将CPU压力转移的同时维持对光影MOD的兼容性 (当前兼容Iris Shaders). 并且所有渲染特性都可以被关闭以保证兼容性.
## 🖥️硬件要求
加速渲染因为使用了持久映射缓冲区(Persistently Mapped Buffer)和计算着色器, 因此需要OpenGL 4.6才能正常工作.
理论上NVIDIA GT 400 Series, Intel HD Graphics 520/530及以上的显卡可以满足这个要求.
加速渲染已经在发布前在NVIDIA GTX 1660Ti Max-Q, NVIDIA RTX 3070Ti Laptop, NVIDIA RTX 4090 Laptop, RX 580, RX 5600XT上经过测试.
移动设备目前**不受支持**.
## 🛠️配置
配置文件可以在``<Minecraft安装位置>/.minecraft/config/acceleratedrendering-client.toml``找到. 你可以通过配置文件修改加速特性或在游戏内进行修改.
部分特性可能需要重启游戏才能生效. 你可以在``模组 > Accelerated Rendering > 配置``找到游戏内配置编辑器.
如要让加速物品渲染正常工作, 请在"核心配置" (Core Settings) 处开启"强制加速半透明" (Force Translucent Acceleration).
<a id="english"></a>
# AcceleratedRendering
This is a client side only entity rendering optimization MOD, aiming at improving performance when rendering large amount of entities
or complex modded entities with significant amount of vertices with compute shaders on GPU while being compatible with shader packs,
other MODs and their entities.

## 🍝Sponsorship
This MOD is almost fully done by myself and took thousands of hours of my own time working and testing on it to be released.
Sponsorships from players can ensure the future development, innovation and optimization of this MOD. Thanks for everyone
that support this MOD! If you like it and want to support my work on the development of AcceleratedRendering, please consider sponsoring me at [爱发电](https://afdian.com/a/argon4w)
## ✨Why you need this MOD
Minecraft has a poor immediate rendering system for rendering entities (including block entities) that is inherited from
OpenGL immediate rendering mode that older versions of Minecraft uses. It transforms and uploads vertices on a **single render thread** on **CPU**
every frame the entities are rendered, which results in huge amount of time being spent on these operations and left CPU and GPU idle with a very low FPS
when rendering large amount of vertices.
## ⚙️How it works
AcceleratedRendering constructs a unique rendering pipeline that caches the "original" vertices (vertices before the transform)
into meshes and transforms them to be parallel in GPU using compute shaders. Then it draws the transformed vertices with the original shader.
In this way, this MOD can make entity rendering much more efficient by shifting the transforming stress off from the CPU
while still being compatible with shader packs (currently support Iris Shaders). All acceleration features can be disabled
for better compatibility.
## 🖥️Hardware Requirements
AcceleratedRendering requires OpenGL 4.6 to work properly for the usage of persistently mapped buffers and compute shaders.
Graphics cards like NVIDIA GT 400 Series and Intel HD Graphics 520/530 or newer will fit this requirement.
This MOD has been tested on NVIDIA GTX 1660Ti Max-Q, NVIDIA RTX 3070Ti Laptop, NVIDIA RTX 4090 Laptop, RX 580, RX 5600XT.
Mobile devices currently are **not supported**.
## 🛠️Configuration
Configuration file can be found in ``<your Minecraft>/.minecraft/config/acceleratedrendering-client.toml``. You can modify
acceleration features in this file or in game (some specific configurations require a game restart to take effect).
In-game configuration editor can be found in ``Mods > Accelerated Rendering > Config``.
"Force Translucent Acceleration" in "Core Settings" is required to be enabled for accelerated item rendering to work properly.
================================================
FILE: build.gradle
================================================
plugins {
id 'java-library'
id 'eclipse'
id 'idea'
id 'maven-publish'
id 'net.neoforged.gradle.userdev' version '7.0.189'
}
tasks.named('wrapper', Wrapper).configure {
// Define wrapper values here so as to not have to always do so when updating gradlew.properties.
// Switching this to Wrapper.DistributionType.ALL will download the full gradle sources that comes with
// documentation attached on cursor hover of gradle classes and methods. However, this comes with increased
// file size for Gradle. If you do switch this to ALL, run the Gradle wrapper task twice afterwards.
// (Verify by checking gradle/wrapper/gradle-wrapper.properties to see if distributionUrl now points to `-all`)
distributionType = Wrapper.DistributionType.BIN
}
version = mod_version
group = mod_group_id
repositories {
mavenLocal()
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
filter {
includeGroup "maven.modrinth"
}
}
maven {
url 'https://jitpack.io'
content {
includeGroup "com.github.TartaricAcid"
}
}
maven {
url "https://cursemaven.com"
content {
includeGroup "curse.maven"
}
}
}
base {
archivesName = mod_id
}
// Mojang ships Java 21 to end users starting in 1.20.5, so mods should target Java 21.
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
minecraft.accessTransformers.file rootProject.file('src/main/resources/META-INF/accesstransformer.cfg')
//minecraft.accessTransformers.entry public net.minecraft.client.Minecraft textureManager # textureManager
// Default run configurations.
// These can be tweaked, removed, or duplicated as needed.
runs {
// applies to all the run configs below
configureEach {
// Recommended logging data for a userdev environment
// The markers can be added/remove as needed separated by commas.
// "SCAN": For mods scan.
// "REGISTRIES": For firing of registry events.
// "REGISTRYDUMP": For getting the contents of all registries.
systemProperty 'forge.logging.markers', 'REGISTRIES'
// Recommended logging level for the console
// You can set various levels here.
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
systemProperty 'forge.logging.console.level', 'debug'
modSource project.sourceSets.main
}
client {
// Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
systemProperty 'forge.enabledGameTestNamespaces', project.mod_id
}
server {
systemProperty 'forge.enabledGameTestNamespaces', project.mod_id
programArgument '--nogui'
}
// This run config launches GameTestServer and runs all registered gametests, then exits.
// By default, the server will crash when no gametests are provided.
// The gametest system is also enabled by default for other run configs under the /test command.
gameTestServer {
systemProperty 'forge.enabledGameTestNamespaces', project.mod_id
}
data {
// example of overriding the workingDirectory set in configureEach above, uncomment if you want to use it
// workingDirectory project.file('run-data')
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
}
}
// Include resources generated by data generators.
sourceSets.main.resources { srcDir 'src/generated/resources' }
// Sets up a dependency configuration called 'localRuntime'.
// This configuration should be used instead of 'runtimeOnly' to declare
// a dependency that will be present for runtime testing but that is
// "optional", meaning it will not be pulled by dependents of this mod.
configurations {
runtimeClasspath.extendsFrom localRuntime
}
dependencies {
// Specify the version of Minecraft to use.
// Depending on the plugin applied there are several options. We will assume you applied the userdev plugin as shown above.
// The group for userdev is net.neoforged, the module name is neoforge, and the version is the same as the neoforge version.
// You can however also use the vanilla plugin (net.neoforged.gradle.vanilla) to use a version of Minecraft without the neoforge loader.
// And its provides the option to then use net.minecraft as the group, and one of; client, server or joined as the module name, plus the game version as version.
// For all intends and purposes: You can treat this dependency as if it is a normal library you would use.
implementation "net.neoforged:neoforge:${neo_version}"
// Example optional mod dependency with JEI
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
// compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}"
// compileOnly "mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}"
// We add the full version to localRuntime, not runtimeOnly, so that we do not publish a dependency on it
// localRuntime "mezz.jei:jei-${mc_version}-neoforge:${jei_version}"
// Example mod dependency using a mod jar from ./libs with a flat dir repository
// This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar
// The group id is ignored when searching -- in this case, it is "blank"
// implementation "blank:coolmod-${mc_version}:${coolmod_version}"
// Example mod dependency using a file as dependency
// implementation files("libs/coolmod-${mc_version}-${coolmod_version}.jar")
// Example project dependency using a sister or child project:
// implementation project(":myproject")
// For more info:
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
// http://www.gradle.org/docs/current/userguide/dependency_management.html54
implementation "maven.modrinth:sodium:mc1.21.1-0.6.13-neoforge"
implementation "maven.modrinth:iris:1.8.8+1.21.1-neoforge"
implementation "maven.modrinth:jei:YAcQ6elZ"
implementation "maven.modrinth:modern-ui:3.12.0.2"
implementation "curse.maven:architectury-api-419699:5786327"
implementation "curse.maven:ftb-teams-forge-404468:7369021"
implementation "curse.maven:ftb-quests-forge-289412:7429016"
implementation "curse.maven:certain-questing-additions-1372051:7450467"
implementation "maven.modrinth:kotlin-for-forge:5.11.0"
implementation "maven.modrinth:elytra-trims:3.9.3"
implementation "maven.modrinth:entitytexturefeatures:7.0.13-neoforge-1.21"
implementation "maven.modrinth:entity-model-features:3.0.17-neoforge-1.21"
implementation "maven.modrinth:touhou-little-maid:1.5.0-neoforge+mc1.21.1"
compileOnly "maven.modrinth:geckolib:QEqpUJ1G"
implementation "maven.modrinth:immediatelyfast:1.6.8+1.21.1-neoforge"
compileOnly "maven.modrinth:curios:9.5.1+1.21.1"
implementation "curse.maven:ftb-library-forge-404465:7420412"
compileOnly "org.projectlombok:lombok:1.18.38"
annotationProcessor "org.projectlombok:lombok:1.18.38"
}
// This block of code expands all declared replace properties in the specified resource targets.
// A missing property will result in an error. Properties are expanded using ${} Groovy notation.
// When "copyIdeResources" is enabled, this will also run before the game launches in IDE environments.
// See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html
tasks.withType(ProcessResources).configureEach {
var replaceProperties = [
minecraft_version : minecraft_version,
minecraft_version_range: minecraft_version_range,
neo_version : neo_version,
neo_version_range : neo_version_range,
loader_version_range : loader_version_range,
mod_id : mod_id,
mod_name : mod_name,
mod_license : mod_license,
mod_version : mod_version,
mod_authors : mod_authors,
mod_description : mod_description
]
inputs.properties replaceProperties
filesMatching(['META-INF/neoforge.mods.toml']) {
expand replaceProperties
}
}
// Example configuration to allow publishing using the maven-publish plugin
publishing {
publications {
register('mavenJava', MavenPublication) {
from components.java
}
}
repositories {
maven {
url "file://${project.projectDir}/repo"
}
}
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
}
// IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior.
idea {
module {
downloadSources = true
downloadJavadoc = true
}
}
================================================
FILE: changelogs/changelog-1.0.0.md
================================================
## 加速渲染 1.0.0-1.21.1 ALPHA
- 支持加速原版/类原版MOD生物渲染.
- 支持加速原版/类原版MOD方块实体渲染.
- 支持加速物品模型渲染 **(需要开启``核心配置 > 强制加速半透明``)**.
- 支持加速最新版车万女仆渲染.
- 支持加速GeckoLib模型生物/方块实体渲染.
## Accelerated Rendering 1.0.0-1.21.1 ALPHA
- Supports acceleration for rendering vanilla entities/vanilla-like modded entities.
- Supports acceleration for rendering vanilla block entities/vanilla-like modded block entities.
- Supports acceleration for rendering item models **(``Core Settings > Force Translucent Acceleration`` is required to be enabled)**.
- Supports acceleration for rendering maids in latest version of Touhou Little Maid.
- Supports acceleration for rendering GeckoLib entities/block entities.
================================================
FILE: changelogs/changelog-1.0.1.md
================================================
## 加速渲染 1.0.1-1.21.1 ALPHA
- 添加了``核心配置 > 用立即上传模型``选项以保证绘制顺序, 提供更好的兼容性.
- 添加了``Curios兼容性配置``以控制Curios饰品/装备的渲染加速.
- 添加了``过滤器设置``以阻止部分在渲染加速后会导致需渲染异常的生物/方块实体被加速, 提供更好的兼容性.
- 修复了在与Iris环境下将``视频设置... > 图像品质``设置为 ``极佳!``导致的渲染异常.
## Accelerated Rendering 1.0.1-1.21.1 ALPHA
- Adds ``Core Settings > Enable Uploading Mesh Immediately`` to ensure the draw order for better compatibility.
- Adds ``Curios Compatibility Settings`` to control the acceleration of curios accessories/equipments.
- Adds ``Filter Settings`` to filter entities/block entities that will cause glitches when accelerated.
- Fixes rendering glitches when set ``Video Settings... > Graphics`` to ``Fabulous!`` with Iris installed.
================================================
FILE: changelogs/changelog-1.0.2.md
================================================
## 加速渲染 1.0.2-1.21.1 ALPHA
- 添加了新的Shader Overrides API功能, 以实现更好MOD兼容性.
- 添加了新的Batching Layer API功能, 以实现更好的MOD兼容性.
- 添加了``ModelBlockRenderer#renderModel``的渲染加速以支持展示实体渲染加速.
- 添加了``加速物品渲染配置 > 启用手中物品加速``选项以支持加速在手中物品的渲染加速.
- 添加了``加速物品渲染配置 > 启用GUI物品加速``选项以支持加速在GUI中物品的渲染加速.
- 添加了``加速物品渲染配置 > 启用GUI物品合批``选项以支持合并GUI中物品的绘制, 更好的支持在GUI中物品的渲染加速.
- 添加了``核心配置 > 合批层储存类型``选项以控制是否将半透明和不透明模型合并渲染
- 添加了``过滤器设置 > 启用物品过滤器``选项以阻止部分在渲染加速后会导致需渲染异常的物品被加速, 提供更好的兼容性.
- 修复了在Iris环境下开启部分光影包时半透明模型与不透明模型合并渲染导致的半透明模型渲染异常
- 修复了在ImmediatelyFast环境下渲染HUD时导致的渲染异常.
- 修复了在机械动力环境下实体与机械动力方块/结构一同出现时导致的渲染异常.
## Accelerated Rendering 1.0.2-1.21.1 ALPHA
- Adds Shader Overrides API to achieve better MODs compatibility.
- Adds Batching Layer API to achieve better MODs compatibility.
- Adds ``ModelBlockRenderer#renderModel`` acceleration support to accelerate rendering of display entities.
- Adds ``Accelerated Item Rendering Settings > Enable Hand Acceleration`` to support the acceleration of items rendering in hands.
- Adds ``Accelerated Item Rendering Settings > Enable GUI Acceleration`` to support the acceleration of items rendering in GUI.
- Adds ``Accelerated Item Rendering Settings > Enable GUI Item Batching`` to support batching draw calls of items in GUI to ensure better acceleration of item rendering in GUI.
- Adds ``Core Settings > Batching Layer Storage Type`` to control if the pipeline should combine the rendering of opaque and translucent geometries together.
- Adds ``Filter Settings > Enable Item Filter`` to filter items that will cause glitches when accelerated.
- Fixes visual glitches on translucent geometries with specific shader pack due to combined rendering of opaque and translucent geometries when Iris is installed.
- Fixes visual glitches on HUD rendering when ImmediatelyFast is installed.
- Fixes visual glitches when entities and flywheel accelerated geometries rendering on screen at the same time when Create is installed.
================================================
FILE: changelogs/changelog-1.0.3.md
================================================
## 加速渲染 1.0.3-1.21.1 ALPHA
- 修复了物品装饰 (如通用机械的等级标识) 加速没有正确还原帧缓冲状态导致的渲染异常.
- 修复了四顶点同UV的面在静态剔除中被错误剔除导致的渲染异常.
## Accelerated Rendering 1.0.3-1.21.1 ALPHA
- Fixes visual glitches caused by item decoration (like tier in Mekanism) acceleration not restoring FBO state correctly.
- Fixes visual glitches caused by static culler exceptionally culled quads with same UV on both four vertices.
================================================
FILE: changelogs/changelog-1.0.4.md
================================================
## 加速渲染 1.0.4-1.21.1 ALPHA
- 修复了与使用块缓冲的MOD和光影的兼容性.
- 移植到1.20.1 Forge.
## 注意事项
- 1.20.1移植需要使用**Java 21**进行启动.
- 1.20.1移植的游戏内配置节目需要安装Configured以启用.
- 1.20.1移植的GeckoLib加速需要安装MixinBooster以启用.
- 1.20.1移植的车万女仆加速需要安装MixinBooster以启用.
## Accelerated Rendering 1.0.4-1.21.1 ALPHA
- Fixes compatibility with mods and shaders that uses block buffers.
- Ports to 1.20.1 Forge.
## Important Notes
- 1.20.1 port requires **Java 21** to boot.
- 1.20.1 port requires Configured to modify configurations in game.
- 1.20.1 port of GeckoLib acceleration requires MixinBooster to enable.
- 1.20.1 port of TouhouLittleMaid acceleration requires MixinBooster to enable.
================================================
FILE: changelogs/changelog-1.0.5.1.md
================================================
## 加速渲染 1.0.5.1-1.21.1 ALPHA
- 修复了在模型面没有自定义颜色的情况下获取颜色导致崩溃.
## Accelerated Rendering 1.0.5.1-1.21.1 ALPHA
- Fixes crashes by requesting colors from BakedQuad when the quad is not tinted.
================================================
FILE: changelogs/changelog-1.0.5.md
================================================
## 加速渲染 1.0.5-1.21.1 ALPHA
- 修复了方块模型加速时从错误的位置获取RenderType导致崩溃.
## Accelerated Rendering 1.0.5-1.21.1 ALPHA
- Fixes crashes by requesting RenderType from wrong place when accelerating block models.
================================================
FILE: changelogs/changelog-1.0.6.md
================================================
## 加速渲染 1.0.6-1.21.1 ALPHA
- 添加了``核心配置 > 启用缓存动态RenderType``选项以支持对动态渲染类型的加速.
- 添加了``核心配置 > 模型合并类型``选项以支持对完全一致模型的合并以改善显存占用.
- 改善了过滤器的灵活性, 现在可以在过滤器列表中使用正则表达式.
- 修复了GUI物品合批时没有正确还原帧缓冲状态导致的渲染异常.
- 修复了自定义渲染阶段被错误加速导致的渲染异常.
- 修复了物品附魔光效无法正确渲染导致的渲染异常.
- 修复了可能的部分特殊物品渲染导致的内存泄漏问题.
## Accelerated Rendering 1.0.6-1.21.1 ALPHA
- Adds ``Core Settings > Enable Cache Dynamic Render Type`` to support the acceleration of dynamic render types.
- Adds ``Core Settings > Mesh Merge Type`` to support reducing VRAM usage by merging duplicated meshes together.
- Improves filter flexibility. Regular Expression can now be used in filter values.
- Fixes visual glitches on container GUI rendering due to not correctly restoring framebuffer state.
- Fixes visual glitches on geometries rendered in custom rendering stages due to incorrect acceleration.
- Fixes visual glitches on item glints.
- Fixes memory leaks due to acceleration on certain special items.
================================================
FILE: changelogs/changelog-1.0.7.md
================================================
## 加速渲染 1.0.7-1.21.1 ALPHA
- 添加了``过滤器配置 > 启用容器GUI过滤器``选项以阻止部分在渲染加速后会导致需渲染异常的容器GUI被加速, 提供更好的兼容性.
- 修复了玩家在物品栏GUI中以错误光照渲染导致的渲染异常.
- 修复了超出标准范围UV的面在静态剔除中被错误剔除导致的渲染异常.
## Accelerated Rendering 1.0.7-1.21.1 ALPHA
- Adds ``Filter Settings > Enable Menu Filter`` to filter menus that will cause glitches when accelerated.
- Fixes visual glitches on players rendered with wrong light direction in inventory GUI.
- Fixes visual glitches on static culler exceptionally culled geometries with UV outside regular range.
================================================
FILE: changelogs/changelog-1.0.8.md
================================================
## 加速渲染 1.0.8-1.21.1 ALPHA
- 添加了``核心配置 > 裁切区域还原类型``选项以提供对修改了容器GUI渲染的MOD更好的兼容性.
- 添加了``加速物品渲染配置 > 启用合并GUI物品批次``选项以以提供对修改了容器GUI渲染的MOD更好的兼容性.
- 添加了对FTB Library的GUI物品合批加速支持.
- 修复了在``earlyWindowControl``不可用的情况下的导致的崩溃.
- 修复了因为Minecraft因为其他错误没有正确启动导致的无关加速渲染的崩溃.
- 修复了带状态的EMF模型在运行中修改状态导致的渲染异常.
- 修复了OpenGL内存屏障被错误使用导致的潜在渲染异常.
- 阻止MOD添加的自定义HUD进行加速, 防止过度调用着色器导致性能下降.
## Accelerated Rendering 1.0.8-1.21.1 ALPHA
- Adds ``Core Settings > Scissor Restoring Type`` to provide better compatibility with modified container GUI.
- Adds ``Accelerated Item Rendering Settings > Enable Merge GUI Item Batches`` to provide better compatibility with modified container GUI.
- Adds GUI item batching acceleration support to FTB Library.
- Fixes crashes when ``earlyWindowControl`` is not available.
- Fixes irrelevant crashes when Minecraft is crashed by other MODs when starting up.
- Fixes visual glitches when EMF models with states modifying its state at runtime.
- Fixes potential visual glitches due to incorrect OpenGL memory barrier usages.
- Prevent custom HUDs by MODs from being accelerated to reduce shader overhead.
================================================
FILE: gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: gradle.properties
================================================
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
org.gradle.jvmargs=-Xmx1G
org.gradle.daemon=false
org.gradle.debug=false
#read more on this at https://github.com/neoforged/NeoGradle/blob/NG_7.0/README.md#apply-parchment-mappings
# you can also find the latest versions at: https://parchmentmc.org/docs/getting-started
neogradle.subsystems.parchment.minecraftVersion=1.21.1
neogradle.subsystems.parchment.mappingsVersion=2024.11.17
# Environment Properties
# You can find the latest versions here: https://projects.neoforged.net/neoforged/neoforge
# The Minecraft version must agree with the Neo version to get a valid artifact
minecraft_version=1.21.1
# The Minecraft version range can use any release version of Minecraft as bounds.
# Snapshots, pre-releases, and release candidates are not guaranteed to sort properly
# as they do not follow standard versioning conventions.
minecraft_version_range=[1.21,1.21.2)
# The Neo version must agree with the Minecraft version to get a valid artifact
neo_version=21.1.192
# The Neo version range can use any version of Neo as bounds
neo_version_range=[21.0.0,)
# The loader version range can only use the major version of FML as bounds
loader_version_range=[4,)
## Mod Properties
# The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63}
# Must match the String constant located in the main mod class annotated with @Mod.
mod_id=acceleratedrendering
# The human-readable display name for the mod.
mod_name=Accelerated Rendering
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
mod_license=MIT
# The mod version. See https://semver.org/
mod_version=1.0.8-1.21.1-alpha
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
# This should match the base package used for the mod sources.
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
mod_group_id=com.github.argon4w
# The authors of the mod. This is a simple text string that is used for display purposes in the mod list.
mod_authors=Argon4W
# The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list.
mod_description=Fast vertex transform and caching using compute shader.
================================================
FILE: gradlew
================================================
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
================================================
FILE: gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: settings.gradle
================================================
pluginManagement {
repositories {
gradlePluginPortal()
maven { url = 'https://maven.neoforged.net/releases' }
}
}
plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0'
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/AcceleratedRenderingModEntry.java
================================================
package com.github.argon4w.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.configs.FeatureConfig;
import com.mojang.logging.LogUtils;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.ModContainer;
import net.neoforged.fml.common.Mod;
import net.neoforged.fml.config.ModConfig;
import net.neoforged.neoforge.client.gui.ConfigurationScreen;
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
import org.slf4j.Logger;
@Mod(
value = AcceleratedRenderingModEntry .MOD_ID,
dist = Dist .CLIENT
)
public class AcceleratedRenderingModEntry {
public static final String MOD_ID = "acceleratedrendering";
public static final Logger LOGGER = LogUtils.getLogger();
public AcceleratedRenderingModEntry(IEventBus modEventBus, ModContainer modContainer) {
modContainer.registerConfig (ModConfig.Type.CLIENT, FeatureConfig.SPEC);
modContainer.registerExtensionPoint (IConfigScreenFactory.class, ConfigurationScreen::new);
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/AbstractCompatMixinPlugin.java
================================================
package com.github.argon4w.acceleratedrendering.compat;
import net.neoforged.fml.loading.LoadingModList;
import org.objectweb.asm.tree.ClassNode;
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
import java.util.List;
import java.util.Set;
public abstract class AbstractCompatMixinPlugin implements IMixinConfigPlugin {
private final boolean shouldApply;
public AbstractCompatMixinPlugin() {
var shouldApply = false;
for (var id : getModIDs()) {
if (LoadingModList.get().getModFileById(id) != null) {
shouldApply = true;
}
}
this.shouldApply = shouldApply;
}
protected abstract List<String> getModIDs();
@Override
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
return shouldApply;
}
@Override
public String getRefMapperConfig() {
return null;
}
@Override
public List<String> getMixins() {
return null;
}
@Override
public void onLoad(String mixinPackage) {
}
@Override
public void acceptTargets(Set<String> myTargets, Set<String> otherTargets) {
}
@Override
public void preApply(
String targetClassName,
ClassNode targetClass,
String mixinClassName,
IMixinInfo mixinInfo
) {
}
@Override
public void postApply(
String targetClassName,
ClassNode targetClass,
String mixinClassName,
IMixinInfo mixinInfo
) {
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/curios/CuriosCompatFeature.java
================================================
package com.github.argon4w.acceleratedrendering.compat.curios;
import com.github.argon4w.acceleratedrendering.configs.FeatureConfig;
import com.github.argon4w.acceleratedrendering.configs.FeatureStatus;
import com.github.argon4w.acceleratedrendering.core.utils.RegistryFilter;
import com.github.argon4w.acceleratedrendering.features.filter.FilterType;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Set;
public class CuriosCompatFeature {
public static final Deque <FeatureStatus> LAYER_ACCELERATION_CONTROLLER_STACK = new ArrayDeque<>();
public static final Deque <FeatureStatus> CURIOS_ITEM_FILTER_CONTROLLER_STACK = new ArrayDeque<>();
private static final Set <Item> CURIOS_ITEM_FILTER_VALUES;
static {
CURIOS_ITEM_FILTER_VALUES = RegistryFilter.filterValues(BuiltInRegistries.ITEM, FeatureConfig.CONFIG.curiosItemFilterValues.get());
}
public static boolean isEnabled() {
return FeatureConfig.CONFIG.curiosCompatFeatureStatus.get() == FeatureStatus.ENABLED;
}
public static boolean testCuriosItem(ItemStack itemStack) {
return getCuriosItemFilterType().test(CURIOS_ITEM_FILTER_VALUES, itemStack.getItem());
}
public static boolean shouldAccelerateCurios() {
return getLayerAccelerationSetting() == FeatureStatus.ENABLED;
}
public static boolean shouldFilterCuriosItems() {
return getCuriosItemFilterSetting() == FeatureStatus.ENABLED;
}
public static FilterType getCuriosItemFilterType() {
return FeatureConfig.CONFIG.curiosItemFilterType.get();
}
public static void disableLayerAcceleration() {
LAYER_ACCELERATION_CONTROLLER_STACK.push(FeatureStatus.DISABLED);
}
public static void disableCuriosItemFilter() {
CURIOS_ITEM_FILTER_CONTROLLER_STACK.push(FeatureStatus.DISABLED);
}
public static void forceEnableLayerAcceleration() {
LAYER_ACCELERATION_CONTROLLER_STACK.push(FeatureStatus.ENABLED);
}
public static void forceEnableCuriosItemFilter() {
CURIOS_ITEM_FILTER_CONTROLLER_STACK.push(FeatureStatus.ENABLED);
}
public static void forceSetLayerAcceleration(FeatureStatus status) {
LAYER_ACCELERATION_CONTROLLER_STACK.push(status);
}
public static void forceSetCuriosItemFilter(FeatureStatus status) {
CURIOS_ITEM_FILTER_CONTROLLER_STACK.push(status);
}
public static void resetLayerAcceleration() {
LAYER_ACCELERATION_CONTROLLER_STACK.pop();
}
public static void resetCuriosItemFilter() {
CURIOS_ITEM_FILTER_CONTROLLER_STACK.pop();
}
public static FeatureStatus getLayerAccelerationSetting() {
return LAYER_ACCELERATION_CONTROLLER_STACK.isEmpty() ? getDefaultLayerAccelerationSettings() : LAYER_ACCELERATION_CONTROLLER_STACK.peek();
}
public static FeatureStatus getCuriosItemFilterSetting() {
return CURIOS_ITEM_FILTER_CONTROLLER_STACK.isEmpty() ? getDefaultCuriosItemFilterSetting() : CURIOS_ITEM_FILTER_CONTROLLER_STACK.peek();
}
public static FeatureStatus getDefaultLayerAccelerationSettings() {
return FeatureConfig.CONFIG.curiosCompatLayerAcceleration.get();
}
public static FeatureStatus getDefaultCuriosItemFilterSetting() {
return FeatureConfig.CONFIG.curiosItemFilter.get();
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/curios/mixins/CuriosLayerMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.curios.mixins;
import com.github.argon4w.acceleratedrendering.compat.curios.CuriosCompatFeature;
import com.github.argon4w.acceleratedrendering.features.entities.AcceleratedEntityRenderingFeature;
import com.github.argon4w.acceleratedrendering.features.filter.FilterFeature;
import com.github.argon4w.acceleratedrendering.features.items.AcceleratedItemRenderingFeature;
import com.github.argon4w.acceleratedrendering.features.text.AcceleratedTextRenderingFeature;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.RenderLayerParent;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import top.theillusivec4.curios.api.SlotContext;
import top.theillusivec4.curios.api.client.ICurioRenderer;
import top.theillusivec4.curios.client.render.CuriosLayer;
@Pseudo
@Mixin(CuriosLayer.class)
public class CuriosLayerMixin {
@Inject(
method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V",
at = @At("HEAD")
)
public void startRenderCuriosLayer(
PoseStack matrixStack,
MultiBufferSource renderTypeBuffer,
int light,
LivingEntity livingEntity,
float limbSwing,
float limbSwingAmount,
float partialTicks,
float ageInTicks,
float netHeadYaw,
float headPitch,
CallbackInfo ci
) {
if ( CuriosCompatFeature.isEnabled ()
&& ! CuriosCompatFeature.shouldAccelerateCurios ()
) {
AcceleratedEntityRenderingFeature .useVanillaPipeline();
AcceleratedItemRenderingFeature .useVanillaPipeline();
AcceleratedTextRenderingFeature .useVanillaPipeline();
}
}
@Inject(
method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFF)V",
at = @At("RETURN")
)
public void stopRenderCuriosLayer(
PoseStack matrixStack,
MultiBufferSource renderTypeBuffer,
int light,
LivingEntity livingEntity,
float limbSwing,
float limbSwingAmount,
float partialTicks,
float ageInTicks,
float netHeadYaw,
float headPitch,
CallbackInfo ci
) {
if ( CuriosCompatFeature.isEnabled ()
&& ! CuriosCompatFeature.shouldAccelerateCurios ()
) {
AcceleratedEntityRenderingFeature .resetPipeline();
AcceleratedItemRenderingFeature .resetPipeline();
AcceleratedTextRenderingFeature .resetPipeline();
}
}
@WrapOperation(
method = "lambda$render$0",
at = @At(
value = "INVOKE",
target = "Ltop/theillusivec4/curios/api/client/ICurioRenderer;render(Lnet/minecraft/world/item/ItemStack;Ltop/theillusivec4/curios/api/SlotContext;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/entity/RenderLayerParent;Lnet/minecraft/client/renderer/MultiBufferSource;IFFFFFF)V"
)
)
public void filterCuriosItem(
ICurioRenderer instance,
ItemStack itemStack,
SlotContext slotContext,
PoseStack poseStack,
RenderLayerParent<?, ?> renderLayerParent,
MultiBufferSource bufferSource,
int light,
float limbSwing,
float limbSwingAmount,
float partialTicks,
float ageInTicks,
float netHeadYaw,
float headPitch,
Operation<Void> original
) {
var pass = ! FilterFeature .isEnabled ()
|| ! CuriosCompatFeature .isEnabled ()
|| ! CuriosCompatFeature .shouldFilterCuriosItems()
|| CuriosCompatFeature .testCuriosItem (itemStack);
if (!pass) {
AcceleratedEntityRenderingFeature .useVanillaPipeline();
AcceleratedItemRenderingFeature .useVanillaPipeline();
AcceleratedTextRenderingFeature .useVanillaPipeline();
}
original.call(
instance,
itemStack,
slotContext,
poseStack,
renderLayerParent,
bufferSource,
light,
limbSwing,
limbSwingAmount,
partialTicks,
ageInTicks,
netHeadYaw,
headPitch
);
if (!pass) {
AcceleratedEntityRenderingFeature .resetPipeline();
AcceleratedItemRenderingFeature .resetPipeline();
AcceleratedTextRenderingFeature .resetPipeline();
}
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/immediatelyfast/mixins/BatchableBufferSourceMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.immediatelyfast.mixins;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.IAcceleratableBufferSource;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.VertexConsumerExtension;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import com.mojang.blaze3d.vertex.VertexConsumer;
import lombok.experimental.ExtensionMethod;
import net.minecraft.client.renderer.RenderType;
import net.raphimc.immediatelyfast.feature.core.BatchableBufferSource;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.At;
@Pseudo
@ExtensionMethod(VertexConsumerExtension.class)
@Mixin (BatchableBufferSource .class)
public abstract class BatchableBufferSourceMixin implements IAcceleratableBufferSource {
@ModifyReturnValue(
method = "getBuffer",
at = @At("RETURN")
)
public VertexConsumer initAcceleration(VertexConsumer original, RenderType renderType) {
return original
.getHolder ()
.initAcceleration (renderType, getBoundAcceleratedBufferSource());
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/immediatelyfast/mixins/BatchingBuffersMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.immediatelyfast.mixins;
import com.github.argon4w.acceleratedrendering.core.CoreBuffersProvider;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.BufferSourceExtension;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import lombok.experimental.ExtensionMethod;
import net.minecraft.client.renderer.MultiBufferSource;
import net.raphimc.immediatelyfast.feature.batching.BatchingBuffers;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.At;
@Pseudo
@ExtensionMethod(BufferSourceExtension .class)
@Mixin (BatchingBuffers .class)
public class BatchingBuffersMixin {
@ModifyReturnValue(
method = "getNonBatchingEntityVertexConsumers",
at = @At("RETURN")
)
private static MultiBufferSource.BufferSource bindAcceleratableBufferSourceCore1(MultiBufferSource.BufferSource original) {
original
.getAcceleratable ()
.bindAcceleratedBufferSource(CoreBuffersProvider.CORE);
return original;
}
@ModifyReturnValue(
method = "getHudBatchingVertexConsumers",
at = @At("RETURN")
)
private static MultiBufferSource.BufferSource bindAcceleratableBufferSourceCore2(MultiBufferSource.BufferSource original) {
original
.getAcceleratable ()
.bindAcceleratedBufferSource(CoreBuffersProvider.CORE);
return original;
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/immediatelyfast/mixins/WrappedRenderLayerMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.immediatelyfast.mixins;
import lombok.EqualsAndHashCode;
import net.minecraft.client.renderer.RenderType;
import net.raphimc.immediatelyfast.feature.batching.BatchingBuffers;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Pseudo
@EqualsAndHashCode
@Mixin(BatchingBuffers.WrappedRenderLayer.class)
public class WrappedRenderLayerMixin {
@Unique private RenderType original;
@Inject(
method = "<init>",
at = @At("TAIL")
)
public void saveOriginal(
RenderType renderLayer,
Runnable additionalStartAction,
Runnable additionalEndAction,
CallbackInfo ci
) {
this.original = renderLayer;
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/IrisCompatBuffers.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris;
import com.github.argon4w.acceleratedrendering.core.buffers.AcceleratedBufferSources;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.AcceleratedBufferSource;
import com.github.argon4w.acceleratedrendering.core.buffers.environments.IBufferEnvironment;
import com.mojang.blaze3d.vertex.VertexFormat;
public class IrisCompatBuffers {
public static final AcceleratedBufferSource BLOCK_SHADOW = new AcceleratedBufferSource(IBufferEnvironment.Presets.BLOCK);
public static final AcceleratedBufferSource ENTITY_SHADOW = new AcceleratedBufferSource(IBufferEnvironment.Presets.ENTITY);
public static final AcceleratedBufferSource GLYPH_SHADOW = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_COLOR_TEX_LIGHT);
public static final AcceleratedBufferSource POS_TEX_SHADOW = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_TEX);
public static final AcceleratedBufferSource POS_TEX_COLOR_SHADOW = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_TEX_COLOR);
public static final AcceleratedBufferSource BLOCK_HAND = new AcceleratedBufferSource(IBufferEnvironment.Presets.BLOCK);
public static final AcceleratedBufferSource ENTITY_HAND = new AcceleratedBufferSource(IBufferEnvironment.Presets.ENTITY);
public static final AcceleratedBufferSource POS_HAND = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS);
public static final AcceleratedBufferSource POS_COLOR_HAND = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_COLOR);
public static final AcceleratedBufferSource POS_TEX_HAND = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_TEX);
public static final AcceleratedBufferSource POS_TEX_COLOR_HAND = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_TEX_COLOR);
public static final AcceleratedBufferSource POS_COLOR_TEX_LIGHT_HAND = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_COLOR_TEX_LIGHT);
public static final AcceleratedBufferSources HAND = AcceleratedBufferSources
.builder()
.source (IrisCompatBuffers .BLOCK_HAND)
.source (IrisCompatBuffers .ENTITY_HAND)
.source (IrisCompatBuffers .POS_HAND)
.source (IrisCompatBuffers .POS_COLOR_HAND)
.source (IrisCompatBuffers .POS_TEX_HAND)
.source (IrisCompatBuffers .POS_TEX_COLOR_HAND)
.source (IrisCompatBuffers .POS_COLOR_TEX_LIGHT_HAND)
.mode (VertexFormat.Mode .QUADS)
.mode (VertexFormat.Mode .TRIANGLES)
.build ();
public static final AcceleratedBufferSources SHADOW = AcceleratedBufferSources
.builder()
.source (IrisCompatBuffers.BLOCK_SHADOW)
.source (IrisCompatBuffers.ENTITY_SHADOW)
.source (IrisCompatBuffers.GLYPH_SHADOW)
.source (IrisCompatBuffers.POS_TEX_SHADOW)
.source (IrisCompatBuffers.POS_TEX_COLOR_SHADOW)
.mode (VertexFormat.Mode.QUADS)
.mode (VertexFormat.Mode.TRIANGLES)
.build ();
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/IrisCompatBuffersProvider.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.IAcceleratedBufferSource;
import java.util.function.Supplier;
public class IrisCompatBuffersProvider {
public static final Supplier<IAcceleratedBufferSource> SHADOW = () -> IrisCompatBuffers.SHADOW;
public static final Supplier<IAcceleratedBufferSource> HAND = () -> IrisCompatBuffers.HAND;
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/IrisCompatFeature.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris;
import com.github.argon4w.acceleratedrendering.configs.FeatureConfig;
import com.github.argon4w.acceleratedrendering.configs.FeatureStatus;
import java.util.ArrayDeque;
import java.util.Deque;
public class IrisCompatFeature {
public static final Deque<FeatureStatus> SHADOW_CULLING_CONTROLLER_STACK = new ArrayDeque<>();
public static final Deque<FeatureStatus> POLYGON_PROCESSING_CONTROLLER_STACK = new ArrayDeque<>();
public static boolean isEnabled() {
return FeatureConfig.CONFIG.irisCompatFeatureStatus.get() == FeatureStatus.ENABLED;
}
public static boolean isIrisCompatCullingEnabled() {
return FeatureConfig.CONFIG.irisCompatOrientationCullingCompat.get() == FeatureStatus.ENABLED;
}
public static boolean isShadowCullingEnabled() {
return getShadowCullingSetting() == FeatureStatus.ENABLED;
}
public static boolean isPolygonProcessingEnabled() {
return getPolygonProcessingSetting() == FeatureStatus.ENABLED;
}
public static void disableShadowCulling() {
SHADOW_CULLING_CONTROLLER_STACK.push(FeatureStatus.DISABLED);
}
public static void disablePolygonProcessing() {
POLYGON_PROCESSING_CONTROLLER_STACK.push(FeatureStatus.DISABLED);
}
public static void forceEnableShadowCulling() {
SHADOW_CULLING_CONTROLLER_STACK.push(FeatureStatus.ENABLED);
}
public static void forceEnablePolygonProcessing() {
POLYGON_PROCESSING_CONTROLLER_STACK.push(FeatureStatus.ENABLED);
}
public static void forceSetShadowCulling(FeatureStatus status) {
SHADOW_CULLING_CONTROLLER_STACK.push(status);
}
public static void forceSetIrisPolygonProcessing(FeatureStatus status) {
POLYGON_PROCESSING_CONTROLLER_STACK.push(status);
}
public static void resetShadowCulling() {
SHADOW_CULLING_CONTROLLER_STACK.pop();
}
public static void resetPolygonProcessing() {
POLYGON_PROCESSING_CONTROLLER_STACK.pop();
}
public static FeatureStatus getShadowCullingSetting() {
return SHADOW_CULLING_CONTROLLER_STACK.isEmpty() ? getDefaultShadowCullingSetting() : SHADOW_CULLING_CONTROLLER_STACK.peek();
}
public static FeatureStatus getPolygonProcessingSetting() {
return POLYGON_PROCESSING_CONTROLLER_STACK.isEmpty() ? getDefaultPolygonProcessingSetting() : POLYGON_PROCESSING_CONTROLLER_STACK.peek();
}
public static FeatureStatus getDefaultShadowCullingSetting() {
return FeatureConfig.CONFIG.irisCompatShadowCulling.get();
}
public static FeatureStatus getDefaultPolygonProcessingSetting() {
return FeatureConfig.CONFIG.irisCompatPolygonProcessing.get();
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/environments/IrisBufferEnvironment.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.environments;
import com.github.argon4w.acceleratedrendering.core.backends.buffers.IServerBuffer;
import com.github.argon4w.acceleratedrendering.core.buffers.environments.IBufferEnvironment;
import com.github.argon4w.acceleratedrendering.core.buffers.memory.VertexLayout;
import com.github.argon4w.acceleratedrendering.core.meshes.ServerMesh;
import com.github.argon4w.acceleratedrendering.core.programs.culling.ICullingProgramDispatcher;
import com.github.argon4w.acceleratedrendering.core.programs.culling.ICullingProgramSelector;
import com.github.argon4w.acceleratedrendering.core.programs.culling.LoadCullingProgramSelectorEvent;
import com.github.argon4w.acceleratedrendering.core.programs.dispatchers.IPolygonProgramDispatcher;
import com.github.argon4w.acceleratedrendering.core.programs.dispatchers.MeshUploadingProgramDispatcher;
import com.github.argon4w.acceleratedrendering.core.programs.dispatchers.TransformProgramDispatcher;
import com.github.argon4w.acceleratedrendering.core.programs.overrides.IShaderProgramOverrides;
import com.github.argon4w.acceleratedrendering.core.programs.overrides.ITransformShaderProgramOverride;
import com.github.argon4w.acceleratedrendering.core.programs.overrides.IUploadingShaderProgramOverride;
import com.github.argon4w.acceleratedrendering.core.programs.overrides.LoadShaderProgramOverridesEvent;
import com.github.argon4w.acceleratedrendering.core.programs.processing.IPolygonProcessor;
import com.github.argon4w.acceleratedrendering.core.programs.processing.LoadPolygonProcessorEvent;
import com.mojang.blaze3d.vertex.VertexFormat;
import net.irisshaders.iris.api.v0.IrisApi;
import net.irisshaders.iris.vertices.ImmediateState;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.resources.ResourceLocation;
import net.neoforged.fml.ModLoader;
import java.util.Set;
public class IrisBufferEnvironment implements IBufferEnvironment {
private final IBufferEnvironment vanillaSubSet;
private final IBufferEnvironment irisSubSet;
public IrisBufferEnvironment(
IBufferEnvironment vanillaSubSet,
VertexFormat vanillaVertexFormat,
VertexFormat irisVertexFormat,
ResourceLocation meshUploadingProgramKey,
ResourceLocation transformProgramKey
) {
this.vanillaSubSet = vanillaSubSet;
this.irisSubSet = new IrisSubSet(
vanillaVertexFormat,
irisVertexFormat,
meshUploadingProgramKey,
transformProgramKey
);
}
private IBufferEnvironment getSubSet() {
return IrisApi.getInstance().isShaderPackInUse() && ImmediateState.isRenderingLevel ? irisSubSet : vanillaSubSet;
}
@Override
public void setupBufferState() {
getSubSet().setupBufferState();
}
@Override
public Set<VertexFormat> getVertexFormats() {
return irisSubSet.getVertexFormats();
}
@Override
public VertexLayout getLayout() {
return getSubSet().getLayout();
}
@Override
public IServerBuffer getImmediateMeshBuffer() {
return getSubSet().getImmediateMeshBuffer();
}
@Override
public ITransformShaderProgramOverride getTransformProgramOverride(RenderType renderType) {
return getSubSet().getTransformProgramOverride(renderType);
}
@Override
public IUploadingShaderProgramOverride getUploadingProgramOverride(RenderType renderType) {
return getSubSet().getUploadingProgramOverride(renderType);
}
@Override
public MeshUploadingProgramDispatcher selectMeshUploadingProgramDispatcher() {
return getSubSet().selectMeshUploadingProgramDispatcher();
}
@Override
public TransformProgramDispatcher selectTransformProgramDispatcher() {
return getSubSet().selectTransformProgramDispatcher();
}
@Override
public ICullingProgramDispatcher selectCullingProgramDispatcher(RenderType renderType) {
return getSubSet().selectCullingProgramDispatcher(renderType);
}
@Override
public IPolygonProgramDispatcher selectProcessingProgramDispatcher(VertexFormat.Mode mode) {
return getSubSet().selectProcessingProgramDispatcher(mode);
}
@Override
public boolean isAccelerated(VertexFormat vertexFormat) {
return getSubSet().isAccelerated(vertexFormat);
}
@Override
public int getVertexSize() {
return getSubSet().getVertexSize();
}
public static class IrisSubSet implements IBufferEnvironment {
private final VertexFormat vanillaVertexFormat;
private final VertexFormat irisVertexFormat;
private final VertexLayout layout;
private final IShaderProgramOverrides shaderProgramOverrides;
private final MeshUploadingProgramDispatcher meshUploadingProgramDispatcher;
private final TransformProgramDispatcher transformProgramDispatcher;
private final ICullingProgramSelector cullingProgramSelector;
private final IPolygonProcessor polygonProcessor;
public IrisSubSet(
VertexFormat vanillaVertexFormat,
VertexFormat irisVertexFormat,
ResourceLocation uploadingProgramKey,
ResourceLocation transformProgramKey
) {
var defaultTransformOverride = new TransformProgramDispatcher .Default(transformProgramKey, 4L * 4L);
var defaultUploadingOverride = new MeshUploadingProgramDispatcher.Default(uploadingProgramKey, 7L * 4L);
this.vanillaVertexFormat = vanillaVertexFormat;
this.irisVertexFormat = irisVertexFormat;
this.layout = new VertexLayout(this.irisVertexFormat);
this.shaderProgramOverrides = ModLoader.postEventWithReturn(new LoadShaderProgramOverridesEvent (this.irisVertexFormat)).getOverrides (defaultTransformOverride, defaultUploadingOverride);
this.cullingProgramSelector = ModLoader.postEventWithReturn(new LoadCullingProgramSelectorEvent (this.irisVertexFormat)).getSelector ();
this.polygonProcessor = ModLoader.postEventWithReturn(new LoadPolygonProcessorEvent (this.irisVertexFormat)).getProcessor ();
this.meshUploadingProgramDispatcher = new MeshUploadingProgramDispatcher();
this.transformProgramDispatcher = new TransformProgramDispatcher ();
}
@Override
public void setupBufferState() {
irisVertexFormat.setupBufferState();
}
@Override
public boolean isAccelerated(VertexFormat vertexFormat) {
return this.vanillaVertexFormat == vertexFormat || this.irisVertexFormat == vertexFormat;
}
@Override
public Set<VertexFormat> getVertexFormats() {
return Set.of(vanillaVertexFormat, irisVertexFormat);
}
@Override
public VertexLayout getLayout() {
return layout;
}
@Override
public IServerBuffer getImmediateMeshBuffer() {
return ServerMesh.Builder.BUFFERS.get(layout).getFirst();
}
@Override
public ITransformShaderProgramOverride getTransformProgramOverride(RenderType renderType) {
return shaderProgramOverrides.getTransformOverrides().get(renderType);
}
@Override
public IUploadingShaderProgramOverride getUploadingProgramOverride(RenderType renderType) {
return shaderProgramOverrides.getUploadingOverrides().get(renderType);
}
@Override
public MeshUploadingProgramDispatcher selectMeshUploadingProgramDispatcher() {
return meshUploadingProgramDispatcher;
}
@Override
public TransformProgramDispatcher selectTransformProgramDispatcher() {
return transformProgramDispatcher;
}
@Override
public ICullingProgramDispatcher selectCullingProgramDispatcher(RenderType renderType) {
return cullingProgramSelector.select(renderType);
}
@Override
public IPolygonProgramDispatcher selectProcessingProgramDispatcher(VertexFormat.Mode mode) {
return polygonProcessor.select(mode);
}
@Override
public int getVertexSize() {
return irisVertexFormat.getVertexSize();
}
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/interfaces/IIrisAcceleratedBufferBuilder.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.interfaces;
import com.github.argon4w.acceleratedrendering.core.buffers.memory.IMemoryInterface;
public interface IIrisAcceleratedBufferBuilder {
IMemoryInterface getEntityIdOffset ();
IMemoryInterface getEntityOffset ();
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/interfaces/IIrisMeshInfo.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.interfaces;
public interface IIrisMeshInfo {
short getRenderedEntity ();
short getRenderedBlockEntity();
short getRenderedItem ();
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/interfaces/IIrisMeshInfoCache.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.interfaces;
public interface IIrisMeshInfoCache {
short getRenderedEntity (int i);
short getRenderedBlockEntity(int i);
short getRenderedItem (int i);
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/AcceleratedBufferBuilderMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.compat.iris.interfaces.IIrisAcceleratedBufferBuilder;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.AcceleratedRingBuffers;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.AcceleratedBufferBuilder;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.functions.ILayerFunction;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.ElementBufferPool;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.StagingBufferPool;
import com.github.argon4w.acceleratedrendering.core.buffers.memory.IMemoryInterface;
import com.github.argon4w.acceleratedrendering.core.buffers.memory.VertexLayout;
import com.llamalad7.mixinextras.sugar.Local;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.blaze3d.vertex.VertexFormatElement;
import net.irisshaders.iris.uniforms.CapturedRenderingState;
import net.irisshaders.iris.vertices.IrisVertexFormats;
import net.minecraft.client.renderer.RenderType;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(AcceleratedBufferBuilder.class)
public class AcceleratedBufferBuilderMixin implements IIrisAcceleratedBufferBuilder {
@Shadow @Final private VertexLayout layout;
@Shadow private long vertexAddress;
@Unique private IMemoryInterface entityIdOffset;
@Unique private IMemoryInterface entityOffset;
@Inject(
method = "<init>",
at = @At("TAIL")
)
public void constructor(
StagingBufferPool .StagingBuffer vertexBuffer,
StagingBufferPool .StagingBuffer varyingBuffer,
ElementBufferPool .ElementSegment elementSegment,
AcceleratedRingBuffers .Buffers buffers,
ILayerFunction layerFunction,
RenderType renderType,
CallbackInfo ci
) {
entityIdOffset = layout.getElement(IrisVertexFormats.ENTITY_ID_ELEMENT);
entityOffset = layout.getElement(IrisVertexFormats.ENTITY_ELEMENT);
}
@Inject(
method = "addVertex(FFFIFFIIFFF)V",
at = @At("TAIL")
)
public void addIrisVertex(
float pX,
float pY,
float pZ,
int pColor,
float pU,
float pV,
int pPackedOverlay,
int pPackedLight,
float pNormalX,
float pNormalY,
float pNormalZ,
CallbackInfo ci,
@Local(name = "vertexAddress") long vertexAddress
) {
addIrisData(vertexAddress);
}
@Inject(
method = "addVertex(FFF)Lcom/mojang/blaze3d/vertex/VertexConsumer;",
at = @At("TAIL")
)
public void addIrisVertex(
float pX,
float pY,
float pZ,
CallbackInfoReturnable<VertexConsumer> cir) {
addIrisData(vertexAddress);
}
@Inject(
method = {
"addServerMesh",
"addClientMesh"
},
at = @At(
value = "INVOKE",
target = "Lcom/github/argon4w/acceleratedrendering/core/buffers/memory/IMemoryInterface;putInt(JI)V",
ordinal = 2,
shift = At.Shift.AFTER
)
)
public void addIrisMesh(CallbackInfo ci, @Local(name = "vertexAddress") long vertexAddress) {
addIrisData(vertexAddress);
}
@Unique
private void addIrisData(long vertexAddress) {
entityOffset .putShort(vertexAddress + 0L, (short) -1);
entityOffset .putShort(vertexAddress + 2L, (short) -1);
entityIdOffset .putShort(vertexAddress + 0L, (short) CapturedRenderingState.INSTANCE.getCurrentRenderedEntity ());
entityIdOffset .putShort(vertexAddress + 2L, (short) CapturedRenderingState.INSTANCE.getCurrentRenderedBlockEntity ());
entityIdOffset .putShort(vertexAddress + 4L, (short) CapturedRenderingState.INSTANCE.getCurrentRenderedItem ());
}
@Unique
@Override
public IMemoryInterface getEntityIdOffset() {
return entityIdOffset;
}
@Unique
@Override
public IMemoryInterface getEntityOffset() {
return entityOffset;
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/AcceleratedBufferSourceMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.AcceleratedBufferSource;
import net.irisshaders.batchedentityrendering.impl.WrappableRenderType;
import net.irisshaders.iris.vertices.ImmediateState;
import net.minecraft.client.renderer.RenderType;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyArg;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(AcceleratedBufferSource.class)
public class AcceleratedBufferSourceMixin {
@ModifyArg(
method = "getBuffer",
at = @At(
value = "INVOKE",
target = "Lcom/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedBufferBuilder;<init>(Lcom/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/StagingBufferPool$StagingBuffer;Lcom/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/StagingBufferPool$StagingBuffer;Lcom/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/ElementBufferPool$ElementSegment;Lcom/github/argon4w/acceleratedrendering/core/buffers/accelerated/AcceleratedRingBuffers$Buffers;Lcom/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/functions/ILayerFunction;Lnet/minecraft/client/renderer/RenderType;)V"
),
index = 5
)
public RenderType unwrapIrisRenderType(RenderType renderType) {
return renderType instanceof WrappableRenderType wrapped ? wrapped.unwrap() : renderType;
}
@Inject(
method = "drawBuffers",
at = @At(
value = "INVOKE",
target = "Lcom/github/argon4w/acceleratedrendering/core/buffers/accelerated/AcceleratedRingBuffers$Buffers;bindDrawBuffers()V",
shift = At.Shift.BEFORE
)
)
private void beforeBindDrawBuffers(CallbackInfo ci) {
if (!ImmediateState.isRenderingLevel) {
ImmediateState.renderWithExtendedVertexFormat = false;
}
}
@Inject(
method = "drawBuffers",
at = @At(
value = "INVOKE",
target = "Lcom/github/argon4w/acceleratedrendering/core/buffers/accelerated/AcceleratedRingBuffers$Buffers;bindDrawBuffers()V",
shift = At.Shift.AFTER
)
)
private void afterBindDrawBuffers(CallbackInfo ci) {
if (!ImmediateState.isRenderingLevel) {
ImmediateState.renderWithExtendedVertexFormat = true;
}
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/AcceleratedRenderingModEntryMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.AcceleratedRenderingModEntry;
import com.github.argon4w.acceleratedrendering.compat.iris.programs.IrisPrograms;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.ModContainer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(AcceleratedRenderingModEntry.class)
public class AcceleratedRenderingModEntryMixin {
@Inject(
method = "<init>",
at = @At("TAIL")
)
public void registerIrisEvents(
IEventBus modEventBus,
ModContainer modContainer,
CallbackInfo ci
) {
modEventBus.register(IrisPrograms.class);
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/CoreBuffersProviderMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.core.CoreBuffersProvider;
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import net.irisshaders.batchedentityrendering.impl.RenderBuffersExt;
import net.minecraft.client.renderer.RenderBuffers;
import org.spongepowered.asm.mixin.Mixin;
@Mixin(CoreBuffersProvider.class)
public class CoreBuffersProviderMixin {
@WrapMethod(method = "bindAcceleratedBufferSources")
private static void bindAcceleratedBufferSourcesForIris(RenderBuffers renderBuffers, Operation<Void> original) {
var extension = (RenderBuffersExt) renderBuffers;
extension .beginLevelRendering();
original .call (renderBuffers);
extension .endLevelRendering ();
original .call (renderBuffers);
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/FlattenMeshInfoCacheMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.compat.iris.interfaces.IIrisMeshInfoCache;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.FlattenMeshInfoCache;
import com.llamalad7.mixinextras.sugar.Local;
import net.irisshaders.iris.uniforms.CapturedRenderingState;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Constant;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyConstant;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.lang.invoke.VarHandle;
@Mixin(FlattenMeshInfoCache.class)
public class FlattenMeshInfoCacheMixin implements IIrisMeshInfoCache {
@Shadow @Final public static VarHandle HANDLE;
@Shadow private int[] cache;
@Unique private static final int IRIS_MESH_INFO_SIZE = 8;
@Unique private static final int RENDERED_ENTITY_OFFSET = 5;
@Unique private static final int RENDERED_BLOCK_ENTITY_OFFSET = 6;
@Unique private static final int RENDERED_ITEM_OFFSET = 7;
@ModifyConstant(
method = {
"<init>",
"setup",
"getSharing",
"getShouldCull",
"getColor",
"getLight",
"getOverlay"
},
constant = @Constant(intValue = 5)
)
public int modifySize(int constant) {
return IRIS_MESH_INFO_SIZE;
}
@Inject(
method = "setup",
at = @At(
value = "INVOKE",
target = "Ljava/lang/invoke/VarHandle;set([III)V",
ordinal = 4,
shift = At.Shift.AFTER
)
)
public void addIrisData(
int color,
int light,
int overlay,
int sharing,
int shouldCull,
CallbackInfo ci,
@Local(name = "infoIndex") int infoIndex
) {
HANDLE.set(cache, infoIndex + RENDERED_ENTITY_OFFSET, CapturedRenderingState.INSTANCE.getCurrentRenderedEntity ());
HANDLE.set(cache, infoIndex + RENDERED_BLOCK_ENTITY_OFFSET, CapturedRenderingState.INSTANCE.getCurrentRenderedBlockEntity ());
HANDLE.set(cache, infoIndex + RENDERED_ITEM_OFFSET, CapturedRenderingState.INSTANCE.getCurrentRenderedItem ());
}
@Override
public short getRenderedEntity(int i) {
return (short) (int) HANDLE.get(cache, i * IRIS_MESH_INFO_SIZE + RENDERED_ENTITY_OFFSET);
}
@Override
public short getRenderedBlockEntity(int i) {
return (short) (int) HANDLE.get(cache, i * IRIS_MESH_INFO_SIZE + RENDERED_BLOCK_ENTITY_OFFSET);
}
@Override
public short getRenderedItem(int i) {
return (short) (int) HANDLE.get(cache, i * IRIS_MESH_INFO_SIZE + RENDERED_ITEM_OFFSET);
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/IBufferEnvironmentPresetsMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.compat.iris.environments.IrisBufferEnvironment;
import com.github.argon4w.acceleratedrendering.compat.iris.programs.IrisPrograms;
import com.github.argon4w.acceleratedrendering.core.buffers.environments.IBufferEnvironment;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
import net.irisshaders.iris.vertices.IrisVertexFormats;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@Mixin(IBufferEnvironment.Presets.class)
public class IBufferEnvironmentPresetsMixin {
@Mutable @Shadow @Final public static IBufferEnvironment BLOCK;
@Mutable @Shadow @Final public static IBufferEnvironment ENTITY;
@Mutable @Shadow @Final public static IBufferEnvironment POS_COLOR_TEX_LIGHT;
@WrapOperation(
method = "<clinit>",
at = @At(
value = "FIELD",
target = "Lcom/github/argon4w/acceleratedrendering/core/buffers/environments/IBufferEnvironment$Presets;BLOCK:Lcom/github/argon4w/acceleratedrendering/core/buffers/environments/IBufferEnvironment;",
opcode = Opcodes.PUTSTATIC
)
)
private static void useIrisBloockEnvironment(IBufferEnvironment value, Operation<Void> original) {
original.call(new IrisBufferEnvironment(
value,
DefaultVertexFormat .BLOCK,
IrisVertexFormats .TERRAIN,
IrisPrograms .IRIS_BLOCK_MESH_UPLOADING_KEY,
IrisPrograms .IRIS_BLOCK_VERTEX_TRANSFORM_KEY
));
}
@WrapOperation(
method = "<clinit>",
at = @At(
value = "FIELD",
target = "Lcom/github/argon4w/acceleratedrendering/core/buffers/environments/IBufferEnvironment$Presets;ENTITY:Lcom/github/argon4w/acceleratedrendering/core/buffers/environments/IBufferEnvironment;",
opcode = Opcodes.PUTSTATIC
)
)
private static void useIrisEntityEnvironment(IBufferEnvironment value, Operation<Void> original) {
original.call(new IrisBufferEnvironment(
value,
DefaultVertexFormat .NEW_ENTITY,
IrisVertexFormats .ENTITY,
IrisPrograms .IRIS_ENTITY_MESH_UPLOADING_KEY,
IrisPrograms .IRIS_ENTITY_VERTEX_TRANSFORM_KEY
));
}
@WrapOperation(
method = "<clinit>",
at = @At(
value = "FIELD",
target = "Lcom/github/argon4w/acceleratedrendering/core/buffers/environments/IBufferEnvironment$Presets;POS_COLOR_TEX_LIGHT:Lcom/github/argon4w/acceleratedrendering/core/buffers/environments/IBufferEnvironment;",
opcode = Opcodes.PUTSTATIC
)
)
private static void useIrisGlyphEnvironment(IBufferEnvironment value, Operation<Void> original) {
original.call(new IrisBufferEnvironment(
value,
DefaultVertexFormat .POSITION_COLOR_TEX_LIGHTMAP,
IrisVertexFormats .GLYPH,
IrisPrograms .IRIS_GLYPH_MESH_UPLOADING_KEY,
IrisPrograms .IRIS_GLYPH_VERTEX_TRANSFORM_KEY
));
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/MeshUploaderMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.compat.iris.interfaces.IIrisMeshInfoCache;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.IMeshInfoCache;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.MeshUploaderPool;
import com.github.argon4w.acceleratedrendering.core.buffers.memory.IMemoryInterface;
import com.github.argon4w.acceleratedrendering.core.buffers.memory.SimpleDynamicMemoryInterface;
import com.llamalad7.mixinextras.sugar.Local;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(MeshUploaderPool.MeshUploader.class)
public abstract class MeshUploaderMixin {
@Shadow @Final private IMeshInfoCache meshInfos;
@Unique private final IMemoryInterface IRIS_INFO_ENTITY = new SimpleDynamicMemoryInterface(5L * 4L + 0L * 2L, (MeshUploaderPool.MeshUploader) (Object) this);
@Unique private final IMemoryInterface IRIS_INFO_BLOCK_ENTITY = new SimpleDynamicMemoryInterface(5L * 4L + 1L * 2L, (MeshUploaderPool.MeshUploader) (Object) this);
@Unique private final IMemoryInterface IRIS_INFO_ITEM = new SimpleDynamicMemoryInterface(5L * 4L + 2L * 2L, (MeshUploaderPool.MeshUploader) (Object) this);
@Inject(
method = "upload",
at = @At(
value = "INVOKE",
target = "Lcom/github/argon4w/acceleratedrendering/core/buffers/memory/IMemoryInterface;putInt(JI)V",
ordinal = 4,
shift = At.Shift.AFTER
)
)
public void uploadIrisData(
CallbackInfo ci,
@Local(name = "meshInfoAddress") long meshInfoAddress,
@Local(name = "i") int offset
) {
IRIS_INFO_ENTITY .at(offset).putShort(meshInfoAddress, ((IIrisMeshInfoCache) meshInfos).getRenderedEntity (offset));
IRIS_INFO_BLOCK_ENTITY .at(offset).putShort(meshInfoAddress, ((IIrisMeshInfoCache) meshInfos).getRenderedBlockEntity (offset));
IRIS_INFO_ITEM .at(offset).putShort(meshInfoAddress, ((IIrisMeshInfoCache) meshInfos).getRenderedItem (offset));
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/MeshUploadingProgramDispatcherMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.compat.iris.interfaces.IIrisAcceleratedBufferBuilder;
import com.github.argon4w.acceleratedrendering.compat.iris.interfaces.IIrisMeshInfoCache;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.AcceleratedRingBuffers;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.AcceleratedBufferBuilder;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.IMeshInfoCache;
import com.github.argon4w.acceleratedrendering.core.programs.dispatchers.MeshUploadingProgramDispatcher;
import com.llamalad7.mixinextras.sugar.Local;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.Collection;
@Mixin(MeshUploadingProgramDispatcher.class)
public class MeshUploadingProgramDispatcherMixin {
@Inject(
method = "dispatch",
at = @At(
value = "INVOKE",
target = "Lcom/github/argon4w/acceleratedrendering/core/buffers/memory/IMemoryInterface;putInt(JI)V",
ordinal = 2,
shift = At.Shift.AFTER
)
)
public void addIrisData(
Collection<AcceleratedBufferBuilder> builders,
AcceleratedRingBuffers.Buffers buffers,
CallbackInfo ci,
@Local(name = "meshInfos") IMeshInfoCache meshInfos,
@Local(name = "builder") AcceleratedBufferBuilder builder,
@Local(name = "offset") int offset,
@Local(name = "i") int i,
@Local(name = "vertexAddress") long vertexAddress
) {
((IIrisAcceleratedBufferBuilder) builder).getEntityIdOffset() .at(offset).putShort(vertexAddress + 0L, ((IIrisMeshInfoCache) meshInfos).getRenderedEntity (i));
((IIrisAcceleratedBufferBuilder) builder).getEntityIdOffset() .at(offset).putShort(vertexAddress + 2L, ((IIrisMeshInfoCache) meshInfos).getRenderedEntity (i));
((IIrisAcceleratedBufferBuilder) builder).getEntityIdOffset() .at(offset).putShort(vertexAddress + 4L, ((IIrisMeshInfoCache) meshInfos).getRenderedEntity (i));
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/RenderTypeUtilsMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.LayerDrawType;
import com.github.argon4w.acceleratedrendering.core.utils.RenderTypeUtils;
import net.irisshaders.batchedentityrendering.impl.BlendingStateHolder;
import net.irisshaders.batchedentityrendering.impl.TransparencyType;
import net.irisshaders.batchedentityrendering.impl.WrappableRenderType;
import net.minecraft.client.renderer.RenderType;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(RenderTypeUtils.class)
public class RenderTypeUtilsMixin {
@ModifyVariable(
method = "getTextureLocation",
at = @At("HEAD"),
ordinal = 0,
argsOnly = true
)
private static RenderType unwrapIrisRenderType1(RenderType renderType) {
return renderType instanceof WrappableRenderType wrapped ? wrapped.unwrap() : renderType;
}
@ModifyVariable(
method = "isCulled",
at = @At("HEAD"),
ordinal = 0,
argsOnly = true
)
private static RenderType unwrapIrisRenderType2(RenderType renderType) {
return renderType instanceof WrappableRenderType wrapped ? wrapped.unwrap() : renderType;
}
@ModifyVariable(
method = "isDynamic",
at = @At("HEAD"),
ordinal = 0,
argsOnly = true
)
private static RenderType unwrapIrisRenderType3(RenderType renderType) {
return renderType instanceof WrappableRenderType wrapped ? wrapped.unwrap() : renderType;
}
@ModifyVariable(
method = "hasDepth",
at = @At("HEAD"),
ordinal = 0,
argsOnly = true
)
private static RenderType unwrapIrisRenderType4(RenderType renderType) {
return renderType instanceof WrappableRenderType wrapped ? wrapped.unwrap() : renderType;
}
@ModifyVariable(
method = "withDepth",
at = @At("HEAD"),
ordinal = 0,
argsOnly = true
)
private static RenderType unwrapIrisRenderType5(RenderType renderType) {
return renderType instanceof WrappableRenderType wrapped ? wrapped.unwrap() : renderType;
}
@Inject(
method = "getDrawType",
at = @At("HEAD"),
cancellable = true
)
private static void getIrisRenderTypeDrawType(RenderType renderType, CallbackInfoReturnable<LayerDrawType> cir) {
var holder = (BlendingStateHolder) renderType;
cir.setReturnValue( holder.getTransparencyType() == TransparencyType.GENERAL_TRANSPARENT
|| holder.getTransparencyType() == TransparencyType.DECAL
? LayerDrawType.TRANSLUCENT
: LayerDrawType.OPAQUE
);
}
@Inject(
method = "isTranslucent",
at = @At("HEAD"),
cancellable = true
)
private static void checkIrisTransparency(RenderType renderType, CallbackInfoReturnable<Boolean> cir) {
var holder = (BlendingStateHolder) renderType;
cir.setReturnValue( holder.getTransparencyType() == TransparencyType.GENERAL_TRANSPARENT
|| holder.getTransparencyType() == TransparencyType.DECAL
);
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/SimpleMeshInfoCacheMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.compat.iris.interfaces.IIrisMeshInfo;
import com.github.argon4w.acceleratedrendering.compat.iris.interfaces.IIrisMeshInfoCache;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.SimpleMeshInfo;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.SimpleMeshInfoCache;
import com.github.argon4w.acceleratedrendering.core.utils.SimpleCachedArray;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@Mixin(SimpleMeshInfoCache.class)
public class SimpleMeshInfoCacheMixin implements IIrisMeshInfoCache {
@Shadow @Final private SimpleCachedArray<SimpleMeshInfo> meshInfos;
@Override
public short getRenderedEntity(int i) {
return ((IIrisMeshInfo) meshInfos.at(i)).getRenderedEntity();
}
@Override
public short getRenderedBlockEntity(int i) {
return ((IIrisMeshInfo) meshInfos.at(i)).getRenderedBlockEntity();
}
@Override
public short getRenderedItem(int i) {
return ((IIrisMeshInfo) meshInfos.at(i)).getRenderedItem();
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/SimpleMeshInfoMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.compat.iris.interfaces.IIrisMeshInfo;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.SimpleMeshInfo;
import net.irisshaders.iris.uniforms.CapturedRenderingState;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(SimpleMeshInfo.class)
public class SimpleMeshInfoMixin implements IIrisMeshInfo {
@Unique private short renderedEntity;
@Unique private short renderedBlockEntity;
@Unique private short renderedItem;
@Inject(method = "setupMeshInfo", at = @At("TAIL"))
public void setIrisData(
int color,
int light,
int overlay,
int sharing,
int shouldCull,
CallbackInfo ci
) {
renderedEntity = (short) CapturedRenderingState.INSTANCE.getCurrentRenderedEntity ();
renderedBlockEntity = (short) CapturedRenderingState.INSTANCE.getCurrentRenderedBlockEntity ();
renderedItem = (short) CapturedRenderingState.INSTANCE.getCurrentRenderedItem ();
}
@Unique
@Override
public short getRenderedEntity() {
return renderedEntity;
}
@Unique
@Override
public short getRenderedBlockEntity() {
return renderedBlockEntity;
}
@Unique
@Override
public short getRenderedItem() {
return renderedItem;
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/UnsafeMemoryMeshInfoCacheMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;
import com.github.argon4w.acceleratedrendering.compat.iris.interfaces.IIrisMeshInfoCache;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.UnsafeMemoryMeshInfoCache;
import com.llamalad7.mixinextras.sugar.Local;
import net.irisshaders.iris.uniforms.CapturedRenderingState;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Constant;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyConstant;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import sun.misc.Unsafe;
@Mixin(UnsafeMemoryMeshInfoCache.class)
public class UnsafeMemoryMeshInfoCacheMixin implements IIrisMeshInfoCache {
@Shadow @Final public static Unsafe UNSAFE;
@Shadow private long address;
@Unique private static final long IRIS_MESH_INFO_SIZE = 8L * 4L;
@Unique private static final long RENDERED_ENTITY_OFFSET = 5L * 4L;
@Unique private static final long RENDERED_BLOCK_ENTITY_OFFSET = 6L * 4L;
@Unique private static final long RENDERED_ITEM_OFFSET = 7L * 4L;
@ModifyConstant(
method = {
"<init>",
"setup",
"getSharing",
"getShouldCull",
"getColor",
"getLight",
"getOverlay"
},
constant = @Constant(longValue = 20L)
)
public long modifySize(long constant) {
return IRIS_MESH_INFO_SIZE;
}
@Inject(
method = "setup",
at = @At(
value = "INVOKE",
target = "Lsun/misc/Unsafe;putInt(JI)V",
ordinal = 4,
shift = At.Shift.AFTER
)
)
public void addIrisData(
int color,
int light,
int overlay,
int sharing,
int shouldCull,
CallbackInfo ci,
@Local(name = "infoAddress") long infoAddress
) {
UNSAFE.putInt(infoAddress + RENDERED_ENTITY_OFFSET, CapturedRenderingState.INSTANCE.getCurrentRenderedEntity ());
UNSAFE.putInt(infoAddress + RENDERED_BLOCK_ENTITY_OFFSET, CapturedRenderingState.INSTANCE.getCurrentRenderedBlockEntity ());
UNSAFE.putInt(infoAddress + RENDERED_ITEM_OFFSET, CapturedRenderingState.INSTANCE.getCurrentRenderedItem ());
}
@Override
public short getRenderedEntity(int i) {
return (short) UNSAFE.getInt(address + i * IRIS_MESH_INFO_SIZE + RENDERED_ENTITY_OFFSET);
}
@Override
public short getRenderedBlockEntity(int i) {
return (short) UNSAFE.getInt(address + i * IRIS_MESH_INFO_SIZE + RENDERED_BLOCK_ENTITY_OFFSET);
}
@Override
public short getRenderedItem(int i) {
return (short) UNSAFE.getInt(address + i * IRIS_MESH_INFO_SIZE + RENDERED_ITEM_OFFSET);
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/FullyBufferedMultiBufferSourceMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.iris;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.IAcceleratableBufferSource;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.VertexConsumerExtension;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import com.mojang.blaze3d.vertex.VertexConsumer;
import lombok.experimental.ExtensionMethod;
import net.irisshaders.batchedentityrendering.impl.FullyBufferedMultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.At;
@Pseudo
@ExtensionMethod(VertexConsumerExtension .class)
@Mixin (FullyBufferedMultiBufferSource .class)
public abstract class FullyBufferedMultiBufferSourceMixin implements IAcceleratableBufferSource {
@ModifyReturnValue(
method = "getBuffer",
at = @At("RETURN")
)
public VertexConsumer initAcceleration(VertexConsumer original, RenderType renderType) {
return original
.getHolder ()
.initAcceleration (renderType, getBoundAcceleratedBufferSource());
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/HandRendererMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.iris;
import com.github.argon4w.acceleratedrendering.compat.iris.IrisCompatBuffers;
import com.github.argon4w.acceleratedrendering.compat.iris.IrisCompatBuffersProvider;
import com.github.argon4w.acceleratedrendering.core.CoreFeature;
import com.github.argon4w.acceleratedrendering.core.CoreStates;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.BufferSourceExtension;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.LayerDrawType;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import lombok.experimental.ExtensionMethod;
import net.irisshaders.batchedentityrendering.impl.FullyBufferedMultiBufferSource;
import net.irisshaders.iris.pathways.HandRenderer;
import net.irisshaders.iris.pipeline.WorldRenderingPipeline;
import net.minecraft.client.Camera;
import net.minecraft.client.renderer.GameRenderer;
import org.joml.Matrix4fc;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Pseudo
@ExtensionMethod(BufferSourceExtension .class)
@Mixin (HandRenderer .class)
public class HandRendererMixin {
@Shadow
@Final
private FullyBufferedMultiBufferSource bufferSource;
@Inject(
method = "<init>",
at = @At("TAIL")
)
public void bindAcceleratedBufferSourceHand(CallbackInfo ci) {
bufferSource
.getAcceleratable ()
.bindAcceleratedBufferSource(IrisCompatBuffersProvider.HAND);
}
@Inject(
method = "renderSolid",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/renderer/ItemInHandRenderer;renderHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/player/LocalPlayer;I)V",
shift = At.Shift.BEFORE
)
)
public void startRenderSolidFast(
Matrix4fc modelMatrix,
float tickDelta,
Camera camera,
GameRenderer gameRenderer,
WorldRenderingPipeline pipeline,
CallbackInfo ci
) {
CoreFeature.setRenderingHand();
}
@Inject(
method = "renderSolid",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/renderer/ItemInHandRenderer;renderHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/player/LocalPlayer;I)V",
shift = At.Shift.AFTER
)
)
public void stopRenderSolidFast(
Matrix4fc modelMatrix,
float tickDelta,
Camera camera,
GameRenderer gameRenderer,
WorldRenderingPipeline pipeline,
CallbackInfo ci
) {
CoreFeature .resetRenderingHand ();
CoreStates .recordBuffers ();
IrisCompatBuffers.ENTITY_HAND .prepareBuffers ();
IrisCompatBuffers.BLOCK_HAND .prepareBuffers ();
IrisCompatBuffers.POS_HAND .prepareBuffers ();
IrisCompatBuffers.POS_COLOR_HAND .prepareBuffers ();
IrisCompatBuffers.POS_TEX_HAND .prepareBuffers ();
IrisCompatBuffers.POS_TEX_COLOR_HAND .prepareBuffers ();
IrisCompatBuffers.POS_COLOR_TEX_LIGHT_HAND .prepareBuffers ();
CoreStates .restoreBuffers ();
IrisCompatBuffers.ENTITY_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.BLOCK_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_COLOR_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_TEX_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_TEX_COLOR_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_COLOR_TEX_LIGHT_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.ENTITY_HAND .clearBuffers ();
IrisCompatBuffers.BLOCK_HAND .clearBuffers ();
IrisCompatBuffers.POS_HAND .clearBuffers ();
IrisCompatBuffers.POS_COLOR_HAND .clearBuffers ();
IrisCompatBuffers.POS_TEX_HAND .clearBuffers ();
IrisCompatBuffers.POS_TEX_COLOR_HAND .clearBuffers ();
IrisCompatBuffers.POS_COLOR_TEX_LIGHT_HAND .clearBuffers ();
}
@Inject(
method = "renderTranslucent",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/renderer/ItemInHandRenderer;renderHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/player/LocalPlayer;I)V",
shift = At.Shift.BEFORE
)
)
public void startRenderTranslucentFast(
Matrix4fc modelMatrix,
float tickDelta,
Camera camera,
GameRenderer gameRenderer,
WorldRenderingPipeline pipeline,
CallbackInfo ci
) {
CoreFeature.setRenderingHand();
}
@Inject(
method = "renderTranslucent",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/renderer/ItemInHandRenderer;renderHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/player/LocalPlayer;I)V",
shift = At.Shift.AFTER
)
)
public void stopRenderTranslucentFast(
Matrix4fc modelMatrix,
float tickDelta,
Camera camera,
GameRenderer gameRenderer,
WorldRenderingPipeline pipeline,
CallbackInfo ci
) {
CoreFeature .resetRenderingHand ();
CoreStates .recordBuffers ();
IrisCompatBuffers.ENTITY_HAND .prepareBuffers ();
IrisCompatBuffers.BLOCK_HAND .prepareBuffers ();
IrisCompatBuffers.POS_HAND .prepareBuffers ();
IrisCompatBuffers.POS_COLOR_HAND .prepareBuffers ();
IrisCompatBuffers.POS_TEX_HAND .prepareBuffers ();
IrisCompatBuffers.POS_TEX_COLOR_HAND .prepareBuffers ();
IrisCompatBuffers.POS_COLOR_TEX_LIGHT_HAND .prepareBuffers ();
CoreStates .restoreBuffers ();
IrisCompatBuffers.ENTITY_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.BLOCK_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_COLOR_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_TEX_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_TEX_COLOR_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_COLOR_TEX_LIGHT_HAND .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.ENTITY_HAND .clearBuffers ();
IrisCompatBuffers.BLOCK_HAND .clearBuffers ();
IrisCompatBuffers.POS_HAND .clearBuffers ();
IrisCompatBuffers.POS_COLOR_HAND .clearBuffers ();
IrisCompatBuffers.POS_TEX_HAND .clearBuffers ();
IrisCompatBuffers.POS_TEX_COLOR_HAND .clearBuffers ();
IrisCompatBuffers.POS_COLOR_TEX_LIGHT_HAND .clearBuffers ();
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/IrisVertexFormatsMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.iris;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.mojang.blaze3d.vertex.VertexFormat;
import com.mojang.blaze3d.vertex.VertexFormatElement;
import net.irisshaders.iris.vertices.IrisVertexFormats;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.injection.At;
@Pseudo
@Mixin(
value = IrisVertexFormats.class,
priority = Integer.MAX_VALUE
)
public class IrisVertexFormatsMixin {
@Shadow @Final @Mutable public static VertexFormat ENTITY;
@Shadow @Final @Mutable public static VertexFormat GLYPH;
@Shadow @Final public static VertexFormatElement ENTITY_ID_ELEMENT;
@Shadow @Final public static VertexFormatElement MID_TEXTURE_ELEMENT;
@Shadow @Final public static VertexFormatElement TANGENT_ELEMENT;
@WrapOperation(
method = "<clinit>",
at = @At(
value = "FIELD",
target = "Lnet/irisshaders/iris/vertices/IrisVertexFormats;ENTITY:Lcom/mojang/blaze3d/vertex/VertexFormat;",
opcode = Opcodes.PUTSTATIC
)
)
private static void addPaddingForEntityFormat(VertexFormat value, Operation<Void> original) {
original.call (VertexFormat
.builder()
.add ("Position", VertexFormatElement.POSITION)
.add ("Color", VertexFormatElement.COLOR)
.add ("UV0", VertexFormatElement.UV0)
.add ("UV1", VertexFormatElement.UV1)
.add ("UV2", VertexFormatElement.UV2)
.add ("Normal", VertexFormatElement.NORMAL)
.padding(1)
.add ("iris_Entity", ENTITY_ID_ELEMENT)
.padding(2)
.add ("mc_midTexCoord", MID_TEXTURE_ELEMENT)
.add ("at_tangent", TANGENT_ELEMENT)
.build ()
);
}
@WrapOperation(
method = "<clinit>",
at = @At(
value = "FIELD",
target = "Lnet/irisshaders/iris/vertices/IrisVertexFormats;GLYPH:Lcom/mojang/blaze3d/vertex/VertexFormat;",
opcode = Opcodes.PUTSTATIC
)
)
private static void addPaddingForGlyphFormat(VertexFormat value, Operation<Void> original) {
original.call (VertexFormat
.builder()
.add ("Position", VertexFormatElement.POSITION)
.add ("Color", VertexFormatElement.COLOR)
.add ("UV0", VertexFormatElement.UV0)
.add ("UV2", VertexFormatElement.UV2)
.add ("Normal", VertexFormatElement.NORMAL)
.padding(1)
.add ("iris_Entity", ENTITY_ID_ELEMENT)
.padding(2)
.add ("mc_midTexCoord", MID_TEXTURE_ELEMENT)
.add ("at_tangent", TANGENT_ELEMENT)
.build ()
);
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/ModelToEntityVertexSerializerMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.iris;
import net.irisshaders.iris.vertices.sodium.ModelToEntityVertexSerializer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.Constant;
import org.spongepowered.asm.mixin.injection.ModifyConstant;
@Pseudo
@Mixin(ModelToEntityVertexSerializer.class)
public class ModelToEntityVertexSerializerMixin {
@ModifyConstant(
method = "serialize",
constant = @Constant(longValue = 42L)
)
public long modifyMidU(long constant) {
return 44L;
}
@ModifyConstant(
method = "serialize",
constant = @Constant(longValue = 46L)
)
public long modifyMidV(long constant) {
return 48L;
}
@ModifyConstant(
method = "serialize",
constant = @Constant(longValue = 50L)
)
public long modifyTangent(long constant) {
return 52L;
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/ShadowRendererMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.iris;
import com.github.argon4w.acceleratedrendering.compat.iris.IrisCompatBuffers;
import com.github.argon4w.acceleratedrendering.compat.iris.IrisCompatBuffersProvider;
import com.github.argon4w.acceleratedrendering.core.CoreStates;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.BufferSourceExtension;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.LayerDrawType;
import lombok.experimental.ExtensionMethod;
import net.irisshaders.batchedentityrendering.impl.RenderBuffersExt;
import net.irisshaders.iris.mixin.LevelRendererAccessor;
import net.irisshaders.iris.pipeline.IrisRenderingPipeline;
import net.irisshaders.iris.shaderpack.programs.ProgramSource;
import net.irisshaders.iris.shaderpack.properties.PackDirectives;
import net.irisshaders.iris.shadows.ShadowCompositeRenderer;
import net.irisshaders.iris.shadows.ShadowRenderTargets;
import net.irisshaders.iris.shadows.ShadowRenderer;
import net.irisshaders.iris.uniforms.custom.CustomUniforms;
import net.minecraft.client.Camera;
import net.minecraft.client.renderer.RenderBuffers;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Pseudo
@ExtensionMethod(BufferSourceExtension .class)
@Mixin (ShadowRenderer .class)
public class ShadowRendererMixin {
@Shadow @Final private RenderBuffers buffers;
@Shadow @Final private RenderBuffersExt renderBuffersExt;
@Inject(method = "<init>", at = @At("TAIL"))
public void bindAcceleratedShadowBufferSources(
IrisRenderingPipeline pipeline,
ProgramSource shadow,
PackDirectives directives,
ShadowRenderTargets shadowRenderTargets,
ShadowCompositeRenderer compositeRenderer,
CustomUniforms customUniforms,
boolean separateHardwareSamplers,
CallbackInfo ci
) {
renderBuffersExt.beginLevelRendering();
buffers.bufferSource ().getAcceleratable().bindAcceleratedBufferSource(IrisCompatBuffersProvider.SHADOW);
buffers.crumblingBufferSource ().getAcceleratable().bindAcceleratedBufferSource(IrisCompatBuffersProvider.SHADOW);
buffers.outlineBufferSource ().getAcceleratable().bindAcceleratedBufferSource(IrisCompatBuffersProvider.SHADOW);
renderBuffersExt.endLevelRendering();
}
@Inject(
method = "renderShadows",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endBatch()V"
)
)
public void endAllBatches(
LevelRendererAccessor levelRenderer,
Camera playerCamera,
CallbackInfo ci
) {
CoreStates .recordBuffers ();
IrisCompatBuffers.BLOCK_SHADOW .prepareBuffers ();
IrisCompatBuffers.ENTITY_SHADOW .prepareBuffers ();
IrisCompatBuffers.GLYPH_SHADOW .prepareBuffers ();
IrisCompatBuffers.POS_TEX_SHADOW .prepareBuffers ();
IrisCompatBuffers.POS_TEX_COLOR_SHADOW .prepareBuffers ();
CoreStates .restoreBuffers ();
IrisCompatBuffers.BLOCK_SHADOW .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.ENTITY_SHADOW .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.GLYPH_SHADOW .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_TEX_SHADOW .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.POS_TEX_COLOR_SHADOW .drawBuffers (LayerDrawType.ALL);
IrisCompatBuffers.BLOCK_SHADOW .clearBuffers ();
IrisCompatBuffers.ENTITY_SHADOW .clearBuffers ();
IrisCompatBuffers.GLYPH_SHADOW .clearBuffers ();
IrisCompatBuffers.POS_TEX_SHADOW .clearBuffers ();
IrisCompatBuffers.POS_TEX_COLOR_SHADOW .clearBuffers ();
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/plugin/IrisCompatMixinPlugin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.plugin;
import com.github.argon4w.acceleratedrendering.compat.AbstractCompatMixinPlugin;
import java.util.List;
public class IrisCompatMixinPlugin extends AbstractCompatMixinPlugin {
@Override
protected List<String> getModIDs() {
return List.of("iris");
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/vanilla/LevelRendererMixin.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.mixins.vanilla;
import com.github.argon4w.acceleratedrendering.compat.iris.IrisCompatBuffers;
import com.github.argon4w.acceleratedrendering.core.CoreBuffers;
import com.github.argon4w.acceleratedrendering.core.CoreStates;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.LayerDrawType;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import net.minecraft.client.Camera;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.LightTexture;
import net.minecraft.client.renderer.MultiBufferSource;
import org.joml.Matrix4f;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(
value = LevelRenderer.class,
priority = 999
)
public class LevelRendererMixin {
@Inject(
method = "renderLevel",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endBatch()V",
ordinal = 1
)
)
public void drawIrisAllCoreBuffers(
DeltaTracker pDeltaTracker,
boolean pRenderBlockOutline,
Camera pCamera,
GameRenderer pGameRenderer,
LightTexture pLightTexture,
Matrix4f pFrustumMatrix,
Matrix4f pProjectionMatrix,
CallbackInfo ci
) {
CoreStates .recordBuffers ();
CoreBuffers.ENTITY .prepareBuffers ();
CoreBuffers.BLOCK .prepareBuffers ();
CoreBuffers.POS .prepareBuffers ();
CoreBuffers.POS_COLOR .prepareBuffers ();
CoreBuffers.POS_TEX .prepareBuffers ();
CoreBuffers.POS_TEX_COLOR .prepareBuffers ();
CoreBuffers.POS_COLOR_TEX_LIGHT .prepareBuffers ();
CoreStates .restoreBuffers ();
CoreBuffers.ENTITY .drawBuffers (LayerDrawType.ALL);
CoreBuffers.BLOCK .drawBuffers (LayerDrawType.ALL);
CoreBuffers.POS .drawBuffers (LayerDrawType.ALL);
CoreBuffers.POS_COLOR .drawBuffers (LayerDrawType.ALL);
CoreBuffers.POS_TEX .drawBuffers (LayerDrawType.ALL);
CoreBuffers.POS_TEX_COLOR .drawBuffers (LayerDrawType.ALL);
CoreBuffers.POS_COLOR_TEX_LIGHT .drawBuffers (LayerDrawType.ALL);
CoreBuffers.ENTITY .clearBuffers ();
CoreBuffers.BLOCK .clearBuffers ();
CoreBuffers.POS .clearBuffers ();
CoreBuffers.POS_COLOR .clearBuffers ();
CoreBuffers.POS_TEX .clearBuffers ();
CoreBuffers.POS_TEX_COLOR .clearBuffers ();
CoreBuffers.POS_COLOR_TEX_LIGHT .clearBuffers ();
}
@Inject(
method = "renderLevel",
at = @At(
value = "CONSTANT",
args = "stringValue=translucent",
ordinal = 1
)
)
public void drawIrisOpaqueCoreBuffers(
DeltaTracker pDeltaTracker,
boolean pRenderBlockOutline,
Camera pCamera,
GameRenderer pGameRenderer,
LightTexture pLightTexture,
Matrix4f pFrustumMatrix,
Matrix4f pProjectionMatrix,
CallbackInfo ci
) {
CoreStates .recordBuffers ();
CoreBuffers.ENTITY .prepareBuffers ();
CoreBuffers.BLOCK .prepareBuffers ();
CoreBuffers.POS .prepareBuffers ();
CoreBuffers.POS_COLOR .prepareBuffers ();
CoreBuffers.POS_TEX .prepareBuffers ();
CoreBuffers.POS_TEX_COLOR .prepareBuffers ();
CoreBuffers.POS_COLOR_TEX_LIGHT .prepareBuffers ();
CoreStates .restoreBuffers ();
CoreBuffers.ENTITY .drawBuffers (LayerDrawType.OPAQUE);
CoreBuffers.BLOCK .drawBuffers (LayerDrawType.OPAQUE);
CoreBuffers.POS .drawBuffers (LayerDrawType.OPAQUE);
CoreBuffers.POS_COLOR .drawBuffers (LayerDrawType.OPAQUE);
CoreBuffers.POS_TEX .drawBuffers (LayerDrawType.OPAQUE);
CoreBuffers.POS_TEX_COLOR .drawBuffers (LayerDrawType.OPAQUE);
CoreBuffers.POS_COLOR_TEX_LIGHT .drawBuffers (LayerDrawType.OPAQUE);
}
@Inject(
method = "renderLevel",
at = @At(
value = "CONSTANT",
args = "stringValue=translucent",
ordinal = 1,
shift = At.Shift.AFTER
)
)
public void drawIrisTranslucentCoreBuffers(
DeltaTracker pDeltaTracker,
boolean pRenderBlockOutline,
Camera pCamera,
GameRenderer pGameRenderer,
LightTexture pLightTexture,
Matrix4f pFrustumMatrix,
Matrix4f pProjectionMatrix,
CallbackInfo ci
) {
CoreBuffers.ENTITY .drawBuffers (LayerDrawType.TRANSLUCENT);
CoreBuffers.BLOCK .drawBuffers (LayerDrawType.TRANSLUCENT);
CoreBuffers.POS .drawBuffers (LayerDrawType.TRANSLUCENT);
CoreBuffers.POS_COLOR .drawBuffers (LayerDrawType.TRANSLUCENT);
CoreBuffers.POS_TEX .drawBuffers (LayerDrawType.TRANSLUCENT);
CoreBuffers.POS_TEX_COLOR .drawBuffers (LayerDrawType.TRANSLUCENT);
CoreBuffers.POS_COLOR_TEX_LIGHT .drawBuffers (LayerDrawType.TRANSLUCENT);
CoreBuffers.ENTITY .clearBuffers ();
CoreBuffers.BLOCK .clearBuffers ();
CoreBuffers.POS .clearBuffers ();
CoreBuffers.POS_COLOR .clearBuffers ();
CoreBuffers.POS_TEX .clearBuffers ();
CoreBuffers.POS_TEX_COLOR .clearBuffers ();
CoreBuffers.POS_COLOR_TEX_LIGHT .clearBuffers ();
}
@WrapOperation(
method = "renderLevel",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endLastBatch()V"
)
)
public void preventDrawVanillaCoreBuffers(MultiBufferSource.BufferSource instance, Operation<Void> original) {
instance.endLastBatch();
}
@Inject(
method = "close",
at = @At("TAIL")
)
public void deleteIrisBuffers(CallbackInfo ci) {
IrisCompatBuffers.BLOCK_SHADOW .delete();
IrisCompatBuffers.ENTITY_SHADOW .delete();
IrisCompatBuffers.GLYPH_SHADOW .delete();
IrisCompatBuffers.POS_TEX_SHADOW .delete();
IrisCompatBuffers.POS_TEX_COLOR_SHADOW .delete();
IrisCompatBuffers.ENTITY_HAND .delete();
IrisCompatBuffers.BLOCK_HAND .delete();
IrisCompatBuffers.POS_HAND .delete();
IrisCompatBuffers.POS_COLOR_HAND .delete();
IrisCompatBuffers.POS_TEX_HAND .delete();
IrisCompatBuffers.POS_TEX_COLOR_HAND .delete();
IrisCompatBuffers.POS_COLOR_TEX_LIGHT_HAND .delete();
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/IrisPrograms.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.programs;
import com.github.argon4w.acceleratedrendering.compat.iris.programs.culling.IrisCullingProgramSelector;
import com.github.argon4w.acceleratedrendering.compat.iris.programs.processing.IrisPolygonProcessor;
import com.github.argon4w.acceleratedrendering.core.backends.programs.BarrierFlags;
import com.github.argon4w.acceleratedrendering.core.programs.LoadComputeShaderEvent;
import com.github.argon4w.acceleratedrendering.core.programs.culling.LoadCullingProgramSelectorEvent;
import com.github.argon4w.acceleratedrendering.core.programs.processing.LoadPolygonProcessorEvent;
import com.github.argon4w.acceleratedrendering.core.utils.ResourceLocationUtils;
import net.irisshaders.iris.vertices.IrisVertexFormats;
import net.minecraft.resources.ResourceLocation;
import net.neoforged.bus.api.SubscribeEvent;
public class IrisPrograms {
public static final ResourceLocation IRIS_BLOCK_VERTEX_TRANSFORM_KEY = ResourceLocationUtils.create("compat_block_vertex_transform_iris");
public static final ResourceLocation IRIS_ENTITY_VERTEX_TRANSFORM_KEY = ResourceLocationUtils.create("compat_entity_vertex_transform_iris");
public static final ResourceLocation IRIS_GLYPH_VERTEX_TRANSFORM_KEY = ResourceLocationUtils.create("compat_glyph_vertex_transform_iris");
public static final ResourceLocation IRIS_BLOCK_QUAD_CULLING_KEY = ResourceLocationUtils.create("compat_block_quad_cull_iris");
public static final ResourceLocation IRIS_BLOCK_TRIANGLE_CULLING_KEY = ResourceLocationUtils.create("compat_block_triangle_cull_iris");
public static final ResourceLocation IRIS_ENTITY_QUAD_CULLING_KEY = ResourceLocationUtils.create("compat_entity_quad_cull_iris");
public static final ResourceLocation IRIS_ENTITY_TRIANGLE_CULLING_KEY = ResourceLocationUtils.create("compat_entity_triangle_cull_iris");
public static final ResourceLocation IRIS_BLOCK_QUAD_PROCESSING_KEY = ResourceLocationUtils.create("compat_block_quad_processing_iris");
public static final ResourceLocation IRIS_BLOCK_TRIANGLE_PROCESSING_KEY = ResourceLocationUtils.create("compat_block_triangle_processing_iris");
public static final ResourceLocation IRIS_ENTITY_QUAD_PROCESSING_KEY = ResourceLocationUtils.create("compat_entity_quad_processing_iris");
public static final ResourceLocation IRIS_ENTITY_TRIANGLE_PROCESSING_KEY = ResourceLocationUtils.create("compat_entity_triangle_processing_iris");
public static final ResourceLocation IRIS_GLYPH_QUAD_PROCESSING_KEY = ResourceLocationUtils.create("compat_glyph_quad_processing_iris");
public static final ResourceLocation IRIS_GLYPH_TRIANGLE_PROCESSING_KEY = ResourceLocationUtils.create("compat_glyph_triangle_processing_iris");
public static final ResourceLocation IRIS_BLOCK_MESH_UPLOADING_KEY = ResourceLocationUtils.create("compat_block_mesh_uploading_iris");
public static final ResourceLocation IRIS_ENTITY_MESH_UPLOADING_KEY = ResourceLocationUtils.create("compat_entity_mesh_uploading_iris");
public static final ResourceLocation IRIS_GLYPH_MESH_UPLOADING_KEY = ResourceLocationUtils.create("compat_glyph_mesh_uploading_iris");
@SubscribeEvent
public static void onLoadComputeShaders(LoadComputeShaderEvent event) {
event.loadComputeShader(
IRIS_BLOCK_VERTEX_TRANSFORM_KEY,
ResourceLocationUtils .create("shaders/compat/transform/iris_block_vertex_transform_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_ENTITY_VERTEX_TRANSFORM_KEY,
ResourceLocationUtils .create("shaders/compat/transform/iris_entity_vertex_transform_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_GLYPH_VERTEX_TRANSFORM_KEY,
ResourceLocationUtils .create("shaders/compat/transform/iris_glyph_vertex_transform_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_BLOCK_QUAD_CULLING_KEY,
ResourceLocationUtils .create("shaders/compat/culling/iris_block_quad_culling_shader.compute"),
BarrierFlags .SHADER_STORAGE,
BarrierFlags .ATOMIC_COUNTER
);
event.loadComputeShader(
IRIS_BLOCK_TRIANGLE_CULLING_KEY,
ResourceLocationUtils .create("shaders/compat/culling/iris_block_triangle_culling_shader.compute"),
BarrierFlags .SHADER_STORAGE,
BarrierFlags .ATOMIC_COUNTER
);
event.loadComputeShader(
IRIS_ENTITY_QUAD_CULLING_KEY,
ResourceLocationUtils .create("shaders/compat/culling/iris_entity_quad_culling_shader.compute"),
BarrierFlags .SHADER_STORAGE,
BarrierFlags .ATOMIC_COUNTER
);
event.loadComputeShader(
IRIS_ENTITY_TRIANGLE_CULLING_KEY,
ResourceLocationUtils .create("shaders/compat/culling/iris_entity_triangle_culling_shader.compute"),
BarrierFlags .SHADER_STORAGE,
BarrierFlags .ATOMIC_COUNTER
);
event.loadComputeShader(
IRIS_BLOCK_QUAD_PROCESSING_KEY,
ResourceLocationUtils .create("shaders/compat/processing/iris_block_quad_processing_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_BLOCK_TRIANGLE_PROCESSING_KEY,
ResourceLocationUtils .create("shaders/compat/processing/iris_block_triangle_processing_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_ENTITY_QUAD_PROCESSING_KEY,
ResourceLocationUtils .create("shaders/compat/processing/iris_entity_quad_processing_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_ENTITY_TRIANGLE_PROCESSING_KEY,
ResourceLocationUtils .create("shaders/compat/processing/iris_entity_triangle_processing_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_GLYPH_QUAD_PROCESSING_KEY,
ResourceLocationUtils .create("shaders/compat/processing/iris_glyph_quad_processing_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_GLYPH_TRIANGLE_PROCESSING_KEY,
ResourceLocationUtils .create("shaders/compat/processing/iris_glyph_triangle_processing_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_BLOCK_MESH_UPLOADING_KEY,
ResourceLocationUtils .create("shaders/compat/uploading/iris_block_mesh_uploading_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_ENTITY_MESH_UPLOADING_KEY,
ResourceLocationUtils .create("shaders/compat/uploading/iris_entity_mesh_uploading_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
event.loadComputeShader(
IRIS_GLYPH_MESH_UPLOADING_KEY,
ResourceLocationUtils .create("shaders/compat/uploading/iris_glyph_mesh_uploading_shader.compute"),
BarrierFlags .SHADER_STORAGE
);
}
@SubscribeEvent
public static void onLoadCullingPrograms(LoadCullingProgramSelectorEvent event) {
event.loadFor(IrisVertexFormats.TERRAIN, parent -> new IrisCullingProgramSelector(
parent,
IRIS_BLOCK_QUAD_CULLING_KEY,
IRIS_BLOCK_TRIANGLE_CULLING_KEY
));
event.loadFor(IrisVertexFormats.ENTITY, parent -> new IrisCullingProgramSelector(
parent,
IRIS_ENTITY_QUAD_CULLING_KEY,
IRIS_ENTITY_TRIANGLE_CULLING_KEY
));
}
@SubscribeEvent
public static void onLoadPolygonProcessors(LoadPolygonProcessorEvent event) {
event.loadFor(IrisVertexFormats.TERRAIN, parent -> new IrisPolygonProcessor(
parent,
IRIS_BLOCK_QUAD_PROCESSING_KEY,
IRIS_BLOCK_TRIANGLE_PROCESSING_KEY
));
event.loadFor(IrisVertexFormats.ENTITY, parent -> new IrisPolygonProcessor(
parent,
IRIS_ENTITY_QUAD_PROCESSING_KEY,
IRIS_ENTITY_TRIANGLE_PROCESSING_KEY
));
event.loadFor(IrisVertexFormats.GLYPH, parent -> new IrisPolygonProcessor(
parent,
IRIS_GLYPH_QUAD_PROCESSING_KEY,
IRIS_GLYPH_TRIANGLE_PROCESSING_KEY
));
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/culling/IrisCullingProgramDispatcher.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.programs.culling;
import com.github.argon4w.acceleratedrendering.compat.iris.IrisCompatFeature;
import com.github.argon4w.acceleratedrendering.core.backends.programs.ComputeProgram;
import com.github.argon4w.acceleratedrendering.core.backends.programs.Uniform;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.AcceleratedBufferBuilder;
import com.github.argon4w.acceleratedrendering.core.programs.ComputeShaderProgramLoader;
import com.github.argon4w.acceleratedrendering.core.programs.culling.ICullingProgramDispatcher;
import com.github.argon4w.acceleratedrendering.features.culling.OrientationCullingFeature;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.VertexFormat;
import net.irisshaders.iris.shadows.ShadowRenderer;
import net.irisshaders.iris.shadows.ShadowRenderingState;
import net.minecraft.resources.ResourceLocation;
public class IrisCullingProgramDispatcher implements ICullingProgramDispatcher {
private static final int GROUP_SIZE = 128;
private static final int DISPATCH_COUNT_Y_Z = 1;
private final VertexFormat.Mode mode;
private final ComputeProgram program;
private final Uniform viewMatrixUniform;
private final Uniform projectMatrixUniform;
private final Uniform polygonCountUniform;
private final Uniform vertexOffsetUniform;
private final Uniform varyingOffsetUniform;
public IrisCullingProgramDispatcher(VertexFormat.Mode mode, ResourceLocation key) {
this.mode = mode;
this.program = ComputeShaderProgramLoader.getProgram(key);
this.viewMatrixUniform = this.program .getUniform("viewMatrix");
this.projectMatrixUniform = this.program .getUniform("projectMatrix");
this.polygonCountUniform = this.program .getUniform("polygonCount");
this.vertexOffsetUniform = this.program .getUniform("vertexOffset");
this.varyingOffsetUniform = this.program .getUniform("varyingOffset");
}
@Override
public int dispatch(AcceleratedBufferBuilder builder) {
var shadowState = ShadowRenderingState .areShadowsCurrentlyBeingRendered ();
var vertexCount = builder .getTotalVertexCount ();
var polygonCount = vertexCount / mode .primitiveLength;
viewMatrixUniform .uploadMatrix4f (shadowState ? ShadowRenderer.MODELVIEW : RenderSystem.getModelViewMatrix ());
projectMatrixUniform.uploadMatrix4f (shadowState ? ShadowRenderer.PROJECTION : RenderSystem.getProjectionMatrix ());
polygonCountUniform .uploadUnsignedInt (polygonCount);
vertexOffsetUniform .uploadUnsignedInt ((int) (builder.getVertexBuffer ().getOffset() / builder.getVertexSize ()));
varyingOffsetUniform.uploadUnsignedInt ((int) (builder.getVaryingBuffer().getOffset() / builder.getVaryingSize ()));
program.useProgram ();
program.dispatch (
(polygonCount + GROUP_SIZE - 1) / GROUP_SIZE,
DISPATCH_COUNT_Y_Z,
DISPATCH_COUNT_Y_Z
);
return program.getBarrierFlags();
}
@Override
public boolean shouldCull() {
return OrientationCullingFeature.shouldCull()
&& ( IrisCompatFeature.isShadowCullingEnabled() || !ShadowRenderingState.areShadowsCurrentlyBeingRendered());
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/culling/IrisCullingProgramSelector.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.programs.culling;
import com.github.argon4w.acceleratedrendering.compat.iris.IrisCompatFeature;
import com.github.argon4w.acceleratedrendering.core.programs.culling.ICullingProgramDispatcher;
import com.github.argon4w.acceleratedrendering.core.programs.culling.ICullingProgramSelector;
import com.github.argon4w.acceleratedrendering.core.utils.RenderTypeUtils;
import com.github.argon4w.acceleratedrendering.features.culling.OrientationCullingFeature;
import com.mojang.blaze3d.vertex.VertexFormat;
import net.irisshaders.iris.shadows.ShadowRenderingState;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.resources.ResourceLocation;
public class IrisCullingProgramSelector implements ICullingProgramSelector {
private final ICullingProgramSelector parent;
private final ICullingProgramDispatcher quadDispatcher;
private final ICullingProgramDispatcher triangleDispatcher;
public IrisCullingProgramSelector(
ICullingProgramSelector parent,
ResourceLocation quadProgramKey,
ResourceLocation triangleProgramKey
) {
this.parent = parent;
this.quadDispatcher = new IrisCullingProgramDispatcher(VertexFormat.Mode.QUADS, quadProgramKey);
this.triangleDispatcher = new IrisCullingProgramDispatcher(VertexFormat.Mode.TRIANGLES, triangleProgramKey);
}
@Override
public ICullingProgramDispatcher select(RenderType renderType) {
if ( IrisCompatFeature .isEnabled ()
&& IrisCompatFeature .isIrisCompatCullingEnabled ()
&& ( IrisCompatFeature .isShadowCullingEnabled () || ! ShadowRenderingState.areShadowsCurrentlyBeingRendered())
&& OrientationCullingFeature .isEnabled ()
&& ( OrientationCullingFeature .shouldIgnoreCullState () || RenderTypeUtils .isCulled(renderType))
) {
return switch (renderType.mode) {
case QUADS -> quadDispatcher;
case TRIANGLES -> triangleDispatcher;
default -> parent.select(renderType);
};
}
return parent.select(renderType);
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/processing/IrisPolygonProcessor.java
================================================
package com.github.argon4w.acceleratedrendering.compat.iris.programs.processing;
import com.github.argon4w.acceleratedrendering.compat.iris.IrisCompatFeature;
import com.github.argon4w.acceleratedrendering.core.programs.dispatchers.FixedPolygonProgramDispatcher;
import com.github.argon4w.acceleratedrendering.core.programs.dispatchers.IPolygonProgramDispatcher;
import com.github.argon4w.acceleratedrendering.core.programs.processing.IPolygonProcessor;
import com.mojang.blaze3d.vertex.VertexFormat;
import net.minecraft.resources.ResourceLocation;
public class IrisPolygonProcessor implements IPolygonProcessor {
private final IPolygonProcessor parent;
private final IPolygonProgramDispatcher quadDispatcher;
private final IPolygonProgramDispatcher triangleDispatcher;
public IrisPolygonProcessor(
IPolygonProcessor parent,
ResourceLocation quadProgramKey,
ResourceLocation triangleProgramKey
) {
this.parent = parent;
this.quadDispatcher = new FixedPolygonProgramDispatcher (VertexFormat.Mode.QUADS, quadProgramKey);
this.triangleDispatcher = new FixedPolygonProgramDispatcher (VertexFormat.Mode.TRIANGLES, triangleProgramKey);
}
@Override
public IPolygonProgramDispatcher select(VertexFormat.Mode mode) {
if ( IrisCompatFeature .isEnabled ()
&& IrisCompatFeature .isPolygonProcessingEnabled ()
) {
return switch (mode) {
case QUADS -> quadDispatcher;
case TRIANGLES -> triangleDispatcher;
default -> parent.select(mode);
};
}
return parent.select(mode);
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/configs/FeatureConfig.java
================================================
package com.github.argon4w.acceleratedrendering.configs;
import com.github.argon4w.acceleratedrendering.core.backends.states.buffers.BlockBufferBindingStateType;
import com.github.argon4w.acceleratedrendering.core.backends.states.buffers.cache.BlockBufferBindingCacheType;
import com.github.argon4w.acceleratedrendering.core.backends.states.scissors.ScissorBindingStateType;
import com.github.argon4w.acceleratedrendering.core.backends.states.viewports.ViewportBindingStateType;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage.LayerStorageType;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.MeshInfoCacheType;
import com.github.argon4w.acceleratedrendering.core.meshes.MeshType;
import com.github.argon4w.acceleratedrendering.core.meshes.data.cache.MeshDataCacheType;
import com.github.argon4w.acceleratedrendering.features.filter.FilterType;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import net.neoforged.neoforge.common.ModConfigSpec;
import org.apache.commons.lang3.tuple.Pair;
import java.util.List;
public class FeatureConfig {
public static final FeatureConfig CONFIG;
public static final ModConfigSpec SPEC;
public final ModConfigSpec.IntValue corePooledRingBufferSize;
public final ModConfigSpec.IntValue corePooledBatchingSize;
public final ModConfigSpec.IntValue coreCachedImageSize;
public final ModConfigSpec.IntValue coreDynamicUVResolution;
public final ModConfigSpec.ConfigValue<FeatureStatus> coreDebugContextEnabled;
public final ModConfigSpec.ConfigValue<FeatureStatus> coreForceTranslucentAcceleration;
public final ModConfigSpec.ConfigValue<FeatureStatus> coreCacheIdenticalPose;
public final ModConfigSpec.ConfigValue<MeshInfoCacheType> coreMeshInfoCacheType;
public final ModConfigSpec.ConfigValue<LayerStorageType> coreLayerStorageType;
public final ModConfigSpec.ConfigValue<MeshDataCacheType> coreMeshMergeType;
public final ModConfigSpec.ConfigValue<FeatureStatus> coreUploadMeshImmediately;
public final ModConfigSpec.ConfigValue<FeatureStatus> coreCacheDynamicRenderType;
public final ModConfigSpec.ConfigValue<ViewportBindingStateType> coreViewportBindingType;
public final ModConfigSpec.ConfigValue<ScissorBindingStateType> coreScissorBindingType;
public final ModConfigSpec.ConfigValue<FeatureStatus> restoringFeatureStatus;
public final ModConfigSpec.ConfigValue<BlockBufferBindingCacheType> restoringBindingCacheType;
public final ModConfigSpec.ConfigValue<BlockBufferBindingStateType> restoringShaderStorageType;
public final ModConfigSpec.ConfigValue<BlockBufferBindingStateType> restoringAtomicCounterType;
public final ModConfigSpec.IntValue restoringShaderStorageRange;
public final ModConfigSpec.IntValue restoringAtomicCounterRange;
public final ModConfigSpec.ConfigValue<FeatureStatus> acceleratedEntityRenderingFeatureStatus;
public final ModConfigSpec.ConfigValue<PipelineSetting> acceleratedEntityRenderingDefaultPipeline;
public final ModConfigSpec.ConfigValue<MeshType> acceleratedEntityRenderingMeshType;
public final ModConfigSpec.ConfigValue<FeatureStatus> acceleratedEntityRenderingGuiAcceleration;
public final ModConfigSpec.ConfigValue<FeatureStatus> acceleratedTextRenderingFeatureStatus;
public final ModConfigSpec.ConfigValue<PipelineSetting> acceleratedTextRenderingDefaultPipeline;
public final ModConfigSpec.ConfigValue<MeshType> acceleratedTextRenderingMeshType;
public final ModConfigSpec.ConfigValue<FeatureStatus> acceleratedItemRenderingFeatureStatus;
public final ModConfigSpec.ConfigValue<FeatureStatus> acceleratedItemRenderingBakeMeshForQuads;
public final ModConfigSpec.ConfigValue<PipelineSetting> acceleratedItemRenderingDefaultPipeline;
public final ModConfigSpec.ConfigValue<MeshType> acceleratedItemRenderingMeshType;
public final ModConfigSpec.ConfigValue<FeatureStatus> acceleratedItemRenderingHandAcceleration;
public final ModConfigSpec.ConfigValue<FeatureStatus> acceleratedItemRenderingGuiAcceleration;
public final ModConfigSpec.ConfigValue<FeatureStatus> acceleratedItemRenderingGuiItemBatching;
public final ModConfigSpec.ConfigValue<FeatureStatus> acceleratedItemRenderingMergeGuiItemBatches;
public final ModConfigSpec.ConfigValue<FeatureStatus> orientationCullingFeatureStatus;
public final ModConfigSpec.ConfigValue<FeatureStatus> orientationCullingDefaultCulling;
public final ModConfigSpec.ConfigValue<FeatureStatus> orientationCullingIgnoreCullState;
public final ModConfigSpec.ConfigValue<FeatureStatus> filterFeatureStatus;
public final ModConfigSpec.ConfigValue<FeatureStatus> filterMenuFilter;
public final ModConfigSpec.ConfigValue<FeatureStatus> filterEntityFilter;
public final ModConfigSpec.ConfigValue<FeatureStatus> filterBlockEntityFilter;
public final ModConfigSpec.ConfigValue<FeatureStatus> filterItemFilter;
public final ModConfigSpec.ConfigValue<FeatureStatus> filterStageFilter;
public final ModConfigSpec.ConfigValue<FilterType> filterMenuFilterType;
public final ModConfigSpec.ConfigValue<FilterType> filterEntityFilterType;
public final ModConfigSpec.ConfigValue<FilterType> filterBlockEntityFilterType;
public final ModConfigSpec.ConfigValue<FilterType> filterItemFilterType;
public final ModConfigSpec.ConfigValue<FilterType> filterStageFilterType;
public final ModConfigSpec.ConfigValue<List<? extends String>> filterMenuFilterValues;
public final ModConfigSpec.ConfigValue<List<? extends String>> filterEntityFilterValues;
public final ModConfigSpec.ConfigValue<List<? extends String>> filterBlockEntityFilterValues;
public final ModConfigSpec.ConfigValue<List<? extends String>> filterItemFilterValues;
public final ModConfigSpec.ConfigValue<List<? extends String>> filterStageFilterValues;
public final ModConfigSpec.ConfigValue<FeatureStatus> irisCompatFeatureStatus;
public final ModConfigSpec.ConfigValue<FeatureStatus> irisCompatOrientationCullingCompat;
public final ModConfigSpec.ConfigValue<FeatureStatus> irisCompatShadowCulling;
public final ModConfigSpec.ConfigValue<FeatureStatus> irisCompatPolygonProcessing;
public final ModConfigSpec.ConfigValue<FeatureStatus> curiosCompatFeatureStatus;
public final ModConfigSpec.ConfigValue<FeatureStatus> curiosCompatLayerAcceleration;
public final ModConfigSpec.ConfigValue<FeatureStatus> curiosItemFilter;
public final ModConfigSpec.ConfigValue<FilterType> curiosItemFilterType;
public final ModConfigSpec.ConfigValue<List<? extends String>> curiosItemFilterValues;
static {
Pair<FeatureConfig, ModConfigSpec> pair = new ModConfigSpec.Builder() .configure (FeatureConfig::new);
CONFIG = pair .getLeft ();
SPEC = pair .getRight ();
}
private FeatureConfig(ModConfigSpec.Builder builder) {
builder
.comment ("Core Settings")
.comment ("Core Settings allows you to change setting that are related to all rendering features.")
.translation ("acceleratedrendering.configuration.core_settings")
.push ("core_settings");
corePooledRingBufferSize = builder
.gameRestart ()
.comment ("Count of buffer sets that holds data for in-flight frame rendering.")
.comment ("Changing this value may affects your FPS. Smaller value means less in-flight frames, while larger values means more in-flight frames. More in-flight frames means more FPS but more VRAM.")
.translation ("acceleratedrendering.configuration.core_settings.pooled_ring_buffer_size")
.defineInRange ("pooled_ring_buffer_size", 8, 1, Integer.MAX_VALUE);
corePooledBatchingSize = builder
.gameRestart ()
.comment ("Count of batches of RenderTypes that is allowed in a draw call.")
.comment ("Changing this value may affects your FPS. Smaller value means less batches allowed in a draw call, while larger values means more batches. More batches means more FPS but more VRAM and more CPU pressure on handling RenderTypes.")
.translation ("acceleratedrendering.configuration.core_settings.pooled_batching_size")
.defineInRange ("pooled_batching_size", 32, 1, Integer.MAX_VALUE);
coreCachedImageSize = builder
.comment ("Count of images that cached for static mesh culling.")
.comment ("Changing this value may affects your FPS. Smaller value means less images allowed to be cached, while larger means more cached images. More cached images means more FPS but more RAM pressure.")
.translation ("acceleratedrendering.configuration.core_settings.cached_image_size")
.defineInRange ("cached_image_size", 32, 1, Integer.MAX_VALUE);
coreDynamicUVResolution = builder
.comment ("Resolution of UV scrolling in caching dynamic render types.")
.comment ("Changing this value may affects your visual effects and VRAM usage. Smaller value means lower resolution in UV scrolling and less cached render types, while larger means higher resolution and more cached render types. Higher resolution means smoother animations on charged creepers and breezes but more VRAM usage.")
.translation ("acceleratedrendering.configuration.core_settings.dynamic_uv_resolution")
.defineInRange ("dynamic_uv_resolution", 64, 1, Integer.MAX_VALUE);
coreDebugContextEnabled = builder
.comment ("- DISABLED: Debug context will be disabled, which may cause significant rendering glitches on some NVIDIA cards because of the \"theaded optimization\".")
.comment ("- ENABLED: Debug context will be enabled, which can prevent NVIDIA driver from applying the \"threaded optimization\" that causes the glitches.")
.translation ("acceleratedrendering.configuration.core_settings.debug_context")
.gameRestart ()
.defineEnum ("debug_context", FeatureStatus.ENABLED);
coreForceTranslucentAcceleration = builder
.comment ("- DISABLED: Translucent RenderType will fallback to vanilla rendering pipeline if the accelerated pipeline does not support translucent sorting unless mods explicitly enable force translucent acceleration temporarily when rendering their own faces.")
.comment ("- ENABLED: Translucent RenderType will still be rendered in accelerated pipeline even if the pipeline does not support translucent sorting unless mods explicitly disable force translucent acceleration temporarily when rendering their own faces.")
.translation ("acceleratedrendering.configuration.core_settings.force_translucent_acceleration")
.defineEnum ("force_translucent_acceleration", FeatureStatus.ENABLED);
coreCacheIdenticalPose = builder
.comment ("- DISABLED: Poses with identical transform matrix and normal matrix that used to transform vertices will not be cached in buffer which slightly decreases CPU pressure but increase VRAM usage unless mods explicitly disable it when rendering.")
.comment ("- ENABLED: Poses with identical transform matrix and normal matrix that used to transform vertices will be cached in buffer which save VRAM but slightly increase CPU pressure unless mods explicitly disable it when rendering.")
.translation ("acceleratedrendering.configuration.core_settings.cache_identical_pose")
.defineEnum ("cache_identical_pose", FeatureStatus.ENABLED);
coreMeshInfoCacheType = builder
.comment ("- SIMPLE: The most basic implementation of cache. Usually used for testing if other cache types are working correctly.")
.comment ("- HANDLE: Faster implementation of cache using VarHandle and flatten values to improve performance on read/write operations.")
.comment ("- UNSAFE: Fastest implementation of cache using unsafe memory operations that skip multiple safety checks to read/write.")
.translation ("acceleratedrendering.configuration.core_settings.mesh_info_cache_type")
.gameRestart ()
.defineEnum ("mesh_info_cache_type", MeshInfoCacheType.HANDLE);
coreLayerStorageType = builder
.comment ("- SORTED: The basic implementation of batching layer storage that renders opaque and translucent geometries together in a single stage with better performance but slight visual glitches on translucent geometries.")
.comment ("- SEPARATED: The visually-precise implementation of batching layer storage that separates opaque and translucent geometries into two rendering stages to prevent visual glitches, slightly slower than basic implementation.")
.translation ("acceleratedrendering.configuration.core_settings.layer_storage_type")
.gameRestart ()
.defineEnum ("layer_storage_type", LayerStorageType.SEPARATED);
coreMeshMergeType = builder
.comment ("- IGNORED: Meshes with identical vertices will not be merged, which will use less RAM but more VRAM in storing duplicated meshes.")
.comment ("- MERGED: Meshes with identical vertices will be merged together, which will use less VRAM more RAM in storing the data of meshes used in merging.")
.translation ("acceleratedrendering.configuration.core_settings.mesh_merge_type")
.gameRestart ()
.defineEnum ("mesh_merge_type", MeshDataCacheType.MERGED);
coreUploadMeshImmediately = builder
.comment ("- DISABLED: Meshes that is going to be accelerated will be collected and uploaded together at the end for choosing better uploading method and increasing memory access efficiency to reach the best performance. Also this method allows mesh cache with bigger capacity (up to VRAM limit), but it may not follow the correct draw order.")
.comment ("- ENABLED: Meshes that is going to be accelerated will be uploaded immediately after the draw command. It is less efficient and only have about 2GB mesh cache (generally enough) but will follow the original draw order to get the most compatibility.")
.translation ("acceleratedrendering.configuration.core_settings.upload_mesh_immediately")
.defineEnum ("upload_mesh_immediately", FeatureStatus.DISABLED);
coreCacheDynamicRenderType = builder
.comment ("- DISABLED: Dynamic render types like lightning on charged creepers and winds on breezes will not be accelerated for less VRAM usage and smoother animations, but may exceptionally skip acceleration in modded geometries using these render types.")
.comment ("- ENABLED: Dynamic render types like lightning on charged creepers and winds on breezes will be accelerated to accelerate modded geometries using these render types, but may have more VRAM usage and less smooth animations based on resolution settings.")
.translation ("acceleratedrendering.configuration.core_settings.cache_dynamic_render_type")
.defineEnum ("cache_dynamic_render_type", FeatureStatus.ENABLED);
coreViewportBindingType = builder
.comment ("- IGNORED: Viewport settings that will be modified by other mods will not be restored after the acceleration, which is faster but reduces compatibility with them.")
.comment ("- MOJANG: Viewport settings that will be modified by other mods will be recorded and restored using Mojang's GLStateManager to work correctly with them.")
.comment ("- OPENGL: Viewport settings that will be modified by other mods will be recorded and restored using OpenGL to work correctly with them even if they don't set viewport using Mojang's GLStateManager, which is slower but has most compatibility.")
.translation ("acceleratedrendering.configuration.core_settings.viewport_binding_state")
.gameRestart ()
.defineEnum ("viewport_binding_state", ViewportBindingStateType.IGNORED);
coreScissorBindingType = builder
.comment ("- IGNORED: Scissor settings that will be modified by other mods will not be restored after the acceleration, which is faster but reduces compatibility with them.")
.comment ("- MOJANG: Scissor settings that will be modified by other mods will be recorded and restored using Mojang's GuiGraphics to work correctly with them.")
.comment ("- OPENGL: Scissor settings that will be modified by other mods will be recorded and restored using OpenGL to work correctly with them even if they don't set viewport using Mojang's GuiGraphics, which is slower but has most compatibility.")
.translation ("acceleratedrendering.configuration.core_settings.scissor_binding_state")
.gameRestart ()
.defineEnum ("scissor_binding_state", ScissorBindingStateType.MOJANG);
builder
.comment ("Block Buffer Restoring Settings")
.comment ("A few mods and shader packs will use their on block buffers when rendering, which may introduce conflicts when working with Accelerated Rendering that also uses block buffers.")
.comment ("Block Buffer Restoring can record the binding of block buffers before the acceleration and restore them after the acceleration to work correctly with them.")
.translation ("acceleratedrendering.configuration.core_settings.block_buffer_binding_restoring")
.push ("block_buffer_binding_restoring");
restoringFeatureStatus = builder
.comment ("- DISABLED: Disable block buffer restoring, which is faster but may cause visual glitches with mods and shaders that uses block buffers.")
.comment ("- ENABLED: Enable block buffer restoring, which may be slower due to recording and restoring block buffer bindings that ensures working correctly with mods and shaders that use block buffers.")
.translation ("acceleratedrendering.configuration.core_settings.block_buffer_binding_restoring.feature_status")
.defineEnum ("feature_status", FeatureStatus.ENABLED);
restoringBindingCacheType = builder
.comment ("- SIMPLE: The most basic implementation of cache. Usually used for testing if other cache types are working properly.")
.comment ("- HANDLE: Faster implementation of cache using VarHandle and flatten values to improve performance on read/write operations.")
.comment ("- UNSAFE: Fastest implementation of cache using unsafe memory operations that skip multiple safety checks to read/write.")
.translation ("acceleratedrendering.configuration.core_settings.block_buffer_binding_restoring.binding_cache_type")
.gameRestart ()
.defineEnum ("binding_cache_type", BlockBufferBindingCacheType.HANDLE);
restoringShaderStorageType = builder
.comment ("- IGNORED: Shader storage buffers will not be restored which improves FPS but reduces compatibility with mods and shaders that ues shader storage buffers.")
.comment ("- RESTORED: Shader storage buffers will be restored, which is slight slower but has better compatibility with mods and shaders that ues shader storage buffers.")
.translation ("acceleratedrendering.configuration.core_settings.block_buffer_binding_restoring.shader_storage_type")
.gameRestart ()
.defineEnum ("shader_storage_type", BlockBufferBindingStateType.RESTORED);
restoringAtomicCounterType = builder
.comment ("- IGNORED: Atomic counter buffers will not be restored which improves FPS but reduces compatibility with mods and shaders that ues atomic counter buffers.")
.comment ("- RESTORED: Atomic counter buffers will be restored, which is slight slower but has better compatibility with mods and shaders that ues atomic counter buffers.")
.translation ("acceleratedrendering.configuration.core_settings.block_buffer_binding_restoring.atomic_counter_type")
.gameRestart ()
.defineEnum ("atomic_counter_type", BlockBufferBindingStateType.RESTORED);
restoringShaderStorageRange = builder
.comment ("Range of shader storage buffer bindings that will be restored.")
.comment ("Changing this value may affects your FPS. Smaller value means less shader storage buffer restored but less compatibility, while larger values means more shader storage buffer restored and better compatibility. More shader storage buffers means less FPS.")
.translation ("acceleratedrendering.configuration.core_settings.block_buffer_binding_restoring.shader_storage_range")
.gameRestart ()
.defineInRange ("shader_storage_range", 9, 0, 9);
restoringAtomicCounterRange = builder
.comment ("Range of atomic counter buffer bindings that will be restored.")
.comment ("Changing this value may affects your FPS. Smaller value means less atomic counter buffer restored but less compatibility, while larger values means more atomic counter buffer restored and better compatibility. More atomic counter buffers means less FPS.")
.translation ("acceleratedrendering.configuration.core_settings.block_buffer_binding_restoring.atomic_counter_range")
.gameRestart ()
.defineInRange ("atomic_counter_range", 1, 0, 1);
builder.pop();
builder.pop();
builder
.comment ("Accelerated Entity Rendering Settings")
.comment ("Accelerated Entity Rendering uses GPU to cache and transform vertices while rendering entities, instead of generating and transforming vertices every time the entities are rendered in CPU.")
.translation ("acceleratedrendering.configuration.accelerated_entity_rendering")
.push ("accelerated_entity_rendering");
acceleratedEntityRenderingFeatureStatus = builder
.comment ("- DISABLED: Disable accelerated entity rendering.")
.comment ("- ENABLED: Enable accelerated entity rendering.")
.translation ("acceleratedrendering.configuration.accelerated_entity_rendering.feature_status")
.defineEnum ("feature_status", FeatureStatus.ENABLED);
acceleratedEntityRenderingDefaultPipeline = builder
.comment ("- VANILLA: Entities will not be rendered into the accelerated pipeline unless mods explicitly enable it temporarily when rendering their own entities.")
.comment ("- ACCELERATED: All entities will be rendered in the accelerated pipeline unless mods explicitly disable it temporarily when rendering their own entities.")
.translation ("acceleratedrendering.configuration.accelerated_entity_rendering.default_pipeline")
.defineEnum ("default_pipeline", PipelineSetting.ACCELERATED);
acceleratedEntityRenderingMeshType = builder
.gameRestart ()
.comment ("- CLIENT: Cached mesh will be stored on the client side (CPU), which will use less VRAM but take more time to upload to the server side (GPU) during rendering.")
.comment ("- SERVER: Cached mesh will be stored on the server side (GPU), which may speed up rendering but will use more VRAM to store the mesh.")
.translation ("acceleratedrendering.configuration.accelerated_entity_rendering.mesh_type")
.defineEnum ("mesh_type", MeshType.SERVER);
acceleratedEntityRenderingGuiAcceleration = builder
.comment ("- DISABLED: Accelerated Rendering will not accelerate entities when rendering it in a GUI unless mods explicitly enable it temporarily when rendering their own entities.")
.comment ("- ENABLED: Accelerated Rendering will still accelerate entities when rendering it in a GUI unless mods explicitly disable it temporarily when rendering their own entities.")
.translation ("acceleratedrendering.configuration.accelerated_entity_rendering.gui_acceleration")
.defineEnum ("gui_acceleration", FeatureStatus.ENABLED);
builder.pop();
builder
.comment ("Accelerated Item Rendering Settings")
.comment ("Accelerated Item Rendering uses GPU to cache and transform vertices while rendering item models, instead of generating and transforming vertices every time the item models are rendered in CPU.")
.translation ("acceleratedrendering.configuration.accelerated_item_rendering")
.push ("accelerated_item_rendering");
acceleratedItemRenderingFeatureStatus = builder
.comment ("- DISABLED: Disable accelerated item rendering.")
.comment ("- ENABLED: Enable accelerated item rendering.")
.translation ("acceleratedrendering.configuration.accelerated_item_rendering.feature_status")
.defineEnum ("feature_status", FeatureStatus.ENABLED);
acceleratedItemRenderingBakeMeshForQuads = builder
.comment ("- DISABLED: Accelerated Rendering will not bake mesh for quads provided by dynamic item models (something that is not SimpleBakedModel) unless mods explicitly enable it temporarily when rendering their own item models.")
.comment ("- ENABLED: Accelerated Rendering will bake mesh for all quads provided by dynamic item models (something that is not SimpleBakedModel) unless mods explicitly disable it temporarily when rendering their own item models, which will accelerate the rendering of these models but will crash if they keep allocating new quad data. (but who will?)")
.translation ("acceleratedrendering.configuration.accelerated_item_rendering.bake_mesh_for_quads")
.defineEnum ("bake_mesh_for_quads", FeatureStatus.ENABLED);
acceleratedItemRenderingDefaultPipeline = builder
.comment ("- VANILLA: Item models will not be rendered into the accelerated pipeline unless mods explicitly enable it temporarily when rendering their own item models.")
.comment ("- ACCELERATED: All item models will be rendered in the accelerated pipeline unless mods explicitly disable it temporarily when rendering their own item models.")
.translation ("acceleratedrendering.configuration.accelerated_item_rendering.default_pipeline")
.defineEnum ("default_pipeline", PipelineSetting.ACCELERATED);
acceleratedItemRenderingMeshType = builder
.gameRestart ()
.comment ("- CLIENT: Cached mesh will be stored on the client side (CPU), which will use less VRAM but take more time to upload to the server side (GPU) during rendering.")
.comment ("- SERVER: Cached mesh will be stored on the server side (GPU), which may speed up rendering but will use more VRAM to store the mesh.")
.translation ("acceleratedrendering.configuration.accelerated_item_rendering.mesh_type")
.defineEnum ("mesh_type", MeshType.SERVER);
acceleratedItemRenderingHandAcceleration = builder
.comment ("- DISABLED: Accelerated Rendering will not accelerate item models that are marked as \"too small to make up the cost of acceleration\" when rendering it in hand unless mods explicitly enable it temporarily when rendering their own item models.")
.comment ("- ENABLED: Accelerated Rendering will still accelerate item models that are marked as \"too small to make up the cost of acceleration\" when rendering it in hand unless mods explicitly disable it temporarily when rendering their own item models, which may slightly reduce the FPS but accelerate vanilla-like modded item models with large amount of vertices.")
.translation ("acceleratedrendering.configuration.accelerated_item_rendering.hand_acceleration")
.defineEnum ("hand_acceleration", FeatureStatus.ENABLED);
acceleratedItemRenderingGuiAcceleration = builder
.comment ("- DISABLED: Accelerated Rendering will not accelerate item models that are marked as \"too small to make up the cost of acceleration\" when rendering it in a container GUI unless mods explicitly enable it temporarily when rendering their own item models.")
.comment ("- ENABLED: Accelerated Rendering will still accelerate item models that are marked as \"too small to make up the cost of acceleration\" when rendering it in a container GUI unless mods explicitly disable it temporarily when rendering their own item models, which may slightly reduce the FPS but accelerate vanilla-like modded item models with large amount of vertices.")
.translation ("acceleratedrendering.configuration.accelerated_item_rendering.gui_acceleration")
.defineEnum ("gui_acceleration", FeatureStatus.ENABLED);
acceleratedItemRenderingGuiItemBatching = builder
.comment ("- DISABLED: Items in the container GUI will be rendered as per item per batch if the GUI Acceleration is enabled, which is inefficient and may cause reduction in FPS, but it has better compatibility in modded container GUI.")
.comment ("- ENABLED: Items in the container will be rendered together in a single batch if the GUI Acceleration is enabled, which is much more efficient but has little compatibility in modded container GUI.")
.translation ("acceleratedrendering.configuration.accelerated_item_rendering.gui_item_batching")
.defineEnum ("gui_item_batching", FeatureStatus.ENABLED);
acceleratedItemRenderingMergeGuiItemBatches = builder
.comment ("- DISABLED: Items rendered in background and slots will be separated into two batches when accelerate container GUI, which is inefficient any may cause slight reduction in FPS, but it has better compatibility in modded container GUI.")
.comment ("- ENABLED: Items rendered in background and slots will be merged into a single batch when accelerate container GUI, which is much more efficient but has less compatibility in modded container GUI.")
.translation ("acceleratedrendering.configuration.accelerated_item_rendering.merge_gui_item_batching")
.defineEnum ("merge_gui_item_batching", FeatureStatus.ENABLED);
builder.pop();
builder
.comment ("Accelerated Text Rendering Settings")
.comment ("Accelerated Text Rendering uses GPU to cache and transform vertices while rendering text through BakedGlyph, instead of generating and transforming vertices every time the text are rendered in CPU.")
.translation ("acceleratedrendering.configuration.accelerated_text_rendering")
.push ("accelerated_text_rendering");
acceleratedTextRenderingFeatureStatus = builder
.comment ("- DISABLED: Disable accelerated text rendering.")
.comment ("- ENABLED: Enable accelerated text rendering.")
.translation ("acceleratedrendering.configuration.accelerated_text_rendering.feature_status")
.defineEnum ("feature_status", FeatureStatus.ENABLED);
acceleratedTextRenderingDefaultPipeline = builder
.comment ("- VANILLA: Text will not be rendered into the accelerated pipeline unless mods explicitly enable it temporarily when rendering their own text.")
.comment ("- ACCELERATED: All text will be rendered in the accelerated pipeline unless mods explicitly disable it temporarily when rendering their own text.")
.translation ("acceleratedrendering.configuration.accelerated_text_rendering.default_pipeline")
.defineEnum ("default_pipeline", PipelineSetting.ACCELERATED);
acceleratedTextRenderingMeshType = builder
.gameRestart ()
.comment ("- CLIENT: Cached mesh will be stored on the client side (CPU), which will use less VRAM but take more time to upload to the server side (GPU) during rendering.")
.comment ("- SERVER: Cached mesh will be stored on the server side (GPU), which may speed up rendering but will use more VRAM to store the mesh.")
.translation ("acceleratedrendering.configuration.accelerated_text_rendering.mesh_type")
.defineEnum ("mesh_type", MeshType.SERVER);
builder.pop();
builder
.comment ("Simple Orientation Face Culling Settings")
.comment ("Simple Orientation face culling uses an compute shader before the draw call to discard faces that is not visible on screen by checking if it is facing to the screen using a determinant of 3 * 3 matrix.")
.translation ("acceleratedrendering.configuration.orientation_culling")
.push ("orientation_culling");
orientationCullingFeatureStatus = builder
.comment ("- DISABLED: Disable simple orientation face culling.")
.comment ("- ENABLED: Enable simple orientation face culling.")
.translation ("acceleratedrendering.configuration.orientation_culling.feature_status")
.defineEnum ("feature_Status", FeatureStatus.ENABLED);
orientationCullingDefaultCulling = builder
.comment ("- DISABLED: Faces will not be culled unless mods explicitly enable it temporarily when rendering their own faces.")
.comment ("- ENABLED: All faces will be culled unless mods explicitly disable it temporarily when rendering their own faces.")
.translation ("acceleratedrendering.configuration.orientation_culling.default_culling")
.defineEnum ("default_culling", FeatureStatus.ENABLED);
orientationCullingIgnoreCullState = builder
.comment ("- DISABLED: Simple orientation face culling will not cull entities that are not declared as \"cullable\".")
.comment ("- ENABLED: Simple orientation face culling will cull all entities even if they are not declared as \"cullable\".")
.translation ("acceleratedrendering.configuration.orientation_culling.ignore_cull_state")
.defineEnum ("ignore_cull_state", FeatureStatus.DISABLED);
builder.pop();
builder
.comment ("Filters Settings")
.comment ("Filters allows you to prevent specific entities/block entities/items from being accelerated when rendering for better compatibility.")
.translation ("acceleratedrendering.configuration.filter")
.push ("filter");
filterFeatureStatus = builder
.comment ("- DISABLED: Filters will be disabled and all entities, block entities and items will be accelerated when rendering.")
.comment ("- ENABLED: Filters will test if the entities, block entities and items should be accelerated when rendering based on the filter values and the filter type.")
.translation ("acceleratedrendering.configuration.filter.feature_status")
.defineEnum ("feature_status", FeatureStatus.ENABLED);
filterMenuFilter = builder
.comment ("- DISABLED: Menu filter will be disabled and geometries in all container GUI will be accelerated.")
.comment ("- ENABLED: Menu filter will test if geometries in specific container GUI should be accelerated when rendering based on the filter values and the filter type.")
.translation ("acceleratedrendering.configuration.filter.menu_filter")
.defineEnum ("menu_filter", FeatureStatus.ENABLED);
filterEntityFilter = builder
.comment ("- DISABLED: Entity filter will be disabled and all entities will be accelerated.")
.comment ("- ENABLED: Entity filter will test if the entities should be accelerated when rendering based on the filter values and the filter type.")
.translation ("acceleratedrendering.configuration.filter.entity_filter")
.defineEnum ("entity_filter", FeatureStatus.DISABLED);
filterBlockEntityFilter = builder
.comment ("- DISABLED: Block entity filter will be disabled and all block entities will be accelerated.")
.comment ("- ENABLED: Block entity filter will test if the block entities should be accelerated when rendering based on the filter values and the filter type.")
.translation ("acceleratedrendering.configuration.filter.block_entity_filter")
.defineEnum ("block_entity_filter", FeatureStatus.DISABLED);
filterItemFilter = builder
.comment ("- DISABLED: Item filter will be disabled and all items will be accelerated.")
.comment ("- ENABLED: Item filter will test if the items should be accelerated when rendering based on the filter values and the filter type.")
.translation ("acceleratedrendering.configuration.filter.item_filter")
.defineEnum ("item_filter", FeatureStatus.DISABLED);
filterStageFilter = builder
.comment ("- DISABLED: Custom rendering stage filter will be disabled and geometries in all custom rendering stages will be accelerated.")
.comment ("- ENABLED: Custom rendering stage filter will test if geometries in specific custom rendering stage should be accelerated when rendering based on the filter values and the filter type.")
.translation ("acceleratedrendering.configuration.filter.stage_filter")
.defineEnum ("stage_filter", FeatureStatus.ENABLED);
filterMenuFilterType = builder
.comment ("- BLACKLIST: Container GUIs that are not in the filter values can pass the filter and be accelerated when rendering.")
.comment ("- WHITELIST: Container GUIs that are in the filter values can pass the filter and be accelerated when rendering.")
.translation ("acceleratedrendering.configuration.filter.menu_filter_type")
.defineEnum ("menu_filter_type", FilterType.WHITELIST);
filterEntityFilterType = builder
.comment ("- BLACKLIST: Entities that are not in the filter values can pass the filter and be accelerated when rendering.")
.comment ("- WHITELIST: Entities that are in the filter values can pass the filter and be accelerated when rendering.")
.translation ("acceleratedrendering.configuration.filter.entity_filter_type")
.defineEnum ("entity_filter_type", FilterType.BLACKLIST);
filterBlockEntityFilterType = builder
.comment ("- BLACKLIST: Block entities that are not in the filter values can pass the filter and be accelerated when rendering.")
.comment ("- WHITELIST: Block entities that are in the filter values can pass the filter and be accelerated when rendering.")
.translation ("acceleratedrendering.configuration.filter.block_entity_filter_type")
.defineEnum ("block_entity_filter_type", FilterType.BLACKLIST);
filterItemFilterType = builder
.comment ("- BLACKLIST: Items that are not in the filter values can pass the filter and be accelerated when rendering.")
.comment ("- WHITELIST: Items that are in the filter values can pass the filter and be accelerated when rendering.")
.translation ("acceleratedrendering.configuration.filter.item_filter_type")
.defineEnum ("item_filter_type", FilterType.BLACKLIST);
filterStageFilterType = builder
.comment ("- BLACKLIST: Custom rendering stages that are not in the filter values can pass the filter and be accelerated when rendering.")
.comment ("- WHITELIST: Custom rendering stages that are in the filter values can pass the filter and be accelerated when rendering.")
.translation ("acceleratedrendering.configuration.filter.stage_filter_type")
.defineEnum ("stage_filter_type", FilterType.WHITELIST);
filterMenuFilterValues = builder
.comment ("You can configure the menu filter by this list.")
.comment ("Menu filter will use this list and the filter type to determine if a container GUI can pass the filter.")
.translation ("acceleratedrendering.configuration.filter.menu_filter_values")
.gameRestart ()
.defineListAllowEmpty ("menu_filter_values", ObjectArrayList.of("minecraft:.*"), () -> "minecraft:empty", object -> object instanceof String);
filterEntityFilterValues = builder
.comment ("You can configure the entity filter by this list.")
.comment ("Entity filter will use this list and the filter type to determine if an entity can pass the filter.")
.translation ("acceleratedrendering.configuration.filter.entity_filter_values")
.gameRestart ()
.defineListAllowEmpty ("entity_filter_values", new ObjectArrayList<>(), () -> "minecraft:empty", object -> object instanceof String);
filterBlockEntityFilterValues = builder
.comment ("You can configure the block entity filter by this list.")
.comment ("Block entity filter will use this list and the filter type to determine if a block entity can pass the filter.")
.translation ("acceleratedrendering.configuration.filter.block_entity_filter_values")
.gameRestart ()
.defineListAllowEmpty ("block_entity_filter_values", new ObjectArrayList<>(), () -> "minecraft:empty", object -> object instanceof String);
filterItemFilterValues = builder
.comment ("You can configure the item filter by this list.")
.comment ("Item filter will use this list and the filter type to determine if an item can pass the filter.")
.translation ("acceleratedrendering.configuration.filter.item_filter_values")
.gameRestart ()
.defineListAllowEmpty ("item_filter_values", new ObjectArrayList<>(), () -> "minecraft:empty", object -> object instanceof String);
filterStageFilterValues = builder
.comment ("You can configure the custom rendering stage filter by this list.")
.comment ("Custom rendering stage filter will use this list and the filter type to determine if a custom rendering stage can pass the filter.")
.comment ("It's not recommend to modify this list unless other mods adds their own custom rendering stages.")
.translation ("acceleratedrendering.configuration.filter.stage_filter_values")
.gameRestart ()
.defineListAllowEmpty ("stage_filter_values", ObjectArrayList.of("after_entities", "after_block_entities"), () -> "minecraft:empty", object -> object instanceof String);
builder.pop();
builder
.comment ("Iris Compatibility Settings")
.comment ("Iris Compatibility Settings allows Accelerated Rendering to work correctly with Iris.")
.translation ("acceleratedrendering.configuration.iris_compatibility")
.push ("iris_compatibility");
irisCompatFeatureStatus = builder
.comment ("- DISABLED: Accelerated Rendering will be incompatible with Iris and cause visual glitches when working with Iris.")
.comment ("- ENABLED: Accelerated Rendering will use compute shaders that fits Iris's vertex formats, which make it compatible with Iris.")
.translation ("acceleratedrendering.configuration.iris_compatibility.feature_status")
.defineEnum ("feature_status", FeatureStatus.ENABLED);
irisCompatOrientationCullingCompat = builder
.comment ("- DISABLED: Simple Orientation culling will not work with Iris because the culling shader is for vanilla's vertex formats.")
.comment ("- ENABLED: Simple Orientation culling will use another culling shader that fits iris's vertex format, which make it compatible with Iris.")
.translation ("acceleratedrendering.configuration.iris_compatibility.orientation_culling_compatibility")
.defineEnum ("orientation_culling_compatibility", FeatureStatus.ENABLED);
irisCompatShadowCulling = builder
.comment ("- DISABLED: Entities will not be culled when they are rendered as shadows unless mods explicitly enable it temporarily when rendering their own shadows. Which reduce FPS due to redundant faces.")
.comment ("- ENABLED: Entities will be culled when they are rendered as shadows unless mods explicitly disable it temporarily when rendering their own shadows. Redundant faces will be culled and improve FPS, but it may cause incorrect shadows.")
.translation ("acceleratedrendering.configuration.iris_compatibility.shadow_culling")
.defineEnum ("shadow_culling", FeatureStatus.ENABLED);
irisCompatPolygonProcessing = builder
.comment ("- DISABLED: Extra information in vertices provided by Iris will not be included or calculated in the accelerated pipeline unless mods explicitly enable it temporarily when rendering their own faces, which may cause visual glitches or incorrect rendering.")
.comment ("- ENABLED: Extra information in vertices provided by Iris will be included and calculated in the accelerated pipeline by a compute shader unless mods explicitly disable it temporarily when rendering their own faces.")
.translation ("acceleratedrendering.configuration.iris_compatibility.polygon_processing")
.defineEnum ("polygon_processing", FeatureStatus.ENABLED);
builder.pop();
builder
.comment ("Curios Compatibility Settings")
.comment ("Curios Compatibility Settings allows Accelerated Rendering to work correctly with Curios.")
.translation ("acceleratedrendering.configuration.curios_compatibility")
.push ("curios_compatibility");
curiosCompatFeatureStatus = builder
.comment ("- DISABLED: Accelerated Rendering will not interrupt the acceleration of the Curios layer on entities.")
.comment ("- ENABLED: Accelerated Rendering will interrupt the acceleration of Curios layer on entities to prevent some mods using extremely bad rendering code that breaks the caching of Accelerated Rendering.")
.translation ("acceleratedrendering.configuration.curios_compatibility.feature_status")
.defineEnum ("feature_status", FeatureStatus.ENABLED);
curiosCompatLayerAcceleration = builder
.comment ("- DISABLED: Curios layer will not be accelerated by default to prevent some mods using extremely bad rendering code that breaks the caching of Accelerated Rendering unless mods explicitly enable the acceleration when rendering their accessories or equipments.")
.comment ("- ENABLED: Curios layer will be accelerated by default unless mods explicitly enable the acceleration when rendering their accessories or equipments.")
.translation ("acceleratedrendering.configuration.curios_compatibility.layer_acceleration")
.defineEnum ("layer_acceleration", FeatureStatus.DISABLED);
curiosItemFilter = builder
.comment ("- DISABLED: Curios item filter will be disabled and acceleration of the rendering of all curios accessories/equipments will be determined by the \"layer acceleration\" option.")
.comment ("- ENABLED: Curios item filter will test if the acceleration of the curios accessories/equipments should be prevented based on the filter values and the filter type.")
.translation ("acceleratedrendering.configuration.curios_compatibility.item_filter")
.defineEnum ("item_filter", FeatureStatus.DISABLED);
curiosItemFilterType = builder
.comment ("- BLACKLIST: Curios items that are not in the filter values can pass the filter and not being prevented to be accelerated.")
.comment ("- WHITELIST: Curios items that are in the filter values can pass the filter and not being prevented to be accelerated.")
.translation ("acceleratedrendering.configuration.curios_compatibility.item_filter_type")
.defineEnum ("item_filter_type", FilterType.BLACKLIST);
curiosItemFilterValues = builder
.comment ("You can configure the curios item filter by this list.")
.comment ("Curios item filter will use this list and the filter type to determine if a curios item can pass the filter.")
.translation ("acceleratedrendering.configuration.curios_compatibility.item_filter_values")
.gameRestart ()
.defineListAllowEmpty ("item_filter_values", new ObjectArrayList<>(), () -> "minecraft:air", object -> object instanceof String);
builder.pop();
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/configs/FeatureStatus.java
================================================
package com.github.argon4w.acceleratedrendering.configs;
public enum FeatureStatus {
DISABLED,
ENABLED
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/configs/PipelineSetting.java
================================================
package com.github.argon4w.acceleratedrendering.configs;
public enum PipelineSetting {
VANILLA,
ACCELERATED
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/CoreBuffers.java
================================================
package com.github.argon4w.acceleratedrendering.core;
import com.github.argon4w.acceleratedrendering.core.buffers.AcceleratedBufferSources;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.AcceleratedBufferSource;
import com.github.argon4w.acceleratedrendering.core.buffers.environments.IBufferEnvironment;
import com.mojang.blaze3d.vertex.VertexFormat;
public class CoreBuffers {
public static final AcceleratedBufferSource BLOCK = new AcceleratedBufferSource(IBufferEnvironment.Presets.BLOCK);
public static final AcceleratedBufferSource ENTITY = new AcceleratedBufferSource(IBufferEnvironment.Presets.ENTITY);
public static final AcceleratedBufferSource POS = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS);
public static final AcceleratedBufferSource POS_COLOR = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_COLOR);
public static final AcceleratedBufferSource POS_TEX = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_TEX);
public static final AcceleratedBufferSource POS_TEX_COLOR = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_TEX_COLOR);
public static final AcceleratedBufferSource POS_COLOR_TEX_LIGHT = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_COLOR_TEX_LIGHT);
public static final AcceleratedBufferSource POS_TEX_COLOR_OUTLINE = new AcceleratedBufferSource(IBufferEnvironment.Presets.POS_TEX_COLOR);
public static final AcceleratedBufferSources CORE = AcceleratedBufferSources
.builder()
.source (CoreBuffers .BLOCK)
.source (CoreBuffers .ENTITY)
.source (CoreBuffers .POS)
.source (CoreBuffers .POS_COLOR)
.source (CoreBuffers .POS_TEX)
.source (CoreBuffers .POS_TEX_COLOR)
.source (CoreBuffers .POS_COLOR_TEX_LIGHT)
.mode (VertexFormat.Mode .QUADS)
.mode (VertexFormat.Mode .TRIANGLES)
.build ();
public static final AcceleratedBufferSources OUTLINE = AcceleratedBufferSources
.builder()
.source (CoreBuffers .POS_TEX_COLOR_OUTLINE)
.mode (VertexFormat.Mode .QUADS)
.mode (VertexFormat.Mode .TRIANGLES)
.build ();
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/CoreBuffersProvider.java
================================================
package com.github.argon4w.acceleratedrendering.core;
import com.github.argon4w.acceleratedrendering.core.buffers.EmptyAcceleratedBufferSources;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.IAcceleratedBufferSource;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders.BufferSourceExtension;
import lombok.experimental.ExtensionMethod;
import net.minecraft.client.renderer.RenderBuffers;
import java.util.function.Supplier;
@ExtensionMethod(BufferSourceExtension.class)
public class CoreBuffersProvider {
public static final Supplier<IAcceleratedBufferSource> EMPTY = () -> EmptyAcceleratedBufferSources .INSTANCE;
public static final Supplier<IAcceleratedBufferSource> CORE = () -> CoreBuffers .CORE;
public static final Supplier<IAcceleratedBufferSource> OUTLINE = () -> CoreBuffers .OUTLINE;
public static void bindAcceleratedBufferSources(RenderBuffers renderBuffers) {
renderBuffers.bufferSource ().getAcceleratable().bindAcceleratedBufferSource(CoreBuffersProvider.CORE);
renderBuffers.crumblingBufferSource ().getAcceleratable().bindAcceleratedBufferSource(CoreBuffersProvider.CORE);
renderBuffers.outlineBufferSource ().getAcceleratable().bindAcceleratedBufferSource(CoreBuffersProvider.OUTLINE);
}
}
================================================
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/CoreFeature.java
================================================
package com.github.argon4w.acceleratedrendering.core;
import com.github.argon4w.acceleratedrendering.configs.FeatureConfig;
import com.github.argon4w.acceleratedrendering.configs.FeatureStatus;
import com.github.argon4w.acceleratedrendering.core.backends.states.IBindingState;
import com.github.argon4w.acceleratedrendering.core.backends.states.buffers.BlockBufferBindingStateType;
import com.github.argon4w.acceleratedrendering.core.backends.states.buffers.BufferBlockType;
import com.github.argon4w.acceleratedrendering.core.backends.states.buffers.cache.BlockBufferBindingCacheType;
import com.github.argon4w.acceleratedrendering.core.backends.states.scissors.ScissorBindingStateType;
import com.github.argon4w.acceleratedrendering.core.backends.states.viewports.ViewportBindingStateType;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage.ILayerStorage;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage.LayerStorageType;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.IMeshInfoCache;
import com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes.MeshInfoCacheType;
import com.github.argon4w.acceleratedrendering.core.meshes.data.cache.IMeshDataCache;
import com.github.argon4w.acceleratedrendering.core.meshes.data.cache.MeshDataCacheType;
import com.github.argon4w.acceleratedrendering.core.programs.ComputeShaderProgramLoader;
import com.github.argon4w.acceleratedrendering.core.utils.PackedVector2i;
import com.google.common.util.concurrent.Runnables;
import java.util.ArrayDeque;
public class CoreFeature {
private static final ArrayDeque<FeatureStatus> FORCE_TRANSLUCENT_ACCELERATION_CONTROLLER_STACK = new ArrayDeque<>();
private static final ArrayDeque<FeatureStatus> CACHE_IDENTICAL_POSE_CONTROLLER_STACK = new ArrayDeque<>();
private static final ArrayDeque<Integer> DEFAULT_LAYER_CONTROLLER_STACK = new ArrayDeque<>();
private static final ArrayDeque<Runnable> DEFAULT_LAYER_BEFORE_FUNCTION_CONTROLLER_STACK = new ArrayDeque<>();
private static final ArrayDeque<Runnable> DEFAULT_LAYER_AFTER_FUNCTION_CONTROLLER_STACK = new ArrayDeque<>();
private static boolean RENDERING_LEVEL = false;
private static boolean RENDERING_HAND = false;
private static boolean RENDERING_GUI = false;
private static boolean GUI_BATCHING = false;
public static boolean isLoaded() {
return ComputeShaderProgramLoader.isProgramsLoaded();
}
public static boolean isConfigLoaded() {
return FeatureConfig.SPEC.isLoaded();
}
public static boolean isDebugContextEnabled() {
return FeatureConfig.CONFIG.coreDebugContextEnabled.get() == FeatureStatus.ENABLED;
}
public static int getPooledRingBufferSize() {
return FeatureConfig.CONFIG.corePooledRingBufferSize.getAsInt();
}
public static int getPooledBatchingSize() {
return FeatureConfig.CONFIG.corePooledBatchingSize.getAsInt();
}
public static int getCachedImageSize() {
return FeatureConfig.CONFIG.coreCachedImageSize.getAsInt();
}
public static float getDynamicUVResolution() {
return FeatureConfig.CONFIG.coreDynamicUVResolution.getAsInt();
}
public static boolean shouldForceAccelerateTranslucent() {
return getForceTranslucentAccelerationSetting() == FeatureStatus.ENABLED;
}
public static boolean shouldCacheIdenticalPose() {
return getCacheIdenticalPoseSetting() == FeatureStatus.ENABLED;
}
public static MeshInfoCacheType getMeshInfoCacheType() {
return FeatureConfig.CONFIG.coreMeshInfoCacheType.get();
}
public static LayerStorageType getLayerStorageType() {
return FeatureConfig.CONFIG.coreLayerStorageType.get();
}
public static MeshDataCacheType getMeshMergeType() {
return FeatureConfig.CONFIG.coreMeshMergeType.get();
}
public static boolean shouldUploadMeshImmediately() {
return FeatureConfig.CONFIG.coreUploadMeshImmediately.get() == FeatureStatus.ENABLED;
}
public static boolean shouldCacheDynamicRenderType() {
return FeatureConfig.CONFIG.coreCacheDynamicRenderType.get() == FeatureStatus.ENABLED;
}
public static boolean shouldRestoreBlockBuffers() {
return FeatureConfig.CONFIG.restoringFeatureStatus.get() == FeatureStatus.ENABLED;
}
public static BlockBufferBindingCacheType getBlockBufferBindingCacheType() {
return FeatureConfig.CONFIG.restoringBindingCacheType.get();
}
public static BlockBufferBindingStateType getShaderStorageStateType() {
return FeatureConfig.CONFIG.restoringShaderStorageType.get();
}
public static ViewportBindingStateType getViewportBindingStateType() {
return FeatureConfig.CONFIG.coreViewportBindingType.get();
}
public static ScissorBindingStateType getScissorBindingStateType() {
return FeatureConfig.CONFIG.coreScissorBindingType.get();
}
public static BlockBufferBindingStateType getAtomicCounterStateType() {
return FeatureConfig.CONFIG.restoringAtomicCounterType.get();
}
public static int getShaderStorageRestoringRange() {
return FeatureConfig.CONFIG.restoringShaderStorageRange.getAsInt();
}
public static int getAtomicCounterRestoringRange() {
return FeatureConfig.CONFIG.restoringAtomicCounterRange.getAsInt();
}
public static IMeshInfoCache createMeshInfoCache() {
return getMeshInfoCacheType().create();
}
public static ILayerStorage createLayerStorage() {
return getLayerStorageType().create(getPooledBatchingSize());
}
public static IMeshDataCache createMeshDataCache() {
return getMeshMergeType().create();
}
public static IBindingState createViewportState() {
return getViewportBindingStateType().create();
}
public static IBindingState createScissorState() {
return getScissorBindingStateType().create();
}
public static IBindingState createShaderStorageState() {
return getShaderStorageStateType().create(getBlockBufferBindingCacheType(), BufferBlockType.SHADER_STORAGE, getShaderStorageRestoringRange());
}
public static IBindingState createAtomicCounterState() {
return getAtomicCounterStateType().create(getBlockBufferBindingCacheType(), BufferBlockType.ATOMIC_COUNTER, getAtomicCounterRestoringRange());
}
public static int packDynamicUV(float u, float v) {
return PackedVector2i.pack(u * getDynamicUVResolution(), v * getDynamicUVResolution());
}
public static float unpackDynamicU(int packedUV) {
return PackedVector2i.unpackU(packedUV) / getDynamicUVResolution();
}
public static float unpackDynamicV(int packedUV) {
return PackedVector2i.unpackV(packedUV) / getDynamicUVResolution();
}
public static void disableForceTranslucentAcceleration() {
FORCE_TRANSLUCENT_ACCELERATION_CONTROLLER_STACK.push(FeatureStatus.DISABLED);
}
public static void dis
gitextract_d9366gy4/
├── .gitattributes
├── .github/
│ └── workflows/
│ └── build.yml
├── .gitignore
├── LICENSE
├── README.md
├── build.gradle
├── changelogs/
│ ├── changelog-1.0.0.md
│ ├── changelog-1.0.1.md
│ ├── changelog-1.0.2.md
│ ├── changelog-1.0.3.md
│ ├── changelog-1.0.4.md
│ ├── changelog-1.0.5.1.md
│ ├── changelog-1.0.5.md
│ ├── changelog-1.0.6.md
│ ├── changelog-1.0.7.md
│ └── changelog-1.0.8.md
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── images/
│ ├── LOGO.psd
│ └── benchmark.psd
├── settings.gradle
└── src/
└── main/
├── java/
│ └── com/
│ └── github/
│ └── argon4w/
│ └── acceleratedrendering/
│ ├── AcceleratedRenderingModEntry.java
│ ├── compat/
│ │ ├── AbstractCompatMixinPlugin.java
│ │ ├── curios/
│ │ │ ├── CuriosCompatFeature.java
│ │ │ └── mixins/
│ │ │ └── CuriosLayerMixin.java
│ │ ├── immediatelyfast/
│ │ │ └── mixins/
│ │ │ ├── BatchableBufferSourceMixin.java
│ │ │ ├── BatchingBuffersMixin.java
│ │ │ └── WrappedRenderLayerMixin.java
│ │ └── iris/
│ │ ├── IrisCompatBuffers.java
│ │ ├── IrisCompatBuffersProvider.java
│ │ ├── IrisCompatFeature.java
│ │ ├── environments/
│ │ │ └── IrisBufferEnvironment.java
│ │ ├── interfaces/
│ │ │ ├── IIrisAcceleratedBufferBuilder.java
│ │ │ ├── IIrisMeshInfo.java
│ │ │ └── IIrisMeshInfoCache.java
│ │ ├── mixins/
│ │ │ ├── acceleratedrendering/
│ │ │ │ ├── AcceleratedBufferBuilderMixin.java
│ │ │ │ ├── AcceleratedBufferSourceMixin.java
│ │ │ │ ├── AcceleratedRenderingModEntryMixin.java
│ │ │ │ ├── CoreBuffersProviderMixin.java
│ │ │ │ ├── FlattenMeshInfoCacheMixin.java
│ │ │ │ ├── IBufferEnvironmentPresetsMixin.java
│ │ │ │ ├── MeshUploaderMixin.java
│ │ │ │ ├── MeshUploadingProgramDispatcherMixin.java
│ │ │ │ ├── RenderTypeUtilsMixin.java
│ │ │ │ ├── SimpleMeshInfoCacheMixin.java
│ │ │ │ ├── SimpleMeshInfoMixin.java
│ │ │ │ └── UnsafeMemoryMeshInfoCacheMixin.java
│ │ │ ├── iris/
│ │ │ │ ├── FullyBufferedMultiBufferSourceMixin.java
│ │ │ │ ├── HandRendererMixin.java
│ │ │ │ ├── IrisVertexFormatsMixin.java
│ │ │ │ ├── ModelToEntityVertexSerializerMixin.java
│ │ │ │ └── ShadowRendererMixin.java
│ │ │ ├── plugin/
│ │ │ │ └── IrisCompatMixinPlugin.java
│ │ │ └── vanilla/
│ │ │ └── LevelRendererMixin.java
│ │ └── programs/
│ │ ├── IrisPrograms.java
│ │ ├── culling/
│ │ │ ├── IrisCullingProgramDispatcher.java
│ │ │ └── IrisCullingProgramSelector.java
│ │ └── processing/
│ │ └── IrisPolygonProcessor.java
│ ├── configs/
│ │ ├── FeatureConfig.java
│ │ ├── FeatureStatus.java
│ │ └── PipelineSetting.java
│ ├── core/
│ │ ├── CoreBuffers.java
│ │ ├── CoreBuffersProvider.java
│ │ ├── CoreFeature.java
│ │ ├── CoreStates.java
│ │ ├── backends/
│ │ │ ├── DebugOutput.java
│ │ │ ├── GLConstants.java
│ │ │ ├── Sync.java
│ │ │ ├── VertexArray.java
│ │ │ ├── buffers/
│ │ │ │ ├── EmptyServerBuffer.java
│ │ │ │ ├── IClientBuffer.java
│ │ │ │ ├── IServerBuffer.java
│ │ │ │ ├── ImmutableBuffer.java
│ │ │ │ ├── MappedBuffer.java
│ │ │ │ └── MutableBuffer.java
│ │ │ ├── programs/
│ │ │ │ ├── BarrierFlags.java
│ │ │ │ ├── ComputeProgram.java
│ │ │ │ ├── ComputeShader.java
│ │ │ │ └── Uniform.java
│ │ │ └── states/
│ │ │ ├── EmptyBindingState.java
│ │ │ ├── FramebufferBindingState.java
│ │ │ ├── IBindingState.java
│ │ │ ├── buffers/
│ │ │ │ ├── BlockBufferBindingStateType.java
│ │ │ │ ├── BufferBlockType.java
│ │ │ │ ├── SimpleBlockBufferBindingState.java
│ │ │ │ └── cache/
│ │ │ │ ├── BlockBufferBindingCacheType.java
│ │ │ │ ├── FlattenBlockBufferBindingCache.java
│ │ │ │ ├── IBlockBufferBindingCache.java
│ │ │ │ ├── SimpleBlockBufferBinding.java
│ │ │ │ ├── SimpleBlockBufferBindingCache.java
│ │ │ │ └── UnsafeMemoryBlockBufferBindingCache.java
│ │ │ ├── scissors/
│ │ │ │ ├── MojangScissorBindingState.java
│ │ │ │ ├── OpenGLScissorBindingState.java
│ │ │ │ └── ScissorBindingStateType.java
│ │ │ └── viewports/
│ │ │ ├── MojangViewportBindingState.java
│ │ │ ├── OpenGLViewportBindingState.java
│ │ │ └── ViewportBindingStateType.java
│ │ ├── buffers/
│ │ │ ├── AcceleratedBufferSources.java
│ │ │ ├── EmptyAcceleratedBufferSources.java
│ │ │ ├── accelerated/
│ │ │ │ ├── AcceleratedBufferSource.java
│ │ │ │ ├── AcceleratedRingBuffers.java
│ │ │ │ ├── IAcceleratedBufferSource.java
│ │ │ │ ├── IAccelerationHolder.java
│ │ │ │ ├── builders/
│ │ │ │ │ ├── AcceleratedBufferBuilder.java
│ │ │ │ │ ├── AcceleratedEntityOutlineGenerator.java
│ │ │ │ │ ├── AcceleratedSheetedDecalTextureGenerator.java
│ │ │ │ │ ├── AcceleratedSpriteCoordinateExpander.java
│ │ │ │ │ ├── AcceleratedVertexConsumerWrapper.java
│ │ │ │ │ ├── BufferSourceExtension.java
│ │ │ │ │ ├── IAcceleratableBufferSource.java
│ │ │ │ │ ├── IAcceleratedVertexConsumer.java
│ │ │ │ │ ├── IBufferGraph.java
│ │ │ │ │ └── VertexConsumerExtension.java
│ │ │ │ ├── layers/
│ │ │ │ │ ├── LayerDrawType.java
│ │ │ │ │ ├── LayerKey.java
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── CustomLayerFunction.java
│ │ │ │ │ │ ├── EmptyLayerFunction.java
│ │ │ │ │ │ └── ILayerFunction.java
│ │ │ │ │ └── storage/
│ │ │ │ │ ├── ILayerContexts.java
│ │ │ │ │ ├── ILayerStorage.java
│ │ │ │ │ ├── LayerStorageType.java
│ │ │ │ │ ├── SeparatedLayerStorage.java
│ │ │ │ │ ├── SimpleLayerContexts.java
│ │ │ │ │ ├── empty/
│ │ │ │ │ │ ├── EmptyLayerContexts.java
│ │ │ │ │ │ └── EmptyLayerStorage.java
│ │ │ │ │ └── sorted/
│ │ │ │ │ ├── SortedLayerContexts.java
│ │ │ │ │ └── SortedLayerStorage.java
│ │ │ │ ├── pools/
│ │ │ │ │ ├── DrawContextPool.java
│ │ │ │ │ ├── ElementBufferPool.java
│ │ │ │ │ ├── StagingBufferPool.java
│ │ │ │ │ └── meshes/
│ │ │ │ │ ├── FlattenMeshInfoCache.java
│ │ │ │ │ ├── IMeshInfoCache.java
│ │ │ │ │ ├── MeshInfoCacheType.java
│ │ │ │ │ ├── MeshUploaderPool.java
│ │ │ │ │ ├── SimpleMeshInfo.java
│ │ │ │ │ ├── SimpleMeshInfoCache.java
│ │ │ │ │ └── UnsafeMemoryMeshInfoCache.java
│ │ │ │ └── renderers/
│ │ │ │ ├── DecoratedRenderer.java
│ │ │ │ ├── IAcceleratedRenderer.java
│ │ │ │ ├── IBufferDecorator.java
│ │ │ │ └── SheetedDecalTextureRenderer.java
│ │ │ ├── environments/
│ │ │ │ ├── IBufferEnvironment.java
│ │ │ │ └── VanillaBufferEnvironment.java
│ │ │ └── memory/
│ │ │ ├── IMemoryInterface.java
│ │ │ ├── IMemoryLayout.java
│ │ │ ├── NullMemoryInterface.java
│ │ │ ├── SimpleDynamicMemoryInterface.java
│ │ │ ├── SimpleMemoryInterface.java
│ │ │ └── VertexLayout.java
│ │ ├── meshes/
│ │ │ ├── ClientMesh.java
│ │ │ ├── EmptyMesh.java
│ │ │ ├── IMesh.java
│ │ │ ├── MeshType.java
│ │ │ ├── ServerMesh.java
│ │ │ ├── collectors/
│ │ │ │ ├── CulledMeshCollector.java
│ │ │ │ ├── IMeshCollector.java
│ │ │ │ └── SimpleMeshCollector.java
│ │ │ └── data/
│ │ │ ├── MeshData.java
│ │ │ └── cache/
│ │ │ ├── IMeshDataCache.java
│ │ │ ├── IgnoreMeshDataCache.java
│ │ │ ├── MeshDataCacheType.java
│ │ │ ├── MeshDataCaches.java
│ │ │ └── SimpleMeshDataCache.java
│ │ ├── mixins/
│ │ │ ├── GameRendererMixin.java
│ │ │ ├── LevelRendererMixin.java
│ │ │ ├── buffers/
│ │ │ │ ├── BufferBuilderMixin.java
│ │ │ │ ├── BufferSourceMixin.java
│ │ │ │ ├── EntityOutlineGeneratorMixin.java
│ │ │ │ ├── MinecraftMixin.java
│ │ │ │ ├── OutlineBufferSourceMixin.java
│ │ │ │ ├── SheetedDecalTextureGeneratorMixin.java
│ │ │ │ ├── SpriteCoordinateExpanderMixin.java
│ │ │ │ ├── VertexConsumerMixin.java
│ │ │ │ ├── VertexDoubleConsumerMixin.java
│ │ │ │ └── VertexMultipleConsumerMixin.java
│ │ │ └── compatibility/
│ │ │ ├── MinecraftMixin.java
│ │ │ ├── ParticleEngineMixin.java
│ │ │ ├── RenderTypeMixin.java
│ │ │ └── WindowMixin.java
│ │ ├── programs/
│ │ │ ├── ComputeShaderDefinition.java
│ │ │ ├── ComputeShaderProgramLoader.java
│ │ │ ├── ComputeShaderPrograms.java
│ │ │ ├── LoadComputeShaderEvent.java
│ │ │ ├── culling/
│ │ │ │ ├── ICullingProgramDispatcher.java
│ │ │ │ ├── ICullingProgramSelector.java
│ │ │ │ ├── LoadCullingProgramSelectorEvent.java
│ │ │ │ ├── PassThroughCullingProgramDispatcher.java
│ │ │ │ └── PassThroughCullingProgramSelector.java
│ │ │ ├── dispatchers/
│ │ │ │ ├── EmptyProgramDispatcher.java
│ │ │ │ ├── FixedPolygonProgramDispatcher.java
│ │ │ │ ├── IPolygonProgramDispatcher.java
│ │ │ │ ├── MeshUploadingProgramDispatcher.java
│ │ │ │ └── TransformProgramDispatcher.java
│ │ │ ├── overrides/
│ │ │ │ ├── IShaderProgramOverride.java
│ │ │ │ ├── IShaderProgramOverrides.java
│ │ │ │ ├── ITransformShaderProgramOverride.java
│ │ │ │ ├── IUploadingShaderProgramOverride.java
│ │ │ │ ├── LoadShaderProgramOverridesEvent.java
│ │ │ │ └── OverrideProgramType.java
│ │ │ └── processing/
│ │ │ ├── EmptyPolygonProcessor.java
│ │ │ ├── IPolygonProcessor.java
│ │ │ └── LoadPolygonProcessorEvent.java
│ │ └── utils/
│ │ ├── CullerUtils.java
│ │ ├── DirectionUtils.java
│ │ ├── EmptyIterator.java
│ │ ├── FastColorUtils.java
│ │ ├── FuzzyMatrix4f.java
│ │ ├── IntArrayHashStrategy.java
│ │ ├── LoopResetPool.java
│ │ ├── MemUtils.java
│ │ ├── MutableSize.java
│ │ ├── PackedVector2i.java
│ │ ├── PoseStackExtension.java
│ │ ├── RegistryFilter.java
│ │ ├── RenderTypeUtils.java
│ │ ├── ResourceLocationUtils.java
│ │ ├── SimpleCachedArray.java
│ │ ├── SimpleResetPool.java
│ │ ├── SimpleTextureTarget.java
│ │ ├── TextureUtils.java
│ │ └── Vertex.java
│ └── features/
│ ├── culling/
│ │ ├── OrientationCullingFeature.java
│ │ ├── OrientationCullingProgramDispatcher.java
│ │ ├── OrientationCullingProgramSelector.java
│ │ └── OrientationCullingPrograms.java
│ ├── emf/
│ │ ├── IEMFModelVariant.java
│ │ └── mixins/
│ │ ├── EMFModelPartMixin.java
│ │ └── EMFModelPartWithStateMixin.java
│ ├── entities/
│ │ ├── AcceleratedEntityRenderingFeature.java
│ │ ├── AcceleratedEntityShadowRenderer.java
│ │ └── mixins/
│ │ ├── EntityRenderDispatcherMixin.java
│ │ └── InventoryScreenMixin.java
│ ├── filter/
│ │ ├── FilterFeature.java
│ │ ├── FilterType.java
│ │ └── mixins/
│ │ ├── AbstractContainerScreenMixin.java
│ │ ├── BlockEntityRenderDispatcherMixin.java
│ │ ├── ClientHooksMixin.java
│ │ ├── ItemRendererMixin.java
│ │ └── LevelRendererMixin.java
│ ├── ftb/
│ │ └── mixins/
│ │ └── BaseScreenMixin.java
│ ├── geckolib/
│ │ └── mixins/
│ │ ├── GeoBoneMixin.java
│ │ └── GeoRendererMixin.java
│ ├── items/
│ │ ├── AcceleratedItemRenderingFeature.java
│ │ ├── AcceleratedQuadsRenderer.java
│ │ ├── BakedModelExtension.java
│ │ ├── IAcceleratedBakedModel.java
│ │ ├── IAcceleratedBakedQuad.java
│ │ ├── colors/
│ │ │ ├── BlockLayerColors.java
│ │ │ ├── EmptyBlockColor.java
│ │ │ ├── EmptyItemColor.java
│ │ │ ├── FixedColors.java
│ │ │ ├── ILayerColors.java
│ │ │ └── ItemLayerColors.java
│ │ ├── contexts/
│ │ │ ├── AcceleratedModelRenderContext.java
│ │ │ ├── AcceleratedQuadsRenderContext.java
│ │ │ └── DecorationRenderContext.java
│ │ ├── gui/
│ │ │ ├── GuiBatchingController.java
│ │ │ ├── GuiRenderTypes.java
│ │ │ ├── contexts/
│ │ │ │ ├── BlitDrawContext.java
│ │ │ │ ├── DecoratorDrawContext.java
│ │ │ │ ├── FillDrawContext.java
│ │ │ │ ├── GradientDrawContext.java
│ │ │ │ ├── HighlightDrawContext.java
│ │ │ │ ├── IGuiElementContext.java
│ │ │ │ ├── ItemRenderContext.java
│ │ │ │ └── string/
│ │ │ │ ├── ComponentStringDrawContext.java
│ │ │ │ ├── FormattedStringDrawContext.java
│ │ │ │ ├── IStringDrawContext.java
│ │ │ │ ├── Outline8StringDrawContext.java
│ │ │ │ └── RawStringDrawContext.java
│ │ │ └── renderer/
│ │ │ ├── AcceleratedBlitRenderer.java
│ │ │ ├── AcceleratedFillRenderer.java
│ │ │ └── AcceleratedGradientRenderer.java
│ │ └── mixins/
│ │ ├── ItemRendererMixin.java
│ │ ├── ModelBlockRendererMixin.java
│ │ ├── accessors/
│ │ │ ├── BlockColorsAccessor.java
│ │ │ └── ItemColorsAccessor.java
│ │ ├── compatibility/
│ │ │ ├── ClientHooksMixin.java
│ │ │ └── GuiLayerManagerMixin.java
│ │ ├── gui/
│ │ │ ├── AbstractContainerScreenMixin.java
│ │ │ ├── FontMixin.java
│ │ │ ├── GuiGraphicsMixin.java
│ │ │ └── GuiMixin.java
│ │ └── models/
│ │ ├── BakedCompositeModelMixin.java
│ │ ├── BakedModelMixin.java
│ │ ├── BakedQuadMixin.java
│ │ ├── BakedSeparateTransformsModelMixin.java
│ │ ├── MultipartBakedModelMixin.java
│ │ ├── SimpleBakedModelMixin.java
│ │ └── WeightedBakedModelMixin.java
│ ├── modelparts/
│ │ └── mixins/
│ │ └── ModelPartMixin.java
│ ├── simplebedrockmodel/
│ │ └── mixins/
│ │ └── BedrockPartMixin.java
│ ├── text/
│ │ ├── AcceleratedBakedGlyphRenderer.java
│ │ ├── AcceleratedTextRenderingFeature.java
│ │ └── mixins/
│ │ ├── BakedGlyphEffectMixin.java
│ │ └── BakedGlyphMixin.java
│ └── touhoulittlemaid/
│ └── mixins/
│ ├── GeoBoneMixin.java
│ └── IGeoRendererMixin.java
└── resources/
├── META-INF/
│ ├── accesstransformer.cfg
│ └── neoforge.mods.toml
├── acceleratedrendering.compat.curios.mixins.json
├── acceleratedrendering.compat.immediatelyfast.mixins.json
├── acceleratedrendering.compat.iris.mixins.json
├── acceleratedrendering.core.mixins.json
├── acceleratedrendering.feature.entities.mixins.json
├── acceleratedrendering.feature.entitymodelfeature.mixins.json
├── acceleratedrendering.feature.filter.mixins.json
├── acceleratedrendering.feature.ftb.mixins.json
├── acceleratedrendering.feature.geckolib.mixins.json
├── acceleratedrendering.feature.items.mixins.json
├── acceleratedrendering.feature.modelparts.mixins.json
├── acceleratedrendering.feature.simplebedrockmodel.mixins.json
├── acceleratedrendering.feature.text.mixins.json
├── acceleratedrendering.feature.touhoulittlemaid.mixins.json
└── assets/
└── acceleratedrendering/
├── lang/
│ ├── en_us.json
│ └── zh_cn.json
└── shaders/
├── compat/
│ ├── culling/
│ │ ├── iris_block_quad_culling_shader.compute
│ │ ├── iris_block_triangle_culling_shader.compute
│ │ ├── iris_entity_quad_culling_shader.compute
│ │ └── iris_entity_triangle_culling_shader.compute
│ ├── processing/
│ │ ├── iris_block_quad_processing_shader.compute
│ │ ├── iris_block_triangle_processing_shader.compute
│ │ ├── iris_entity_quad_processing_shader.compute
│ │ ├── iris_entity_triangle_processing_shader.compute
│ │ ├── iris_glyph_quad_processing_shader.compute
│ │ └── iris_glyph_triangle_processing_shader.compute
│ ├── transform/
│ │ ├── iris_block_vertex_transform_shader.compute
│ │ ├── iris_entity_vertex_transform_shader.compute
│ │ └── iris_glyph_vertex_transform_shader.compute
│ └── uploading/
│ ├── iris_block_mesh_uploading_shader.compute
│ ├── iris_entity_mesh_uploading_shader.compute
│ └── iris_glyph_mesh_uploading_shader.compute
└── core/
├── culling/
│ ├── block_quad_culling_shader.compute
│ ├── block_triangle_culling_shader.compute
│ ├── entity_quad_culling_shader.compute
│ ├── entity_triangle_culling_shader.compute
│ ├── pass_through_quad_culling_shader.compute
│ ├── pass_through_triangle_culling_shader.compute
│ ├── pos_tex_color_quad_culling_shader.compute
│ ├── pos_tex_color_triangle_culling_shader.compute
│ ├── pos_tex_quad_culling_shader.compute
│ └── pos_tex_triangle_culling_shader.compute
├── transform/
│ ├── block_vertex_transform_shader.compute
│ ├── entity_vertex_transform_shader.compute
│ ├── pos_color_tex_light_vertex_transform_shader.compute
│ ├── pos_color_vertex_transform_shader.compute
│ ├── pos_tex_color_vertex_transform_shader.compute
│ ├── pos_tex_vertex_transform_shader.compute
│ └── pos_vertex_transform_shader.compute
└── uploading/
├── block_mesh_uploading_shader.compute
├── entity_mesh_uploading_shader.compute
├── pos_color_mesh_uploading_shader.compute
├── pos_color_tex_light_mesh_uploading_shader.compute
├── pos_mesh_uploading_shader.compute
├── pos_tex_color_mesh_uploading_shader.compute
└── pos_tex_mesh_uploading_shader.compute
SYMBOL INDEX (1515 symbols across 272 files)
FILE: src/main/java/com/github/argon4w/acceleratedrendering/AcceleratedRenderingModEntry.java
class AcceleratedRenderingModEntry (line 14) | @Mod(
method AcceleratedRenderingModEntry (line 23) | public AcceleratedRenderingModEntry(IEventBus modEventBus, ModContaine...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/AbstractCompatMixinPlugin.java
class AbstractCompatMixinPlugin (line 11) | public abstract class AbstractCompatMixinPlugin implements IMixinConfigP...
method AbstractCompatMixinPlugin (line 15) | public AbstractCompatMixinPlugin() {
method getModIDs (line 27) | protected abstract List<String> getModIDs();
method shouldApplyMixin (line 29) | @Override
method getRefMapperConfig (line 34) | @Override
method getMixins (line 39) | @Override
method onLoad (line 44) | @Override
method acceptTargets (line 49) | @Override
method preApply (line 54) | @Override
method postApply (line 64) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/curios/CuriosCompatFeature.java
class CuriosCompatFeature (line 15) | public class CuriosCompatFeature {
method isEnabled (line 25) | public static boolean isEnabled() {
method testCuriosItem (line 29) | public static boolean testCuriosItem(ItemStack itemStack) {
method shouldAccelerateCurios (line 33) | public static boolean shouldAccelerateCurios() {
method shouldFilterCuriosItems (line 37) | public static boolean shouldFilterCuriosItems() {
method getCuriosItemFilterType (line 41) | public static FilterType getCuriosItemFilterType() {
method disableLayerAcceleration (line 45) | public static void disableLayerAcceleration() {
method disableCuriosItemFilter (line 49) | public static void disableCuriosItemFilter() {
method forceEnableLayerAcceleration (line 53) | public static void forceEnableLayerAcceleration() {
method forceEnableCuriosItemFilter (line 57) | public static void forceEnableCuriosItemFilter() {
method forceSetLayerAcceleration (line 61) | public static void forceSetLayerAcceleration(FeatureStatus status) {
method forceSetCuriosItemFilter (line 65) | public static void forceSetCuriosItemFilter(FeatureStatus status) {
method resetLayerAcceleration (line 69) | public static void resetLayerAcceleration() {
method resetCuriosItemFilter (line 73) | public static void resetCuriosItemFilter() {
method getLayerAccelerationSetting (line 77) | public static FeatureStatus getLayerAccelerationSetting() {
method getCuriosItemFilterSetting (line 81) | public static FeatureStatus getCuriosItemFilterSetting() {
method getDefaultLayerAccelerationSettings (line 85) | public static FeatureStatus getDefaultLayerAccelerationSettings() {
method getDefaultCuriosItemFilterSetting (line 89) | public static FeatureStatus getDefaultCuriosItemFilterSetting() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/curios/mixins/CuriosLayerMixin.java
class CuriosLayerMixin (line 24) | @Pseudo
method startRenderCuriosLayer (line 28) | @Inject(
method stopRenderCuriosLayer (line 54) | @Inject(
method filterCuriosItem (line 80) | @WrapOperation(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/immediatelyfast/mixins/BatchableBufferSourceMixin.java
class BatchableBufferSourceMixin (line 14) | @Pseudo
method initAcceleration (line 19) | @ModifyReturnValue(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/immediatelyfast/mixins/BatchingBuffersMixin.java
class BatchingBuffersMixin (line 13) | @Pseudo
method bindAcceleratableBufferSourceCore1 (line 18) | @ModifyReturnValue(
method bindAcceleratableBufferSourceCore2 (line 30) | @ModifyReturnValue(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/immediatelyfast/mixins/WrappedRenderLayerMixin.java
class WrappedRenderLayerMixin (line 13) | @Pseudo
method saveOriginal (line 20) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/IrisCompatBuffers.java
class IrisCompatBuffers (line 8) | public class IrisCompatBuffers {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/IrisCompatBuffersProvider.java
class IrisCompatBuffersProvider (line 7) | public class IrisCompatBuffersProvider {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/IrisCompatFeature.java
class IrisCompatFeature (line 9) | public class IrisCompatFeature {
method isEnabled (line 14) | public static boolean isEnabled() {
method isIrisCompatCullingEnabled (line 18) | public static boolean isIrisCompatCullingEnabled() {
method isShadowCullingEnabled (line 22) | public static boolean isShadowCullingEnabled() {
method isPolygonProcessingEnabled (line 26) | public static boolean isPolygonProcessingEnabled() {
method disableShadowCulling (line 30) | public static void disableShadowCulling() {
method disablePolygonProcessing (line 34) | public static void disablePolygonProcessing() {
method forceEnableShadowCulling (line 38) | public static void forceEnableShadowCulling() {
method forceEnablePolygonProcessing (line 42) | public static void forceEnablePolygonProcessing() {
method forceSetShadowCulling (line 46) | public static void forceSetShadowCulling(FeatureStatus status) {
method forceSetIrisPolygonProcessing (line 50) | public static void forceSetIrisPolygonProcessing(FeatureStatus status) {
method resetShadowCulling (line 54) | public static void resetShadowCulling() {
method resetPolygonProcessing (line 58) | public static void resetPolygonProcessing() {
method getShadowCullingSetting (line 62) | public static FeatureStatus getShadowCullingSetting() {
method getPolygonProcessingSetting (line 66) | public static FeatureStatus getPolygonProcessingSetting() {
method getDefaultShadowCullingSetting (line 70) | public static FeatureStatus getDefaultShadowCullingSetting() {
method getDefaultPolygonProcessingSetting (line 74) | public static FeatureStatus getDefaultPolygonProcessingSetting() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/environments/IrisBufferEnvironment.java
class IrisBufferEnvironment (line 28) | public class IrisBufferEnvironment implements IBufferEnvironment {
method IrisBufferEnvironment (line 33) | public IrisBufferEnvironment(
method getSubSet (line 49) | private IBufferEnvironment getSubSet() {
method setupBufferState (line 53) | @Override
method getVertexFormats (line 58) | @Override
method getLayout (line 63) | @Override
method getImmediateMeshBuffer (line 68) | @Override
method getTransformProgramOverride (line 73) | @Override
method getUploadingProgramOverride (line 78) | @Override
method selectMeshUploadingProgramDispatcher (line 83) | @Override
method selectTransformProgramDispatcher (line 88) | @Override
method selectCullingProgramDispatcher (line 93) | @Override
method selectProcessingProgramDispatcher (line 98) | @Override
method isAccelerated (line 103) | @Override
method getVertexSize (line 108) | @Override
class IrisSubSet (line 113) | public static class IrisSubSet implements IBufferEnvironment {
method IrisSubSet (line 125) | public IrisSubSet(
method setupBufferState (line 146) | @Override
method isAccelerated (line 151) | @Override
method getVertexFormats (line 156) | @Override
method getLayout (line 161) | @Override
method getImmediateMeshBuffer (line 166) | @Override
method getTransformProgramOverride (line 171) | @Override
method getUploadingProgramOverride (line 176) | @Override
method selectMeshUploadingProgramDispatcher (line 181) | @Override
method selectTransformProgramDispatcher (line 186) | @Override
method selectCullingProgramDispatcher (line 191) | @Override
method selectProcessingProgramDispatcher (line 196) | @Override
method getVertexSize (line 201) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/interfaces/IIrisAcceleratedBufferBuilder.java
type IIrisAcceleratedBufferBuilder (line 5) | public interface IIrisAcceleratedBufferBuilder {
method getEntityIdOffset (line 7) | IMemoryInterface getEntityIdOffset ();
method getEntityOffset (line 8) | IMemoryInterface getEntityOffset ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/interfaces/IIrisMeshInfo.java
type IIrisMeshInfo (line 3) | public interface IIrisMeshInfo {
method getRenderedEntity (line 5) | short getRenderedEntity ();
method getRenderedBlockEntity (line 6) | short getRenderedBlockEntity();
method getRenderedItem (line 7) | short getRenderedItem ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/interfaces/IIrisMeshInfoCache.java
type IIrisMeshInfoCache (line 3) | public interface IIrisMeshInfoCache {
method getRenderedEntity (line 5) | short getRenderedEntity (int i);
method getRenderedBlockEntity (line 6) | short getRenderedBlockEntity(int i);
method getRenderedItem (line 7) | short getRenderedItem (int i);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/AcceleratedBufferBuilderMixin.java
class AcceleratedBufferBuilderMixin (line 26) | @Mixin(AcceleratedBufferBuilder.class)
method constructor (line 35) | @Inject(
method addIrisVertex (line 52) | @Inject(
method addIrisVertex (line 74) | @Inject(
method addIrisMesh (line 86) | @Inject(
method addIrisData (line 102) | @Unique
method getEntityIdOffset (line 111) | @Unique
method getEntityOffset (line 117) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/AcceleratedBufferSourceMixin.java
class AcceleratedBufferSourceMixin (line 13) | @Mixin(AcceleratedBufferSource.class)
method unwrapIrisRenderType (line 16) | @ModifyArg(
method beforeBindDrawBuffers (line 28) | @Inject(
method afterBindDrawBuffers (line 42) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/AcceleratedRenderingModEntryMixin.java
class AcceleratedRenderingModEntryMixin (line 12) | @Mixin(AcceleratedRenderingModEntry.class)
method registerIrisEvents (line 15) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/CoreBuffersProviderMixin.java
class CoreBuffersProviderMixin (line 10) | @Mixin(CoreBuffersProvider.class)
method bindAcceleratedBufferSourcesForIris (line 13) | @WrapMethod(method = "bindAcceleratedBufferSources")
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/FlattenMeshInfoCacheMixin.java
class FlattenMeshInfoCacheMixin (line 19) | @Mixin(FlattenMeshInfoCache.class)
method modifySize (line 31) | @ModifyConstant(
method addIrisData (line 47) | @Inject(
method getRenderedEntity (line 70) | @Override
method getRenderedBlockEntity (line 75) | @Override
method getRenderedItem (line 80) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/IBufferEnvironmentPresetsMixin.java
class IBufferEnvironmentPresetsMixin (line 17) | @Mixin(IBufferEnvironment.Presets.class)
method useIrisBloockEnvironment (line 24) | @WrapOperation(
method useIrisEntityEnvironment (line 42) | @WrapOperation(
method useIrisGlyphEnvironment (line 60) | @WrapOperation(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/MeshUploaderMixin.java
class MeshUploaderMixin (line 17) | @Mixin(MeshUploaderPool.MeshUploader.class)
method uploadIrisData (line 26) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/MeshUploadingProgramDispatcherMixin.java
class MeshUploadingProgramDispatcherMixin (line 17) | @Mixin(MeshUploadingProgramDispatcher.class)
method addIrisData (line 20) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/RenderTypeUtilsMixin.java
class RenderTypeUtilsMixin (line 15) | @Mixin(RenderTypeUtils.class)
method unwrapIrisRenderType1 (line 18) | @ModifyVariable(
method unwrapIrisRenderType2 (line 28) | @ModifyVariable(
method unwrapIrisRenderType3 (line 38) | @ModifyVariable(
method unwrapIrisRenderType4 (line 48) | @ModifyVariable(
method unwrapIrisRenderType5 (line 58) | @ModifyVariable(
method getIrisRenderTypeDrawType (line 68) | @Inject(
method checkIrisTransparency (line 83) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/SimpleMeshInfoCacheMixin.java
class SimpleMeshInfoCacheMixin (line 12) | @Mixin(SimpleMeshInfoCache.class)
method getRenderedEntity (line 17) | @Override
method getRenderedBlockEntity (line 22) | @Override
method getRenderedItem (line 27) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/SimpleMeshInfoMixin.java
class SimpleMeshInfoMixin (line 12) | @Mixin(SimpleMeshInfo.class)
method setIrisData (line 19) | @Inject(method = "setupMeshInfo", at = @At("TAIL"))
method getRenderedEntity (line 33) | @Unique
method getRenderedBlockEntity (line 39) | @Unique
method getRenderedItem (line 45) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/UnsafeMemoryMeshInfoCacheMixin.java
class UnsafeMemoryMeshInfoCacheMixin (line 18) | @Mixin(UnsafeMemoryMeshInfoCache.class)
method modifySize (line 30) | @ModifyConstant(
method addIrisData (line 46) | @Inject(
method getRenderedEntity (line 69) | @Override
method getRenderedBlockEntity (line 74) | @Override
method getRenderedItem (line 79) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/FullyBufferedMultiBufferSourceMixin.java
class FullyBufferedMultiBufferSourceMixin (line 14) | @Pseudo
method initAcceleration (line 19) | @ModifyReturnValue(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/HandRendererMixin.java
class HandRendererMixin (line 26) | @Pseudo
method bindAcceleratedBufferSourceHand (line 36) | @Inject(
method startRenderSolidFast (line 46) | @Inject(
method stopRenderSolidFast (line 65) | @Inject(
method startRenderTranslucentFast (line 110) | @Inject(
method stopRenderTranslucentFast (line 129) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/IrisVertexFormatsMixin.java
class IrisVertexFormatsMixin (line 12) | @Pseudo
method addPaddingForEntityFormat (line 25) | @WrapOperation(
method addPaddingForGlyphFormat (line 51) | @WrapOperation(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/ModelToEntityVertexSerializerMixin.java
class ModelToEntityVertexSerializerMixin (line 9) | @Pseudo
method modifyMidU (line 13) | @ModifyConstant(
method modifyMidV (line 21) | @ModifyConstant(
method modifyTangent (line 29) | @ModifyConstant(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/ShadowRendererMixin.java
class ShadowRendererMixin (line 28) | @Pseudo
method bindAcceleratedShadowBufferSources (line 36) | @Inject(method = "<init>", at = @At("TAIL"))
method endAllBatches (line 56) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/plugin/IrisCompatMixinPlugin.java
class IrisCompatMixinPlugin (line 7) | public class IrisCompatMixinPlugin extends AbstractCompatMixinPlugin {
method getModIDs (line 9) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/vanilla/LevelRendererMixin.java
class LevelRendererMixin (line 21) | @Mixin(
method drawIrisAllCoreBuffers (line 27) | @Inject(
method drawIrisOpaqueCoreBuffers (line 72) | @Inject(
method drawIrisTranslucentCoreBuffers (line 109) | @Inject(
method preventDrawVanillaCoreBuffers (line 145) | @WrapOperation(
method deleteIrisBuffers (line 156) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/IrisPrograms.java
class IrisPrograms (line 14) | public class IrisPrograms {
method onLoadComputeShaders (line 33) | @SubscribeEvent
method onLoadCullingPrograms (line 136) | @SubscribeEvent
method onLoadPolygonProcessors (line 151) | @SubscribeEvent
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/culling/IrisCullingProgramDispatcher.java
class IrisCullingProgramDispatcher (line 16) | public class IrisCullingProgramDispatcher implements ICullingProgramDisp...
method IrisCullingProgramDispatcher (line 29) | public IrisCullingProgramDispatcher(VertexFormat.Mode mode, ResourceLo...
method dispatch (line 39) | @Override
method shouldCull (line 62) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/culling/IrisCullingProgramSelector.java
class IrisCullingProgramSelector (line 13) | public class IrisCullingProgramSelector implements ICullingProgramSelect...
method IrisCullingProgramSelector (line 19) | public IrisCullingProgramSelector(
method select (line 29) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/processing/IrisPolygonProcessor.java
class IrisPolygonProcessor (line 10) | public class IrisPolygonProcessor implements IPolygonProcessor {
method IrisPolygonProcessor (line 16) | public IrisPolygonProcessor(
method select (line 26) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/configs/FeatureConfig.java
class FeatureConfig (line 18) | public class FeatureConfig {
method FeatureConfig (line 101) | private FeatureConfig(ModConfigSpec.Builder builder) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/configs/FeatureStatus.java
type FeatureStatus (line 3) | public enum FeatureStatus {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/configs/PipelineSetting.java
type PipelineSetting (line 3) | public enum PipelineSetting {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/CoreBuffers.java
class CoreBuffers (line 8) | public class CoreBuffers {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/CoreBuffersProvider.java
class CoreBuffersProvider (line 11) | @ExtensionMethod(BufferSourceExtension.class)
method bindAcceleratedBufferSources (line 18) | public static void bindAcceleratedBufferSources(RenderBuffers renderBu...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/CoreFeature.java
class CoreFeature (line 23) | public class CoreFeature {
method isLoaded (line 35) | public static boolean isLoaded() {
method isConfigLoaded (line 39) | public static boolean isConfigLoaded() {
method isDebugContextEnabled (line 43) | public static boolean isDebugContextEnabled() {
method getPooledRingBufferSize (line 47) | public static int getPooledRingBufferSize() {
method getPooledBatchingSize (line 51) | public static int getPooledBatchingSize() {
method getCachedImageSize (line 55) | public static int getCachedImageSize() {
method getDynamicUVResolution (line 59) | public static float getDynamicUVResolution() {
method shouldForceAccelerateTranslucent (line 63) | public static boolean shouldForceAccelerateTranslucent() {
method shouldCacheIdenticalPose (line 67) | public static boolean shouldCacheIdenticalPose() {
method getMeshInfoCacheType (line 71) | public static MeshInfoCacheType getMeshInfoCacheType() {
method getLayerStorageType (line 75) | public static LayerStorageType getLayerStorageType() {
method getMeshMergeType (line 79) | public static MeshDataCacheType getMeshMergeType() {
method shouldUploadMeshImmediately (line 83) | public static boolean shouldUploadMeshImmediately() {
method shouldCacheDynamicRenderType (line 87) | public static boolean shouldCacheDynamicRenderType() {
method shouldRestoreBlockBuffers (line 91) | public static boolean shouldRestoreBlockBuffers() {
method getBlockBufferBindingCacheType (line 95) | public static BlockBufferBindingCacheType getBlockBufferBindingCacheTy...
method getShaderStorageStateType (line 99) | public static BlockBufferBindingStateType getShaderStorageStateType() {
method getViewportBindingStateType (line 103) | public static ViewportBindingStateType getViewportBindingStateType() {
method getScissorBindingStateType (line 107) | public static ScissorBindingStateType getScissorBindingStateType() {
method getAtomicCounterStateType (line 111) | public static BlockBufferBindingStateType getAtomicCounterStateType() {
method getShaderStorageRestoringRange (line 115) | public static int getShaderStorageRestoringRange() {
method getAtomicCounterRestoringRange (line 119) | public static int getAtomicCounterRestoringRange() {
method createMeshInfoCache (line 123) | public static IMeshInfoCache createMeshInfoCache() {
method createLayerStorage (line 127) | public static ILayerStorage createLayerStorage() {
method createMeshDataCache (line 131) | public static IMeshDataCache createMeshDataCache() {
method createViewportState (line 135) | public static IBindingState createViewportState() {
method createScissorState (line 139) | public static IBindingState createScissorState() {
method createShaderStorageState (line 143) | public static IBindingState createShaderStorageState() {
method createAtomicCounterState (line 147) | public static IBindingState createAtomicCounterState() {
method packDynamicUV (line 151) | public static int packDynamicUV(float u, float v) {
method unpackDynamicU (line 155) | public static float unpackDynamicU(int packedUV) {
method unpackDynamicV (line 159) | public static float unpackDynamicV(int packedUV) {
method disableForceTranslucentAcceleration (line 163) | public static void disableForceTranslucentAcceleration() {
method disableCacheIdenticalPose (line 167) | public static void disableCacheIdenticalPose() {
method forceEnableForceTranslucentAcceleration (line 171) | public static void forceEnableForceTranslucentAcceleration() {
method forceEnableCacheIdenticalPose (line 175) | public static void forceEnableCacheIdenticalPose() {
method forceSetForceTranslucentAcceleration (line 179) | public static void forceSetForceTranslucentAcceleration(FeatureStatus ...
method forceSetCacheIdenticalPose (line 183) | public static void forceSetCacheIdenticalPose(FeatureStatus status) {
method forceSetDefaultLayer (line 187) | public static void forceSetDefaultLayer(int defaultLayer) {
method forceSetDefaultLayerBeforeFunction (line 191) | public static void forceSetDefaultLayerBeforeFunction(Runnable runnabl...
method forceSetDefaultLayerAfterFunction (line 195) | public static void forceSetDefaultLayerAfterFunction(Runnable runnable) {
method resetForceTranslucentAcceleration (line 199) | public static void resetForceTranslucentAcceleration() {
method resetCacheIdenticalPose (line 203) | public static void resetCacheIdenticalPose() {
method resetDefaultLayer (line 207) | public static void resetDefaultLayer() {
method resetDefaultLayerBeforeFunction (line 211) | public static void resetDefaultLayerBeforeFunction() {
method resetDefaultLayerAfterFunction (line 215) | public static void resetDefaultLayerAfterFunction() {
method getForceTranslucentAccelerationSetting (line 219) | public static FeatureStatus getForceTranslucentAccelerationSetting() {
method getCacheIdenticalPoseSetting (line 223) | public static FeatureStatus getCacheIdenticalPoseSetting() {
method getDefaultLayer (line 227) | public static int getDefaultLayer() {
method getDefaultLayerBeforeFunction (line 231) | public static Runnable getDefaultLayerBeforeFunction() {
method getDefaultLayerAfterFunction (line 235) | public static Runnable getDefaultLayerAfterFunction() {
method getDefaultForceTranslucentAccelerationSetting (line 239) | public static FeatureStatus getDefaultForceTranslucentAccelerationSett...
method getDefaultCacheIdenticalPoseSetting (line 243) | public static FeatureStatus getDefaultCacheIdenticalPoseSetting() {
method setRenderingLevel (line 247) | public static void setRenderingLevel() {
method resetRenderingLevel (line 251) | public static void resetRenderingLevel() {
method setRenderingHand (line 255) | public static void setRenderingHand() {
method resetRenderingHand (line 259) | public static void resetRenderingHand() {
method setRenderingGui (line 263) | public static void setRenderingGui() {
method resetRenderingGui (line 267) | public static void resetRenderingGui() {
method isRenderingLevel (line 271) | public static boolean isRenderingLevel() {
method isRenderingHand (line 275) | public static boolean isRenderingHand() {
method isRenderingGui (line 279) | public static boolean isRenderingGui() {
method setGuiBatching (line 283) | public static void setGuiBatching() {
method resetGuiBatching (line 287) | public static void resetGuiBatching() {
method isGuiBatching (line 291) | public static boolean isGuiBatching() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/CoreStates.java
class CoreStates (line 5) | public class CoreStates {
method recordBuffers (line 10) | public static void recordBuffers() {
method restoreBuffers (line 17) | public static void restoreBuffers() {
method delete (line 24) | public static void delete() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/DebugOutput.java
class DebugOutput (line 6) | public class DebugOutput {
method enable (line 8) | public static void enable() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/GLConstants.java
class GLConstants (line 5) | public class GLConstants {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/Sync.java
class Sync (line 5) | public class Sync {
method Sync (line 9) | public Sync() {
method isSyncSet (line 13) | public boolean isSyncSet() {
method isSyncSignaled (line 17) | public boolean isSyncSignaled() {
method waitSync (line 21) | public void waitSync() {
method setSync (line 25) | public void setSync() {
method deleteSync (line 29) | public void deleteSync() {
method resetSync (line 33) | public void resetSync() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/VertexArray.java
class VertexArray (line 5) | public class VertexArray {
method VertexArray (line 9) | public VertexArray() {
method bind (line 13) | public void bind() {
method unbind (line 17) | public void unbind() {
method delete (line 21) | public void delete() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/EmptyServerBuffer.java
class EmptyServerBuffer (line 5) | public class EmptyServerBuffer implements IServerBuffer {
method getBufferHandle (line 9) | @Override
method delete (line 14) | @Override
method bind (line 19) | @Override
method data (line 24) | @Override
method bindBase (line 29) | @Override
method bindRange (line 34) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/IClientBuffer.java
type IClientBuffer (line 3) | public interface IClientBuffer {
method reserve (line 5) | long reserve (long bytes);
method reserve (line 6) | long reserve (long bytes, boolean occupied);
method addressAt (line 7) | long addressAt (long position);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/IServerBuffer.java
type IServerBuffer (line 5) | public interface IServerBuffer {
method getBufferHandle (line 7) | int getBufferHandle ();
method delete (line 8) | void delete ();
method data (line 9) | void data (ByteBuffer data);
method bind (line 10) | void bind (int target);
method bindBase (line 11) | void bindBase (int target, int index);
method bindRange (line 12) | void bindRange (int target, int index, long offset, long size);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/ImmutableBuffer.java
class ImmutableBuffer (line 7) | public class ImmutableBuffer implements IServerBuffer {
method ImmutableBuffer (line 11) | public ImmutableBuffer(long size, int bits) {
method copyTo (line 21) | public void copyTo(IServerBuffer buffer, long size) {
method map (line 31) | public long map(long length, int bits) {
method unmap (line 40) | public void unmap() {
method getBufferHandle (line 44) | @Override
method delete (line 49) | @Override
method bind (line 54) | @Override
method data (line 59) | @Override
method bindBase (line 68) | @Override
method bindRange (line 77) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/MappedBuffer.java
class MappedBuffer (line 7) | @Getter
method MappedBuffer (line 14) | public MappedBuffer(long initialSize) {
method reserve (line 25) | @Override
method reserve (line 47) | @Override
method addressAt (line 52) | @Override
method beforeExpand (line 57) | @Override
method afterExpand (line 62) | @Override
method reset (line 67) | public void reset() {
method getCurrent (line 71) | public long getCurrent() {
method map (line 75) | public long map() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/MutableBuffer.java
class MutableBuffer (line 7) | public class MutableBuffer extends MutableSize implements IServerBuffer {
method MutableBuffer (line 13) | public MutableBuffer(long initialSize, int bits) {
method doExpand (line 20) | @Override
method map (line 30) | public long map(int flags) {
method unmap (line 34) | public void unmap() {
method copyTo (line 38) | public void copyTo(IServerBuffer buffer) {
method getBufferHandle (line 42) | @Override
method delete (line 47) | @Override
method bind (line 52) | @Override
method data (line 57) | @Override
method bindBase (line 62) | @Override
method bindRange (line 67) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/programs/BarrierFlags.java
type BarrierFlags (line 5) | public enum BarrierFlags {
method BarrierFlags (line 14) | BarrierFlags(int flag) {
method getFlags (line 18) | public static int getFlags(BarrierFlags... barrierFlags) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/programs/ComputeProgram.java
class ComputeProgram (line 7) | @Getter
method ComputeProgram (line 13) | public ComputeProgram(int barrierFlags) {
method dispatch (line 18) | public void dispatch(
method setup (line 30) | public void setup() {
method linkProgram (line 34) | public void linkProgram() {
method isLinked (line 38) | public boolean isLinked() {
method useProgram (line 42) | public void useProgram() {
method resetProgram (line 46) | public void resetProgram() {
method attachShader (line 50) | public void attachShader(ComputeShader computeShader) {
method waitBarriers (line 54) | public void waitBarriers() {
method getUniformLocation (line 58) | public int getUniformLocation(String name) {
method getUniform (line 62) | public Uniform getUniform(String name) {
method getInfoLog (line 66) | public String getInfoLog() {
method delete (line 70) | public void delete() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/programs/ComputeShader.java
class ComputeShader (line 7) | @Getter
method ComputeShader (line 12) | public ComputeShader() {
method setShaderSource (line 16) | public void setShaderSource(String source) {
method compileShader (line 20) | public void compileShader() {
method isCompiled (line 24) | public boolean isCompiled() {
method getInfoLog (line 28) | public String getInfoLog() {
method delete (line 32) | public void delete() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/programs/Uniform.java
class Uniform (line 9) | public class Uniform {
method Uniform (line 14) | public Uniform(int programHandle, int uniformLocation) {
method uploadMatrix4f (line 19) | public void uploadMatrix4f(Matrix4f matrix) {
method uploadUnsignedInt (line 30) | public void uploadUnsignedInt(int value) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/EmptyBindingState.java
class EmptyBindingState (line 5) | public class EmptyBindingState implements IBindingState {
method record (line 9) | @Override
method restore (line 14) | @Override
method delete (line 19) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/FramebufferBindingState.java
class FramebufferBindingState (line 7) | public class FramebufferBindingState implements IBindingState {
method FramebufferBindingState (line 13) | public FramebufferBindingState() {
method record (line 19) | @Override
method restore (line 29) | @Override
method delete (line 39) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/IBindingState.java
type IBindingState (line 5) | public interface IBindingState {
method record (line 7) | void record (GuiGraphics graphics);
method restore (line 8) | void restore();
method delete (line 9) | void delete ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/BlockBufferBindingStateType.java
type BlockBufferBindingStateType (line 7) | public enum BlockBufferBindingStateType {
method create (line 12) | public IBindingState create(
method create (line 25) | public static IBindingState create(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/BufferBlockType.java
type BufferBlockType (line 8) | @Getter
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/SimpleBlockBufferBindingState.java
class SimpleBlockBufferBindingState (line 10) | public class SimpleBlockBufferBindingState implements IBindingState {
method SimpleBlockBufferBindingState (line 19) | public SimpleBlockBufferBindingState(
method record (line 36) | @Override
method restore (line 48) | @Override
method delete (line 75) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/BlockBufferBindingCacheType.java
type BlockBufferBindingCacheType (line 3) | public enum BlockBufferBindingCacheType {
method create (line 9) | public IBlockBufferBindingCache create(int size) {
method create (line 13) | public static IBlockBufferBindingCache create(BlockBufferBindingCacheT...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/FlattenBlockBufferBindingCache.java
class FlattenBlockBufferBindingCache (line 6) | public class FlattenBlockBufferBindingCache implements IBlockBufferBindi...
method FlattenBlockBufferBindingCache (line 16) | public FlattenBlockBufferBindingCache(int size) {
method delete (line 20) | @Override
method setup (line 25) | @Override
method getBuffer (line 39) | @Override
method getOffset (line 44) | @Override
method getSize (line 49) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/IBlockBufferBindingCache.java
type IBlockBufferBindingCache (line 3) | public interface IBlockBufferBindingCache {
method delete (line 5) | void delete ();
method setup (line 6) | void setup (int bindingPoint, int buffer, long offset, long size);
method getBuffer (line 7) | int getBuffer (int bindingPoint);
method getOffset (line 8) | long getOffset (int bindingPoint);
method getSize (line 9) | long getSize (int bindingPoint);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/SimpleBlockBufferBinding.java
class SimpleBlockBufferBinding (line 5) | @Getter
method SimpleBlockBufferBinding (line 12) | public SimpleBlockBufferBinding() {
method setupBlockBufferBinding (line 18) | public void setupBlockBufferBinding(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/SimpleBlockBufferBindingCache.java
class SimpleBlockBufferBindingCache (line 3) | public class SimpleBlockBufferBindingCache implements IBlockBufferBindin...
method SimpleBlockBufferBindingCache (line 7) | public SimpleBlockBufferBindingCache(int size) {
method delete (line 15) | @Override
method setup (line 20) | @Override
method getBuffer (line 34) | @Override
method getOffset (line 39) | @Override
method getSize (line 44) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/UnsafeMemoryBlockBufferBindingCache.java
class UnsafeMemoryBlockBufferBindingCache (line 6) | public class UnsafeMemoryBlockBufferBindingCache implements IBlockBuffer...
method UnsafeMemoryBlockBufferBindingCache (line 16) | public UnsafeMemoryBlockBufferBindingCache(int size) {
method delete (line 20) | @Override
method setup (line 25) | @Override
method getBuffer (line 39) | @Override
method getOffset (line 44) | @Override
method getSize (line 49) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/scissors/MojangScissorBindingState.java
class MojangScissorBindingState (line 9) | public class MojangScissorBindingState implements IBindingState {
method MojangScissorBindingState (line 18) | public MojangScissorBindingState() {
method record (line 26) | @Override
method restore (line 47) | @Override
method delete (line 68) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/scissors/OpenGLScissorBindingState.java
class OpenGLScissorBindingState (line 11) | public class OpenGLScissorBindingState implements IBindingState {
method OpenGLScissorBindingState (line 18) | public OpenGLScissorBindingState() {
method record (line 24) | @Override
method restore (line 31) | @Override
method delete (line 52) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/scissors/ScissorBindingStateType.java
type ScissorBindingStateType (line 6) | public enum ScissorBindingStateType {
method create (line 12) | public IBindingState create() {
method create (line 16) | public static IBindingState create(ScissorBindingStateType type) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/viewports/MojangViewportBindingState.java
class MojangViewportBindingState (line 7) | public class MojangViewportBindingState implements IBindingState {
method MojangViewportBindingState (line 14) | public MojangViewportBindingState() {
method record (line 21) | @Override
method restore (line 29) | @Override
method delete (line 45) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/viewports/OpenGLViewportBindingState.java
class OpenGLViewportBindingState (line 11) | public class OpenGLViewportBindingState implements IBindingState {
method OpenGLViewportBindingState (line 15) | public OpenGLViewportBindingState() {
method record (line 19) | @Override
method restore (line 24) | @Override
method delete (line 34) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/viewports/ViewportBindingStateType.java
type ViewportBindingStateType (line 6) | public enum ViewportBindingStateType {
method create (line 12) | public IBindingState create() {
method create (line 16) | public static IBindingState create(ViewportBindingStateType type) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/AcceleratedBufferSources.java
class AcceleratedBufferSources (line 16) | public class AcceleratedBufferSources implements IAcceleratedBufferSource {
method AcceleratedBufferSources (line 23) | private AcceleratedBufferSources(
method getBuffer (line 35) | @Override
method builder (line 61) | public static Builder builder() {
class Builder (line 65) | public static class Builder {
method Builder (line 73) | private Builder() {
method source (line 81) | public Builder source(AcceleratedBufferSource bufferSource) {
method mode (line 92) | public Builder mode(VertexFormat.Mode mode) {
method supportTranslucent (line 97) | public Builder supportTranslucent() {
method supportDynamic (line 102) | public Builder supportDynamic() {
method build (line 107) | public AcceleratedBufferSources build() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/EmptyAcceleratedBufferSources.java
class EmptyAcceleratedBufferSources (line 7) | public class EmptyAcceleratedBufferSources implements IAcceleratedBuffer...
method getBuffer (line 11) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/AcceleratedBufferSource.java
class AcceleratedBufferSource (line 28) | public class AcceleratedBufferSource implements IAcceleratedBufferSource {
method AcceleratedBufferSource (line 40) | public AcceleratedBufferSource(IBufferEnvironment bufferEnvironment) {
method delete (line 54) | public void delete() {
method getBuffer (line 58) | @Override
method prepareBuffers (line 127) | public void prepareBuffers() {
method drawBuffers (line 179) | public void drawBuffers(LayerDrawType drawType) {
method clearBuffers (line 230) | public void clearBuffers() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/AcceleratedRingBuffers.java
class AcceleratedRingBuffers (line 31) | public class AcceleratedRingBuffers extends LoopResetPool<AcceleratedRin...
method AcceleratedRingBuffers (line 33) | public AcceleratedRingBuffers(IBufferEnvironment bufferEnvironment) {
method create (line 37) | @Override
method reset (line 42) | @Override
method delete (line 47) | @Override
method test (line 52) | @Override
method init (line 57) | @Override
method fail (line 62) | @Override
class Buffers (line 78) | public static class Buffers {
method Buffers (line 103) | public Buffers(IBufferEnvironment bufferEnvironment) {
method reset (line 122) | public void reset() {
method bindTransformBuffers (line 138) | public void bindTransformBuffers() {
method bindElementBuffer (line 144) | public void bindElementBuffer(ElementBufferPool.ElementSegment eleme...
method bindDrawBuffers (line 155) | public void bindDrawBuffers() {
method prepare (line 172) | public void prepare() {
method unbindVertexArray (line 178) | public void unbindVertexArray() {
method getMeshUploader (line 182) | public MeshUploaderPool.MeshUploader getMeshUploader() {
method getVertexBuffer (line 186) | public StagingBufferPool.StagingBuffer getVertexBuffer() {
method getVaryingBuffer (line 190) | public StagingBufferPool.StagingBuffer getVaryingBuffer() {
method getElementSegment (line 194) | public ElementBufferPool.ElementSegment getElementSegment() {
method getDrawContext (line 198) | public DrawContextPool.DrawContext getDrawContext() {
method getVertexSize (line 202) | public long getVertexSize() {
method getSharing (line 206) | public int getSharing() {
method reserveSharing (line 210) | public long reserveSharing() {
method setUsed (line 214) | public void setUsed() {
method setInFlight (line 218) | public void setInFlight() {
method waitSync (line 223) | protected void waitSync() {
method isFree (line 236) | public boolean isFree() {
method delete (line 255) | public void delete() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/IAcceleratedBufferSource.java
type IAcceleratedBufferSource (line 6) | public interface IAcceleratedBufferSource {
method getBuffer (line 8) | AcceleratedBufferBuilder getBuffer(RenderType renderType, Runnable bef...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/IAccelerationHolder.java
type IAccelerationHolder (line 9) | public interface IAccelerationHolder {
method initAcceleration (line 11) | VertexConsumer initAcceleration(RenderType renderType, Supplier<IAc...
method getAccelerated (line 12) | AcceleratedBufferBuilder getAccelerated ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedBufferBuilder.java
class AcceleratedBufferBuilder (line 33) | @EqualsAndHashCode(onlyExplicitlyIncluded = true)
method AcceleratedBufferBuilder (line 86) | public AcceleratedBufferBuilder(
method addVertex (line 142) | @Override
method addVertex (line 161) | @Override
method setColor (line 194) | @Override
method setUv (line 213) | @Override
method setUv1 (line 225) | @Override
method setUv2 (line 237) | @Override
method setNormal (line 249) | @Override
method setNormal (line 278) | @Override
method addVertex (line 295) | @Override
method beginTransform (line 340) | @Override
method endTransform (line 361) | @Override
method addClientMesh (line 369) | @Override
method addServerMesh (line 404) | @Override
method doRender (line 457) | @Override
method decorate (line 478) | @Override
method isAccelerated (line 483) | @Override
method getRenderType (line 488) | @Override
method getAsLong (line 493) | @Override
method getVaryingSize (line 498) | public long getVaryingSize() {
method getTotalVertexCount (line 502) | public int getTotalVertexCount() {
method isEmpty (line 506) | public boolean isEmpty() {
method setOutdated (line 510) | public void setOutdated() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedEntityOutlineGenerator.java
class AcceleratedEntityOutlineGenerator (line 13) | @AllArgsConstructor
method getDelegate (line 21) | @Override
method decorate (line 26) | @Override
method addClientMesh (line 36) | @Override
method addServerMesh (line 55) | @Override
method addVertex (line 72) | @Override
method addVertex (line 86) | @Override
method setColor (line 102) | @Override
method setUv1 (line 112) | @Override
method setUv2 (line 117) | @Override
method setNormal (line 122) | @Override
method setNormal (line 131) | @Override
method addVertex (line 141) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedSheetedDecalTextureGenerator.java
class AcceleratedSheetedDecalTextureGenerator (line 14) | @ExtensionMethod (VertexConsumerExtension.class)
method AcceleratedSheetedDecalTextureGenerator (line 33) | public AcceleratedSheetedDecalTextureGenerator(
method getDelegate (line 52) | @Override
method decorate (line 57) | @Override
method addClientMesh (line 69) | @Override
method addServerMesh (line 88) | @Override
method addVertex (line 105) | @Override
method setUv (line 123) | @Override
method setColor (line 128) | @Override
method setNormal (line 139) | @Override
method addVertex (line 179) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedSpriteCoordinateExpander.java
class AcceleratedSpriteCoordinateExpander (line 9) | @AllArgsConstructor
method getDelegate (line 17) | @Override
method decorate (line 22) | @Override
method setUv (line 32) | @Override
method addVertex (line 41) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedVertexConsumerWrapper.java
class AcceleratedVertexConsumerWrapper (line 15) | @ExtensionMethod(VertexConsumerExtension.class)
method decorate (line 18) | @Override
method getDelegate (line 20) | protected abstract VertexConsumer getDelegate ();
method beginTransform (line 22) | @Override
method endTransform (line 29) | @Override
method isAccelerated (line 36) | @Override
method getRenderType (line 43) | @Override
method getLayout (line 50) | @Override
method getPolygonSize (line 57) | @Override
method addClientMesh (line 64) | @Override
method addServerMesh (line 83) | @Override
method doRender (line 100) | @Override
method addVertex (line 121) | @Override
method addVertex (line 135) | @Override
method setColor (line 151) | @Override
method setUv (line 167) | @Override
method setUv1 (line 173) | @Override
method setUv2 (line 179) | @Override
method setNormal (line 185) | @Override
method setNormal (line 199) | @Override
method addVertex (line 215) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/BufferSourceExtension.java
class BufferSourceExtension (line 5) | public class BufferSourceExtension {
method getAcceleratable (line 7) | public static IAcceleratableBufferSource getAcceleratable(MultiBufferS...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/IAcceleratableBufferSource.java
type IAcceleratableBufferSource (line 7) | public interface IAcceleratableBufferSource {
method getBoundAcceleratedBufferSource (line 9) | Supplier<IAcceleratedBufferSource> getBoundAcceleratedBufferSource ();
method isBufferSourceAcceleratable (line 10) | boolean isBufferSourceAcceleratable ();
method bindAcceleratedBufferSource (line 11) | void bindAcceleratedBufferSource (Supplier<IAcceleratedBufferS...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/IAcceleratedVertexConsumer.java
type IAcceleratedVertexConsumer (line 16) | public interface IAcceleratedVertexConsumer extends IBufferDecorator, IB...
method decorate (line 18) | @Override
method beginTransform (line 23) | default void beginTransform(Matrix4f transform, Matrix3f normal) {
method endTransform (line 27) | default void endTransform() {
method isAccelerated (line 31) | default boolean isAccelerated() {
method getRenderType (line 35) | default RenderType getRenderType() {
method getLayout (line 39) | default VertexLayout getLayout() {
method getPolygonSize (line 43) | default int getPolygonSize() {
method downloadTexture (line 47) | default NativeImage downloadTexture() {
method doRender (line 51) | default <T> void doRender(
method addClientMesh (line 63) | default void addClientMesh(
method addServerMesh (line 73) | default void addServerMesh(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/IBufferGraph.java
type IBufferGraph (line 3) | public interface IBufferGraph {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/VertexConsumerExtension.java
class VertexConsumerExtension (line 6) | public class VertexConsumerExtension {
method getAccelerated (line 8) | public static IAcceleratedVertexConsumer getAccelerated(VertexConsumer...
method getHolder (line 12) | public static IAccelerationHolder getHolder(VertexConsumer in) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/LayerDrawType.java
type LayerDrawType (line 3) | public enum LayerDrawType {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/functions/CustomLayerFunction.java
class CustomLayerFunction (line 8) | public class CustomLayerFunction implements ILayerFunction, Consumer<Run...
method CustomLayerFunction (line 13) | public CustomLayerFunction() {
method addBefore (line 18) | @Override
method addAfter (line 23) | @Override
method runBefore (line 28) | @Override
method runAfter (line 33) | @Override
method reset (line 38) | @Override
method accept (line 44) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/functions/EmptyLayerFunction.java
class EmptyLayerFunction (line 3) | public class EmptyLayerFunction implements ILayerFunction {
method addBefore (line 7) | @Override
method addAfter (line 12) | @Override
method runBefore (line 17) | @Override
method runAfter (line 22) | @Override
method reset (line 27) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/functions/ILayerFunction.java
type ILayerFunction (line 3) | public interface ILayerFunction {
method addBefore (line 5) | void addBefore (Runnable before);
method addAfter (line 6) | void addAfter (Runnable after);
method runBefore (line 7) | void runBefore ();
method runAfter (line 8) | void runAfter ();
method reset (line 9) | void reset ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/ILayerContexts.java
type ILayerContexts (line 5) | public interface ILayerContexts extends Iterable<DrawContextPool.DrawCon...
method add (line 7) | void add (DrawContextPool.DrawContext drawContext);
method reset (line 8) | void reset ();
method prepare (line 9) | void prepare ();
method isEmpty (line 10) | boolean isEmpty ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/ILayerStorage.java
type ILayerStorage (line 5) | public interface ILayerStorage {
method get (line 7) | ILayerContexts get (LayerDrawType type);
method reset (line 8) | void reset ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/LayerStorageType.java
type LayerStorageType (line 5) | public enum LayerStorageType {
method create (line 10) | public ILayerStorage create(int size) {
method create (line 14) | public static ILayerStorage create(LayerStorageType type, int size) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/SeparatedLayerStorage.java
class SeparatedLayerStorage (line 9) | public class SeparatedLayerStorage implements ILayerStorage {
method SeparatedLayerStorage (line 15) | public SeparatedLayerStorage(int size) {
method get (line 25) | @Override
method reset (line 30) | @Override
class AllContexts (line 36) | public class AllContexts implements ILayerContexts {
method add (line 38) | @Override
method reset (line 43) | @Override
method prepare (line 49) | @Override
method isEmpty (line 54) | @Override
method iterator (line 60) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/SimpleLayerContexts.java
class SimpleLayerContexts (line 8) | public class SimpleLayerContexts implements ILayerContexts {
method SimpleLayerContexts (line 12) | public SimpleLayerContexts(int size) {
method add (line 16) | @Override
method reset (line 21) | @Override
method prepare (line 26) | @Override
method isEmpty (line 31) | @Override
method iterator (line 36) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/empty/EmptyLayerContexts.java
class EmptyLayerContexts (line 9) | public class EmptyLayerContexts implements ILayerContexts {
method add (line 13) | @Override
method reset (line 18) | @Override
method prepare (line 23) | @Override
method isEmpty (line 28) | @Override
method iterator (line 33) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/empty/EmptyLayerStorage.java
class EmptyLayerStorage (line 7) | public class EmptyLayerStorage implements ILayerStorage {
method get (line 11) | @Override
method reset (line 16) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/sorted/SortedLayerContexts.java
class SortedLayerContexts (line 7) | public class SortedLayerContexts extends SimpleLayerContexts {
method SortedLayerContexts (line 9) | public SortedLayerContexts(int size) {
method prepare (line 13) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/sorted/SortedLayerStorage.java
class SortedLayerStorage (line 8) | public class SortedLayerStorage implements ILayerStorage {
method SortedLayerStorage (line 12) | public SortedLayerStorage(int size) {
method get (line 16) | @Override
method reset (line 21) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/DrawContextPool.java
class DrawContextPool (line 14) | public class DrawContextPool extends SimpleResetPool<DrawContextPool.Dra...
method DrawContextPool (line 16) | public DrawContextPool(int size) {
method create (line 20) | @Override
method reset (line 25) | @Override
method delete (line 30) | @Override
method delete (line 35) | @Override
method fail (line 40) | @Override
class DrawContext (line 46) | @Getter
method DrawContext (line 60) | public DrawContext(int index) {
method bindComputeBuffers (line 73) | public void bindComputeBuffers(ElementBufferPool.ElementSegment elem...
method drawElements (line 87) | public void drawElements(VertexFormat.Mode mode) {
method compareTo (line 95) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/ElementBufferPool.java
class ElementBufferPool (line 12) | public class ElementBufferPool extends SimpleResetPool<ElementBufferPool...
method ElementBufferPool (line 19) | public ElementBufferPool(int size) {
method prepare (line 28) | public void prepare() {
method reset (line 32) | @Override
method delete (line 39) | @Override
method create (line 44) | @Override
method reset (line 49) | @Override
method delete (line 54) | @Override
method test (line 59) | @Override
class ElementSegment (line 64) | @Getter
method ElementSegment (line 70) | public ElementSegment() {
method onExpand (line 76) | @Override
method reset (line 82) | private void reset() {
method allocateOffset (line 86) | public void allocateOffset() {
method countElements (line 90) | public void countElements(int count) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/StagingBufferPool.java
class StagingBufferPool (line 12) | public class StagingBufferPool extends SimpleResetPool<StagingBufferPool...
method StagingBufferPool (line 19) | public StagingBufferPool(int size) {
method prepare (line 28) | public void prepare() {
method delete (line 32) | @Override
method reset (line 38) | @Override
method create (line 45) | @Override
method reset (line 50) | @Override
method delete (line 55) | @Override
method test (line 60) | @Override
class StagingBuffer (line 65) | @Getter
method StagingBuffer (line 70) | public StagingBuffer() {
method onExpand (line 75) | @Override
method delete (line 81) | @Override
method reset (line 86) | @Override
method poolDelete (line 91) | private void poolDelete() {
method poolReset (line 95) | private void poolReset() {
method allocateOffset (line 99) | public void allocateOffset() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/FlattenMeshInfoCache.java
class FlattenMeshInfoCache (line 7) | public class FlattenMeshInfoCache implements IMeshInfoCache {
method FlattenMeshInfoCache (line 21) | public FlattenMeshInfoCache() {
method reset (line 27) | @Override
method delete (line 32) | @Override
method setup (line 37) | @Override
method getMeshCount (line 61) | @Override
method getSharing (line 66) | @Override
method getShouldCull (line 71) | @Override
method getColor (line 76) | @Override
method getLight (line 81) | @Override
method getOverlay (line 86) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/IMeshInfoCache.java
type IMeshInfoCache (line 3) | public interface IMeshInfoCache {
method reset (line 5) | void reset ();
method delete (line 6) | void delete ();
method setup (line 7) | void setup (int color, int light, int overlay, int sharing, int shou...
method getMeshCount (line 8) | int getMeshCount ();
method getSharing (line 9) | int getSharing (int i);
method getShouldCull (line 10) | int getShouldCull (int i);
method getColor (line 11) | int getColor (int i);
method getLight (line 12) | int getLight (int i);
method getOverlay (line 13) | int getOverlay (int i);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/MeshInfoCacheType.java
type MeshInfoCacheType (line 3) | public enum MeshInfoCacheType {
method create (line 9) | public IMeshInfoCache create() {
method create (line 13) | public static IMeshInfoCache create(MeshInfoCacheType type) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/MeshUploaderPool.java
class MeshUploaderPool (line 18) | public class MeshUploaderPool extends SimpleResetPool<MeshUploaderPool.M...
method MeshUploaderPool (line 20) | public MeshUploaderPool() {
method create (line 24) | @Override
method reset (line 29) | @Override
method delete (line 34) | @Override
method fail (line 39) | @Override
class MeshUploader (line 45) | public static class MeshUploader implements LongSupplier {
method MeshUploader (line 61) | public MeshUploader() {
method addUpload (line 75) | public void addUpload(
method upload (line 91) | public void upload() {
method bindBuffers (line 105) | public void bindBuffers() {
method reset (line 109) | public void reset() {
method delete (line 114) | public void delete() {
method getAsLong (line 119) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/SimpleMeshInfo.java
class SimpleMeshInfo (line 6) | @Getter
method SimpleMeshInfo (line 15) | public SimpleMeshInfo() {
method setupMeshInfo (line 22) | public void setupMeshInfo(
method reset (line 36) | @Override
method delete (line 41) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/SimpleMeshInfoCache.java
class SimpleMeshInfoCache (line 7) | public class SimpleMeshInfoCache implements IMeshInfoCache, IntFunction<...
method SimpleMeshInfoCache (line 11) | public SimpleMeshInfoCache() {
method setup (line 15) | @Override
method reset (line 32) | @Override
method delete (line 37) | @Override
method getMeshCount (line 42) | @Override
method getSharing (line 47) | @Override
method getShouldCull (line 52) | @Override
method getColor (line 57) | @Override
method getLight (line 62) | @Override
method getOverlay (line 67) | @Override
method apply (line 72) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/UnsafeMemoryMeshInfoCache.java
class UnsafeMemoryMeshInfoCache (line 6) | public class UnsafeMemoryMeshInfoCache implements IMeshInfoCache {
method UnsafeMemoryMeshInfoCache (line 20) | public UnsafeMemoryMeshInfoCache() {
method reset (line 26) | @Override
method delete (line 31) | @Override
method setup (line 36) | @Override
method getMeshCount (line 60) | @Override
method getSharing (line 65) | @Override
method getShouldCull (line 70) | @Override
method getColor (line 75) | @Override
method getLight (line 80) | @Override
method getOverlay (line 85) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/renderers/DecoratedRenderer.java
class DecoratedRenderer (line 8) | @AllArgsConstructor
method render (line 14) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/renderers/IAcceleratedRenderer.java
type IAcceleratedRenderer (line 7) | public interface IAcceleratedRenderer<T> {
method render (line 9) | void render(VertexConsumer vertexConsumer, T context, Matrix4f transfo...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/renderers/IBufferDecorator.java
type IBufferDecorator (line 5) | public interface IBufferDecorator {
method decorate (line 7) | VertexConsumer decorate(VertexConsumer buffer);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/renderers/SheetedDecalTextureRenderer.java
class SheetedDecalTextureRenderer (line 9) | public class SheetedDecalTextureRenderer<T> implements IAcceleratedRende...
method SheetedDecalTextureRenderer (line 16) | public SheetedDecalTextureRenderer(
method render (line 28) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/environments/IBufferEnvironment.java
type IBufferEnvironment (line 18) | public interface IBufferEnvironment {
method getVertexSize (line 20) | int getVertexSize ();
method getVertexFormats (line 21) | Set<VertexFormat> getVertexFormats ();
method getLayout (line 22) | VertexLayout getLayout ();
method getImmediateMeshBuffer (line 23) | IServerBuffer getImmediateMeshBuffer ();
method selectMeshUploadingProgramDispatcher (line 24) | MeshUploadingProgramDispatcher selectMeshUploadingProgramDispatcher();
method selectTransformProgramDispatcher (line 25) | TransformProgramDispatcher selectTransformProgramDispatcher ();
method getTransformProgramOverride (line 26) | ITransformShaderProgramOverride getTransformProgramOverride (Render...
method getUploadingProgramOverride (line 27) | IUploadingShaderProgramOverride getUploadingProgramOverride (Render...
method selectCullingProgramDispatcher (line 28) | ICullingProgramDispatcher selectCullingProgramDispatcher (RenderTyp...
method selectProcessingProgramDispatcher (line 29) | IPolygonProgramDispatcher selectProcessingProgramDispatcher (VertexF...
method isAccelerated (line 30) | boolean isAccelerated (VertexFormat vertexFormat);
method setupBufferState (line 31) | void setupBufferState ();
class Presets (line 33) | class Presets {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/environments/VanillaBufferEnvironment.java
class VanillaBufferEnvironment (line 25) | public class VanillaBufferEnvironment implements IBufferEnvironment {
method VanillaBufferEnvironment (line 36) | public VanillaBufferEnvironment(
method setupBufferState (line 55) | @Override
method getVertexFormats (line 60) | @Override
method getLayout (line 65) | @Override
method getImmediateMeshBuffer (line 70) | @Override
method getTransformProgramOverride (line 75) | @Override
method getUploadingProgramOverride (line 80) | @Override
method selectMeshUploadingProgramDispatcher (line 85) | @Override
method selectTransformProgramDispatcher (line 90) | @Override
method selectCullingProgramDispatcher (line 95) | @Override
method selectProcessingProgramDispatcher (line 100) | @Override
method isAccelerated (line 105) | @Override
method getVertexSize (line 110) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/IMemoryInterface.java
type IMemoryInterface (line 6) | public interface IMemoryInterface {
method putByte (line 8) | void putByte (long address, byte value);
method putShort (line 9) | void putShort (long address, short value);
method putInt (line 10) | void putInt (long address, int value);
method putInt (line 11) | void putInt (long address, long value);
method putFloat (line 12) | void putFloat (long address, float value);
method putNormal (line 13) | void putNormal (long address, float value);
method putMatrix4f (line 14) | void putMatrix4f (long address, Matrix4f value);
method putMatrix3f (line 15) | void putMatrix3f (long address, Matrix3f value);
method at (line 16) | IMemoryInterface at (int index);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/IMemoryLayout.java
type IMemoryLayout (line 3) | public interface IMemoryLayout<T> {
method getElement (line 5) | IMemoryInterface getElement (T element);
method getElementOffset (line 6) | int getElementOffset(T element);
method containsElement (line 7) | boolean containsElement (T element);
method getSize (line 8) | long getSize ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/NullMemoryInterface.java
class NullMemoryInterface (line 6) | public class NullMemoryInterface implements IMemoryInterface {
method putByte (line 10) | @Override
method putShort (line 15) | @Override
method putInt (line 20) | @Override
method putInt (line 25) | @Override
method putFloat (line 30) | @Override
method putNormal (line 35) | @Override
method putMatrix4f (line 40) | @Override
method putMatrix3f (line 45) | @Override
method at (line 50) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/SimpleDynamicMemoryInterface.java
class SimpleDynamicMemoryInterface (line 11) | @AllArgsConstructor
method putByte (line 17) | @Override
method putShort (line 22) | @Override
method putInt (line 27) | @Override
method putInt (line 32) | @Override
method putFloat (line 37) | @Override
method putNormal (line 42) | @Override
method putMatrix4f (line 47) | @Override
method putMatrix3f (line 52) | @Override
method at (line 57) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/SimpleMemoryInterface.java
class SimpleMemoryInterface (line 9) | @AllArgsConstructor
method putByte (line 15) | @Override
method putShort (line 20) | @Override
method putInt (line 25) | @Override
method putInt (line 30) | @Override
method putFloat (line 35) | @Override
method putNormal (line 40) | @Override
method putMatrix4f (line 45) | @Override
method putMatrix3f (line 50) | @Override
method at (line 55) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/VertexLayout.java
class VertexLayout (line 6) | public class VertexLayout implements IMemoryLayout<VertexFormatElement> {
method VertexLayout (line 13) | public VertexLayout(VertexFormat vertexFormat) {
method getElement (line 31) | @Override
method getElementOffset (line 36) | @Override
method containsElement (line 41) | @Override
method getSize (line 46) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/ClientMesh.java
class ClientMesh (line 13) | @AllArgsConstructor
method write (line 19) | @Override
class Builder (line 35) | public static class Builder implements IMesh.Builder {
method Builder (line 41) | private Builder() {
method build (line 45) | @Override
method build (line 86) | @Override
method delete (line 91) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/EmptyMesh.java
class EmptyMesh (line 5) | public class EmptyMesh implements IMesh {
method write (line 9) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/IMesh.java
type IMesh (line 6) | public interface IMesh {
method write (line 8) | void write(IAcceleratedVertexConsumer extension, int color, int light,...
type Builder (line 10) | interface Builder {
method build (line 12) | IMesh build (IMeshCollector collector);
method build (line 13) | IMesh build (IMeshCollector collector, boolean forceDense);
method delete (line 14) | void delete ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/MeshType.java
type MeshType (line 5) | @Getter
method MeshType (line 13) | MeshType(IMesh.Builder builder) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/ServerMesh.java
method write (line 29) | @Override
class Builder (line 44) | public static class Builder implements IMesh.Builder {
method Builder (line 55) | private Builder() {
method build (line 59) | @Override
method build (line 152) | @Override
method delete (line 157) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/collectors/CulledMeshCollector.java
class CulledMeshCollector (line 13) | public class CulledMeshCollector implements VertexConsumer, IMeshCollect...
method CulledMeshCollector (line 23) | public CulledMeshCollector(IAcceleratedVertexConsumer vertexConsumer) {
method flush (line 33) | @Override
method addVertex (line 62) | @Override
method setColor (line 77) | @Override
method setUv (line 96) | @Override
method setUv1 (line 108) | @Override
method setUv2 (line 113) | @Override
method setNormal (line 125) | @Override
method getData (line 141) | @Override
method getBuffer (line 146) | @Override
method getLayout (line 151) | @Override
method getVertexCount (line 156) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/collectors/IMeshCollector.java
type IMeshCollector (line 7) | public interface IMeshCollector {
method getData (line 9) | MeshData getData ();
method getBuffer (line 10) | ByteBufferBuilder getBuffer ();
method getLayout (line 11) | VertexLayout getLayout ();
method getVertexCount (line 12) | int getVertexCount ();
method flush (line 13) | void flush ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/collectors/SimpleMeshCollector.java
class SimpleMeshCollector (line 13) | public class SimpleMeshCollector implements VertexConsumer, IMeshCollect...
method SimpleMeshCollector (line 30) | public SimpleMeshCollector(VertexLayout layout) {
method flush (line 46) | @Override
method addVertex (line 51) | @Override
method setColor (line 77) | @Override
method setUv (line 103) | @Override
method setUv1 (line 117) | @Override
method setUv2 (line 122) | @Override
method setNormal (line 136) | @Override
method addVertex (line 159) | @Override
method getData (line 205) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/MeshData.java
class MeshData (line 10) | public class MeshData {
method MeshData (line 14) | private MeshData(int[] data) {
method builder (line 18) | public static Builder builder() {
class Builder (line 22) | public static class Builder {
method Builder (line 27) | public Builder() {
method setPosition (line 32) | public Builder setPosition(
method setColor (line 46) | public Builder setColor(
method setNormal (line 62) | public Builder setNormal(
method setUv (line 76) | public Builder setUv(float u, float v) {
method setUv2 (line 81) | public Builder setUv2(int u, int v) {
method addVertex (line 86) | public Builder addVertex() {
method addVertex (line 91) | public Builder addVertex(
method build (line 133) | public MeshData build() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/cache/IMeshDataCache.java
type IMeshDataCache (line 7) | public interface IMeshDataCache {
method set (line 9) | void set (VertexLayout layout, MeshData data, IMesh mesh);
method get (line 10) | IMesh get (VertexLayout layout, MeshData data);
method count (line 11) | int count (VertexLayout layout, MeshData data);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/cache/IgnoreMeshDataCache.java
class IgnoreMeshDataCache (line 7) | public class IgnoreMeshDataCache implements IMeshDataCache {
method set (line 9) | @Override
method get (line 18) | @Override
method count (line 23) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/cache/MeshDataCacheType.java
type MeshDataCacheType (line 3) | public enum MeshDataCacheType {
method create (line 8) | public IMeshDataCache create() {
method create (line 12) | public static IMeshDataCache create(MeshDataCacheType type) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/cache/MeshDataCaches.java
class MeshDataCaches (line 5) | public class MeshDataCaches {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/cache/SimpleMeshDataCache.java
class SimpleMeshDataCache (line 8) | public class SimpleMeshDataCache implements IMeshDataCache {
method SimpleMeshDataCache (line 13) | public SimpleMeshDataCache() {
method set (line 21) | @Override
method get (line 42) | @Override
method count (line 47) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/GameRendererMixin.java
class GameRendererMixin (line 15) | @Mixin(GameRenderer.class)
method startRenderItemInHandsFast (line 18) | @Inject(
method stopRenderItemInHandsFast (line 35) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/LevelRendererMixin.java
class LevelRendererMixin (line 25) | @Mixin(
method startRenderLevel (line 31) | @Inject(
method stopRenderLevel (line 48) | @Inject(
method endOutlineBatches (line 65) | @Inject(
method drawCoreBuffers (line 90) | @WrapOperation(
method deleteBuffers (line 127) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/BufferBuilderMixin.java
class BufferBuilderMixin (line 20) | @Mixin(BufferBuilder.class)
method initAcceleration (line 27) | @Unique
method isAccelerated (line 39) | @Unique
method doRender (line 45) | @Unique
method getAccelerated (line 67) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/BufferSourceMixin.java
class BufferSourceMixin (line 18) | @ExtensionMethod(VertexConsumerExtension .class)
method getBoundAcceleratedBufferSource (line 24) | @Unique
method isBufferSourceAcceleratable (line 30) | @Override
method bindAcceleratedBufferSource (line 35) | @Unique
method initAcceleration (line 41) | @ModifyReturnValue(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/EntityOutlineGeneratorMixin.java
class EntityOutlineGeneratorMixin (line 18) | @ExtensionMethod(VertexConsumerExtension .class)
method decorate (line 25) | @Unique
method isAccelerated (line 31) | @Unique
method doRender (line 39) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/MinecraftMixin.java
class MinecraftMixin (line 17) | @ExtensionMethod(BufferSourceExtension .class)
method bindAcceleratedBufferSources (line 25) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/OutlineBufferSourceMixin.java
class OutlineBufferSourceMixin (line 16) | @ExtensionMethod(BufferSourceExtension.class)
method getBoundAcceleratedBufferSource (line 22) | @Unique
method isBufferSourceAcceleratable (line 30) | @Unique
method bindAcceleratedBufferSource (line 38) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/SheetedDecalTextureGeneratorMixin.java
class SheetedDecalTextureGeneratorMixin (line 17) | @ExtensionMethod(VertexConsumerExtension .class)
method isAccelerated (line 26) | @Unique
method doRender (line 34) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/SpriteCoordinateExpanderMixin.java
class SpriteCoordinateExpanderMixin (line 19) | @ExtensionMethod(VertexConsumerExtension .class)
method decorate (line 26) | @Unique
method isAccelerated (line 32) | @Unique
method doRender (line 40) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/VertexConsumerMixin.java
type VertexConsumerMixin (line 8) | @Mixin(VertexConsumer.class)
method isAccelerated (line 11) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/VertexDoubleConsumerMixin.java
class VertexDoubleConsumerMixin (line 15) | @ExtensionMethod(VertexConsumerExtension.class)
method isAccelerated (line 22) | @Unique
method doRender (line 29) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/VertexMultipleConsumerMixin.java
class VertexMultipleConsumerMixin (line 18) | @ExtensionMethod(VertexConsumerExtension.class)
method constructor (line 26) | @Inject(
method isAccelerated (line 38) | @Unique
method doRender (line 44) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/compatibility/MinecraftMixin.java
class MinecraftMixin (line 12) | @Mixin(Minecraft.class)
method setDebugContext (line 15) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/compatibility/ParticleEngineMixin.java
class ParticleEngineMixin (line 18) | @Mixin(ParticleEngine.class)
method disableParticleAcceleration (line 21) | @Inject(
method resetParticleAcceleration (line 38) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/compatibility/RenderTypeMixin.java
class RenderTypeMixin (line 15) | @Mixin(RenderType.class)
method cacheEnergySwirl (line 21) | @WrapMethod(method = "energySwirl")
method cacheBreezeWind (line 35) | @WrapMethod(method = "breezeWind")
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/compatibility/WindowMixin.java
class WindowMixin (line 8) | @Mixin(Window.class)
method modifyGlMajorVersion (line 11) | @ModifyConstant(
method modifyGlMinorVersion (line 22) | @ModifyConstant(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/ComputeShaderProgramLoader.java
class ComputeShaderProgramLoader (line 19) | public class ComputeShaderProgramLoader extends SimplePreparableReloadLi...
method prepare (line 25) | @Override
method apply (line 57) | @Override
method getProgram (line 98) | public static ComputeProgram getProgram(ResourceLocation resourceLocat...
method delete (line 108) | public static void delete() {
method isProgramsLoaded (line 116) | public static boolean isProgramsLoaded() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/ComputeShaderPrograms.java
class ComputeShaderPrograms (line 12) | @EventBusSubscriber(
method onLoadComputeShaders (line 36) | @SubscribeEvent
method onRegisterResourceReloadListeners (line 137) | @SubscribeEvent
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/LoadComputeShaderEvent.java
class LoadComputeShaderEvent (line 11) | public class LoadComputeShaderEvent extends Event implements IModBusEvent {
method LoadComputeShaderEvent (line 15) | public LoadComputeShaderEvent() {
method loadComputeShader (line 19) | public void loadComputeShader(
method build (line 27) | public Map<ResourceLocation, ComputeShaderDefinition> build() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/culling/ICullingProgramDispatcher.java
type ICullingProgramDispatcher (line 5) | public interface ICullingProgramDispatcher {
method dispatch (line 7) | int dispatch (AcceleratedBufferBuilder builder);
method shouldCull (line 8) | boolean shouldCull ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/culling/ICullingProgramSelector.java
type ICullingProgramSelector (line 5) | public interface ICullingProgramSelector {
method select (line 7) | ICullingProgramDispatcher select(RenderType renderType);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/culling/LoadCullingProgramSelectorEvent.java
class LoadCullingProgramSelectorEvent (line 10) | public class LoadCullingProgramSelectorEvent extends Event implements IM...
method LoadCullingProgramSelectorEvent (line 16) | public LoadCullingProgramSelectorEvent(VertexFormat vertexFormat) {
method loadFor (line 21) | public void loadFor(VertexFormat vertexFormat, UnaryOperator<ICullingP...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/culling/PassThroughCullingProgramDispatcher.java
class PassThroughCullingProgramDispatcher (line 11) | public class PassThroughCullingProgramDispatcher implements ICullingProg...
method PassThroughCullingProgramDispatcher (line 23) | public PassThroughCullingProgramDispatcher(VertexFormat.Mode mode, Res...
method dispatch (line 30) | @Override
method shouldCull (line 48) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/culling/PassThroughCullingProgramSelector.java
class PassThroughCullingProgramSelector (line 5) | public class PassThroughCullingProgramSelector implements ICullingProgra...
method select (line 9) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/dispatchers/EmptyProgramDispatcher.java
class EmptyProgramDispatcher (line 5) | public class EmptyProgramDispatcher implements IPolygonProgramDispatcher {
method dispatch (line 9) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/dispatchers/FixedPolygonProgramDispatcher.java
class FixedPolygonProgramDispatcher (line 10) | public class FixedPolygonProgramDispatcher implements IPolygonProgramDis...
method FixedPolygonProgramDispatcher (line 20) | public FixedPolygonProgramDispatcher(VertexFormat.Mode mode, ResourceL...
method dispatch (line 27) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/dispatchers/IPolygonProgramDispatcher.java
type IPolygonProgramDispatcher (line 5) | public interface IPolygonProgramDispatcher {
method dispatch (line 7) | int dispatch(AcceleratedBufferBuilder builder);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/dispatchers/MeshUploadingProgramDispatcher.java
class MeshUploadingProgramDispatcher (line 22) | public class MeshUploadingProgramDispatcher {
method MeshUploadingProgramDispatcher (line 35) | public MeshUploadingProgramDispatcher() {
method dispatch (line 42) | public void dispatch(Collection<AcceleratedBufferBuilder> builders, Ac...
method resetOverride (line 187) | public void resetOverride() {
class Default (line 191) | public static class Default implements IUploadingShaderProgramOverride {
method Default (line 201) | public Default(ResourceLocation key, long meshInfoSize) {
method getMeshInfoSize (line 211) | @Override
method useProgram (line 216) | @Override
method setupProgram (line 221) | @Override
method uploadMeshInfo (line 226) | @Override
method dispatchUploading (line 231) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/dispatchers/TransformProgramDispatcher.java
class TransformProgramDispatcher (line 15) | public class TransformProgramDispatcher {
method TransformProgramDispatcher (line 25) | public TransformProgramDispatcher() {
method dispatch (line 30) | public void dispatch(Collection<AcceleratedBufferBuilder> builders) {
method dispatch (line 60) | public int dispatch(
method resetOverride (line 86) | public void resetOverride() {
class Default (line 90) | public static class Default implements ITransformShaderProgramOverride {
method Default (line 98) | public Default(ResourceLocation key, long varyingSize) {
method getVaryingSize (line 106) | @Override
method useProgram (line 111) | @Override
method setupProgram (line 116) | @Override
method uploadVarying (line 121) | @Override
method dispatchTransform (line 126) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/IShaderProgramOverride.java
type IShaderProgramOverride (line 3) | public interface IShaderProgramOverride {
method useProgram (line 5) | void useProgram ();
method setupProgram (line 6) | void setupProgram ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/IShaderProgramOverrides.java
type IShaderProgramOverrides (line 7) | public interface IShaderProgramOverrides {
method getTransformOverrides (line 9) | Map<RenderType, ITransformShaderProgramOverride> getTransformOverrides();
method getUploadingOverrides (line 10) | Map<RenderType, IUploadingShaderProgramOverride> getUploadingOverrides();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/ITransformShaderProgramOverride.java
type ITransformShaderProgramOverride (line 3) | public interface ITransformShaderProgramOverride extends IShaderProgramO...
method uploadVarying (line 5) | void uploadVarying (long varyingAddress, int offset);
method dispatchTransform (line 6) | int dispatchTransform (int vertexCount, int vertexOffset, int varying...
method getVaryingSize (line 7) | long getVaryingSize ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/IUploadingShaderProgramOverride.java
type IUploadingShaderProgramOverride (line 3) | public interface IUploadingShaderProgramOverride extends IShaderProgramO...
method uploadMeshInfo (line 5) | void uploadMeshInfo (long meshInfoAddress, int meshInfoIndex);
method dispatchUploading (line 6) | int dispatchUploading (int meshCount, int meshSize, int vertexOffse...
method getMeshInfoSize (line 7) | long getMeshInfoSize ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/LoadShaderProgramOverridesEvent.java
class LoadShaderProgramOverridesEvent (line 10) | public class LoadShaderProgramOverridesEvent extends Event implements IM...
method LoadShaderProgramOverridesEvent (line 16) | public LoadShaderProgramOverridesEvent(VertexFormat vertexFormat) {
method loadFor (line 22) | public void loadFor(
method getOverrides (line 36) | public IShaderProgramOverrides getOverrides(ITransformShaderProgramOve...
class ProgramOverrides (line 45) | @Getter
method ProgramOverrides (line 51) | public ProgramOverrides(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/OverrideProgramType.java
type OverrideProgramType (line 3) | public enum OverrideProgramType {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/processing/EmptyPolygonProcessor.java
class EmptyPolygonProcessor (line 7) | public class EmptyPolygonProcessor implements IPolygonProcessor {
method select (line 11) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/processing/IPolygonProcessor.java
type IPolygonProcessor (line 6) | public interface IPolygonProcessor {
method select (line 8) | IPolygonProgramDispatcher select(VertexFormat.Mode mode);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/programs/processing/LoadPolygonProcessorEvent.java
class LoadPolygonProcessorEvent (line 10) | public class LoadPolygonProcessorEvent extends Event implements IModBusE...
method LoadPolygonProcessorEvent (line 16) | public LoadPolygonProcessorEvent(VertexFormat vertexFormat) {
method loadFor (line 21) | public void loadFor(VertexFormat vertexFormat, UnaryOperator<IPolygonP...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/CullerUtils.java
class CullerUtils (line 8) | public class CullerUtils {
method shouldCull (line 10) | public static boolean shouldCull(Vertex[] vertices, NativeImage textur...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/DirectionUtils.java
class DirectionUtils (line 5) | public class DirectionUtils {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/EmptyIterator.java
class EmptyIterator (line 6) | public class EmptyIterator<T> implements Iterator<T> {
method hasNext (line 10) | @Override
method next (line 15) | @Override
method of (line 20) | @SuppressWarnings("unchecked")
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/FastColorUtils.java
class FastColorUtils (line 3) | public class FastColorUtils {
method convert (line 5) | public static int convert(int color) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/FuzzyMatrix4f.java
class FuzzyMatrix4f (line 6) | public class FuzzyMatrix4f extends Matrix4f {
method FuzzyMatrix4f (line 8) | public FuzzyMatrix4f(Matrix4f matrix) {
method FuzzyMatrix4f (line 12) | public FuzzyMatrix4f() {
method hashCode (line 16) | @Override
method equals (line 21) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/IntArrayHashStrategy.java
class IntArrayHashStrategy (line 7) | public class IntArrayHashStrategy implements Hash.Strategy<int[]> {
method hashCode (line 11) | @Override
method equals (line 16) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/LoopResetPool.java
class LoopResetPool (line 3) | public abstract class LoopResetPool<T, C> extends SimpleResetPool<T, C> {
method LoopResetPool (line 5) | public LoopResetPool(int size, C context) {
method get (line 9) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/MemUtils.java
class MemUtils (line 8) | public class MemUtils {
method putNormal (line 10) | public static void putNormal(long address, float value) {
method putMatrix3f (line 14) | public static void putMatrix3f(long address, Matrix3f matrix) {
method putMatrix4f (line 28) | public static void putMatrix4f(long address, Matrix4f matrix) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/MutableSize.java
class MutableSize (line 5) | @Getter
method MutableSize (line 11) | public MutableSize(long initialSize) {
method expand (line 16) | public void expand(long bytes) {
method onExpand (line 31) | public void onExpand(long bytes) {
method doExpand (line 35) | public void doExpand(long size, long bytes) {
method beforeExpand (line 39) | public void beforeExpand() {
method afterExpand (line 43) | public void afterExpand() {
method resize (line 47) | public void resize(long atLeast) {
method resizeTo (line 51) | public void resizeTo(long newBufferSize) {
method resetResized (line 55) | public void resetResized() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/PackedVector2i.java
class PackedVector2i (line 3) | public class PackedVector2i {
method pack (line 5) | public static int pack(float u, float v) {
method pack (line 9) | public static int pack(int u, int v) {
method unpackU (line 13) | public static int unpackU(int packed) {
method unpackV (line 17) | public static int unpackV(int packed) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/PoseStackExtension.java
class PoseStackExtension (line 7) | public class PoseStackExtension {
method setPose (line 9) | public static void setPose(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/RegistryFilter.java
class RegistryFilter (line 12) | public class RegistryFilter {
method filterValues (line 14) | public static <T> Set<T> filterValues(Registry<T> registry, List<? ext...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/RenderTypeUtils.java
class RenderTypeUtils (line 12) | public class RenderTypeUtils {
method getTextureLocation (line 16) | public static ResourceLocation getTextureLocation(RenderType renderTyp...
method isCulled (line 32) | public static boolean isCulled(RenderType renderType) {
method isDynamic (line 47) | public static boolean isDynamic(RenderType renderType) {
method hasDepth (line 61) | public static boolean hasDepth(RenderType renderType) {
method withDepth (line 75) | public static RenderType withDepth(RenderType renderType) {
method getDrawType (line 124) | public static LayerDrawType getDrawType(RenderType renderType) {
method isTranslucent (line 128) | public static boolean isTranslucent(RenderType renderType) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/ResourceLocationUtils.java
class ResourceLocationUtils (line 6) | public class ResourceLocationUtils {
method create (line 8) | public static ResourceLocation create(String path) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/SimpleCachedArray.java
class SimpleCachedArray (line 5) | public class SimpleCachedArray<T extends SimpleCachedArray.Element> exte...
method SimpleCachedArray (line 7) | public SimpleCachedArray(int size, IntFunction<T> initializer) {
method create (line 11) | @Override
method reset (line 16) | @Override
method delete (line 21) | @Override
method fail (line 26) | @Override
type Element (line 32) | public interface Element {
method reset (line 34) | void reset ();
method delete (line 35) | void delete ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/SimpleResetPool.java
class SimpleResetPool (line 7) | public abstract class SimpleResetPool<T, C> {
method SimpleResetPool (line 15) | public SimpleResetPool(int size, C context) {
method create (line 27) | protected abstract T create (C context, int i);
method reset (line 28) | protected abstract void reset (T t);
method delete (line 29) | protected abstract void delete (T t);
method get (line 31) | @SuppressWarnings("unchecked")
method reset (line 45) | @SuppressWarnings("unchecked")
method delete (line 54) | @SuppressWarnings("unchecked")
method expand (line 61) | protected void expand() {
method at (line 72) | @SuppressWarnings("unchecked")
method get (line 77) | public T get() {
method init (line 81) | public void init(T t) {
method fail (line 85) | protected T fail(boolean force) {
method fail (line 89) | public T fail() {
method test (line 93) | protected boolean test(T t) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/SimpleTextureTarget.java
class SimpleTextureTarget (line 6) | public class SimpleTextureTarget extends TextureTarget {
method SimpleTextureTarget (line 8) | public SimpleTextureTarget(boolean useDepth) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/TextureUtils.java
class TextureUtils (line 20) | @EventBusSubscriber(
method onResourceManagerReload (line 30) | @Override
method onRegisterClientReloadListener (line 35) | @SubscribeEvent
method downloadTexture (line 40) | public static NativeImage downloadTexture(RenderType renderType, int m...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/core/utils/Vertex.java
class Vertex (line 12) | @Getter
method Vertex (line 26) | public Vertex() {
method Vertex (line 34) | public Vertex(Vertex vertex) {
method getPackedLight (line 42) | public int getPackedLight() {
method getPackedColor (line 46) | public int getPackedColor() {
method getPackedNormal (line 55) | public int getPackedNormal() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/culling/OrientationCullingFeature.java
class OrientationCullingFeature (line 9) | public class OrientationCullingFeature {
method isEnabled (line 13) | public static boolean isEnabled() {
method shouldIgnoreCullState (line 17) | public static boolean shouldIgnoreCullState() {
method shouldCull (line 21) | public static boolean shouldCull() {
method disableCulling (line 25) | public static void disableCulling() {
method forceEnableCulling (line 29) | public static void forceEnableCulling() {
method forceSetCulling (line 33) | public static void forceSetCulling(FeatureStatus status) {
method resetCullingSetting (line 37) | public static void resetCullingSetting() {
method getCullingSetting (line 41) | public static FeatureStatus getCullingSetting() {
method getDefaultCullingSetting (line 45) | public static FeatureStatus getDefaultCullingSetting() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/culling/OrientationCullingProgramDispatcher.java
class OrientationCullingProgramDispatcher (line 12) | public class OrientationCullingProgramDispatcher implements ICullingProg...
method OrientationCullingProgramDispatcher (line 25) | public OrientationCullingProgramDispatcher(VertexFormat.Mode mode, Res...
method dispatch (line 35) | @Override
method shouldCull (line 56) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/culling/OrientationCullingProgramSelector.java
class OrientationCullingProgramSelector (line 10) | public class OrientationCullingProgramSelector implements ICullingProgra...
method OrientationCullingProgramSelector (line 16) | public OrientationCullingProgramSelector(
method select (line 26) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/culling/OrientationCullingPrograms.java
class OrientationCullingPrograms (line 15) | @EventBusSubscriber(
method onLoadComputeShaders (line 31) | @SubscribeEvent
method onLoadCullingPrograms (line 90) | @SubscribeEvent(priority = EventPriority.HIGH)
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/emf/IEMFModelVariant.java
type IEMFModelVariant (line 3) | public interface IEMFModelVariant {
method setCurrentVariant (line 5) | void setCurrentVariant(int variant);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/emf/mixins/EMFModelPartMixin.java
class EMFModelPartMixin (line 32) | @ExtensionMethod(VertexConsumerExtension.class)
method renderLikeVanillaFast (line 41) | @Inject(
method compileFast (line 76) | @Inject(
method render (line 111) | @Unique
method setCurrentVariant (line 207) | @Unique
method renderFast (line 213) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/emf/mixins/EMFModelPartWithStateMixin.java
class EMFModelPartWithStateMixin (line 11) | @Mixin(EMFModelPartWithState.class)
method resetEmfVariant (line 16) | @Inject(
method setEmfVariant (line 24) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/entities/AcceleratedEntityRenderingFeature.java
class AcceleratedEntityRenderingFeature (line 11) | public class AcceleratedEntityRenderingFeature {
method isEnabled (line 16) | public static boolean isEnabled() {
method shouldUseAcceleratedPipeline (line 20) | public static boolean shouldUseAcceleratedPipeline() {
method shouldAccelerateInGui (line 24) | public static boolean shouldAccelerateInGui() {
method getMeshType (line 28) | public static MeshType getMeshType() {
method useVanillaPipeline (line 32) | public static void useVanillaPipeline() {
method dontAccelerateInGui (line 36) | public static void dontAccelerateInGui() {
method forceUseAcceleratedPipeline (line 40) | public static void forceUseAcceleratedPipeline() {
method forceAccelerateInGui (line 44) | public static void forceAccelerateInGui() {
method forceSetPipeline (line 48) | public static void forceSetPipeline(PipelineSetting pipeline) {
method forceSetGuiAcceleration (line 52) | public static void forceSetGuiAcceleration(FeatureStatus status) {
method resetPipeline (line 56) | public static void resetPipeline() {
method resetGuiAcceleration (line 60) | public static void resetGuiAcceleration() {
method getPipelineSetting (line 64) | public static PipelineSetting getPipelineSetting() {
method getGuiAccelerationSetting (line 68) | public static FeatureStatus getGuiAccelerationSetting() {
method getDefaultPipelineSetting (line 72) | public static PipelineSetting getDefaultPipelineSetting() {
method getDefaultGuiAccelerationSetting (line 76) | public static FeatureStatus getDefaultGuiAccelerationSetting() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/entities/AcceleratedEntityShadowRenderer.java
class AcceleratedEntityShadowRenderer (line 18) | @ExtensionMethod(VertexConsumerExtension.class)
method render (line 21) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/entities/mixins/EntityRenderDispatcherMixin.java
class EntityRenderDispatcherMixin (line 24) | @ExtensionMethod(VertexConsumerExtension.class)
method fastBlockShadow (line 34) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/entities/mixins/InventoryScreenMixin.java
class InventoryScreenMixin (line 19) | @ExtensionMethod(BufferSourceExtension .class)
method renderEntityInInventoryFast (line 23) | @WrapMethod(method = "lambda$renderEntityInInventory$1")
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/filter/FilterFeature.java
class FilterFeature (line 22) | public class FilterFeature {
method isEnabled (line 44) | public static boolean isEnabled() {
method testMenu (line 48) | public static boolean testMenu(AbstractContainerMenu menu) {
method testEntity (line 52) | public static boolean testEntity(Entity entity) {
method testBlockEntity (line 56) | public static boolean testBlockEntity(BlockEntity entity) {
method testItem (line 60) | public static boolean testItem(ItemStack itemStack) {
method testStage (line 64) | public static boolean testStage(RenderLevelStageEvent.Stage stage) {
method shouldFilterMenus (line 68) | public static boolean shouldFilterMenus() {
method shouldFilterEntities (line 72) | public static boolean shouldFilterEntities() {
method shouldFilterBlockEntities (line 76) | public static boolean shouldFilterBlockEntities() {
method shouldFilterItems (line 80) | public static boolean shouldFilterItems() {
method shouldFilterStage (line 84) | public static boolean shouldFilterStage() {
method getMenuFilterType (line 88) | public static FilterType getMenuFilterType() {
method getEntityFilterType (line 92) | public static FilterType getEntityFilterType() {
method getBlockEntityFilterType (line 96) | public static FilterType getBlockEntityFilterType() {
method getItemFilterType (line 100) | public static FilterType getItemFilterType() {
method getStageFilterType (line 104) | public static FilterType getStageFilterType() {
method disableMenuFilter (line 108) | public static void disableMenuFilter() {
method disableEntityFilter (line 112) | public static void disableEntityFilter() {
method disableBlockEntityFilter (line 116) | public static void disableBlockEntityFilter() {
method disableItemFilter (line 120) | public static void disableItemFilter() {
method disableStageFilter (line 124) | public static void disableStageFilter() {
method forceEnableMenuFilter (line 128) | public static void forceEnableMenuFilter() {
method forceEnableEntityFilter (line 132) | public static void forceEnableEntityFilter() {
method forceEnableBlockEntityFilter (line 136) | public static void forceEnableBlockEntityFilter() {
method forceEnableItemFilter (line 140) | public static void forceEnableItemFilter() {
method forceEnableStageFilter (line 144) | public static void forceEnableStageFilter() {
method forceSetMenuFilter (line 148) | public static void forceSetMenuFilter(FeatureStatus status) {
method forceSetEntityFilter (line 152) | public static void forceSetEntityFilter(FeatureStatus status) {
method forceSetBlockEntityFilter (line 156) | public static void forceSetBlockEntityFilter(FeatureStatus status) {
method forceSetItemFilter (line 160) | public static void forceSetItemFilter(FeatureStatus status) {
method forceSetStageFilter (line 164) | public static void forceSetStageFilter(FeatureStatus status) {
method resetMenuFilter (line 168) | public static void resetMenuFilter() {
method resetEntityFilter (line 172) | public static void resetEntityFilter() {
method resetBlockEntityFilter (line 176) | public static void resetBlockEntityFilter() {
method resetItemFilter (line 180) | public static void resetItemFilter() {
method resetStageFilter (line 184) | public static void resetStageFilter() {
method getMenuFilterSetting (line 188) | public static FeatureStatus getMenuFilterSetting() {
method getEntityFilterSetting (line 192) | public static FeatureStatus getEntityFilterSetting() {
method getBlockEntityFilterSetting (line 196) | public static FeatureStatus getBlockEntityFilterSetting() {
method getItemFilterSetting (line 200) | public static FeatureStatus getItemFilterSetting() {
method getStageFilterSetting (line 204) | public static FeatureStatus getStageFilterSetting() {
method getDefaultMenuFilterSetting (line 208) | public static FeatureStatus getDefaultMenuFilterSetting() {
method getDefaultEntityFilterSetting (line 212) | public static FeatureStatus getDefaultEntityFilterSetting() {
method getDefaultBlockEntityFilterSetting (line 216) | public static FeatureStatus getDefaultBlockEntityFilterSetting() {
method getDefaultItemFilterSetting (line 220) | public static FeatureStatus getDefaultItemFilterSetting() {
method getDefaultStageFilterSetting (line 224) | public static FeatureStatus getDefaultStageFilterSetting() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/filter/FilterType.java
type FilterType (line 5) | public enum FilterType {
method test (line 10) | public <T> boolean test(Set<T> values, T value) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/filter/mixins/AbstractContainerScreenMixin.java
class AbstractContainerScreenMixin (line 16) | @Mixin(value = AbstractContainerScreen.class)
method startBatching (line 21) | @WrapMethod(method = "render")
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/filter/mixins/BlockEntityRenderDispatcherMixin.java
class BlockEntityRenderDispatcherMixin (line 14) | @Mixin(BlockEntityRenderDispatcher.class)
method filterBlockEntity (line 17) | @WrapOperation(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/filter/mixins/ClientHooksMixin.java
class ClientHooksMixin (line 16) | @Mixin(ClientHooks.class)
method startRenderLevelStage (line 19) | @WrapOperation(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/filter/mixins/ItemRendererMixin.java
class ItemRendererMixin (line 17) | @Mixin(
method filterItem (line 23) | @WrapOperation(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/filter/mixins/LevelRendererMixin.java
class LevelRendererMixin (line 16) | @Mixin(LevelRenderer.class)
method filterEntity (line 19) | @WrapOperation(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/ftb/mixins/BaseScreenMixin.java
class BaseScreenMixin (line 13) | @Pseudo
method startBatching (line 17) | @Inject(
method stopBatching (line 44) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/geckolib/mixins/GeoBoneMixin.java
class GeoBoneMixin (line 26) | @Pseudo
method render (line 36) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/geckolib/mixins/GeoRendererMixin.java
type GeoRendererMixin (line 18) | @Pseudo
method renderCubesOfBoneFast (line 23) | @SuppressWarnings ("unchecked")
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/AcceleratedItemRenderingFeature.java
class AcceleratedItemRenderingFeature (line 11) | public class AcceleratedItemRenderingFeature {
method isEnabled (line 18) | public static boolean isEnabled() {
method shouldUseAcceleratedPipeline (line 22) | public static boolean shouldUseAcceleratedPipeline() {
method shouldBakeMeshForQuad (line 26) | public static boolean shouldBakeMeshForQuad() {
method shouldAccelerateInHand (line 30) | public static boolean shouldAccelerateInHand() {
method shouldAccelerateInGui (line 34) | public static boolean shouldAccelerateInGui() {
method shouldUseGuiItemBatching (line 38) | public static boolean shouldUseGuiItemBatching() {
method shouldMergeGuiItemBatches (line 42) | public static boolean shouldMergeGuiItemBatches() {
method getMeshType (line 46) | public static MeshType getMeshType() {
method useVanillaPipeline (line 50) | public static void useVanillaPipeline() {
method dontBakeMeshForQuad (line 54) | public static void dontBakeMeshForQuad() {
method dontAccelerateInHand (line 58) | public static void dontAccelerateInHand() {
method dontAccelerateInGui (line 62) | public static void dontAccelerateInGui() {
method forceUseAcceleratedPipeline (line 66) | public static void forceUseAcceleratedPipeline() {
method forceBakeMeshForQuad (line 70) | public static void forceBakeMeshForQuad() {
method forceAccelerateInHand (line 74) | public static void forceAccelerateInHand() {
method forceAccelerateInGui (line 78) | public static void forceAccelerateInGui() {
method forceSetPipeline (line 82) | public static void forceSetPipeline(PipelineSetting pipeline) {
method forceSetBakeQuadForMesh (line 86) | public static void forceSetBakeQuadForMesh(FeatureStatus status) {
method forceSetHandAcceleration (line 90) | public static void forceSetHandAcceleration(FeatureStatus status) {
method forceSetGUIAcceleration (line 94) | public static void forceSetGUIAcceleration(FeatureStatus status) {
method resetPipeline (line 98) | public static void resetPipeline() {
method resetBakeQuadForMesh (line 102) | public static void resetBakeQuadForMesh() {
method resetHandAcceleration (line 106) | public static void resetHandAcceleration() {
method resetGuiAcceleration (line 110) | public static void resetGuiAcceleration() {
method getPipelineSetting (line 114) | public static PipelineSetting getPipelineSetting() {
method getBakeQuadMeshSetting (line 118) | public static FeatureStatus getBakeQuadMeshSetting() {
method getHandAccelerationSetting (line 122) | public static FeatureStatus getHandAccelerationSetting() {
method getGUIAccelerationSetting (line 126) | public static FeatureStatus getGUIAccelerationSetting() {
method getDefaultPipelineSetting (line 130) | public static PipelineSetting getDefaultPipelineSetting() {
method getDefaultBakeQuadMeshSetting (line 134) | public static FeatureStatus getDefaultBakeQuadMeshSetting() {
method getDefaultHandAccelerationSetting (line 138) | public static FeatureStatus getDefaultHandAccelerationSetting() {
method getDefaultGUIAccelerationSetting (line 142) | public static FeatureStatus getDefaultGUIAccelerationSetting() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/AcceleratedQuadsRenderer.java
class AcceleratedQuadsRenderer (line 11) | @ExtensionMethod({
method render (line 19) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/BakedModelExtension.java
class BakedModelExtension (line 6) | public class BakedModelExtension {
method getAccelerated (line 8) | public static IAcceleratedBakedModel getAccelerated(BakedModel in) {
method getAccelerated (line 12) | public static IAcceleratedBakedQuad getAccelerated(BakedQuad in) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/IAcceleratedBakedModel.java
type IAcceleratedBakedModel (line 11) | public interface IAcceleratedBakedModel {
method renderItemFast (line 13) | void renderItemFast (ItemStack itemStack, RandomSource random, PoseSt...
method renderBlockFast (line 14) | void renderBlockFast (BlockState blockState, RandomSource random, Pos...
method getCustomColor (line 15) | int getCustomColor (int layer, int color);
method isAccelerated (line 16) | boolean isAccelerated ();
method isAcceleratedInHand (line 17) | boolean isAcceleratedInHand ();
method isAcceleratedInGui (line 18) | boolean isAcceleratedInGui ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/IAcceleratedBakedQuad.java
type IAcceleratedBakedQuad (line 7) | public interface IAcceleratedBakedQuad {
method renderFast (line 9) | void renderFast (Matrix4f transform, Matrix3f normal, IAcceleratedVer...
method getCustomColor (line 10) | int getCustomColor (int color);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/colors/BlockLayerColors.java
class BlockLayerColors (line 8) | public class BlockLayerColors implements ILayerColors {
method BlockLayerColors (line 13) | public BlockLayerColors(BlockState blockState) {
method getColor (line 18) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/colors/EmptyBlockColor.java
class EmptyBlockColor (line 8) | public class EmptyBlockColor implements BlockColor {
method getColor (line 12) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/colors/EmptyItemColor.java
class EmptyItemColor (line 6) | public class EmptyItemColor implements ItemColor {
method getColor (line 10) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/colors/FixedColors.java
method getColor (line 5) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/colors/ILayerColors.java
type ILayerColors (line 3) | public interface ILayerColors {
method getColor (line 5) | int getColor(int layer);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/colors/ItemLayerColors.java
class ItemLayerColors (line 8) | public class ItemLayerColors implements ILayerColors {
method ItemLayerColors (line 13) | public ItemLayerColors(ItemStack itemStack) {
method getColor (line 18) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/GuiBatchingController.java
class GuiBatchingController (line 39) | @ExtensionMethod({
method GuiBatchingController (line 60) | private GuiBatchingController() {
method startBatching (line 74) | public void startBatching(GuiGraphics graphics) {
method flushBatching (line 87) | @SuppressWarnings("UnstableApiUsage")
method flushBatching (line 273) | public void flushBatching() {
method submitBlit (line 301) | public void submitBlit(
method submitItem (line 344) | public void submitItem(
method submitFill (line 378) | public void submitFill(
method submitGradient (line 435) | public void submitGradient(
method submitCustomDecorator (line 495) | @SuppressWarnings("UnstableApiUsage")
method submitHighlight (line 525) | public void submitHighlight(
method submitString (line 552) | public void submitString(IStringDrawContext context) {
method getLayer (line 563) | private List<IGuiElementContext> getLayer(float depth) {
method getGlobalDepth (line 574) | public static float getGlobalDepth(
method delete (line 582) | public void delete() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/GuiRenderTypes.java
class GuiRenderTypes (line 12) | public class GuiRenderTypes extends RenderType {
method GuiRenderTypes (line 32) | private GuiRenderTypes(
method blit (line 54) | public static RenderType blit(ResourceLocation atlasLocation) {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/BlitDrawContext.java
method depth (line 25) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/DecoratorDrawContext.java
method depth (line 20) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/FillDrawContext.java
method depth (line 21) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/GradientDrawContext.java
method depth (line 22) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/HighlightDrawContext.java
method depth (line 15) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/IGuiElementContext.java
type IGuiElementContext (line 6) | public interface IGuiElementContext {
method transform (line 8) | Matrix4f transform ();
method normal (line 9) | Matrix3f normal ();
method depth (line 10) | float depth ();
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/ItemRenderContext.java
method depth (line 20) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/string/ComponentStringDrawContext.java
method normal (line 24) | @Override
method depth (line 29) | @Override
method drawString (line 34) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/string/FormattedStringDrawContext.java
method normal (line 25) | @Override
method depth (line 30) | @Override
method drawString (line 35) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/string/IStringDrawContext.java
type IStringDrawContext (line 6) | public interface IStringDrawContext extends IGuiElementContext {
method drawString (line 8) | void drawString(MultiBufferSource buffer);
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/string/Outline8StringDrawContext.java
method normal (line 22) | @Override
method depth (line 27) | @Override
method drawString (line 32) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/contexts/string/RawStringDrawContext.java
method normal (line 24) | @Override
method depth (line 29) | @Override
method drawString (line 34) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/renderer/AcceleratedBlitRenderer.java
class AcceleratedBlitRenderer (line 11) | @ExtensionMethod(VertexConsumerExtension.class)
method render (line 16) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/renderer/AcceleratedFillRenderer.java
class AcceleratedFillRenderer (line 11) | @ExtensionMethod(VertexConsumerExtension.class)
method render (line 16) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/gui/renderer/AcceleratedGradientRenderer.java
class AcceleratedGradientRenderer (line 12) | @ExtensionMethod(VertexConsumerExtension.class)
method render (line 17) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/ItemRendererMixin.java
class ItemRendererMixin (line 23) | @ExtensionMethod(value = {VertexConsumerExtension .class, BakedModelExte...
method renderFast (line 27) | @SuppressWarnings ("deprecation")
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/ModelBlockRendererMixin.java
class ModelBlockRendererMixin (line 27) | @ExtensionMethod(value = {VertexConsumerExtension .class, BakedModelExte...
method renderModelFast (line 31) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/accessors/BlockColorsAccessor.java
type BlockColorsAccessor (line 11) | @Mixin(BlockColors.class)
method getBlockColors (line 14) | @Accessor("blockColors")
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/accessors/ItemColorsAccessor.java
type ItemColorsAccessor (line 11) | @Mixin(ItemColors.class)
method getItemColors (line 14) | @Accessor("itemColors")
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/compatibility/ClientHooksMixin.java
class ClientHooksMixin (line 14) | @Mixin(ClientHooks.class)
method disableAdditionalScreenAcceleration (line 17) | @WrapOperation(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/compatibility/GuiLayerManagerMixin.java
class GuiLayerManagerMixin (line 14) | @SuppressWarnings ("UnstableApiUsage")
method disableAdditionalGuiAcceleration (line 18) | @WrapOperation(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/gui/AbstractContainerScreenMixin.java
class AbstractContainerScreenMixin (line 15) | @Mixin(AbstractContainerScreen.class)
method startBackgroundBatching (line 18) | @Inject(
method flushBackgroundBatching (line 32) | @Inject(
method startItemBatching (line 52) | @Inject(
method flushItemBatching (line 72) | @Inject(
method startRenderHighlight (line 90) | @WrapMethod(method = "renderSlotHighlight(Lnet/minecraft/client/gui/Gu...
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/gui/FontMixin.java
class FontMixin (line 19) | @Mixin(Font.class)
method isBidirectional (line 22) | @Shadow public abstract boolean isBidirectional();
method renderGuiStringFast1 (line 24) | @WrapMethod(method = "drawInBatch(Ljava/lang/String;FFIZLorg/joml/Matr...
method renderGuiStringFast2 (line 70) | @WrapMethod(method = "drawInBatch(Ljava/lang/String;FFIZLorg/joml/Matr...
method renderGuiStringFast3 (line 118) | @WrapMethod(method = "drawInBatch(Lnet/minecraft/network/chat/Componen...
method renderGuiStringFast4 (line 163) | @WrapMethod(method = "drawInBatch(Lnet/minecraft/util/FormattedCharSeq...
method renderGuiStringFast5 (line 208) | @WrapMethod(method = "drawInBatch8xOutline")
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/gui/GuiGraphicsMixin.java
class GuiGraphicsMixin (line 27) | @Mixin(GuiGraphics.class)
method renderFillFast (line 32) | @WrapMethod(method = "fill(IIIII)V")
method renderFillFast (line 67) | @WrapMethod(method = "fill(Lnet/minecraft/client/renderer/RenderType;I...
method renderGradientFast (line 106) | @WrapMethod(method = "fillGradient(Lnet/minecraft/client/renderer/Rend...
method renderRenderTypeFast (line 148) | @WrapMethod(method = "fillRenderType")
method renderBlitFast (line 186) | @WrapMethod(method = "innerBlit(Lnet/minecraft/resources/ResourceLocat...
method renderBlitFast (line 235) | @WrapMethod(method = "innerBlit(Lnet/minecraft/resources/ResourceLocat...
method renderDecorationCustomFast (line 297) | @SuppressWarnings ("UnstableApiUsage")
method renderItemFast (line 339) | @WrapOperation(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/gui/GuiMixin.java
class GuiMixin (line 12) | @Mixin(Gui.class)
method startBatching (line 15) | @Inject(
method flushBatching (line 27) | @Inject(
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/models/BakedCompositeModelMixin.java
class BakedCompositeModelMixin (line 29) | @Getter
method checkAccelerationSupport (line 39) | @Inject(
method renderItemFast (line 67) | @Override
method renderBlockFast (line 90) | @Override
method getCustomColor (line 130) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/models/BakedModelMixin.java
type BakedModelMixin (line 15) | @Mixin(BakedModel.class)
method renderItemFast (line 18) | @Unique
method renderBlockFast (line 31) | @Unique
method isAccelerated (line 47) | @Unique
method isAcceleratedInHand (line 53) | @Unique
method isAcceleratedInGui (line 59) | @Unique
method getCustomColor (line 65) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/models/BakedQuadMixin.java
class BakedQuadMixin (line 25) | @Mixin(BakedQuad.class)
method isTinted (line 33) | @Shadow public abstract boolean isTinted();
method renderFast (line 35) | @Unique
method getCustomColor (line 120) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/models/BakedSeparateTransformsModelMixin.java
class BakedSeparateTransformsModelMixin (line 19) | @ExtensionMethod(BakedModelExtension .class)
method renderItemFast (line 25) | @Override
method renderBlockFast (line 46) | @Override
method getCustomColor (line 73) | @Override
method isAccelerated (line 80) | @Override
method isAcceleratedInHand (line 87) | @Override
method isAcceleratedInGui (line 94) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/models/MultipartBakedModelMixin.java
class MultipartBakedModelMixin (line 29) | @Getter
method getSelectors (line 41) | @Shadow public abstract BitSet getSelectors(BlockState p_235050_);
method checkAccelerationSupport (line 44) | @Inject(
method renderItemFast (line 62) | @Override
method renderBlockFast (line 74) | @Override
method getCustomColor (line 124) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/models/SimpleBakedModelMixin.java
class SimpleBakedModelMixin (line 42) | @ExtensionMethod(VertexConsumerExtension.class)
method getQuads (line 46) | @Shadow public abstract List<BakedQuad> getQuads(BlockState pState, Di...
method renderItemFast (line 51) | @Unique
method renderBlockFast (line 72) | @Override
method render (line 95) | @Unique
method isAccelerated (line 209) | @Unique
method isAcceleratedInHand (line 215) | @Unique
method isAcceleratedInGui (line 221) | @Unique
method getCustomColor (line 227) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/items/mixins/models/WeightedBakedModelMixin.java
class WeightedBakedModelMixin (line 28) | @Getter
method checkAccelerationSupport (line 40) | @Inject(
method renderItemFast (line 58) | @Override
method renderBlockFast (line 85) | @Override
method getCustomColor (line 118) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/modelparts/mixins/ModelPartMixin.java
class ModelPartMixin (line 30) | @ExtensionMethod (VertexConsumerExtension.class)
method renderFast (line 39) | @Inject(
method compileFast (line 74) | @Inject(
method render (line 109) | @Unique
method renderFast (line 192) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/simplebedrockmodel/mixins/BedrockPartMixin.java
class BedrockPartMixin (line 31) | @Pseudo
method renderFast (line 51) | @Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/moj...
method compileFast (line 90) | @Inject(
method render (line 134) | @Unique
method renderFast (line 207) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/text/AcceleratedBakedGlyphRenderer.java
class AcceleratedBakedGlyphRenderer (line 19) | @ExtensionMethod(VertexConsumerExtension.class)
method AcceleratedBakedGlyphRenderer (line 29) | public AcceleratedBakedGlyphRenderer(BakedGlyph bakedGlyph, boolean it...
method render (line 35) | @Override
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/text/AcceleratedTextRenderingFeature.java
class AcceleratedTextRenderingFeature (line 11) | public class AcceleratedTextRenderingFeature {
method isEnabled (line 15) | public static boolean isEnabled() {
method shouldUseAcceleratedPipeline (line 19) | public static boolean shouldUseAcceleratedPipeline() {
method getMeshType (line 23) | public static MeshType getMeshType() {
method useVanillaPipeline (line 27) | public static void useVanillaPipeline() {
method forceUseAcceleratedPipeline (line 31) | public static void forceUseAcceleratedPipeline() {
method forceSetPipeline (line 35) | public static void forceSetPipeline(PipelineSetting pipeline) {
method resetPipeline (line 39) | public static void resetPipeline() {
method getPipelineSetting (line 43) | public static PipelineSetting getPipelineSetting() {
method getDefaultPipelineSetting (line 47) | public static PipelineSetting getDefaultPipelineSetting() {
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/text/mixins/BakedGlyphEffectMixin.java
class BakedGlyphEffectMixin (line 9) | @EqualsAndHashCode
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/text/mixins/BakedGlyphMixin.java
class BakedGlyphMixin (line 32) | @ExtensionMethod(value = VertexConsumerExtension.class)
method renderFast (line 47) | @Inject(
method renderEffectFast (line 93) | @Inject(
method render (line 131) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/touhoulittlemaid/mixins/GeoBoneMixin.java
class GeoBoneMixin (line 23) | @Pseudo
method render (line 33) | @Unique
FILE: src/main/java/com/github/argon4w/acceleratedrendering/features/touhoulittlemaid/mixins/IGeoRendererMixin.java
type IGeoRendererMixin (line 25) | @Pseudo
method renderRecursivelyFast (line 30) | @Inject(
method renderBoneFast (line 74) | @SuppressWarnings ("unchecked")
method renderRecursivelyFast (line 140) | @Unique
Condensed preview — 359 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (966K chars).
[
{
"path": ".gitattributes",
"chars": 256,
"preview": "# Disable autocrlf on generated files, they always generate with LF\n# Add any extra files or paths here to make git stop"
},
{
"path": ".github/workflows/build.yml",
"chars": 1116,
"preview": "name: Build\n\non: [push, pull_request, workflow_dispatch]\n\njobs:\n build:\n runs-on: ubuntu-22.04\n steps:\n - na"
},
{
"path": ".gitignore",
"chars": 163,
"preview": "# eclipse\nbin\n*.launch\n.settings\n.metadata\n.classpath\n.project\n\n# idea\nout\n*.ipr\n*.iws\n*.iml\n.idea\n\n# gradle\nbuild\n.grad"
},
{
"path": "LICENSE",
"chars": 1064,
"preview": "MIT License\n\nCopyright (c) 2023 Argon4W\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof"
},
{
"path": "README.md",
"chars": 4038,
"preview": "# 加速渲染 ([EN version](#english))\n\n加速渲染是一个客户端实体渲染优化MOD.\n目的是改善在渲染大量实体或拥有大量顶点的复杂MOD实体的情况下产生的渲染性能问题,\n与此同时尽可能与光影MOD和其他MOD及其自定义"
},
{
"path": "build.gradle",
"chars": 9349,
"preview": "plugins {\n id 'java-library'\n id 'eclipse'\n id 'idea'\n id 'maven-publish'\n id 'net.neoforged.gradle.userd"
},
{
"path": "changelogs/changelog-1.0.0.md",
"chars": 675,
"preview": "## 加速渲染 1.0.0-1.21.1 ALPHA\n- 支持加速原版/类原版MOD生物渲染.\n- 支持加速原版/类原版MOD方块实体渲染.\n- 支持加速物品模型渲染 **(需要开启``核心配置 > 强制加速半透明``)**.\n- 支持加速"
},
{
"path": "changelogs/changelog-1.0.1.md",
"chars": 691,
"preview": "## 加速渲染 1.0.1-1.21.1 ALPHA\n- 添加了``核心配置 > 用立即上传模型``选项以保证绘制顺序, 提供更好的兼容性.\n- 添加了``Curios兼容性配置``以控制Curios饰品/装备的渲染加速.\n- 添加了``过"
},
{
"path": "changelogs/changelog-1.0.2.md",
"chars": 1928,
"preview": "## 加速渲染 1.0.2-1.21.1 ALPHA\n- 添加了新的Shader Overrides API功能, 以实现更好MOD兼容性.\n- 添加了新的Batching Layer API功能, 以实现更好的MOD兼容性.\n- 添加了`"
},
{
"path": "changelogs/changelog-1.0.3.md",
"chars": 382,
"preview": "## 加速渲染 1.0.3-1.21.1 ALPHA\n- 修复了物品装饰 (如通用机械的等级标识) 加速没有正确还原帧缓冲状态导致的渲染异常.\n- 修复了四顶点同UV的面在静态剔除中被错误剔除导致的渲染异常.\n\n## Accelerated"
},
{
"path": "changelogs/changelog-1.0.4.md",
"chars": 649,
"preview": "## 加速渲染 1.0.4-1.21.1 ALPHA\n- 修复了与使用块缓冲的MOD和光影的兼容性.\n- 移植到1.20.1 Forge.\n\n## 注意事项\n- 1.20.1移植需要使用**Java 21**进行启动.\n- 1.20.1移植"
},
{
"path": "changelogs/changelog-1.0.5.1.md",
"chars": 186,
"preview": "## 加速渲染 1.0.5.1-1.21.1 ALPHA\n- 修复了在模型面没有自定义颜色的情况下获取颜色导致崩溃.\n\n## Accelerated Rendering 1.0.5.1-1.21.1 ALPHA\n- Fixes crashe"
},
{
"path": "changelogs/changelog-1.0.5.md",
"chars": 197,
"preview": "## 加速渲染 1.0.5-1.21.1 ALPHA\n- 修复了方块模型加速时从错误的位置获取RenderType导致崩溃.\n\n## Accelerated Rendering 1.0.5-1.21.1 ALPHA\n- Fixes cras"
},
{
"path": "changelogs/changelog-1.0.6.md",
"chars": 935,
"preview": "## 加速渲染 1.0.6-1.21.1 ALPHA\n- 添加了``核心配置 > 启用缓存动态RenderType``选项以支持对动态渲染类型的加速.\n- 添加了``核心配置 > 模型合并类型``选项以支持对完全一致模型的合并以改善显存占用"
},
{
"path": "changelogs/changelog-1.0.7.md",
"chars": 506,
"preview": "## 加速渲染 1.0.7-1.21.1 ALPHA\n- 添加了``过滤器配置 > 启用容器GUI过滤器``选项以阻止部分在渲染加速后会导致需渲染异常的容器GUI被加速, 提供更好的兼容性.\n- 修复了玩家在物品栏GUI中以错误光照渲染导致"
},
{
"path": "changelogs/changelog-1.0.8.md",
"chars": 1105,
"preview": "## 加速渲染 1.0.8-1.21.1 ALPHA\n- 添加了``核心配置 > 裁切区域还原类型``选项以提供对修改了容器GUI渲染的MOD更好的兼容性.\n- 添加了``加速物品渲染配置 > 启用合并GUI物品批次``选项以以提供对修改了"
},
{
"path": "gradle/wrapper/gradle-wrapper.properties",
"chars": 253,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "gradle.properties",
"chars": 2382,
"preview": "# Sets default memory used for gradle commands. Can be overridden by user or command line properties.\norg.gradle.jvmargs"
},
{
"path": "gradlew",
"chars": 8739,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "gradlew.bat",
"chars": 2872,
"preview": "@rem\n@rem Copyright 2015 the original author or authors.\n@rem\n@rem Licensed under the Apache License, Version 2.0 (the \""
},
{
"path": "settings.gradle",
"chars": 224,
"preview": "pluginManagement {\n repositories {\n gradlePluginPortal()\n maven { url = 'https://maven.neoforged.net/re"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/AcceleratedRenderingModEntry.java",
"chars": 1025,
"preview": "package com.github.argon4w.acceleratedrendering;\n\nimport com.github.argon4w.acceleratedrendering.configs.FeatureConfig;\n"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/AbstractCompatMixinPlugin.java",
"chars": 1421,
"preview": "package com.github.argon4w.acceleratedrendering.compat;\n\nimport net.neoforged.fml.loading.LoadingModList;\nimport org.obj"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/curios/CuriosCompatFeature.java",
"chars": 3258,
"preview": "package com.github.argon4w.acceleratedrendering.compat.curios;\n\nimport com.github.argon4w.acceleratedrendering.configs.F"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/curios/mixins/CuriosLayerMixin.java",
"chars": 4677,
"preview": "package com.github.argon4w.acceleratedrendering.compat.curios.mixins;\n\nimport com.github.argon4w.acceleratedrendering.co"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/immediatelyfast/mixins/BatchableBufferSourceMixin.java",
"chars": 1166,
"preview": "package com.github.argon4w.acceleratedrendering.compat.immediatelyfast.mixins;\n\nimport com.github.argon4w.acceleratedren"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/immediatelyfast/mixins/BatchingBuffersMixin.java",
"chars": 1434,
"preview": "package com.github.argon4w.acceleratedrendering.compat.immediatelyfast.mixins;\n\nimport com.github.argon4w.acceleratedren"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/immediatelyfast/mixins/WrappedRenderLayerMixin.java",
"chars": 926,
"preview": "package com.github.argon4w.acceleratedrendering.compat.immediatelyfast.mixins;\n\nimport lombok.EqualsAndHashCode;\nimport "
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/IrisCompatBuffers.java",
"chars": 2933,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris;\n\nimport com.github.argon4w.acceleratedrendering.core.buffer"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/IrisCompatBuffersProvider.java",
"chars": 433,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris;\n\nimport com.github.argon4w.acceleratedrendering.core.buffer"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/IrisCompatFeature.java",
"chars": 2576,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris;\n\nimport com.github.argon4w.acceleratedrendering.configs.Fea"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/environments/IrisBufferEnvironment.java",
"chars": 7590,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.environments;\n\nimport com.github.argon4w.acceleratedrenderin"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/interfaces/IIrisAcceleratedBufferBuilder.java",
"chars": 289,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.interfaces;\n\nimport com.github.argon4w.acceleratedrendering."
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/interfaces/IIrisMeshInfo.java",
"chars": 199,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.interfaces;\n\npublic interface IIrisMeshInfo {\n\n\tshort getRen"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/interfaces/IIrisMeshInfoCache.java",
"chars": 219,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.interfaces;\n\npublic interface IIrisMeshInfoCache {\n\n\tshort g"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/AcceleratedBufferBuilderMixin.java",
"chars": 4328,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/AcceleratedBufferSourceMixin.java",
"chars": 2459,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/AcceleratedRenderingModEntryMixin.java",
"chars": 853,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/CoreBuffersProviderMixin.java",
"chars": 905,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/FlattenMeshInfoCacheMixin.java",
"chars": 2852,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/IBufferEnvironmentPresetsMixin.java",
"chars": 3153,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/MeshUploaderMixin.java",
"chars": 2338,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/MeshUploadingProgramDispatcherMixin.java",
"chars": 2235,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/RenderTypeUtilsMixin.java",
"chars": 3141,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/SimpleMeshInfoCacheMixin.java",
"chars": 1219,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/SimpleMeshInfoMixin.java",
"chars": 1541,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/acceleratedrendering/UnsafeMemoryMeshInfoCacheMixin.java",
"chars": 2872,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.acceleratedrendering;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/FullyBufferedMultiBufferSourceMixin.java",
"chars": 1192,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.iris;\n\nimport com.github.argon4w.acceleratedrendering"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/HandRendererMixin.java",
"chars": 6995,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.iris;\n\nimport com.github.argon4w.acceleratedrendering"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/IrisVertexFormatsMixin.java",
"chars": 2602,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.iris;\n\nimport com.llamalad7.mixinextras.injector.wrap"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/ModelToEntityVertexSerializerMixin.java",
"chars": 899,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.iris;\n\nimport net.irisshaders.iris.vertices.sodium.Mo"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/iris/ShadowRendererMixin.java",
"chars": 3856,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.iris;\n\nimport com.github.argon4w.acceleratedrendering"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/plugin/IrisCompatMixinPlugin.java",
"chars": 334,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.plugin;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/mixins/vanilla/LevelRendererMixin.java",
"chars": 6244,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.mixins.vanilla;\n\nimport com.github.argon4w.acceleratedrender"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/IrisPrograms.java",
"chars": 7829,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.programs;\n\nimport com.github.argon4w.acceleratedrendering.co"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/culling/IrisCullingProgramDispatcher.java",
"chars": 3218,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.programs.culling;\n\nimport com.github.argon4w.acceleratedrend"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/culling/IrisCullingProgramSelector.java",
"chars": 2040,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.programs.culling;\n\nimport com.github.argon4w.acceleratedrend"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/compat/iris/programs/processing/IrisPolygonProcessor.java",
"chars": 1537,
"preview": "package com.github.argon4w.acceleratedrendering.compat.iris.programs.processing;\n\nimport com.github.argon4w.acceleratedr"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/configs/FeatureConfig.java",
"chars": 47267,
"preview": "package com.github.argon4w.acceleratedrendering.configs;\n\nimport com.github.argon4w.acceleratedrendering.core.backends.s"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/configs/FeatureStatus.java",
"chars": 109,
"preview": "package com.github.argon4w.acceleratedrendering.configs;\n\npublic enum FeatureStatus {\n\n\tDISABLED,\n\tENABLED\n}\n"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/configs/PipelineSetting.java",
"chars": 114,
"preview": "package com.github.argon4w.acceleratedrendering.configs;\n\npublic enum PipelineSetting {\n\n\tVANILLA,\n\tACCELERATED\n}\n"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/CoreBuffers.java",
"chars": 2114,
"preview": "package com.github.argon4w.acceleratedrendering.core;\n\nimport com.github.argon4w.acceleratedrendering.core.buffers.Accel"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/CoreBuffersProvider.java",
"chars": 1293,
"preview": "package com.github.argon4w.acceleratedrendering.core;\n\nimport com.github.argon4w.acceleratedrendering.core.buffers.Empty"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/CoreFeature.java",
"chars": 10494,
"preview": "package com.github.argon4w.acceleratedrendering.core;\n\nimport com.github.argon4w.acceleratedrendering.configs.FeatureCon"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/CoreStates.java",
"chars": 858,
"preview": "package com.github.argon4w.acceleratedrendering.core;\n\nimport com.github.argon4w.acceleratedrendering.core.backends.stat"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/DebugOutput.java",
"chars": 281,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends;\n\nimport static org.lwjgl.opengl.GL46.GL_DEBUG_OUTPUT_SYNC"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/GLConstants.java",
"chars": 570,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends;\n\nimport static org.lwjgl.opengl.GL46.*;\n\npublic class GLC"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/Sync.java",
"chars": 675,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends;\n\nimport static org.lwjgl.opengl.GL46.*;\n\npublic class Syn"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/VertexArray.java",
"chars": 408,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends;\n\nimport static org.lwjgl.opengl.GL46.*;\n\npublic class Ver"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/EmptyServerBuffer.java",
"chars": 605,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.buffers;\n\nimport java.nio.ByteBuffer;\n\npublic class EmptyS"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/IClientBuffer.java",
"chars": 215,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.buffers;\n\npublic interface IClientBuffer {\n\n\tlong reserve\t"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/IServerBuffer.java",
"chars": 367,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.buffers;\n\nimport java.nio.ByteBuffer;\n\npublic interface IS"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/ImmutableBuffer.java",
"chars": 1417,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.buffers;\n\nimport java.nio.ByteBuffer;\n\nimport static org.l"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/MappedBuffer.java",
"chars": 1422,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.buffers;\n\nimport lombok.Getter;\n\nimport static org.lwjgl.o"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/buffers/MutableBuffer.java",
"chars": 1464,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.buffers;\n\nimport com.github.argon4w.acceleratedrendering.c"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/programs/BarrierFlags.java",
"chars": 603,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.programs;\n\nimport static org.lwjgl.opengl.GL46.*;\n\npublic "
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/programs/ComputeProgram.java",
"chars": 1360,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.programs;\n\nimport lombok.Getter;\n\nimport static org.lwjgl."
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/programs/ComputeShader.java",
"chars": 693,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.programs;\n\nimport lombok.Getter;\n\nimport static org.lwjgl."
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/programs/Uniform.java",
"chars": 861,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.programs;\n\nimport org.joml.Matrix4f;\nimport org.lwjgl.syst"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/EmptyBindingState.java",
"chars": 390,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states;\n\nimport net.minecraft.client.gui.GuiGraphics;\n\npub"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/FramebufferBindingState.java",
"chars": 1093,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states;\n\nimport net.minecraft.client.gui.GuiGraphics;\n\nimp"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/IBindingState.java",
"chars": 224,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states;\n\nimport net.minecraft.client.gui.GuiGraphics;\n\npub"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/BlockBufferBindingStateType.java",
"chars": 1152,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.buffers;\n\nimport com.github.argon4w.acceleratedrend"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/BufferBlockType.java",
"chars": 676,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.buffers;\n\nimport lombok.AllArgsConstructor;\nimport "
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/SimpleBlockBufferBindingState.java",
"chars": 2143,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.buffers;\n\nimport com.github.argon4w.acceleratedrend"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/BlockBufferBindingCacheType.java",
"chars": 558,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.buffers.cache;\n\npublic enum BlockBufferBindingCache"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/FlattenBlockBufferBindingCache.java",
"chars": 1562,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.buffers.cache;\n\nimport java.lang.invoke.MethodHandl"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/IBlockBufferBindingCache.java",
"chars": 326,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.buffers.cache;\n\npublic interface IBlockBufferBindin"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/SimpleBlockBufferBinding.java",
"chars": 482,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.buffers.cache;\n\nimport lombok.Getter;\n\n@Getter\npubl"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/SimpleBlockBufferBindingCache.java",
"chars": 937,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.buffers.cache;\n\npublic class SimpleBlockBufferBindi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/buffers/cache/UnsafeMemoryBlockBufferBindingCache.java",
"chars": 1603,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.buffers.cache;\n\nimport io.netty.util.internal.shade"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/scissors/MojangScissorBindingState.java",
"chars": 1591,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.scissors;\n\nimport com.github.argon4w.acceleratedren"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/scissors/OpenGLScissorBindingState.java",
"chars": 1221,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.scissors;\n\nimport com.github.argon4w.acceleratedren"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/scissors/ScissorBindingStateType.java",
"chars": 633,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.scissors;\n\nimport com.github.argon4w.acceleratedren"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/viewports/MojangViewportBindingState.java",
"chars": 1250,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.viewports;\n\nimport com.github.argon4w.acceleratedre"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/viewports/OpenGLViewportBindingState.java",
"chars": 875,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.viewports;\n\nimport com.github.argon4w.acceleratedre"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/backends/states/viewports/ViewportBindingStateType.java",
"chars": 638,
"preview": "package com.github.argon4w.acceleratedrendering.core.backends.states.viewports;\n\nimport com.github.argon4w.acceleratedre"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/AcceleratedBufferSources.java",
"chars": 3327,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers;\n\nimport com.github.argon4w.acceleratedrendering.core.CoreF"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/EmptyAcceleratedBufferSources.java",
"chars": 655,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers;\n\nimport com.github.argon4w.acceleratedrendering.core.buffe"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/AcceleratedBufferSource.java",
"chars": 7732,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated;\n\nimport com.github.argon4w.acceleratedrenderin"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/AcceleratedRingBuffers.java",
"chars": 8292,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated;\n\nimport com.github.argon4w.acceleratedrenderin"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/IAcceleratedBufferSource.java",
"chars": 383,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated;\n\nimport com.github.argon4w.acceleratedrenderin"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/IAccelerationHolder.java",
"chars": 514,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated;\n\nimport com.github.argon4w.acceleratedrenderin"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedBufferBuilder.java",
"chars": 16529,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders;\n\nimport com.github.argon4w.accelerate"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedEntityOutlineGenerator.java",
"chars": 2805,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders;\n\nimport com.github.argon4w.accelerate"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedSheetedDecalTextureGenerator.java",
"chars": 3947,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders;\n\nimport com.github.argon4w.accelerate"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedSpriteCoordinateExpander.java",
"chars": 1437,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders;\n\nimport com.mojang.blaze3d.vertex.Ver"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/AcceleratedVertexConsumerWrapper.java",
"chars": 4154,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders;\n\nimport com.github.argon4w.accelerate"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/BufferSourceExtension.java",
"chars": 309,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders;\n\nimport net.minecraft.client.renderer"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/IAcceleratableBufferSource.java",
"chars": 483,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders;\n\nimport com.github.argon4w.accelerate"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/IAcceleratedVertexConsumer.java",
"chars": 2399,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders;\n\nimport com.github.argon4w.accelerate"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/IBufferGraph.java",
"chars": 119,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders;\n\npublic interface IBufferGraph {\n\n}\n"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/builders/VertexConsumerExtension.java",
"chars": 497,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.builders;\n\nimport com.github.argon4w.accelerate"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/LayerDrawType.java",
"chars": 141,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers;\n\npublic enum LayerDrawType {\n\n\tTRANSLUC"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/LayerKey.java",
"chars": 194,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers;\n\nimport net.minecraft.client.renderer.R"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/functions/CustomLayerFunction.java",
"chars": 956,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.functions;\n\nimport it.unimi.dsi.fastutil"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/functions/EmptyLayerFunction.java",
"chars": 466,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.functions;\n\npublic class EmptyLayerFunct"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/functions/ILayerFunction.java",
"chars": 253,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.functions;\n\npublic interface ILayerFunct"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/ILayerContexts.java",
"chars": 378,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/ILayerStorage.java",
"chars": 282,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/LayerStorageType.java",
"chars": 543,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/SeparatedLayerStorage.java",
"chars": 1738,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/SimpleLayerContexts.java",
"chars": 878,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage;\n\nimport com.github.argon4w.acce"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/empty/EmptyLayerContexts.java",
"chars": 853,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage.empty;\n\nimport com.github.argon4"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/empty/EmptyLayerStorage.java",
"chars": 673,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage.empty;\n\nimport com.github.argon4"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/sorted/SortedLayerContexts.java",
"chars": 444,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage.sorted;\n\nimport com.github.argon"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/layers/storage/sorted/SortedLayerStorage.java",
"chars": 845,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.layers.storage.sorted;\n\nimport com.github.argon"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/DrawContextPool.java",
"chars": 3033,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools;\n\nimport com.github.argon4w.acceleratedre"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/ElementBufferPool.java",
"chars": 2501,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools;\n\nimport com.github.argon4w.acceleratedre"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/StagingBufferPool.java",
"chars": 2582,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools;\n\nimport com.github.argon4w.acceleratedre"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/FlattenMeshInfoCache.java",
"chars": 2174,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes;\n\nimport java.lang.invoke.MethodHa"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/IMeshInfoCache.java",
"chars": 398,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes;\n\npublic interface IMeshInfoCache "
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/MeshInfoCacheType.java",
"chars": 457,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes;\n\npublic enum MeshInfoCacheType {\n"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/MeshUploaderPool.java",
"chars": 3877,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes;\n\nimport com.github.argon4w.accele"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/SimpleMeshInfo.java",
"chars": 812,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes;\n\nimport com.github.argon4w.accele"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/SimpleMeshInfoCache.java",
"chars": 1381,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes;\n\nimport com.github.argon4w.accele"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/pools/meshes/UnsafeMemoryMeshInfoCache.java",
"chars": 2218,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.pools.meshes;\n\nimport io.netty.util.internal.sh"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/renderers/DecoratedRenderer.java",
"chars": 748,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.renderers;\n\nimport com.mojang.blaze3d.vertex.Ve"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/renderers/IAcceleratedRenderer.java",
"chars": 361,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.renderers;\n\nimport com.mojang.blaze3d.vertex.Ve"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/renderers/IBufferDecorator.java",
"chars": 223,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.renderers;\n\nimport com.mojang.blaze3d.vertex.Ve"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/accelerated/renderers/SheetedDecalTextureRenderer.java",
"chars": 1440,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.accelerated.renderers;\n\nimport com.github.argon4w.accelerat"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/environments/IBufferEnvironment.java",
"chars": 3638,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.environments;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/environments/VanillaBufferEnvironment.java",
"chars": 4775,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.environments;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/IMemoryInterface.java",
"chars": 588,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.memory;\n\nimport org.joml.Matrix3f;\nimport org.joml.Matrix4f"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/IMemoryLayout.java",
"chars": 254,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.memory;\n\npublic interface IMemoryLayout<T> {\n\n\tIMemoryInter"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/NullMemoryInterface.java",
"chars": 883,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.memory;\n\nimport org.joml.Matrix3f;\nimport org.joml.Matrix4f"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/SimpleDynamicMemoryInterface.java",
"chars": 1534,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.memory;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/SimpleMemoryInterface.java",
"chars": 1457,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.memory;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/buffers/memory/VertexLayout.java",
"chars": 1317,
"preview": "package com.github.argon4w.acceleratedrendering.core.buffers.memory;\n\nimport com.mojang.blaze3d.vertex.VertexFormat;\nimp"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/ClientMesh.java",
"chars": 2197,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes;\n\nimport com.github.argon4w.acceleratedrendering.core.buffer"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/EmptyMesh.java",
"chars": 419,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes;\n\nimport com.github.argon4w.acceleratedrendering.core.buffer"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/IMesh.java",
"chars": 520,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes;\n\nimport com.github.argon4w.acceleratedrendering.core.buffer"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/MeshType.java",
"chars": 299,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes;\n\nimport lombok.Getter;\n\n@Getter\npublic enum MeshType {\n\n\tSE"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/ServerMesh.java",
"chars": 4711,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes;\n\nimport com.github.argon4w.acceleratedrendering.core.CoreFe"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/collectors/CulledMeshCollector.java",
"chars": 4021,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes.collectors;\n\nimport com.github.argon4w.acceleratedrendering."
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/collectors/IMeshCollector.java",
"chars": 457,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes.collectors;\n\nimport com.github.argon4w.acceleratedrendering."
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/collectors/SimpleMeshCollector.java",
"chars": 5292,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes.collectors;\n\nimport com.github.argon4w.acceleratedrendering."
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/MeshData.java",
"chars": 3081,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes.data;\n\nimport com.github.argon4w.acceleratedrendering.core.u"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/cache/IMeshDataCache.java",
"chars": 493,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes.data.cache;\n\nimport com.github.argon4w.acceleratedrendering."
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/cache/IgnoreMeshDataCache.java",
"chars": 629,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes.data.cache;\n\nimport com.github.argon4w.acceleratedrendering."
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/cache/MeshDataCacheType.java",
"chars": 377,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes.data.cache;\n\npublic enum MeshDataCacheType {\n\n\tIGNORED,\n\tMER"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/cache/MeshDataCaches.java",
"chars": 332,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes.data.cache;\n\nimport com.github.argon4w.acceleratedrendering."
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/meshes/data/cache/SimpleMeshDataCache.java",
"chars": 1590,
"preview": "package com.github.argon4w.acceleratedrendering.core.meshes.data.cache;\n\nimport com.github.argon4w.acceleratedrendering."
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/GameRendererMixin.java",
"chars": 2951,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins;\n\nimport com.github.argon4w.acceleratedrendering.core.CoreBu"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/LevelRendererMixin.java",
"chars": 4848,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins;\n\nimport com.github.argon4w.acceleratedrendering.core.CoreBu"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/BufferBuilderMixin.java",
"chars": 2566,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.buffers;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/BufferSourceMixin.java",
"chars": 1801,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.buffers;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/EntityOutlineGeneratorMixin.java",
"chars": 1954,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.buffers;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/MinecraftMixin.java",
"chars": 1325,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.buffers;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/OutlineBufferSourceMixin.java",
"chars": 1557,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.buffers;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/SheetedDecalTextureGeneratorMixin.java",
"chars": 1896,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.buffers;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/SpriteCoordinateExpanderMixin.java",
"chars": 2011,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.buffers;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/VertexConsumerMixin.java",
"chars": 494,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.buffers;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/VertexDoubleConsumerMixin.java",
"chars": 1697,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.buffers;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/buffers/VertexMultipleConsumerMixin.java",
"chars": 1958,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.buffers;\n\nimport com.github.argon4w.acceleratedrendering.cor"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/compatibility/MinecraftMixin.java",
"chars": 874,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.compatibility;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/compatibility/ParticleEngineMixin.java",
"chars": 2168,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.compatibility;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/compatibility/RenderTypeMixin.java",
"chars": 1704,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.compatibility;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/mixins/compatibility/WindowMixin.java",
"chars": 674,
"preview": "package com.github.argon4w.acceleratedrendering.core.mixins.compatibility;\n\nimport com.mojang.blaze3d.platform.Window;\ni"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/ComputeShaderDefinition.java",
"chars": 202,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs;\n\nimport net.minecraft.resources.ResourceLocation;\n\npublic"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/ComputeShaderProgramLoader.java",
"chars": 4285,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs;\n\nimport com.github.argon4w.acceleratedrendering.core.back"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/ComputeShaderPrograms.java",
"chars": 6739,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs;\n\nimport com.github.argon4w.acceleratedrendering.Accelerat"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/LoadComputeShaderEvent.java",
"chars": 948,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs;\n\nimport com.github.argon4w.acceleratedrendering.core.back"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/culling/ICullingProgramDispatcher.java",
"chars": 303,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.culling;\n\nimport com.github.argon4w.acceleratedrendering.c"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/culling/ICullingProgramSelector.java",
"chars": 226,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.culling;\n\nimport net.minecraft.client.renderer.RenderType;"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/culling/LoadCullingProgramSelectorEvent.java",
"chars": 821,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.culling;\n\nimport com.mojang.blaze3d.vertex.VertexFormat;\ni"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/culling/PassThroughCullingProgramDispatcher.java",
"chars": 2312,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.culling;\n\nimport com.github.argon4w.acceleratedrendering.c"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/culling/PassThroughCullingProgramSelector.java",
"chars": 647,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.culling;\n\nimport net.minecraft.client.renderer.RenderType;"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/dispatchers/EmptyProgramDispatcher.java",
"chars": 431,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.dispatchers;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/dispatchers/FixedPolygonProgramDispatcher.java",
"chars": 1768,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.dispatchers;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/dispatchers/IPolygonProgramDispatcher.java",
"chars": 281,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.dispatchers;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/dispatchers/MeshUploadingProgramDispatcher.java",
"chars": 8798,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.dispatchers;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/dispatchers/TransformProgramDispatcher.java",
"chars": 4476,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.dispatchers;\n\nimport com.github.argon4w.acceleratedrenderi"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/IShaderProgramOverride.java",
"chars": 164,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.overrides;\n\npublic interface IShaderProgramOverride {\n\n\tvo"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/IShaderProgramOverrides.java",
"chars": 343,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.overrides;\n\nimport net.minecraft.client.renderer.RenderTyp"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/ITransformShaderProgramOverride.java",
"chars": 321,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.overrides;\n\npublic interface ITransformShaderProgramOverri"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/IUploadingShaderProgramOverride.java",
"chars": 377,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.overrides;\n\npublic interface IUploadingShaderProgramOverri"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/LoadShaderProgramOverridesEvent.java",
"chars": 2700,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.overrides;\n\nimport com.mojang.blaze3d.vertex.VertexFormat;"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/overrides/OverrideProgramType.java",
"chars": 134,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.overrides;\n\npublic enum OverrideProgramType {\n\n\tTRANSFORM,"
},
{
"path": "src/main/java/com/github/argon4w/acceleratedrendering/core/programs/processing/EmptyPolygonProcessor.java",
"chars": 596,
"preview": "package com.github.argon4w.acceleratedrendering.core.programs.processing;\n\nimport com.github.argon4w.acceleratedrenderin"
}
]
// ... and 159 more files (download for full content)
About this extraction
This page contains the full source code of the Argon4W/AcceleratedRendering GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 359 files (805.2 KB), approximately 230.8k tokens, and a symbol index with 1515 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.