VulkanShader_1.21.10-0.0.4-alpha.jar
Download file
package net.vulkanmod.mixin.render.frapi;
import com.llamalad7.mixinextras.sugar.Local;
import com.llamalad7.mixinextras.sugar.Share;
import com.llamalad7.mixinextras.sugar.ref.LocalRef;
import java.util.function.Consumer;
import net.minecraft.class_10444;
import net.vulkanmod.render.chunk.build.frapi.accessor.AccessLayerRenderState;
import net.vulkanmod.render.chunk.build.frapi.mesh.MutableMeshImpl;
import net.vulkanmod.render.chunk.build.frapi.render.QuadToPosPipe;
import org.joml.Matrix4f;
import org.joml.Vector3f;
import org.joml.Vector3fc;
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.At.Shift;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin({class_10444.class})
abstract class ItemRenderStateM {
@Inject(
method = {"method_67991"},
at = {@At(
value = "NEW",
target = "()Lnet/minecraft/class_4587$class_4665;"
)}
)
private void afterInitVecLoad(Consumer<Vector3fc> posConsumer, CallbackInfo ci, @Local Vector3f vec, @Share("pipe") LocalRef<QuadToPosPipe> pipeRef) {
pipeRef.set(new QuadToPosPipe(posConsumer, vec));
}
@Inject(
method = {"method_67991"},
at = {@At(
value = "INVOKE",
target = "Lnet/minecraft/class_4587$class_4665;method_67801()V",
shift = Shift.BEFORE
)}
)
private void afterLayerLoad(Consumer<Vector3fc> posConsumer, CallbackInfo ci, @Local(ordinal = 0) Vector3f vec, @Local class_10444.class_10446 layer, @Local Matrix4f matrix, @Share("pipe") LocalRef<QuadToPosPipe> pipeRef) {
MutableMeshImpl mutableMesh = ((AccessLayerRenderState)layer).getMutableMesh();
if (mutableMesh.size() > 0) {
QuadToPosPipe pipe = (QuadToPosPipe)pipeRef.get();
pipe.matrix = matrix;
mutableMesh.forEachMutable(pipe);
}
}
}
Download file