Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ on:
description: "publish curseforge"
type: boolean
default: true
forge:
description: "forge"
neoforge:
description: "neoforge"
type: boolean
default: true
fabric:
Expand Down Expand Up @@ -84,7 +84,7 @@ jobs:
contents: write
strategy:
matrix:
loader: [ Forge, Fabric ]
loader: [ NeoForge, Fabric ]
website: [ modrinth, curseforge, github_release ]
name: ${{ matrix.website }} (${{ matrix.loader }})

Expand Down Expand Up @@ -117,7 +117,7 @@ jobs:
- name: Publish Github Release
uses: Kir-Antipov/mc-publish@v3.3
continue-on-error: true
if: (matrix.website == 'github_release' && inputs.github-release) && ((matrix.loader == 'Forge' && inputs.forge) || (matrix.loader == 'Fabric' && inputs.fabric))
if: (matrix.website == 'github_release' && inputs.github-release) && ((matrix.loader == 'NeoForge' && inputs.neoforge) || (matrix.loader == 'Fabric' && inputs.fabric))
with:
files: |
${{ matrix.loader }}/build/libs/!(*-@(dev|sources|javadoc)).jar
Expand All @@ -134,7 +134,7 @@ jobs:
- name: Publish Modrinth Release
uses: Kir-Antipov/mc-publish@v3.3
continue-on-error: true
if : (matrix.website == 'modrinth' && inputs.modrinth) && ((matrix.loader == 'Forge' && inputs.forge) || (matrix.loader == 'Fabric' && inputs.fabric))
if : (matrix.website == 'modrinth' && inputs.modrinth) && ((matrix.loader == 'NeoForge' && inputs.neoforge) || (matrix.loader == 'Fabric' && inputs.fabric))
with:
files: |
${{ matrix.loader }}/build/libs/!(*-@(dev|sources|javadoc)).jar
Expand All @@ -151,7 +151,7 @@ jobs:
- name: Publish Curseforge Release
uses: Kir-Antipov/mc-publish@v3.3
continue-on-error: true
if: (matrix.website == 'curseforge' && inputs.curseforge) && ((matrix.loader == 'Forge' && inputs.forge) || (matrix.loader == 'Fabric' && inputs.fabric))
if: (matrix.website == 'curseforge' && inputs.curseforge) && ((matrix.loader == 'NeoForge' && inputs.neoforge) || (matrix.loader == 'Fabric' && inputs.fabric))
with:
files: |
${{ matrix.loader }}/build/libs/!(*-@(dev|sources|javadoc)).jar
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ public void removed() {

@Override
public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
renderBackground(guiGraphics);
renderBackground(guiGraphics, mouseX, mouseY, partialTick);
super.render(guiGraphics, mouseX, mouseY, partialTick);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,9 @@ public void updateCurrentColor() {

int rgba = nativeImage.getPixelRGBA(window.getWidth() / 2, window.getHeight() / 2);
//fill [red green blue]
currentColor[0] = FastColor.ABGR32.red(rgba);
currentColor[1] = FastColor.ABGR32.green(rgba);
currentColor[2] = FastColor.ABGR32.blue(rgba);
currentColor[0] = FastColor.ABGR32.red(rgba) / 255f;
currentColor[1] = FastColor.ABGR32.green(rgba) / 255f;
currentColor[2] = FastColor.ABGR32.blue(rgba) / 255f;

if (Math.abs(closeCount - openCount) >= 5) {
throw new RuntimeException();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,10 +122,10 @@ public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
}

@Override
public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, double scrollY) {
var moveFactor = 10 * (isKeyPressed(GLFW.GLFW_KEY_LEFT_SHIFT) ? 0.5 : 1);
trySetActualValue(actualValue + delta * stepSize * moveFactor);
return super.mouseScrolled(mouseX, mouseY, delta);
trySetActualValue(actualValue + scrollY * stepSize * moveFactor);
return super.mouseScrolled(mouseX, mouseY, scrollX, scrollY);
}

private static boolean isKeyPressed(int key) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,7 @@ public void addCandidateListener(BiConsumer<KeyType, ResourceLocation> consumer)
/**
* update is complete and call callbacks
*/
@Override
public void tick() {
super.tick();
var last = isComplete;
//check complete change
if (ResourceLocation.isValidResourceLocation(this.getValue())) {
Expand All @@ -94,9 +92,9 @@ public void tick() {
}

@Override
public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
//render current by super
super.render(guiGraphics, mouseX, mouseY, partialTick);
super.renderWidget(guiGraphics, mouseX, mouseY, partialTick);

//check if suggestion need render
if (suggestions != null && suggestions.contains(this.getValue())) return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,12 +117,12 @@ public static String RbVVSHInjection(String s) {
""").toString();
s = new StringBuffer(s).insert(s.lastIndexOf("void main()"), getLightShader()).toString();
s = new StringBuffer(s).insert(s.lastIndexOf('}'), Services.PLATFORM.useLightMap() ? """
v_ColorModulator = color_light_uv(position, vec4(v_ColorModulator, 1.0), ivec2(_vert_light) * 16 ).rgb;
v_Color = color_light_uv(position, v_Color, ivec2(_vert_tex_light_coord));
""" : """
v_ColorModulator = color_light(position, vec4(v_ColorModulator,1.0) * 16).rgb;
v_Color = color_light(position, v_Color);
""").toString();
s = new StringBuffer(s).insert(s.lastIndexOf("}"), """
isBloom = ((_vert_material >> 4u) & 0x01u) > 0u ? 256.0 : 0.0;
isBloom = ((_material_params >> 4u) & 0x01u) > 0u ? 256.0 : 0.0;
""").toString();
return s;
}
Expand All @@ -133,9 +133,9 @@ public static String embeddiumVVSHInjection(String s) {
""").toString();
s = new StringBuffer(s).insert(s.lastIndexOf("void main()"), getLightShader()).toString();
s = new StringBuffer(s).insert(s.lastIndexOf('}'), Services.PLATFORM.useLightMap() ? """
v_Color = color_light_uv(position, v_Color, ivec2(_vert_tex_light_coord) * 16 ).rgba;
v_Color = color_light_uv(position, v_Color, ivec2(_vert_tex_light_coord));
""" : """
v_Color = color_light(position, v_Color * 16).rgba;
v_Color = color_light(position, v_Color);
""").toString();
s = new StringBuffer(s).insert(s.lastIndexOf("}"), """
isBloom = ((_material_params >> 4u) & 0x01u) > 0u ? 256.0 : 0.0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import com.mojang.blaze3d.vertex.BufferBuilder;
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
import net.minecraft.Util;
import net.minecraft.client.renderer.ChunkBufferBuilderPack;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.SectionBufferBuilderPack;
import net.minecraft.client.renderer.Sheets;
import net.minecraft.client.resources.model.ModelBakery;

Expand All @@ -15,7 +15,7 @@
* @implNote PostMultiBufferSource, for proper rendering pipeline
*/
public class PostMultiBufferSource extends MultiBufferSource.BufferSource {
private final static ChunkBufferBuilderPack fixedBufferPack = new ChunkBufferBuilderPack();
private final static SectionBufferBuilderPack fixedBufferPack = new SectionBufferBuilderPack();
public final static PostMultiBufferSource BUFFER_SOURCE = new PostMultiBufferSource();

private static void put(Object2ObjectLinkedOpenHashMap<RenderType, BufferBuilder> pMapBuilders, RenderType pRenderType) {
Expand All @@ -34,7 +34,6 @@ protected PostMultiBufferSource() {
put(map, Sheets.shulkerBoxSheet());
put(map, Sheets.signSheet());
put(map, Sheets.chestSheet());
put(map, RenderType.translucentNoCrumbling());
put(map, RenderType.armorGlint());
put(map, RenderType.armorEntityGlint());
put(map, RenderType.glint());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,15 +158,15 @@ private static String BloomMRTFSHInjection(String s) {
}

public static String RbBloomMRTFSHInjection(String s) {
s = new StringBuffer(s).insert(s.lastIndexOf("in vec3 v_ColorModulator;"), """
s = new StringBuffer(s).insert(s.lastIndexOf("in vec4 v_Color;"), """
in float isBloom;
""").toString();
s = new StringBuffer(s).insert(s.lastIndexOf("void main()"), """
out vec4 bloomColor;
""").toString();
s = new StringBuffer(s).insert(s.lastIndexOf('}'), """
if (isBloom > 255.) {
bloomColor = out_FragColor * smoothstep(u_FogEnd,u_FogStart,v_FragDistance);
bloomColor = fragColor * smoothstep(u_FogEnd,u_FogStart,v_FragDistance);
} else {
bloomColor = vec4(0.);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import java.util.List;

public interface IRenderChunk {
public interface IRenderSection {
List<ColorPointLight> getShimmerLights();
void setShimmerLights(List<ColorPointLight> lights);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@
import com.lowdragmc.shimmer.client.light.LightManager;
import com.lowdragmc.shimmer.client.postprocessing.PostProcessing;
import com.lowdragmc.shimmer.client.shader.ReloadShaderManager;
import com.lowdragmc.shimmer.core.IRenderChunk;
import com.lowdragmc.shimmer.core.IRenderSection;
import com.lowdragmc.shimmer.platform.Services;
import com.mojang.blaze3d.pipeline.RenderTarget;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.renderer.chunk.SectionRenderDispatcher;
import org.joml.Matrix4f;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import net.minecraft.client.Camera;
Expand Down Expand Up @@ -41,7 +42,7 @@ public abstract class LevelRendererMixin {

@Shadow @Nullable private ClientLevel level;

@Shadow @Final private ObjectArrayList<LevelRenderer.RenderChunkInfo> renderChunksInFrustum;
@Shadow @Final private ObjectArrayList<SectionRenderDispatcher.RenderSection> visibleSections;

@Inject(method = "renderLevel",
at = @At(
Expand All @@ -52,7 +53,7 @@ private void injectRenderLevel(PoseStack poseStack, float pPartialTick, long pFi
PostProcessing.getBlockBloom().renderBlockPost();
}

@Inject(method = "renderChunkLayer",
@Inject(method = "renderSectionLayer",
at = @At(value = "HEAD"))
private void preRenderChunkLayer(RenderType pRenderType,
PoseStack pPoseStack, double pCamX,
Expand All @@ -64,7 +65,7 @@ private void preRenderChunkLayer(RenderType pRenderType,
}
}

@Inject(method = "renderChunkLayer",
@Inject(method = "renderSectionLayer",
at = @At(value = "RETURN"))
private void postRenderChunkLayer(RenderType pRenderType,
PoseStack pPoseStack, double pCamX,
Expand Down Expand Up @@ -95,12 +96,12 @@ private void injectRenderLevelPre(PoseStack pPoseStack, float pPartialTick, long
int left = LightManager.INSTANCE.leftBlockLightCount();
FloatBuffer buffer = LightManager.INSTANCE.getBuffer();
buffer.clear();
for (LevelRenderer.RenderChunkInfo chunkInfo : renderChunksInFrustum) {
for (SectionRenderDispatcher.RenderSection section : visibleSections) {
if (left <= blockLightSize) {
break;
}
if (chunkInfo.chunk instanceof IRenderChunk) {
for (ColorPointLight shimmerLight : ((IRenderChunk) chunkInfo.chunk).getShimmerLights()) {
if (section instanceof IRenderSection) {
for (ColorPointLight shimmerLight : ((IRenderSection) section).getShimmerLights()) {
if (left <= blockLightSize) {
break;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ private static boolean checkOptifine() {
//under forge's TransformingClassLoader
try {
//try not to load the class
var fmlLoaderClass = Class.forName("net.minecraftforge.fml.loading.FMLLoader");
var fmlLoaderClass = Class.forName("net.neoforged.fml.loading.FMLLoader");
var getGameLayerMethod = fmlLoaderClass.getMethod("getGameLayer");
var gameLayer = getGameLayerMethod.invoke(null);
var configurationMethod = gameLayer.getClass().getMethod("configuration");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import com.lowdragmc.shimmer.client.light.ColorPointLight;
import com.lowdragmc.shimmer.client.light.LightManager;
import com.lowdragmc.shimmer.client.postprocessing.PostProcessing;
import com.lowdragmc.shimmer.core.IRenderChunk;
import net.minecraft.client.renderer.ChunkBufferBuilderPack;
import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher;
import com.lowdragmc.shimmer.core.IRenderSection;
import net.minecraft.client.renderer.SectionBufferBuilderPack;
import net.minecraft.client.renderer.chunk.RenderChunkRegion;
import net.minecraft.client.renderer.chunk.SectionRenderDispatcher;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.FluidState;
Expand All @@ -24,9 +24,9 @@
* @date 2022/05/02
* @implNote RebuildTaskMixin, used to compile and save light info to the chunk.
*/
@Mixin(ChunkRenderDispatcher.RenderChunk.RebuildTask.class)
@Mixin(SectionRenderDispatcher.RenderSection.RebuildTask.class)
public abstract class RebuildTaskMixin {
@SuppressWarnings("target") @Shadow(aliases = {"this$1", "f_112859_", "field_20839"}) @Final ChunkRenderDispatcher.RenderChunk this$1;
@SuppressWarnings("target") @Shadow(aliases = {"this$1", "f_112859_", "field_20839"}) @Final SectionRenderDispatcher.RenderSection this$1;
ImmutableList.Builder<ColorPointLight> lights;

@Redirect(method = "compile",
Expand All @@ -48,14 +48,14 @@ private BlockState injectCompile(RenderChunkRegion instance, BlockPos pPos) {
}

@Inject(method = "compile", at = @At(value = "HEAD"))
private void injectCompilePre(float x, float y, float z, ChunkBufferBuilderPack arg, CallbackInfoReturnable<ChunkRenderDispatcher.RenderChunk.RebuildTask.CompileResults> cir) {
private void injectCompilePre(float x, float y, float z, SectionBufferBuilderPack arg, CallbackInfoReturnable<SectionRenderDispatcher.RenderSection.RebuildTask.CompileResults> cir) {
lights = ImmutableList.builder();
}

@Inject(method = "compile", at = @At(value = "RETURN"))
private void injectCompilePost(float x, float y, float z, ChunkBufferBuilderPack arg, CallbackInfoReturnable<ChunkRenderDispatcher.RenderChunk.RebuildTask.CompileResults> cir) {
if (this$1 instanceof IRenderChunk) {
((IRenderChunk) this$1).setShimmerLights(lights.build());
private void injectCompilePost(float x, float y, float z, SectionBufferBuilderPack arg, CallbackInfoReturnable<SectionRenderDispatcher.RenderSection.RebuildTask.CompileResults> cir) {
if (this$1 instanceof IRenderSection) {
((IRenderSection) this$1).setShimmerLights(lights.build());
}
PostProcessing.cleanBloom();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.lowdragmc.shimmer.core.mixins;

import com.lowdragmc.shimmer.client.light.ColorPointLight;
import com.lowdragmc.shimmer.core.IRenderChunk;
import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher;
import com.lowdragmc.shimmer.core.IRenderSection;
import net.minecraft.client.renderer.chunk.SectionRenderDispatcher;
import org.spongepowered.asm.mixin.Mixin;

import java.util.Collections;
Expand All @@ -13,8 +13,8 @@
* @date 2022/05/02
* @implNote RenderChunkMixin, used to compile and save light info to the chunk.
*/
@Mixin(ChunkRenderDispatcher.RenderChunk.class)
public abstract class RenderChunkMixin implements IRenderChunk {
@Mixin(SectionRenderDispatcher.RenderSection.class)
public abstract class RenderSectionMixin implements IRenderSection {
List<ColorPointLight> shimmerLights = Collections.emptyList();

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,16 @@ public class Services {
private static IPlatformHelper load() {
String loaderName = ClientBrandRetriever.getClientModName().toLowerCase().trim();
var classLocation = switch (loaderName) {
case "forge" -> "com.lowdragmc.shimmer.forge.platform.ForgePlatformHelper";
case "neoforge" -> "com.lowdragmc.shimmer.neoforge.platform.NeoForgePlatformHelper";
case "forge" -> {
ShimmerConstants.LOGGER.warn("forge detected, just works under neoforge");
ShimmerConstants.LOGGER.warn("behaviour may not be correct");
yield "com.lowdragmc.shimmer.fabric.platform.ForgePlatformHelper";
}
case "fabric" -> "com.lowdragmc.shimmer.fabric.platform.FabricPlatformHelper";
case "quilt" -> {
ShimmerConstants.LOGGER.warn("quilt detected, just work under fabric");
ShimmerConstants.LOGGER.warn("behaviour may ne be correct");
ShimmerConstants.LOGGER.warn("quilt detected, just works under fabric");
ShimmerConstants.LOGGER.warn("behaviour may not be correct");
yield "com.lowdragmc.shimmer.fabric.platform.FabricPlatformHelper";
}
//https://github.com/sp614x/optifine/issues/1631
Expand Down
6 changes: 2 additions & 4 deletions Common/src/main/resources/shimmer.accesswidener
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
accessWidener v1 named

accessible class com/mojang/blaze3d/pipeline/MainTarget$Dimension
accessible class net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo
accessible class net/minecraft/client/gui/components/CycleButton$ValueListSupplier
accessible class net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk$RebuildTask
accessible class net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk$RebuildTask$CompileResults
accessible class net/minecraft/client/renderer/chunk/SectionRenderDispatcher$RenderSection$RebuildTask
accessible class net/minecraft/client/renderer/chunk/SectionRenderDispatcher$RenderSection$RebuildTask$CompileResults

accessible method net/minecraft/client/renderer/RenderType create (Ljava/lang/String;Lcom/mojang/blaze3d/vertex/VertexFormat;Lcom/mojang/blaze3d/vertex/VertexFormat$Mode;IZZLnet/minecraft/client/renderer/RenderType$CompositeState;)Lnet/minecraft/client/renderer/RenderType$CompositeRenderType;

accessible field net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo chunk Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk;
accessible field com/mojang/blaze3d/vertex/PoseStack poseStack Ljava/util/Deque;
accessible field net/minecraft/client/particle/ParticleEngine textureAtlas Lnet/minecraft/client/renderer/texture/TextureAtlas;
2 changes: 1 addition & 1 deletion Common/src/main/resources/shimmer.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"PostPassMixin",
"ProgramMixin",
"RebuildTaskMixin",
"RenderChunkMixin",
"RenderSectionMixin",
"RenderSystemMixin",
"RenderTargetMixin",
"ShaderInstanceGlslProcessorMixin",
Expand Down
7 changes: 4 additions & 3 deletions Fabric/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,16 @@ dependencies {
include("me.shedaniel.cloth:cloth-config-fabric:$cloth_config_version")

// Sodium
modImplementation("maven.modrinth:sodium:mc1.20.1-0.5.3") {
modImplementation("maven.modrinth:sodium:mc1.20.4-0.5.8") {
exclude(group = "net.fabricmc.fabric-api")
}

modImplementation("maven.modrinth:iris:1.6.10+1.20.1") {
modImplementation("maven.modrinth:iris:1.6.17+1.20.4") {
exclude(group = "net.fabricmc.fabric-api")
}

modImplementation("com.jozufozu.flywheel:flywheel-fabric-$minecraft_version:$fabric_flywheel_version")
// There is no flywheel 1.20.4 version currently
// modImplementation("com.jozufozu.flywheel:flywheel-fabric-$minecraft_version:$fabric_flywheel_version")

implementation("org.anarres:jcpp:1.4.14") {isTransitive = false}// for iris
implementation("io.github.douira:glsl-transformer:2.0.0-pre13") // for iris
Expand Down
Loading