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
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package net.irisshaders.iris.mixin;

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 net.irisshaders.iris.apiimpl.IrisApiV0Impl;
import net.minecraft.client.renderer.blockentity.AbstractSignRenderer;

@Mixin(AbstractSignRenderer.class)
public abstract class AbstractSignRendererMixin {
// maDU59_ was here =D
// Sign text does not need to be rendered during the shadow pass as it's not visible in the shadow anyway
@Inject(method = "submitSignText", at = @At("HEAD"), cancellable = true)
public void fism$cancelSignTextRendering(CallbackInfo ci){
if(IrisApiV0Impl.INSTANCE.isRenderingShadowPass()) ci.cancel();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package net.irisshaders.iris.mixin;

import org.jspecify.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;

import com.mojang.blaze3d.vertex.PoseStack;

import net.minecraft.client.model.Model;
import net.minecraft.client.renderer.SubmitNodeCollector;
import net.minecraft.client.renderer.blockentity.BannerRenderer;
import net.minecraft.client.renderer.feature.ModelFeatureRenderer;
import net.minecraft.client.resources.model.sprite.SpriteGetter;
import net.minecraft.client.resources.model.sprite.SpriteId;
import net.minecraft.world.item.DyeColor;

@Mixin(BannerRenderer.class)
public interface BannerRendererAccessor {
// maDU59_ was here =D
@Invoker("submitPatternLayer")
static <S> void fism$submitPatternLayerInvoke(final SpriteGetter sprites, final PoseStack poseStack, final SubmitNodeCollector submitNodeCollector, final int lightCoords, final int overlayCoords, final Model<S> model, final S state, final SpriteId sprite, final DyeColor color, final ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress){};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package net.irisshaders.iris.mixin;

import org.jspecify.annotations.Nullable;
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 com.mojang.blaze3d.vertex.PoseStack;

import net.irisshaders.iris.apiimpl.IrisApiV0Impl;
import net.minecraft.client.model.Model;
import net.minecraft.client.renderer.Sheets;
import net.minecraft.client.renderer.SubmitNodeCollector;
import net.minecraft.client.renderer.blockentity.BannerRenderer;
import net.minecraft.client.renderer.feature.ModelFeatureRenderer;
import net.minecraft.client.resources.model.sprite.SpriteGetter;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.block.entity.BannerPatternLayers;

@Mixin(BannerRenderer.class)
public abstract class BannerRendererMixin {
// maDU59_ was here =D
// Banner patterns do not need to be rendered during the shadow pass as they are not visible anyway
@Inject(method = "submitPatterns", at = @At("HEAD"), cancellable = true)
private static <S> void fism$cancelSubmitPatterns(final SpriteGetter sprites, final PoseStack poseStack, final SubmitNodeCollector submitNodeCollector, final int lightCoords, final int overlayCoords, final Model<S> model, final S state, final boolean banner, final DyeColor baseColor, final BannerPatternLayers patterns, final ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress, CallbackInfo ci) {
if(IrisApiV0Impl.INSTANCE.isRenderingShadowPass()) {
BannerRendererAccessor.fism$submitPatternLayerInvoke(sprites, poseStack, submitNodeCollector, lightCoords, overlayCoords, model, state, banner ? Sheets.BANNER_PATTERN_BASE : Sheets.SHIELD_PATTERN_BASE, baseColor, breakProgress);
ci.cancel();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package net.irisshaders.iris.mixin;

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.CallbackInfoReturnable;

import net.irisshaders.iris.apiimpl.IrisApiV0Impl;
import net.minecraft.world.item.ItemStack;

@Mixin(ItemStack.class)
public abstract class ItemStackMixin {
// maDU59_ was here =D
// Enchantment glint does not need to be rendered during the shadow pass as it's not visible in the shadow anyway
@Inject(method = "hasFoil", at = @At("HEAD"), cancellable = true)
private void fism$cancelGlintRendering(CallbackInfoReturnable<Boolean> cir){
if(IrisApiV0Impl.INSTANCE.isRenderingShadowPass()) cir.setReturnValue(false);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package net.irisshaders.iris.mixin;

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 net.irisshaders.iris.apiimpl.IrisApiV0Impl;
import net.minecraft.client.renderer.MapRenderer;

@Mixin(MapRenderer.class)
public abstract class MapRendererMixin {
// maDU59_ was here =D
// Maps in item frames do not need to be rendered during the shadow pass as they are not visible in the shadow anyway
@Inject(method = "render", at = @At("HEAD"), cancellable = true)
public <S> void fism$cancelMapRendering(CallbackInfo ci) {
if(IrisApiV0Impl.INSTANCE.isRenderingShadowPass()) {
ci.cancel();
}
}
}
5 changes: 5 additions & 0 deletions common/src/main/resources/mixins.iris.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,11 @@
"entity_render_context.MixinModelStorageTrigger",
"entity_render_context.ItemStackStateMixin",
"entity_render_context.ItemStackStateLayerMixin",
"AbstractSignRendererMixin",
"BannerRendererAccessor",
"BannerRendererMixin",
"MapRendererMixin",
"ItemStackMixin",
"fabulous.MixinDisableFabulousGraphics",
"gui.MixinGui",
"gui.MixinVideoSettingsScreen",
Expand Down